]> git.puffer.fish Git - mirror/frr.git/commitdiff
fabricd: cleanup interface config output 9935/head
authorIgor Ryzhov <iryzhov@nfware.com>
Tue, 2 Nov 2021 12:22:23 +0000 (15:22 +0300)
committerIgor Ryzhov <iryzhov@nfware.com>
Thu, 11 Nov 2021 11:56:34 +0000 (14:56 +0300)
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>
isisd/isis_circuit.c
isisd/isis_circuit.h

index 8810d6107d77cbfb6086e9fce59a389fe2c472f5..d0e8637c524e3967530b7e1b0af0d35eed0c26e9 100644 (file)
@@ -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");
        }
 
index e286194d3e60ea42ac66cfbf1340205a0bd57a40..7465780848a02b186e4caa86b7cdab961cbaceda 100644 (file)
@@ -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);