📄 lcptimer.c
字号:
/* lcptimer.c - LCP timer functions *//* Copyright 1999 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01c,24feb00,sj correct +1 error in number of configRequests01b,09nov99,sj do not pass retry config request packet by argument01a,13oct99,sj created*/#include "private/ppp/pppLcpComponentP.h"/**$Log:: /Rtrware/devdrvrs/ppp/ppptime $ * * 8 3/12/99 11:27a Nishit * Bunch of small changes - mostly in MP * related code * * 7 10/01/98 11:43a Alex * Updated the PPP source code to conform * to a single build. * * 6 4/30/98 3:03p Alex * Ppp v4.2.0 check in * * 1 4/24/98 12:10a Release Engineer * code cleanup, code style changes, * linted, system level test * PPP v4.2.0*/#if 0LOCAL void periodic_lcp_link_quality_report (PFW_PLUGIN_OBJ_STATE *,UINT32 arg);STATUS periodic_time_remaining_packets (PFW_PLUGIN_OBJ_STATE *, int arg);#endif/******************************************************************************** retry_lcp_configure_request -*/STATUS retry_lcp_configure_request ( PFW_PLUGIN_OBJ_STATE * pluginState, int backoffStarted ) { LCP_STACK_DATA * pStackData = (LCP_STACK_DATA * )pluginState->stackData; LCP_PROFILE_DATA * pProfileData = (LCP_PROFILE_DATA * )pluginState->profileData; if ((pStackData->stateData.state == PPP_STOPPED_STATE) && (backoffStarted > 0)) { execute_ppp_state_machine (pluginState,PPP_DOWN_EVENT,NULL); execute_ppp_state_machine (pluginState,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_configuration_requests < (pProfileData->maximum_number_of_configuration_requests)) { execute_ppp_state_machine (pluginState, PPP_TIMEOUT_WITH_COUNTER_GREATER_THAN_ZERO_EVENT, NULL); } else { if (pStackData->last_txed_lcp_configuration_request_packet != NULL) { netMblkClChainFree ( pStackData->last_txed_lcp_configuration_request_packet); pStackData->last_txed_lcp_configuration_request_packet=NULL; } execute_ppp_state_machine (pluginState, PPP_TIMEOUT_WITH_COUNTER_EXPIRED_EVENT,NULL); pStackData->number_of_configuration_requests = 0x00000000L; if (pStackData->stateData.state == PPP_STOPPED_STATE && pProfileData->maximum_configuration_request_backoff_interval >0) { if (pfwTimerStart(pStackData->lcp_timer,PFW_SECOND, pProfileData->maximum_configuration_request_backoff_interval, retry_lcp_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_lcp_termination_request -*/STATUS retry_lcp_termination_request ( PFW_PLUGIN_OBJ_STATE * pluginState, int arg ) { LCP_STACK_DATA * pStackData = (LCP_STACK_DATA * )pluginState->stackData; LCP_PROFILE_DATA * pProfileData = (LCP_PROFILE_DATA * )pluginState->profileData; if ((pStackData->stateData.state == PPP_CLOSING_STATE) || (pStackData->stateData.state == PPP_STOPPING_STATE)) { if (pStackData->number_of_lcp_termination_requests < pProfileData->maximum_number_of_termination_requests) { execute_ppp_state_machine (pluginState, PPP_TIMEOUT_WITH_COUNTER_GREATER_THAN_ZERO_EVENT,NULL); } else { execute_ppp_state_machine (pluginState, PPP_TIMEOUT_WITH_COUNTER_EXPIRED_EVENT,NULL); } } return OK; }/******************************************************************************** periodic_lcp_echo_request -*/STATUS periodic_lcp_echo_request ( PFW_PLUGIN_OBJ_STATE * pluginState, int arg ) { LCP_STACK_DATA * pStackData = (LCP_STACK_DATA * )pluginState->stackData; LCP_PROFILE_DATA * pProfileData = (LCP_PROFILE_DATA * )pluginState->profileData; if (pStackData->stateData.state == PPP_OPENED_STATE && pProfileData->maximum_echo_request_send_interval) { if (pStackData->number_of_echo_requests < pProfileData->maximum_number_of_unacknowledged_echo_requests) { execute_ppp_state_machine (pluginState, PPP_ECHO_RESPONSE_TIMEOUT, pStackData->last_txed_echo_request_packet); } else { if(pStackData->last_txed_echo_request_packet != NULL) { netMblkClChainFree ( pStackData->last_txed_echo_request_packet); pStackData->last_txed_echo_request_packet = NULL; } execute_ppp_state_machine (pluginState, PPP_ECHO_RESPONSE_TIMEOUT_FAILURE,NULL); } } return OK; }#if 0/******************************************************************************** periodic_lcp_link_quality_report -*/LOCAL void periodic_lcp_link_quality_report ( PFW_PLUGIN_OBJ_STATE * pluginState, UINT32 arg ) { LCP_STACK_DATA * pStackData = (LCP_STACK_DATA * )pluginState->stackData; LINK_QUALITY_OPTION link_quality_option; if (is_option_present (&pStackData->option_lists.tx_accepted, (BYTE) LCP_QUALITY_PROTOCOL) == TRUE) { if (copy_option (&pStackData->option_lists.tx_accepted, LCP_QUALITY_PROTOCOL, &link_quality_option.quality_protocol, sizeof (link_quality_option.quality_protocol) + sizeof (link_quality_option.reporting_time)) == PASS) { if ((ntohl (link_quality_option.reporting_time) != 0x00000000L) && (++pStackData->time_to_send_LQR >= ntohl (link_quality_option.reporting_time))) { send_lcp_link_quality_report (pluginState); } } } }/******************************************************************************** periodic_time_remaining_packets -*/STATUS periodic_time_remaining_packets ( PFW_PLUGIN_OBJ_STATE * pluginState, UINT32 arg ) { send_lcp_time_remaining_packet (pluginState); }#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -