diff options
author | Igor Ryzhov <iryzhov@nfware.com> | 2021-11-02 13:22:23 +0100 |
---|---|---|
committer | Igor Ryzhov <iryzhov@nfware.com> | 2021-11-11 12:56:34 +0100 |
commit | 88ae09633123abe39c946d82ff57757cfd1bca8a (patch) | |
tree | 1d63e103429595eff8be7634e38b1c98ffcc2fc8 /isisd | |
parent | Merge pull request #10029 from anlancs/doc-bgp-title (diff) | |
download | frr-88ae09633123abe39c946d82ff57757cfd1bca8a.tar.xz frr-88ae09633123abe39c946d82ff57757cfd1bca8a.zip |
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 <iryzhov@nfware.com>
Diffstat (limited to 'isisd')
-rw-r--r-- | isisd/isis_circuit.c | 39 | ||||
-rw-r--r-- | 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 8810d6107..d0e8637c5 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 e286194d3..746578084 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); |