]> git.puffer.fish Git - matthieu/frr.git/commitdiff
2003-10-13 Jay Fenlason <fenlason@redhat.com>
authorpaul <paul>
Mon, 13 Oct 2003 09:47:32 +0000 (09:47 +0000)
committerpaul <paul>
Mon, 13 Oct 2003 09:47:32 +0000 (09:47 +0000)
* 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.

bgpd/bgp_attr.h
bgpd/bgp_route.c
bgpd/bgp_routemap.c
lib/zebra.h

index 9c5bf879139cd0dc8c424cd02db22caad1f25b2a..e44ff3a3d532eddf1c6ad9d8840bce209a11845a 100644 (file)
@@ -27,6 +27,8 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 #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)
index 736b6be5fc6d1e7c77ee71413bf0c86554d50265..9259f5a613acb67ecd2cb29d9d8962250d089985 100644 (file)
@@ -146,7 +146,7 @@ bgp_med_value (struct attr *attr, struct bgp *bgp)
   else
     {
       if (bgp_flag_check (bgp, BGP_FLAG_MED_MISSING_AS_WORST))
-       return 4294967295ul;
+       return BGP_MED_MAX;
       else
        return 0;
     }
index a2923fb1b6900950850fecb11f94250cc20e1d58..a26351515003610b2e8b2661d81384eb37ff5bbe 100644 (file)
@@ -310,14 +310,13 @@ route_match_metric_compile (char *arg)
 {
   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 @@ route_set_metric (void *rule, struct prefix *prefix,
 
          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;
            }
index dc17730b7cd1273d46c7df29c1e718809bb98412..3193b6e28039caa7dc9d3c80e45a05b1f94befa8 100644 (file)
@@ -178,6 +178,11 @@ typedef int socklen_t;
 #include <netinet6/nd6.h>
 #endif /* HAVE_NETINET6_ND6_H */
 
+/* Some systems do not define UINT32_MAX */
+#ifndef UINT32_MAX
+#define UINT32_MAX 0xFFFFFFFFU
+#endif /* UINT32_MAX */
+
 #ifdef HAVE_LIBUTIL_H
 #include <libutil.h>
 #endif /* HAVE_LIBUTIL_H */