📄 pppstate.c
字号:
/* UP */ {null_state,ILLEGAL_PPP_STATE}, /* DOWN */ {set_ppp_state,PPP_STARTING_STATE}, /* OPEN */ {set_ppp_state,PPP_REQUEST_SENT_STATE}, /* CLOSE */ {initialize_restart_counter, NO_CHANGE_TO_PPP_STATE, send_termination_request, PPP_CLOSING_STATE}, /* TIMEOUT_WITH_COUNTER_GREATER*/{send_configuration_request, PPP_REQUEST_SENT_STATE}, /* TIMEOUT_WITH_COUNTER_EXPIRED*/{this_layer_finished, PPP_STOPPED_STATE}, /* RX */ /* CONFIGURE_REQUEST_GOOD */ {send_configuration_ack, PPP_ACK_SENT_STATE}, /* CONFIGURE_REQUEST_BAD */ {send_configuration_nak, PPP_REQUEST_SENT_STATE}, /* CONFIGURE_REQUEST_BAD_OPTION*/{send_configuration_reject, PPP_REQUEST_SENT_STATE}, /* CONFIGURE_ACK */ {initialize_restart_counter, NO_CHANGE_TO_PPP_STATE, set_ppp_state,PPP_ACK_RECEIVED_STATE}, /* CONFIGURE_NAK */ {initialize_restart_counter, NO_CHANGE_TO_PPP_STATE, send_configuration_request, PPP_REQUEST_SENT_STATE}, /* CONFIGURE_REJECT */ {initialize_restart_counter, NO_CHANGE_TO_PPP_STATE, send_configuration_request, PPP_REQUEST_SENT_STATE}, /* TERMINATE_REQUEST */ {send_termination_ack, PPP_REQUEST_SENT_STATE}, /* TERMINATE_ACK */ {set_ppp_state,PPP_REQUEST_SENT_STATE}, /* UNKNOWN_CODE */ {send_code_reject, PPP_REQUEST_SENT_STATE}, /* CODE_REJECT_PERMITTED */ {set_ppp_state,PPP_REQUEST_SENT_STATE}, /* PROTOCOL_REJECT */ {set_ppp_state,PPP_REQUEST_SENT_STATE}, /* CODE_REJECT_CATASTROPHIC */ {this_layer_finished,PPP_STOPPED_STATE}, /* ECHO_REQUEST */ {set_ppp_state,PPP_REQUEST_SENT_STATE}, /* ECHO_REPLY */ {set_ppp_state,PPP_REQUEST_SENT_STATE}, /* DISCARD_REQUEST */ {set_ppp_state,PPP_REQUEST_SENT_STATE}, /* PPP_ECHO_RESPONSE_TIMEOUT */ {null_state,ILLEGAL_PPP_STATE}, /* PPP_ECHO_RESPONSE_FAILURE */ {null_state,ILLEGAL_PPP_STATE} }, { /* ----------------------------------------------------------------- */ /* ACK_RECEIVED state: 7 */ /* ----------------------------------------------------------------- */ /* UP */ {null_state,ILLEGAL_PPP_STATE}, /* DOWN */ {set_ppp_state,PPP_STARTING_STATE}, /* OPEN */ {set_ppp_state,PPP_ACK_RECEIVED_STATE}, /* CLOSE */ {initialize_restart_counter, NO_CHANGE_TO_PPP_STATE, send_termination_request, PPP_CLOSING_STATE}, /* TIMEOUT_WITH_COUNTER_GREATER*/{send_configuration_request, PPP_REQUEST_SENT_STATE}, /* TIMEOUT_WITH_COUNTER_EXPIRED*/{this_layer_finished, PPP_STOPPED_STATE}, /* RX */ /* CONFIGURE_REQUEST_GOOD */ {send_configuration_ack, NO_CHANGE_TO_PPP_STATE, this_layer_up,PPP_OPENED_STATE}, /* CONFIGURE_REQUEST_BAD */ {send_configuration_nak, PPP_ACK_RECEIVED_STATE}, /* CONFIGURE_REQUEST_BAD_OPTION */{send_configuration_reject, PPP_ACK_RECEIVED_STATE}, /* CONFIGURE_ACK */ {send_configuration_request, PPP_REQUEST_SENT_STATE}, /* CONFIGURE_NAK */ {send_configuration_request, PPP_REQUEST_SENT_STATE}, /* CONFIGURE_REJECT */ {send_configuration_request, PPP_REQUEST_SENT_STATE}, /* TERMINATE_REQUEST */ {send_termination_ack, PPP_REQUEST_SENT_STATE}, /* TERMINATE_ACK */ {set_ppp_state,PPP_REQUEST_SENT_STATE}, /* UNKNOWN_CODE */ {send_code_reject, PPP_ACK_RECEIVED_STATE}, /* CODE_REJECT_PERMITTED */ {set_ppp_state, PPP_REQUEST_SENT_STATE}, /* PROTOCOL_REJECT */ {set_ppp_state,PPP_REQUEST_SENT_STATE}, /* CODE_REJECT_CATASTROPHIC */ {this_layer_finished,PPP_STOPPED_STATE}, /* ECHO_REQUEST */ {set_ppp_state,PPP_ACK_RECEIVED_STATE}, /* ECHO_REPLY */ {set_ppp_state,PPP_ACK_RECEIVED_STATE}, /* DISCARD_REQUEST */ {set_ppp_state,PPP_ACK_RECEIVED_STATE}, /* PPP_ECHO_RESPONSE_TIMEOUT */ {null_state,ILLEGAL_PPP_STATE}, /* PPP_ECHO_RESPONSE_FAILURE */ {null_state,ILLEGAL_PPP_STATE} }, { /* ----------------------------------------------------------------- */ /* ACK_SENT state: 8 */ /* ----------------------------------------------------------------- */ /* UP */ {null_state,ILLEGAL_PPP_STATE}, /* DOWN */ {set_ppp_state,PPP_STARTING_STATE}, /* OPEN */ {set_ppp_state,PPP_ACK_SENT_STATE}, /* CLOSE */ {initialize_restart_counter, NO_CHANGE_TO_PPP_STATE, send_termination_request, PPP_CLOSING_STATE}, /* TIMEOUT_WITH_COUNTER_GREATER */{send_configuration_request, PPP_ACK_SENT_STATE}, /* TIMEOUT_WITH_COUNTER_EXPIRED */{this_layer_finished, PPP_STOPPED_STATE}, /* RX */ /* CONFIGURE_REQUEST_GOOD */ {send_configuration_ack, PPP_ACK_SENT_STATE}, /* CONFIGURE_REQUEST_BAD */ {send_configuration_nak, PPP_ACK_RECEIVED_STATE}, /* CONFIGURE_REQUEST_BAD_OPTION */{send_configuration_reject, PPP_ACK_RECEIVED_STATE}, /* CONFIGURE_ACK */ {initialize_restart_counter, NO_CHANGE_TO_PPP_STATE, this_layer_up,PPP_OPENED_STATE}, /* CONFIGURE_NAK */ {initialize_restart_counter, NO_CHANGE_TO_PPP_STATE, send_configuration_request, PPP_ACK_SENT_STATE}, /* CONFIGURE_REJECT */ {initialize_restart_counter, NO_CHANGE_TO_PPP_STATE, send_configuration_request, PPP_ACK_SENT_STATE}, /* TERMINATE_REQUEST */ {send_termination_ack, PPP_REQUEST_SENT_STATE}, /* TERMINATE_ACK */ {set_ppp_state,PPP_ACK_SENT_STATE}, /* UNKNOWN_CODE */ {send_code_reject,PPP_ACK_SENT_STATE}, /* CODE_REJECT_PERMITTED */ {set_ppp_state,PPP_ACK_SENT_STATE}, /* PROTOCOL_REJECT */ {set_ppp_state,PPP_ACK_SENT_STATE}, /* CODE_REJECT_CATASTROPHIC */ {this_layer_finished, PPP_STOPPED_STATE}, /* ECHO_REQUEST */ {set_ppp_state,PPP_ACK_SENT_STATE}, /* ECHO_REPLY */ {set_ppp_state,PPP_ACK_SENT_STATE}, /* DISCARD_REQUEST */ {set_ppp_state,PPP_ACK_SENT_STATE}, /* PPP_ECHO_RESPONSE_TIMEOUT */ {null_state,ILLEGAL_PPP_STATE}, /* PPP_ECHO_RESPONSE_FAILURE */ {null_state,ILLEGAL_PPP_STATE} }, { /* ----------------------------------------------------------------- */ /* OPENED state: 9 */ /* ----------------------------------------------------------------- */ /* UP */ {null_state,ILLEGAL_PPP_STATE}, /* DOWN */ {this_layer_down,PPP_STARTING_STATE}, /* OPEN */ {set_ppp_state,PPP_OPENED_STATE}, /* CLOSE */ {this_layer_down, NO_CHANGE_TO_PPP_STATE, initialize_restart_counter, NO_CHANGE_TO_PPP_STATE, send_termination_request, PPP_CLOSING_STATE}, /* TIMEOUT_WITH_COUNTER_GREATER */{null_state,ILLEGAL_PPP_STATE}, /* TIMEOUT_WITH_COUNTER_EXPIRED */{null_state,ILLEGAL_PPP_STATE}, /* RX */ /* CONFIGURE_REQUEST_GOOD */ {this_layer_down, NO_CHANGE_TO_PPP_STATE, send_configuration_request, NO_CHANGE_TO_PPP_STATE, send_configuration_ack, PPP_ACK_SENT_STATE}, /* CONFIGURE_REQUEST_BAD */ {this_layer_down, NO_CHANGE_TO_PPP_STATE, send_configuration_request, NO_CHANGE_TO_PPP_STATE, send_configuration_nak, PPP_REQUEST_SENT_STATE}, /* CONFIGURE_REQUEST_BAD_OPTION */{this_layer_down, NO_CHANGE_TO_PPP_STATE, send_configuration_request, NO_CHANGE_TO_PPP_STATE, send_configuration_reject, PPP_REQUEST_SENT_STATE}, /* CONFIGURE_ACK */ {this_layer_down, NO_CHANGE_TO_PPP_STATE, send_configuration_request, PPP_REQUEST_SENT_STATE}, /* CONFIGURE_NAK */ {this_layer_down, NO_CHANGE_TO_PPP_STATE, send_configuration_request, PPP_REQUEST_SENT_STATE}, /* CONFIGURE_REJECT */ {this_layer_down, NO_CHANGE_TO_PPP_STATE, send_configuration_request, PPP_REQUEST_SENT_STATE}, /* TERMINATE_REQUEST */ {this_layer_down, NO_CHANGE_TO_PPP_STATE, zero_restart_counter, NO_CHANGE_TO_PPP_STATE, send_termination_ack, PPP_STOPPING_STATE}, /* TERMINATE_ACK */ {this_layer_down, NO_CHANGE_TO_PPP_STATE, send_configuration_request, PPP_REQUEST_SENT_STATE}, /* UNKNOWN_CODE */ {send_code_reject, PPP_OPENED_STATE}, /* CODE_REJECT_PERMITTED */ {set_ppp_state,PPP_OPENED_STATE}, /* PROTOCOL_REJECT */ {set_ppp_state,PPP_OPENED_STATE}, /* CODE_REJECT_CATASTROPHIC */ {this_layer_down, NO_CHANGE_TO_PPP_STATE, initialize_restart_counter, NO_CHANGE_TO_PPP_STATE, send_termination_request, PPP_STOPPING_STATE}, /* ECHO_REQUEST */ {send_echo_reply,PPP_OPENED_STATE}, /* ECHO_REPLY */ {set_ppp_state,PPP_OPENED_STATE}, /* DISCARD_REQUEST */ {set_ppp_state,PPP_OPENED_STATE}, /* PPP_ECHO_RESPONSE_TIMEOUT */ {send_echo_request,PPP_OPENED_STATE}, /* PPP_ECHO_RESPONSE_FAILURE */ {this_layer_down, NO_CHANGE_TO_PPP_STATE, initialize_restart_counter, NO_CHANGE_TO_PPP_STATE, send_termination_request, PPP_STOPPING_STATE} } };/******************************************************************************** execute_ppp_state_machine -*/void execute_ppp_state_machine ( PFW_PLUGIN_OBJ_STATE * pluginState, PPP_EVENT ppp_event, M_BLK_ID pMblk ) { PPP_CONTROL_PROTOCOL_STATE_DATA *pStateData = (PPP_CONTROL_PROTOCOL_STATE_DATA *)pluginState->stackData; PPP_STATE original_state; if (pStateData != NULL) original_state = pStateData->state; else return; if (state_machine_table[original_state][ppp_event].end_state == ILLEGAL_PPP_STATE) { printf("PPP: %s: Illegal transition; state %d, Event %d, stack 0x%x\n", pluginState->pluginObj->name, original_state, (USHORT) ppp_event,(UINT32)pluginState->stackObj); if (pMblk != NULL) netMblkClChainFree (pMblk); return; } if (state_machine_table[original_state][ppp_event].fptr_state_function != NULL) { (*state_machine_table[original_state][ppp_event].fptr_state_function) (pluginState, pMblk, state_machine_table[original_state][ppp_event].end_state); if ((state_machine_table[original_state][ppp_event].end_state != NO_CHANGE_TO_PPP_STATE) && (state_machine_table[original_state][ppp_event].fptr_state_function != set_ppp_state)) { set_ppp_state (pluginState,NULL, state_machine_table[original_state][ppp_event].end_state); } } if (state_machine_table[original_state][ppp_event].fptr_state_function_1 != NULL) { (*state_machine_table[original_state][ppp_event].fptr_state_function_1) (pluginState,pMblk, state_machine_table[original_state][ppp_event].end_state_1); if ((state_machine_table[original_state][ppp_event].end_state_1 != NO_CHANGE_TO_PPP_STATE) && (state_machine_table[original_state][ppp_event].fptr_state_function_1 != set_ppp_state)) { set_ppp_state (pluginState,NULL, state_machine_table[original_state][ppp_event].end_state_1); } } if (state_machine_table[original_state][ppp_event].fptr_state_function_2 != NULL) { (*state_machine_table[original_state][ppp_event].fptr_state_function_2) (pluginState,pMblk, state_machine_table[original_state][ppp_event].end_state_2); if ((state_machine_table[original_state][ppp_event].end_state_2 != NO_CHANGE_TO_PPP_STATE) && (state_machine_table[original_state][ppp_event].fptr_state_function_2 != set_ppp_state)) { set_ppp_state (pluginState,NULL, state_machine_table[original_state][ppp_event].end_state_2); } } pStateData->old_state = (BYTE_ENUM (PPP_STATE)) original_state; }/******************************************************************************** set_ppp_state -*/void set_ppp_state ( PFW_PLUGIN_OBJ_STATE * pluginState, M_BLK_ID pMblk, PPP_STATE end_state
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -