⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcptimer.c

📁 这是全套的PPP协议的源码
💻 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 + -