diff options
Diffstat (limited to 'zebra')
-rw-r--r-- | zebra/router-id.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/zebra/router-id.c b/zebra/router-id.c index 41bab545..3d6b511c 100644 --- a/zebra/router-id.c +++ b/zebra/router-id.c @@ -136,7 +136,7 @@ router_id_add_address (struct connected *ifc) l = &rid_all_sorted_list; if (!router_id_find_node (l, ifc)) - listnode_add (l, ifc); + listnode_add_sort (l, ifc); router_id_get (&after); @@ -228,16 +228,12 @@ DEFUN (no_router_id, static int router_id_cmp (void *a, void *b) { - unsigned int A, B; + const struct connected *ifa = (const struct connected *)a; + 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); - A = ((struct connected *) a)->address->u.prefix4.s_addr; - B = ((struct connected *) b)->address->u.prefix4.s_addr; - - if (A > B) - return 1; - else if (A < B) - return -1; - return 0; + return (int) (A - B); } void |