diff options
-rw-r--r-- | usr.sbin/ifstated/ifstated.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/usr.sbin/ifstated/ifstated.c b/usr.sbin/ifstated/ifstated.c index b87bdd14838..0278da255e3 100644 --- a/usr.sbin/ifstated/ifstated.c +++ b/usr.sbin/ifstated/ifstated.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ifstated.c,v 1.48 2017/07/02 15:28:26 benno Exp $ */ +/* $OpenBSD: ifstated.c,v 1.49 2017/07/03 18:45:34 benno Exp $ */ /* * Copyright (c) 2004 Marco Pfatschbacher <mpf@openbsd.org> @@ -217,8 +217,10 @@ load_config(void) conf->curstate->entered = time(NULL); conf->nextstate = conf->curstate; conf->curstate = NULL; - while (state_change()) + while (state_change()) { + do_action(conf->curstate->init); do_action(conf->curstate->body); + } } return (0); } @@ -533,14 +535,13 @@ eval_state(struct ifsd_state *state) if (external == NULL || external->lastexec >= state->entered || external->lastexec == 0) { do_action(state->body); - while (state_change()) + while (state_change()) { + do_action(conf->curstate->init); do_action(conf->curstate->body); + } } } -/* - *If a previous action included a state change, process it. - */ int state_change(void) { @@ -556,7 +557,6 @@ state_change(void) conf->curstate->entered = time(NULL); external_evtimer_setup(conf->curstate, IFSD_EVTIMER_ADD); adjust_external_expressions(conf->curstate); - do_action(conf->curstate->init); return (1); } return (0); @@ -627,9 +627,6 @@ fetch_state(void) close(sock); } -/* - * Clear the config. - */ void clear_config(struct ifsd_config *oconf) { |