From 19dd696bda25a595f4e324a9729f27c4d8405e48 Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Thu, 11 Aug 2016 17:02:50 +0200 Subject: [PATCH] isisd: fix isis_circuit_af_set() on fresh circuit A newly-created circuit will be in enabled state but have neither IPv4 nor IPv6 configured. The logic in isis_circuit_af_set assumed that "enabled" is equivalent to "ip || ipv6". This is the only place where this distinction is currently relevant, as the CLI won't allow enabling an interface without enabling either IPv4 or IPv6; and it will also disable a circuit when both are deconfigured. Reported-by: Martin Winter Signed-off-by: David Lamparter --- isisd/isis_circuit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c index b9ebf52505..ad1eca89e3 100644 --- a/isisd/isis_circuit.c +++ b/isisd/isis_circuit.c @@ -1240,7 +1240,7 @@ isis_circuit_af_set (struct isis_circuit *circuit, bool ip_router, bool ipv6_rou { struct isis_area *area = circuit->area; bool change = circuit->ip_router != ip_router || circuit->ipv6_router != ipv6_router; - bool was_enabled = circuit->ip_router || circuit->ipv6_router; + bool was_enabled = !!circuit->area; area->ip_circuits += ip_router - circuit->ip_router; area->ipv6_circuits += ipv6_router - circuit->ipv6_router; -- 2.39.5