diff options
author | hasso <hasso> | 2004-12-29 21:06:41 +0100 |
---|---|---|
committer | hasso <hasso> | 2004-12-29 21:06:41 +0100 |
commit | b30c5e67a20b1a092faa56fe349171eb1da386b0 (patch) | |
tree | 9bc23b582e4c159ae41310cf1900b2e42f932af2 /isisd | |
parent | 2004-12-29 Greg Troxel <gdt@poblano.ir.bbn.com> (diff) | |
download | frr-b30c5e67a20b1a092faa56fe349171eb1da386b0.tar.xz frr-b30c5e67a20b1a092faa56fe349171eb1da386b0.zip |
Really fix crashes now. Revert isis_circuit_update_params() part of previous
commit. Replace all if_is_up() calls with if_is_operative().
Diffstat (limited to 'isisd')
-rw-r--r-- | isisd/ChangeLog | 3 | ||||
-rw-r--r-- | isisd/isis_circuit.c | 7 | ||||
-rw-r--r-- | isisd/isis_zebra.c | 14 |
3 files changed, 11 insertions, 13 deletions
diff --git a/isisd/ChangeLog b/isisd/ChangeLog index e883faa08..214530773 100644 --- a/isisd/ChangeLog +++ b/isisd/ChangeLog @@ -2,7 +2,8 @@ * isis_circuit.c, isis_csm.c, isis_zebra.c: Don't crash during interface up/down events. I'm not sure whether logic is correct - though. Needs rethink anyway, seems. + though. Needs rethink anyway, seems. Replace if_is_up() with + if_is_operative() and add some more. 2004-12-24 Hasso Tepper <hasso at quagga.net> diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c index ca5befbd9..1a98a6337 100644 --- a/isisd/isis_circuit.c +++ b/isisd/isis_circuit.c @@ -430,12 +430,7 @@ void isis_circuit_update_params (struct isis_circuit *circuit, struct interface *ifp) { - /* HT: It can happen at the moment during interface up event because we - * actually delete circuit during interface down event. Should be really - * cleaned up. TODO */ - /* assert (circuit); */ - if (!circuit) - return; + assert (circuit); if (circuit->circuit_id != ifp->ifindex) { diff --git a/isisd/isis_zebra.c b/isisd/isis_zebra.c index bcd00184e..6d9e61f8a 100644 --- a/isisd/isis_zebra.c +++ b/isisd/isis_zebra.c @@ -70,7 +70,7 @@ isis_zebra_if_add (int command, struct zclient *zclient, zebra_size_t length) zlog_debug ("Zebra I/F add: %s index %d flags %ld metric %d mtu %d", ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu); - if (if_is_up (ifp)) + if (if_is_operative (ifp)) isis_csm_state_change (IF_UP_FROM_Z, circuit_scan_by_ifp (ifp), ifp); return 0; @@ -88,7 +88,7 @@ isis_zebra_if_del (int command, struct zclient *zclient, zebra_size_t length) if (!ifp) return 0; - if (if_is_up (ifp)) + if (if_is_operative (ifp)) zlog_warn ("Zebra: got delete of %s, but interface is still up", ifp->name); @@ -132,7 +132,7 @@ isis_zebra_if_state_up (int command, struct zclient *zclient, if (!ifp) return 0; - if (if_is_up (ifp)) + if (if_is_operative (ifp)) { zebra_interface_if_set_value (zclient->ibuf, ifp); /* HT: This is wrong actually. We can't assume that circuit exist @@ -159,7 +159,7 @@ isis_zebra_if_state_down (int command, struct zclient *zclient, if (ifp == NULL) return 0; - if (if_is_up (ifp)) + if (if_is_operative (ifp)) { zebra_interface_if_set_value (zclient->ibuf, ifp); isis_csm_state_change (IF_DOWN_FROM_Z, circuit_scan_by_ifp (ifp), ifp); @@ -193,7 +193,8 @@ isis_zebra_if_address_add (int command, struct zclient *zclient, zlog_debug ("connected IPv6 address %s", buf); #endif /* HAVE_IPV6 */ #endif /* EXTREME_DEBUG */ - isis_circuit_add_addr (circuit_scan_by_ifp (c->ifp), c); + if (if_is_operative (c->ifp)) + isis_circuit_add_addr (circuit_scan_by_ifp (c->ifp), c); return 0; } @@ -229,7 +230,8 @@ isis_zebra_if_address_del (int command, struct zclient *client, #endif /* HAVE_IPV6 */ #endif /* EXTREME_DEBUG */ - isis_circuit_del_addr (circuit_scan_by_ifp (ifp), c); + if (if_is_operative (ifp)) + isis_circuit_del_addr (circuit_scan_by_ifp (ifp), c); connected_free (c); return 0; |