summaryrefslogtreecommitdiff
path: root/accel-pppd/ppp/ppp_fsm.c
diff options
context:
space:
mode:
Diffstat (limited to 'accel-pppd/ppp/ppp_fsm.c')
-rw-r--r--accel-pppd/ppp/ppp_fsm.c18
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);