]> git.puffer.fish Git - matthieu/frr.git/commitdiff
Really fix crashes now. Revert isis_circuit_update_params() part of previous
authorhasso <hasso>
Wed, 29 Dec 2004 20:06:41 +0000 (20:06 +0000)
committerhasso <hasso>
Wed, 29 Dec 2004 20:06:41 +0000 (20:06 +0000)
commit. Replace all if_is_up() calls with if_is_operative().

isisd/ChangeLog
isisd/isis_circuit.c
isisd/isis_zebra.c

index e883faa080256c1e890a267a43177a998f5366a5..214530773a5cdc87b3ccba389aed40712395d5a8 100644 (file)
@@ -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>
 
index ca5befbd9e35def2c1db4c24200421637456b30c..1a98a6337dc1ed42d0e13e54d027f363cbc39745 100644 (file)
@@ -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)
     {
index bcd00184e5b6612f9799b5a87cde50631f92b361..6d9e61f8a5481e33e6bf3420c6e705943c1aa9e5 100644 (file)
@@ -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;