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 <mwinter@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c
index b830794..4acd8f3 100644
--- a/isisd/isis_circuit.c
+++ b/isisd/isis_circuit.c
@@ -1239,7 +1239,7 @@
{
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;