summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhasso <hasso>2005-06-24 07:50:12 +0000
committerhasso <hasso>2005-06-24 07:50:12 +0000
commit11fa750ddafebe6df3ec0025ae902b49fe19de1b (patch)
treec1e95edbe79cbd5842d065eb25a82a78b5b28f93
parent821b50ee72ea6f1ec846479b804648709ed5a32c (diff)
downloadquagga-11fa750ddafebe6df3ec0025ae902b49fe19de1b.tar.bz2
quagga-11fa750ddafebe6df3ec0025ae902b49fe19de1b.tar.xz
* ospf6_interface.c: fix the way inactivity_timer is called. Because
inactivity_timer() deletes the neighbor from the neighbor_list, it cannot be called by thread_execute() from inner side of the neighbor_list for-loop. (Although crash was already fixed in Quagga, it's better follow the GNU Zebra logic). [port from GNU Zebra]
-rw-r--r--ospf6d/ChangeLog7
-rw-r--r--ospf6d/ospf6_interface.c6
2 files changed, 10 insertions, 3 deletions
diff --git a/ospf6d/ChangeLog b/ospf6d/ChangeLog
index d718fc38..87b4fac7 100644
--- a/ospf6d/ChangeLog
+++ b/ospf6d/ChangeLog
@@ -1,3 +1,10 @@
+2005-06-24 Yasuhiro Ohara <yasu@sfc.wide.ad.jp>
+
+ * ospf6_interface.c: fix the way inactivity_timer is called. Because
+ inactivity_timer() deletes the neighbor from the neighbor_list, it
+ cannot be called by thread_execute() from inner side of the
+ neighbor_list for-loop.
+
2005-05-31 Hasso Tepper <hasso at quagga.net>
* ospf6d.c: No need for double ';'. Fixes parsing "show ipv6 ospf6
diff --git a/ospf6d/ospf6_interface.c b/ospf6d/ospf6_interface.c
index 0614e440..3ca5e2d1 100644
--- a/ospf6d/ospf6_interface.c
+++ b/ospf6d/ospf6_interface.c
@@ -1069,7 +1069,7 @@ DEFUN (ipv6_ospf6_ifmtu,
for (ALL_LIST_ELEMENTS (oi->neighbor_list, node, nnode, on))
{
THREAD_OFF (on->inactivity_timer);
- thread_execute (master, inactivity_timer, on, 0);
+ thread_add_event (master, inactivity_timer, on, 0);
}
return CMD_SUCCESS;
@@ -1117,7 +1117,7 @@ DEFUN (no_ipv6_ospf6_ifmtu,
for (ALL_LIST_ELEMENTS (oi->neighbor_list, node, nnode, on))
{
THREAD_OFF (on->inactivity_timer);
- thread_execute (master, inactivity_timer, on, 0);
+ thread_add_event (master, inactivity_timer, on, 0);
}
return CMD_SUCCESS;
@@ -1352,7 +1352,7 @@ DEFUN (ipv6_ospf6_passive,
for (ALL_LIST_ELEMENTS (oi->neighbor_list, node, nnode, on))
{
THREAD_OFF (on->inactivity_timer);
- thread_execute (master, inactivity_timer, on, 0);
+ thread_add_event (master, inactivity_timer, on, 0);
}
return CMD_SUCCESS;