zebra: Change the mechanism for comparing route ID's.

The current format uses subtraction of two ints. Unfortunately, the
subtraction method does not work for all combinations of numbers.
For example, the with numbers represented by 10.x.x.x and 192.x.x.x,
10.x.x.x - 192.x.x.x will yield a very large positive number indicating
that 10.x.x.x is larger.

Signed-off-by: Ken Williams <kenneth.j.williams@intel.com>
Acked-by: Feng Lu <lu.feng@6wind.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
Ken Williams 2014-04-15 02:23:11 +00:00 committed by David Lamparter
parent 4becea724c
commit 24c84dbe80

View File

@ -230,10 +230,8 @@ router_id_cmp (void *a, void *b)
{ {
const struct connected *ifa = (const struct connected *)a; const struct connected *ifa = (const struct connected *)a;
const struct connected *ifb = (const struct connected *)b; const struct connected *ifb = (const struct connected *)b;
unsigned int A = ntohl(ifa->address->u.prefix4.s_addr);
unsigned int B = ntohl(ifb->address->u.prefix4.s_addr);
return (int) (A - B); return IPV4_ADDR_CMP(&ifa->address->u.prefix4.s_addr,&ifb->address->u.prefix4.s_addr);
} }
void void