summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--zebra/router-id.c16
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