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_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;
}