]> git.proxmox.com Git - mirror_frr.git/commitdiff
isis: fix double-adding a circuit to the area
authorIgor Ryzhov <iryzhov@nfware.com>
Wed, 16 Jun 2021 12:54:17 +0000 (15:54 +0300)
committerIgor Ryzhov <iryzhov@nfware.com>
Fri, 18 Jun 2021 00:27:29 +0000 (03:27 +0300)
isis_circuit_enable can be called for an already enabled circuit. In this
case we would add the circuit to the area multiple times.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
isisd/isis_circuit.c

index 4fa28a4ad91a2d92fc13c670e59c170245c682d3..896bbc2cb05042371f9c981e2b3c611e7cad7645 100644 (file)
@@ -78,12 +78,14 @@ DEFINE_HOOK(isis_circuit_del_hook, (struct isis_circuit *circuit), (circuit));
 
 static void isis_circuit_enable(struct isis_circuit *circuit)
 {
-       struct isis_area *area;
+       struct isis_area *area = circuit->area;
        struct interface *ifp = circuit->interface;
 
-       area = isis_area_lookup(circuit->tag, ifp->vrf_id);
-       if (area)
-               isis_area_add_circuit(area, circuit);
+       if (!area) {
+               area = isis_area_lookup(circuit->tag, ifp->vrf_id);
+               if (area)
+                       isis_area_add_circuit(area, circuit);
+       }
 
        if (if_is_operative(ifp))
                isis_csm_state_change(IF_UP_FROM_Z, circuit, ifp);