From 3ae43012b2565fe820a99a4069c2ac0d7300fa26 Mon Sep 17 00:00:00 2001 From: Igor Ryzhov Date: Wed, 16 Jun 2021 15:54:17 +0300 Subject: [PATCH] isis: fix double-adding a circuit to the area 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 --- isisd/isis_circuit.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c index 4fa28a4ad9..896bbc2cb0 100644 --- a/isisd/isis_circuit.c +++ b/isisd/isis_circuit.c @@ -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);