diff options
author | hasso <hasso> | 2005-06-24 07:50:12 +0000 |
---|---|---|
committer | hasso <hasso> | 2005-06-24 07:50:12 +0000 |
commit | 3e834b122b982d459e7a273c049a07050794e46a (patch) | |
tree | 7261b957274b6249189cf0deb7b5dfaf9b90c127 | |
parent | 510e209d26c6f1a0fd7f7005f05a98ac71ae1832 (diff) |
* 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/ChangeLog | 7 | ||||
-rw-r--r-- | ospf6d/ospf6_interface.c | 6 |
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; |