From 88ae09633123abe39c946d82ff57757cfd1bca8a Mon Sep 17 00:00:00 2001 From: Igor Ryzhov Date: Tue, 2 Nov 2021 15:22:23 +0300 Subject: [PATCH] fabricd: cleanup interface config output We don't need to scan through all configured areas to find the circuit associated with the interface. It is always stored in ifp->info. Signed-off-by: Igor Ryzhov --- isisd/isis_circuit.c | 39 ++++++--------------------------------- isisd/isis_circuit.h | 2 -- 2 files changed, 6 insertions(+), 35 deletions(-) diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c index 8810d6107d..d0e8637c52 100644 --- a/isisd/isis_circuit.c +++ b/isisd/isis_circuit.c @@ -268,24 +268,6 @@ void isis_circuit_deconfigure(struct isis_circuit *circuit, return; } -struct isis_circuit *circuit_lookup_by_ifp(struct interface *ifp, - struct list *list) -{ - struct isis_circuit *circuit = NULL; - struct listnode *node; - - if (!list) - return NULL; - - for (ALL_LIST_ELEMENTS_RO(list, node, circuit)) - if (circuit->interface == ifp) { - assert(ifp->info == circuit); - return circuit; - } - - return NULL; -} - struct isis_circuit *circuit_scan_by_ifp(struct interface *ifp) { return (struct isis_circuit *)ifp->info; @@ -1073,17 +1055,9 @@ static int isis_interface_config_write(struct vty *vty) { struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT); int write = 0; - struct listnode *node; struct interface *ifp; - struct isis_area *area; struct isis_circuit *circuit; int i; - struct isis *isis = NULL; - - isis = isis_lookup_by_vrfid(vrf->vrf_id); - - if (isis == NULL) - return 0; FOR_ALL_INTERFACES (vrf, ifp) { /* IF name */ @@ -1095,14 +1069,13 @@ static int isis_interface_config_write(struct vty *vty) write++; } /* ISIS Circuit */ - for (ALL_LIST_ELEMENTS_RO(isis->area_list, node, area)) { - circuit = - circuit_lookup_by_ifp(ifp, area->circuit_list); + do { + circuit = circuit_scan_by_ifp(ifp); if (circuit == NULL) - continue; + break; if (circuit->ip_router) { vty_out(vty, " ip router " PROTO_NAME " %s\n", - area->area_tag); + circuit->tag); write++; } if (circuit->is_passive) { @@ -1115,7 +1088,7 @@ static int isis_interface_config_write(struct vty *vty) } if (circuit->ipv6_router) { vty_out(vty, " ipv6 router " PROTO_NAME " %s\n", - area->area_tag); + circuit->tag); write++; } @@ -1295,7 +1268,7 @@ static int isis_interface_config_write(struct vty *vty) } write += hook_call(isis_circuit_config_write, circuit, vty); - } + } while (0); vty_endframe(vty, "exit\n!\n"); } diff --git a/isisd/isis_circuit.h b/isisd/isis_circuit.h index e286194d3e..7465780848 100644 --- a/isisd/isis_circuit.h +++ b/isisd/isis_circuit.h @@ -186,8 +186,6 @@ DECLARE_QOBJ_TYPE(isis_circuit); void isis_circuit_init(void); struct isis_circuit *isis_circuit_new(struct interface *ifp, const char *tag); void isis_circuit_del(struct isis_circuit *circuit); -struct isis_circuit *circuit_lookup_by_ifp(struct interface *ifp, - struct list *list); struct isis_circuit *circuit_scan_by_ifp(struct interface *ifp); void isis_circuit_configure(struct isis_circuit *circuit, struct isis_area *area); -- 2.39.5