2003-10-13 Jay Fenlason <fenlason@redhat.com>

	* lib/zebra.h: define UINT32_MAX for those systems which do not
	  provide it.
	* bgp_attr.h: define BGP_MED_MAX.
	* bgp_route.c: update defines/constants to BGP_MED_MAX.
	* bgp_routemap.c: ditto. clean up route_match_metric_compile
	  slightly to avoid unneccesary XMALLOC.
diff --git a/bgpd/bgp_attr.h b/bgpd/bgp_attr.h
index 9c5bf87..e44ff3a 100644
--- a/bgpd/bgp_attr.h
+++ b/bgpd/bgp_attr.h
@@ -27,6 +27,8 @@
 #define CHECK_BITMAP(MAP, NUM) \
         CHECK_FLAG (MAP[(NUM) / BITMAP_NBBY], 1 << ((NUM) % BITMAP_NBBY))
 
+#define BGP_MED_MAX UINT32_MAX
+
 /* BGP Attribute type range. */
 #define BGP_ATTR_TYPE_RANGE     256
 #define BGP_ATTR_BITMAP_SIZE    (BGP_ATTR_TYPE_RANGE / BITMAP_NBBY)
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 736b6be..9259f5a 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -146,7 +146,7 @@
   else
     {
       if (bgp_flag_check (bgp, BGP_FLAG_MED_MISSING_AS_WORST))
-	return 4294967295ul;
+	return BGP_MED_MAX;
       else
 	return 0;
     }
diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c
index a2923fb..a263515 100644
--- a/bgpd/bgp_routemap.c
+++ b/bgpd/bgp_routemap.c
@@ -310,14 +310,13 @@
 {
   u_int32_t *med;
   char *endptr = NULL;
+  unsigned long tmpval;
 
+  tmpval = strtoul (arg, &endptr, 10);
+  if (*endptr != '\0' || tmpval == ULONG_MAX)
+    return NULL;
   med = XMALLOC (MTYPE_ROUTE_MAP_COMPILED, sizeof (u_int32_t));
-  *med = strtoul (arg, &endptr, 10);
-  if (*endptr != '\0' || *med == ULONG_MAX)
-    {
-      XFREE (MTYPE_ROUTE_MAP_COMPILED, med);
-      return NULL;
-    }
+  *med = tmpval;
   return med;
 }
 
@@ -879,8 +878,8 @@
 
 	  if (strncmp (metric, "+", 1) == 0)
 	    {
-	      if (bgp_info->attr->med/2 + metric_val/2 > UINT32_MAX/2)
-	        bgp_info->attr->med = UINT32_MAX-1;
+	      if (bgp_info->attr->med/2 + metric_val/2 > BGP_MED_MAX/2)
+	        bgp_info->attr->med = BGP_MED_MAX - 1;
 	      else
 	        bgp_info->attr->med += metric_val;
 	    }