[ospfd] Ensure NSM state functions can redirect next_state accidently

2006-07-02 Paul Jakma <paul.jakma@sun.com>

	* ospf_nsm.c: (ospf_nsm_event) Don't allow action functions to
	  change next_state if the NSM tables do not indicate
	  next_state is conditional, log warning if one tries -
	  existing code appears fine though.
This commit is contained in:
Paul Jakma 2006-07-04 13:44:19 +00:00
parent d7b0fb62ec
commit ba0beb4a84
2 changed files with 20 additions and 0 deletions

View File

@ -3,6 +3,10 @@
* ospf_nsm.c: (nsm_should_adj) New function, just consolidate the
10.4 adjacency check from nsm_twoway_received/nsm_adj_ok.
(nsm_twoway_received/nsm_adj_ok) Use former.
(ospf_nsm_event) Don't allow action functions to change
next_state if the NSM tables do not indicate next_state is
conditional, log warning if one tries - existing code
appears fine though.
2006-06-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

View File

@ -878,6 +878,22 @@ ospf_nsm_event (struct thread *thread)
if (! next_state)
next_state = NSM [nbr->state][event].next_state;
else if (NSM [nbr->state][event].next_state != NSM_DependUpon)
{
/* There's a mismatch between the FSM tables and what an FSM
* action/state-change function returned. State changes which
* do not have conditional/DependUpon next-states should not
* try set next_state.
*/
zlog_warn ("NSM[%s:%s]: %s (%s): "
"Warning: action tried to change next_state to %s",
IF_NAME (oi), inet_ntoa (nbr->router_id),
LOOKUP (ospf_nsm_state_msg, nbr->state),
ospf_nsm_event_str [event],
LOOKUP (ospf_nsm_state_msg, next_state));
next_state = NSM [nbr->state][event].next_state;
}
if (IS_DEBUG_OSPF (nsm, NSM_EVENTS))
zlog_debug ("NSM[%s:%s]: %s (%s)", IF_NAME (oi),