* 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]
This commit is contained in:
hasso 2005-06-24 07:50:12 +00:00
parent 510e209d26
commit 3e834b122b
2 changed files with 10 additions and 3 deletions

View File

@ -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

View File

@ -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;