diff options
Diffstat (limited to 'accel-pppd/ppp/ppp_fsm.c')
-rw-r--r-- | accel-pppd/ppp/ppp_fsm.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/accel-pppd/ppp/ppp_fsm.c b/accel-pppd/ppp/ppp_fsm.c index c6bc430..b43945b 100644 --- a/accel-pppd/ppp/ppp_fsm.c +++ b/accel-pppd/ppp/ppp_fsm.c @@ -14,7 +14,7 @@ static int conf_max_terminate = 2; static int conf_max_configure = 10; static int conf_max_failure = 10; -static int conf_timeout = 5; +static int conf_timeout = 3; void send_term_req(struct ppp_fsm_t *layer); void send_term_ack(struct ppp_fsm_t *layer); @@ -35,7 +35,8 @@ void ppp_fsm_init(struct ppp_fsm_t *layer) layer->max_terminate = conf_max_terminate; layer->max_configure = conf_max_configure; layer->max_failure = conf_max_failure; - layer->timeout = conf_timeout; + + layer->id = 1; } void ppp_fsm_free(struct ppp_fsm_t *layer) { @@ -96,7 +97,7 @@ int ppp_fsm_open(struct ppp_fsm_t *layer) switch(layer->fsm_state) { case FSM_Initial: - if (layer->layer_started) layer->layer_started(layer); + //if (layer->layer_started) layer->layer_started(layer); layer->fsm_state=FSM_Starting; break; case FSM_Starting: @@ -168,7 +169,6 @@ void ppp_fsm_timeout0(struct ppp_fsm_t *layer) case FSM_Req_Sent: case FSM_Ack_Sent: --layer->restart_counter; - --layer->id; if (layer->send_conf_req) layer->send_conf_req(layer); break; default: @@ -315,6 +315,7 @@ void ppp_fsm_recv_conf_req_rej(struct ppp_fsm_t *layer) void ppp_fsm_recv_conf_ack(struct ppp_fsm_t *layer) { + ++layer->id; switch(layer->fsm_state) { case FSM_Closed: @@ -351,6 +352,7 @@ void ppp_fsm_recv_conf_ack(struct ppp_fsm_t *layer) void ppp_fsm_recv_conf_rej(struct ppp_fsm_t *layer) { + ++layer->id; switch(layer->fsm_state) { case FSM_Closed: @@ -373,7 +375,10 @@ void ppp_fsm_recv_conf_rej(struct ppp_fsm_t *layer) layer->fsm_state=FSM_Req_Sent; break; case FSM_Ack_Sent: - //if (layer->init_req_cnt) layer->init_req_cnt(layer); + if (++layer->conf_failure == layer->max_failure) { + if (layer->layer_down) layer->layer_down(layer); + return; + } init_req_counter(layer,layer->max_configure); --layer->restart_counter; if (layer->send_conf_req) layer->send_conf_req(layer); @@ -536,9 +541,10 @@ static void load_config(void) conf_timeout = atoi(opt); } -void __init fsm_init(void) +static void fsm_init(void) { load_config(); triton_event_register_handler(EV_CONFIG_RELOAD, (triton_event_func)load_config); } +DEFINE_INIT(3, fsm_init); |