ospfd: Fixed signed/unsigned masking of negative metrics

In the original code, negative metrics would be converted successfully by
atoi() and then converted to an unsigned int that would always compare
successfully against >= 0, leaving a large positive metric in the route map.

Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
diff --git a/ospfd/ospf_routemap.c b/ospfd/ospf_routemap.c
index adf8158..d0ebce6 100644
--- a/ospfd/ospf_routemap.c
+++ b/ospfd/ospf_routemap.c
@@ -443,12 +443,16 @@
 route_set_metric_compile (const char *arg)
 {
   u_int32_t *metric;
+  int32_t ret;
 
   metric = XCALLOC (MTYPE_ROUTE_MAP_COMPILED, sizeof (u_int32_t));
-  *metric = atoi (arg);
+  ret = atoi (arg);
 
-  if (*metric >= 0)
-    return metric;
+  if (ret >= 0)
+    {
+      *metric = (u_int32_t)ret;
+      return metric;
+    }
 
   XFREE (MTYPE_ROUTE_MAP_COMPILED, metric);
   return NULL;