📄 pppncplib.c
字号:
PPP_CONTROL_PHASE ipcp_pppPhaseGet () { return NETWORK_PHASE; }/******************************************************************************** ipcp_pppStateGet - Get the ipcp ppp state** RETURNS: PPP_STATE*/PPP_STATE ipcp_pppStateGet ( PFW_PLUGIN_OBJ_STATE * pState /* state for the stack */ ) { PPP_CONTROL_PROTOCOL_STATE_DATA *pStateData = (PPP_CONTROL_PROTOCOL_STATE_DATA *) pState->stackData; return (pStateData->state); }/******************************************************************************** ipcp_periodic_timer - start the timer** RETURNS: OK or ERROR*/STATUS ipcp_periodic_timer ( PFW_PLUGIN_OBJ_STATE * pPluginState, /* state for the satck */ int arg ) { NCP_STACK_DATA * pStackData = (NCP_STACK_DATA *) pPluginState->stackData; periodic_ipcp_configure_or_termination_request (pPluginState,0); pfwTimerStart (pStackData->ncp_timer,PFW_SECOND,1,ipcp_periodic_timer,0); return OK; }/******************************************************************************** periodic_ipcp_configure_or_termination_request - IPCP configure or termination* request periodic retry packet** RETURNS: N/A*/void periodic_ipcp_configure_or_termination_request ( PFW_PLUGIN_OBJ_STATE * pPluginState, /* value for this parameter */ UINT32 arg ) { NCP_STACK_DATA * pStackData = (NCP_STACK_DATA *) pPluginState->stackData; NCP_PROFILE_DATA * pProfileData = (NCP_PROFILE_DATA * )pPluginState->profileData; if ((pStackData->stateData.state == PPP_STOPPED_STATE) && (pStackData->configuration_request_backoff_period_started == TRUE)) { ++pStackData->configuration_request_backoff_interval; if (pStackData->configuration_request_backoff_interval >= pProfileData->maximum_configuration_request_backoff_interval) { execute_ppp_state_machine (pPluginState,PPP_DOWN_EVENT,NULL); execute_ppp_state_machine (pPluginState,PPP_UP_EVENT,NULL); pStackData->configuration_request_backoff_period_started = FALSE; pStackData->configuration_request_backoff_interval = 0x0000; } } else if ((pStackData->stateData.state != PPP_STOPPED_STATE) && (pStackData->configuration_request_backoff_period_started == TRUE)) { pStackData->configuration_request_backoff_period_started = FALSE; pStackData->configuration_request_backoff_interval = 0x0000; } if ((pStackData->stateData.state > PPP_STOPPING_STATE) && (pStackData->stateData.state < PPP_OPENED_STATE)) { if (++pStackData->configuration_request_send_interval >= pProfileData->maximum_configuration_request_send_interval) { pStackData->configuration_request_send_interval = 0x00000000L; if (++pStackData->number_of_ncp_configuration_requests <= (pProfileData->maximum_number_of_configuration_requests - 1)) { execute_ppp_state_machine (pPluginState, PPP_TIMEOUT_WITH_COUNTER_GREATER_THAN_ZERO_EVENT, pStackData->last_txed_ncp_configuration_request_packet); } else { if (pStackData->last_txed_ncp_configuration_request_packet != NULL) { m_freem(pStackData->last_txed_ncp_configuration_request_packet); pStackData->last_txed_ncp_configuration_request_packet=NULL; } execute_ppp_state_machine (pPluginState, PPP_TIMEOUT_WITH_COUNTER_EXPIRED_EVENT,NULL); pStackData->number_of_ncp_configuration_requests = 0x00000000L; if (pStackData->stateData.state == PPP_STOPPED_STATE) { pStackData->configuration_request_backoff_period_started = TRUE; pStackData->configuration_request_backoff_interval = 0x0000; } } } } if ((pStackData->stateData.state == PPP_CLOSING_STATE) || (pStackData->stateData.state == PPP_STOPPING_STATE)) { if (++pStackData->termination_request_send_interval >= pProfileData->maximum_termination_request_send_interval) { if (pStackData->number_of_ncp_termination_requests < pProfileData->maximum_number_of_termination_requests) { execute_ppp_state_machine (pPluginState, PPP_TIMEOUT_WITH_COUNTER_GREATER_THAN_ZERO_EVENT,NULL); pStackData->termination_request_send_interval = 0x00000000L; } else { execute_ppp_state_machine (pPluginState, PPP_TIMEOUT_WITH_COUNTER_EXPIRED_EVENT,NULL); pStackData->termination_request_send_interval = 0x00000000L; } } } }/******************************************************************************** retry_ipcp_configure_request - IPCP configure request sending retry packet * NOMANUAL** RETURNS: OK or ERROR*/STATUS retry_ipcp_configure_request ( PFW_PLUGIN_OBJ_STATE * pPluginState, /* state for the stack */ int backoffStarted ) { NCP_STACK_DATA * pStackData = (NCP_STACK_DATA *) pPluginState->stackData; NCP_PROFILE_DATA * pProfileData = (NCP_PROFILE_DATA * ) pPluginState->profileData; if (pStackData->stateData.state == PPP_STOPPED_STATE && (backoffStarted > 0)) { execute_ppp_state_machine (pPluginState,PPP_DOWN_EVENT,NULL); execute_ppp_state_machine (pPluginState,PPP_UP_EVENT,NULL); pStackData->configuration_request_backoff_period_started = FALSE; return OK; } if ((pStackData->stateData.state > PPP_STOPPING_STATE) && (pStackData->stateData.state < PPP_OPENED_STATE)) { if (++pStackData->number_of_ncp_configuration_requests < (pProfileData->maximum_number_of_configuration_requests)) { execute_ppp_state_machine (pPluginState, PPP_TIMEOUT_WITH_COUNTER_GREATER_THAN_ZERO_EVENT, NULL); } else { if (pStackData->last_txed_ncp_configuration_request_packet != NULL) { netMblkClChainFree ( pStackData->last_txed_ncp_configuration_request_packet); pStackData->last_txed_ncp_configuration_request_packet=NULL; } if (pStackData->last_rxed_ncp_configuration_request_packet != NULL) { netMblkClChainFree ( pStackData->last_rxed_ncp_configuration_request_packet); pStackData->last_rxed_ncp_configuration_request_packet=NULL; } execute_ppp_state_machine (pPluginState, PPP_TIMEOUT_WITH_COUNTER_EXPIRED_EVENT,NULL); pStackData->number_of_ncp_configuration_requests = 0x00000000L; if (pStackData->stateData.state == PPP_STOPPED_STATE && pProfileData->maximum_configuration_request_backoff_interval> 0) { if (pfwTimerStart (pStackData->ncp_timer,PFW_SECOND, pProfileData->maximum_configuration_request_backoff_interval, retry_ipcp_configure_request,1) == ERROR) { logMsg ("Back off start failed: state = %d\n", pStackData->stateData.state,2,3,4,5,6); } pStackData->configuration_request_backoff_period_started = TRUE; } } } return OK; }/******************************************************************************** retry_ipcp_termination_request - IPCP termination request sending retry packet* NOMANUAL** RETURNS: OK or ERROR*/STATUS retry_ipcp_termination_request ( PFW_PLUGIN_OBJ_STATE * pPluginState, /* state for the stack */ int arg ) { NCP_STACK_DATA * pStackData = (NCP_STACK_DATA *) pPluginState->stackData; NCP_PROFILE_DATA * pProfileData = (NCP_PROFILE_DATA * ) pPluginState->profileData; if ((pStackData->stateData.state == PPP_CLOSING_STATE) || (pStackData->stateData.state == PPP_STOPPING_STATE)) { if (pStackData->number_of_ncp_termination_requests < pProfileData->maximum_number_of_termination_requests) { execute_ppp_state_machine (pPluginState, PPP_TIMEOUT_WITH_COUNTER_GREATER_THAN_ZERO_EVENT,NULL); } else { execute_ppp_state_machine (pPluginState, PPP_TIMEOUT_WITH_COUNTER_EXPIRED_EVENT,NULL); } } return OK; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -