]> git.puffer.fish Git - mirror/frr.git/commitdiff
isisd: fix isis_circuit_af_set() on fresh circuit
authorDavid Lamparter <equinox@opensourcerouting.org>
Thu, 11 Aug 2016 15:02:50 +0000 (17:02 +0200)
committerDavid Lamparter <equinox@opensourcerouting.org>
Tue, 16 Aug 2016 14:05:59 +0000 (16:05 +0200)
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>
isisd/isis_circuit.c

index b9ebf52505f5767ed9d0bb017bfabbab75645fff..ad1eca89e3302af65bbeae1415b92539fe3ea2c4 100644 (file)
@@ -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;