diff options
| author | Renato Westphal <renato@opensourcerouting.org> | 2016-10-29 14:37:11 -0200 |
|---|---|---|
| committer | Renato Westphal <renato@opensourcerouting.org> | 2016-11-28 16:18:35 -0200 |
| commit | 1a1a70655c869a1b66e363894e5aba19f4aa08f3 (patch) | |
| tree | 8eea443fc57ac5766128d41e27c9411a3c1c7afc /zebra/interface.c | |
| parent | c7fdd84f36a262d062a10c1439121df361ab78d3 (diff) | |
lib: convert vrf code to use red-black trees as well
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
Diffstat (limited to 'zebra/interface.c')
| -rw-r--r-- | zebra/interface.c | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/zebra/interface.c b/zebra/interface.c index dd1f8a146b..75040a87f0 100644 --- a/zebra/interface.c +++ b/zebra/interface.c @@ -1325,15 +1325,15 @@ DEFUN (show_interface_vrf_all, show_interface_vrf_all_cmd, "Interface status and configuration\n" VRF_ALL_CMD_HELP_STR) { + struct vrf *vrf; struct listnode *node; struct interface *ifp; - vrf_iter_t iter; interface_update_stats (); /* All interface print. */ - for (iter = vrf_first (); iter != VRF_ITER_INVALID; iter = vrf_next (iter)) - for (ALL_LIST_ELEMENTS_RO (vrf_iter2iflist (iter), node, ifp)) + RB_FOREACH (vrf, vrf_id_head, &vrfs_by_id) + for (ALL_LIST_ELEMENTS_RO (vrf->iflist, node, ifp)) if_dump_vty (vty, ifp); return CMD_SUCCESS; @@ -1378,17 +1378,17 @@ DEFUN (show_interface_name_vrf_all, show_interface_name_vrf_all_cmd, "Interface name\n" VRF_ALL_CMD_HELP_STR) { + struct vrf *vrf; struct interface *ifp; - vrf_iter_t iter; int found = 0; interface_update_stats (); /* All interface print. */ - for (iter = vrf_first (); iter != VRF_ITER_INVALID; iter = vrf_next (iter)) + RB_FOREACH (vrf, vrf_id_head, &vrfs_by_id) { /* Specified interface print. */ - ifp = if_lookup_by_name_vrf (argv[0], vrf_iter2id (iter)); + ifp = if_lookup_by_name_vrf (argv[0], vrf->vrf_id); if (ifp) { if_dump_vty (vty, ifp); @@ -1484,15 +1484,14 @@ DEFUN (show_interface_desc_vrf_all, "Interface description\n" VRF_ALL_CMD_HELP_STR) { - vrf_iter_t iter; + struct vrf *vrf; - for (iter = vrf_first (); iter != VRF_ITER_INVALID; iter = vrf_next (iter)) - if (!list_isempty (vrf_iter2iflist (iter))) + RB_FOREACH (vrf, vrf_id_head, &vrfs_by_id) + if (!list_isempty (vrf->iflist)) { - vty_out (vty, "%s\tVRF %u%s%s", VTY_NEWLINE, - vrf_iter2id (iter), - VTY_NEWLINE, VTY_NEWLINE); - if_show_description (vty, vrf_iter2id (iter)); + vty_out (vty, "%s\tVRF %u%s%s", VTY_NEWLINE, vrf->vrf_id, + VTY_NEWLINE, VTY_NEWLINE); + if_show_description (vty, vrf->vrf_id); } return CMD_SUCCESS; @@ -2818,14 +2817,14 @@ link_params_config_write (struct vty *vty, struct interface *ifp) static int if_config_write (struct vty *vty) { + struct vrf *vrf; struct listnode *node; struct interface *ifp; - vrf_iter_t iter; zebra_ptm_write (vty); - for (iter = vrf_first (); iter != VRF_ITER_INVALID; iter = vrf_next (iter)) - for (ALL_LIST_ELEMENTS_RO (vrf_iter2iflist (iter), node, ifp)) + RB_FOREACH (vrf, vrf_id_head, &vrfs_by_id) + for (ALL_LIST_ELEMENTS_RO (vrf->iflist, node, ifp)) { struct zebra_if *if_data; struct listnode *addrnode; |
