Lines Matching full:fsm

46 #include "fsm.h"
66 cbcp->fsm.state = CBCP_CLOSED; in cbcp_Init()
67 cbcp->fsm.id = 0; in cbcp_Init()
68 cbcp->fsm.delay = 0; in cbcp_Init()
69 *cbcp->fsm.phone = '\0'; in cbcp_Init()
70 memset(&cbcp->fsm.timer, '\0', sizeof cbcp->fsm.timer); in cbcp_Init()
83 timer_Stop(&cbcp->fsm.timer); in cbcp_Timeout()
84 if (cbcp->fsm.restart) { in cbcp_Timeout()
85 switch (cbcp->fsm.state) { in cbcp_Timeout()
105 switch (cbcp->fsm.state) { in cbcp_Timeout()
134 timer_Stop(&cbcp->fsm.timer); in cbcp_StartTimer()
135 cbcp->fsm.timer.func = cbcp_Timeout; in cbcp_StartTimer()
136 cbcp->fsm.timer.name = "cbcp"; in cbcp_StartTimer()
137 cbcp->fsm.timer.load = timeout * SECTICKS; in cbcp_StartTimer()
138 cbcp->fsm.timer.arg = cbcp; in cbcp_StartTimer()
139 timer_Start(&cbcp->fsm.timer); in cbcp_StartTimer()
163 if (cbcp->fsm.state != new) { in cbcp_NewPhase()
165 cbcpstate(cbcp->fsm.state), cbcpstate(new)); in cbcp_NewPhase()
166 cbcp->fsm.state = new; in cbcp_NewPhase()
204 head->id = cbcp->fsm.id; in cbcp_Output()
260 char list[sizeof cbcp->fsm.phone], *next; in cbcp_SendReq()
266 cbcp->fsm.id, cbcpstate(cbcp->fsm.state)); in cbcp_SendReq()
267 data.type = cbcp->fsm.type; in cbcp_SendReq()
269 strncpy(list, cbcp->fsm.phone, sizeof list - 1); in cbcp_SendReq()
308 cbcp->fsm.restart--; in cbcp_SendReq()
309 cbcp_StartTimer(cbcp, cbcp->fsm.delay); in cbcp_SendReq()
318 cbcp->fsm.delay = cbcp->p->dl->cfg.cbcp.delay; in cbcp_Up()
320 !auth_SetPhoneList(cbcp->p->dl->peer.authname, cbcp->fsm.phone, in cbcp_Up()
321 sizeof cbcp->fsm.phone)) { in cbcp_Up()
322 strncpy(cbcp->fsm.phone, cbcp->p->dl->cfg.cbcp.phone, in cbcp_Up()
323 sizeof cbcp->fsm.phone - 1); in cbcp_Up()
324 cbcp->fsm.phone[sizeof cbcp->fsm.phone - 1] = '\0'; in cbcp_Up()
328 if (*cbcp->fsm.phone == '\0') in cbcp_Up()
329 cbcp->fsm.type = CBCP_NONUM; in cbcp_Up()
330 else if (!strcmp(cbcp->fsm.phone, "*")) { in cbcp_Up()
331 cbcp->fsm.type = CBCP_SERVERNUM; in cbcp_Up()
332 *cbcp->fsm.phone = '\0'; in cbcp_Up()
334 cbcp->fsm.type = CBCP_CLIENTNUM; in cbcp_Up()
336 cbcp_StartTimer(cbcp, cbcp->fsm.delay * DEF_FSMTRIES); in cbcp_Up()
338 if (*cbcp->fsm.phone == '\0') in cbcp_Up()
339 cbcp->fsm.type = CBCP_NONUM; in cbcp_Up()
340 else if (!strcmp(cbcp->fsm.phone, "*")) { in cbcp_Up()
341 cbcp->fsm.type = CBCP_CLIENTNUM; in cbcp_Up()
342 *cbcp->fsm.phone = '\0'; in cbcp_Up()
343 } else if (strchr(cbcp->fsm.phone, ',')) in cbcp_Up()
344 cbcp->fsm.type = CBCP_LISTNUM; in cbcp_Up()
346 cbcp->fsm.type = CBCP_SERVERNUM; in cbcp_Up()
347 cbcp->fsm.restart = DEF_FSMTRIES; in cbcp_Up()
356 * We've received a REQ (data). Adjust our response (cbcp->fsm.*) in cbcp_AdjustResponse()
369 cbcp->fsm.type = CBCP_NONUM; in cbcp_AdjustResponse()
380 if (cbcp->fsm.type == CBCP_CLIENTNUM) { in cbcp_AdjustResponse()
396 ptr = strchr(cbcp->fsm.phone, ','); in cbcp_AdjustResponse()
405 if (cbcp->fsm.type == CBCP_SERVERNUM) { in cbcp_AdjustResponse()
406 *cbcp->fsm.phone = '\0'; in cbcp_AdjustResponse()
421 } else if (cbcp->fsm.type == CBCP_CLIENTNUM) { in cbcp_AdjustResponse()
427 char list[sizeof cbcp->fsm.phone], *next; in cbcp_AdjustResponse()
429 strncpy(list, cbcp->fsm.phone, sizeof list - 1); in cbcp_AdjustResponse()
433 cbcp->fsm.type = CBCP_SERVERNUM; in cbcp_AdjustResponse()
434 strcpy(cbcp->fsm.phone, next); in cbcp_AdjustResponse()
443 if (cbcp->fsm.type == CBCP_CLIENTNUM || cbcp->fsm.type == CBCP_LISTNUM) { in cbcp_AdjustResponse()
445 * Search through ``data''s addresses and see if cbcp->fsm.phone in cbcp_AdjustResponse()
448 char list[sizeof cbcp->fsm.phone], *next, *end; in cbcp_AdjustResponse()
455 strncpy(list, cbcp->fsm.phone, sizeof list - 1); in cbcp_AdjustResponse()
459 cbcp->fsm.type = CBCP_LISTNUM; in cbcp_AdjustResponse()
460 strcpy(cbcp->fsm.phone, next); in cbcp_AdjustResponse()
486 cbcp->fsm.id, cbcpstate(cbcp->fsm.state)); in cbcp_SendResponse()
488 data.type = cbcp->fsm.type; in cbcp_SendResponse()
489 data.delay = cbcp->fsm.delay; in cbcp_SendResponse()
493 else if (*cbcp->fsm.phone) { in cbcp_SendResponse()
495 strncpy(addr->addr, cbcp->fsm.phone, sizeof addr->addr - 1); in cbcp_SendResponse()
503 cbcp->fsm.restart--; in cbcp_SendResponse()
504 cbcp_StartTimer(cbcp, cbcp->fsm.delay); in cbcp_SendResponse()
518 * our REQ (cbcp->fsm) in cbcp_CheckResponse()
524 if (data->type == cbcp->fsm.type) { in cbcp_CheckResponse()
525 switch (cbcp->fsm.type) { in cbcp_CheckResponse()
536 strncpy(cbcp->fsm.phone, addr->addr, sizeof cbcp->fsm.phone - 1); in cbcp_CheckResponse()
537 cbcp->fsm.phone[sizeof cbcp->fsm.phone - 1] = '\0'; in cbcp_CheckResponse()
538 cbcp->fsm.delay = data->delay; in cbcp_CheckResponse()
544 cbcp->fsm.delay = data->delay; in cbcp_CheckResponse()
554 char list[sizeof cbcp->fsm.phone], *next; in cbcp_CheckResponse()
556 strncpy(list, cbcp->fsm.phone, sizeof list - 1); in cbcp_CheckResponse()
560 strcpy(cbcp->fsm.phone, next); in cbcp_CheckResponse()
561 cbcp->fsm.delay = data->delay; in cbcp_CheckResponse()
570 (int)cbcp->fsm.type); in cbcp_CheckResponse()
572 } else if (data->type == CBCP_NONUM && cbcp->fsm.type == CBCP_CLIENTNUM) { in cbcp_CheckResponse()
577 cbcp->fsm.type = CBCP_NONUM; in cbcp_CheckResponse()
593 cbcp->fsm.id, cbcpstate(cbcp->fsm.state)); in cbcp_SendAck()
595 data.type = cbcp->fsm.type; in cbcp_SendAck()
603 strncpy(addr->addr, cbcp->fsm.phone, sizeof addr->addr - 1); in cbcp_SendAck()
605 data.delay = cbcp->fsm.delay; in cbcp_SendAck()
609 data.delay = cbcp->fsm.delay; in cbcp_SendAck()
616 cbcp->fsm.restart--; in cbcp_SendAck()
617 cbcp_StartTimer(cbcp, cbcp->fsm.delay); in cbcp_SendAck()
660 p->dl->name, head->id, cbcpstate(cbcp->fsm.state)); in cbcp_Input()
662 if (cbcp->fsm.state == CBCP_STOPPED || cbcp->fsm.state == CBCP_RESPSENT) { in cbcp_Input()
663 timer_Stop(&cbcp->fsm.timer); in cbcp_Input()
665 cbcp->fsm.restart = DEF_FSMTRIES; in cbcp_Input()
666 cbcp->fsm.id = head->id; in cbcp_Input()
676 p->dl->name, head->id, cbcpstate(cbcp->fsm.state)); in cbcp_Input()
678 if (cbcp->fsm.id != head->id) { in cbcp_Input()
680 cbcp->fsm.id, head->id); in cbcp_Input()
681 cbcp->fsm.id = head->id; in cbcp_Input()
683 if (cbcp->fsm.state == CBCP_REQSENT || cbcp->fsm.state == CBCP_ACKSENT) { in cbcp_Input()
684 timer_Stop(&cbcp->fsm.timer); in cbcp_Input()
691 cbcp->fsm.restart = DEF_FSMTRIES; in cbcp_Input()
693 if (cbcp->fsm.type == CBCP_NONUM) { in cbcp_Input()
698 timer_Stop(&cbcp->fsm.timer); in cbcp_Input()
713 p->dl->name, head->id, cbcpstate(cbcp->fsm.state)); in cbcp_Input()
715 if (cbcp->fsm.id != head->id) { in cbcp_Input()
717 cbcp->fsm.id, head->id); in cbcp_Input()
718 cbcp->fsm.id = head->id; in cbcp_Input()
720 if (cbcp->fsm.type == CBCP_NONUM) { in cbcp_Input()
725 timer_Stop(&cbcp->fsm.timer); in cbcp_Input()
727 } else if (cbcp->fsm.state == CBCP_RESPSENT) { in cbcp_Input()
728 timer_Stop(&cbcp->fsm.timer); in cbcp_Input()
748 timer_Stop(&cbcp->fsm.timer); in cbcp_Down()
756 if (p->dl->cbcp.fsm.state == CBCP_ACKSENT) { in cbcp_ReceiveTerminateReq()
760 p->dl->cbcp.fsm.phone); in cbcp_ReceiveTerminateReq()