diff options
Diffstat (limited to 'zebra/interface.c')
-rw-r--r-- | zebra/interface.c | 42 |
1 files changed, 15 insertions, 27 deletions
diff --git a/zebra/interface.c b/zebra/interface.c index 0f294a56..bd31fb40 100644 --- a/zebra/interface.c +++ b/zebra/interface.c @@ -170,7 +170,7 @@ if_subnet_delete (struct interface *ifp, struct connected *ifc) /* If deleted address is primary, mark subsequent one as such and distribute. */ if (! CHECK_FLAG (ifc->flags, ZEBRA_IFA_SECONDARY)) { - ifc = (struct connected *) addr_list->head->data; + ifc = listgetdata (listhead (addr_list)); zebra_interface_address_delete_update (ifp, ifc); UNSET_FLAG (ifc->flags, ZEBRA_IFA_SECONDARY); zebra_interface_address_add_update (ifp, ifc); @@ -192,14 +192,13 @@ if_subnet_delete (struct interface *ifp, struct connected *ifc) void if_addr_wakeup (struct interface *ifp) { - struct listnode *node; + struct listnode *node, *nnode; struct connected *ifc; struct prefix *p; int ret; - for (node = listhead (ifp->connected); node; nextnode (node)) + for (ALL_LIST_ELEMENTS (ifp->connected, node, nnode, ifc)) { - ifc = getdata (node); p = ifc->address; if (CHECK_FLAG (ifc->conf, ZEBRA_IFC_CONFIGURED) @@ -334,7 +333,7 @@ if_delete_update (struct interface *ifp) last = NULL; while ((node = (last ? last->next : listhead (ifp->connected)))) { - ifc = getdata (node); + ifc = listgetdata (node); p = ifc->address; if (p->family == AF_INET) @@ -354,7 +353,7 @@ if_delete_update (struct interface *ifp) } next = node->next; - ifc = getdata (node); + ifc = listgetdata (node); p = ifc->address; connected_down_ipv4 (ifp, ifc); @@ -423,10 +422,8 @@ if_up (struct interface *ifp) /* Install connected routes to the kernel. */ if (ifp->connected) { - for (node = listhead (ifp->connected); node; node = next) + for (ALL_LIST_ELEMENTS (ifp->connected, node, next, ifc)) { - next = node->next; - ifc = getdata (node); p = ifc->address; if (p->family == AF_INET) @@ -458,10 +455,8 @@ if_down (struct interface *ifp) /* Delete connected routes from the kernel. */ if (ifp->connected) { - for (node = listhead (ifp->connected); node; node = next) + for (ALL_LIST_ELEMENTS (ifp->connected, node, next, ifc)) { - next = node->next; - ifc = getdata (node); p = ifc->address; if (p->family == AF_INET) @@ -727,16 +722,12 @@ if_dump_vty (struct vty *vty, struct interface *ifp) if (! rn->info) continue; - for (node = listhead ((struct list *) rn->info); node; nextnode (node)) - { - connected = getdata (node); - connected_dump_vty (vty, connected); - } + for (ALL_LIST_ELEMENTS_RO ((struct list *)rn->info, node, connected)) + connected_dump_vty (vty, connected); } - for (node = listhead (ifp->connected); node; nextnode (node)) + for (ALL_LIST_ELEMENTS_RO (ifp->connected, node, connected)) { - connected = getdata (node); if (CHECK_FLAG (connected->conf, ZEBRA_IFC_REAL) && (connected->address->family == AF_INET6)) connected_dump_vty (vty, connected); @@ -902,8 +893,8 @@ DEFUN (show_interface, show_interface_cmd, } /* All interface print. */ - for (node = listhead (iflist); node; nextnode (node)) - if_dump_vty (vty, getdata (node)); + for (ALL_LIST_ELEMENTS_RO (iflist, node, ifp)) + if_dump_vty (vty, ifp); return CMD_SUCCESS; } @@ -919,10 +910,9 @@ DEFUN (show_interface_desc, struct interface *ifp; vty_out (vty, "Interface Status Protocol Description%s", VTY_NEWLINE); - for (node = listhead (iflist); node; nextnode (node)) + for (ALL_LIST_ELEMENTS_RO (iflist, node, ifp)) { int len; - ifp = getdata (node); len = vty_out (vty, "%s", ifp->name); vty_out (vty, "%*s", (16 - len), " "); @@ -1514,14 +1504,13 @@ if_config_write (struct vty *vty) struct interface *ifp; char buf[BUFSIZ]; - for (node = listhead (iflist); node; nextnode (node)) + for (ALL_LIST_ELEMENTS_RO (iflist, node, ifp)) { struct zebra_if *if_data; struct listnode *addrnode; struct connected *ifc; struct prefix *p; - ifp = getdata (node); if_data = ifp->info; vty_out (vty, "interface %s%s", ifp->name, @@ -1539,9 +1528,8 @@ if_config_write (struct vty *vty) if (CHECK_FLAG(ifp->status, ZEBRA_INTERFACE_LINKDETECTION)) vty_out(vty, " link-detect%s", VTY_NEWLINE); - for (addrnode = listhead (ifp->connected); addrnode; nextnode (addrnode)) + for (ALL_LIST_ELEMENTS_RO (ifp->connected, addrnode, ifc)) { - ifc = getdata (addrnode); if (CHECK_FLAG (ifc->conf, ZEBRA_IFC_CONFIGURED)) { p = ifc->address; |