diff options
| author | hasso <hasso> | 2004-12-29 20:06:41 +0000 | 
|---|---|---|
| committer | hasso <hasso> | 2004-12-29 20:06:41 +0000 | 
| commit | b30c5e67a20b1a092faa56fe349171eb1da386b0 (patch) | |
| tree | 9bc23b582e4c159ae41310cf1900b2e42f932af2 /isisd | |
| parent | d44debedf53b85c989b72fe7c6924ffc1e7e625b (diff) | |
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 e883faa0..21453077 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 ca5befbd..1a98a633 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 bcd00184..6d9e61f8 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; | 
