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

📄 bacpstate.c

📁 这是全套的PPP协议的源码
💻 C
📖 第 1 页 / 共 3 页
字号:
	/* UNKNOWN_CODE */               {bacpSendCodeReject,	                                                PPP_REQUEST_SENT_STATE},	/* CODE_REJECT_PERMITTED */      {bacpSetState, PPP_REQUEST_SENT_STATE},	/* PROTOCOL_REJECT */            {bacpSetState, PPP_REQUEST_SENT_STATE},	/* CODE_REJECT_CATASTROPHIC */   {bacpThisLayerFinished,														PPP_STOPPED_STATE},	/* ECHO_REQUEST	*/               {bacpNullState, PPP_REQUEST_SENT_STATE},	/* ECHO_REPLY */                 {bacpNullState, PPP_REQUEST_SENT_STATE},	/* DISCARD_REQUEST */            {bacpNullState, PPP_REQUEST_SENT_STATE},	/* PPP_ECHO_RESPONSE_TIMEOUT */  {bacpNullState, PPP_REQUEST_SENT_STATE},	/* PPP_ECHO_RESPONSE_FAILURE */  {bacpNullState, PPP_REQUEST_SENT_STATE}	},	{	/* ----------------------------------------------------------------- */	/* ACK_RECEIVED state: 7                                             */	/* We sent CR and received an ACK. We are waiting for the other side */	/* to send CR before we go to OPPENED state                          */	/* ----------------------------------------------------------------- */	/* UP */                          {bacpInitializeCounters,	                                                	PPP_STARTING_STATE,	                                   bacpSendConfigurationRequest,	                                                PPP_REQUEST_SENT_STATE},  	/* DOWN	*/                       {bacpSetState, PPP_CLOSED_STATE},	/* OPEN	*/                       {bacpNullState, PPP_ACK_RECEIVED_STATE},	/* CLOSE */                      {bacpNullState, PPP_ACK_RECEIVED_STATE},	/* TIMEOUT_WITH_COUNTER_GREATER*/{bacpSendConfigurationRequest,	                                                PPP_REQUEST_SENT_STATE},	/* TIMEOUT_WITH_COUNTER_EXPIRED*/{bacpThisLayerFinished,	                                                PPP_STOPPED_STATE},	/* RX */	/* CONFIGURE_REQUEST_GOOD */     {bacpSendConfigurationAck,	                                                NO_CHANGE_TO_PPP_STATE,	                                  bacpThisLayerUp, PPP_OPENED_STATE},	/* CONFIGURE_REQUEST_BAD */      {bacpSendConfigurationNak,	                                                PPP_ACK_RECEIVED_STATE},	/* CONFIGURE_REQUEST_BAD_OPTION	*/{bacpSendConfigurationReject,	                                                PPP_ACK_RECEIVED_STATE},	/* CONFIGURE_ACK */              {bacpSendConfigurationRequest,	                                                PPP_REQUEST_SENT_STATE},	/* CONFIGURE_NAK */              {bacpSendConfigurationRequest,	                                                PPP_REQUEST_SENT_STATE},	/* CONFIGURE_REJECT */           {bacpSendConfigurationRequest,	                                                PPP_REQUEST_SENT_STATE},	/* TERMINATE_REQUEST */          {bacpSendTerminationAck,	                                                PPP_REQUEST_SENT_STATE},	/* TERMINATE_ACK */              {bacpSetState, PPP_REQUEST_SENT_STATE},	/* UNKNOWN_CODE	*/               {bacpSendCodeReject,	                                                PPP_ACK_RECEIVED_STATE},	/* CODE_REJECT_PERMITTED */      {bacpSetState, PPP_REQUEST_SENT_STATE},	/* PROTOCOL_REJECT */            {bacpSetState, PPP_REQUEST_SENT_STATE},	/* CODE_REJECT_CATASTROPHIC */  {bacpThisLayerFinished, PPP_STOPPED_STATE},	/* ECHO_REQUEST */               {bacpNullState, PPP_ACK_RECEIVED_STATE},	/* ECHO_REPLY */                 {bacpNullState, PPP_ACK_RECEIVED_STATE},	/* DISCARD_REQUEST */            {bacpNullState, PPP_ACK_RECEIVED_STATE},	/* PPP_ECHO_RESPONSE_TIMEOUT */  {bacpNullState, PPP_ACK_RECEIVED_STATE},	/* PPP_ECHO_RESPONSE_FAILURE */  {bacpNullState, PPP_ACK_RECEIVED_STATE}	},	{	/* ----------------------------------------------------------------- */	/* ACK_SENT state: 8                                                 */	/* ----------------------------------------------------------------- */	/* UP */                          {bacpInitializeCounters,	                                                	PPP_STARTING_STATE,	                                   bacpSendConfigurationRequest,	                                                PPP_REQUEST_SENT_STATE}, 	/* DOWN	*/                       {bacpSetState, PPP_STOPPED_STATE},	/* OPEN */                       {bacpNullState, PPP_ACK_SENT_STATE},	/* CLOSE */                      {bacpNullState, PPP_CLOSED_STATE},	/* TIMEOUT_WITH_COUNTER_GREATER */{bacpSendConfigurationRequest,	                                                PPP_ACK_SENT_STATE},	/* TIMEOUT_WITH_COUNTER_EXPIRED */{bacpThisLayerFinished,	                                                PPP_STOPPED_STATE},	/* RX */	/* CONFIGURE_REQUEST_GOOD */      {bacpSendConfigurationAck,	                                                PPP_ACK_SENT_STATE},	/* CONFIGURE_REQUEST_BAD */       {bacpSendConfigurationNak,	                                                PPP_REQUEST_SENT_STATE},	/* CONFIGURE_REQUEST_BAD_OPTION */{bacpSendConfigurationReject,	                                                PPP_REQUEST_SENT_STATE},	/* CONFIGURE_ACK */               {bacpInitializeCounters,	                                                PPP_OPENED_STATE,	                                   bacpThisLayerUp, PPP_OPENED_STATE},	/* CONFIGURE_NAK */               {bacpInitializeCounters,	                                                NO_CHANGE_TO_PPP_STATE,	                                   bacpSendConfigurationRequest,                                                      PPP_ACK_SENT_STATE},	/* CONFIGURE_REJECT */            {bacpInitializeCounters,	                                                NO_CHANGE_TO_PPP_STATE,	                                   bacpSendConfigurationRequest,                                                      PPP_ACK_SENT_STATE},	/* TERMINATE_REQUEST */	          {bacpSendTerminationAck,	                                                PPP_REQUEST_SENT_STATE},	/* TERMINATE_ACK */               {bacpSetState, PPP_REQUEST_SENT_STATE},	/* UNKNOWN_CODE	*/                {bacpSendCodeReject, PPP_ACK_SENT_STATE},	/* CODE_REJECT_PERMITTED */       {bacpSetState, PPP_ACK_SENT_STATE},	/* PROTOCOL_REJECT */             {bacpSetState, PPP_ACK_SENT_STATE},	/* CODE_REJECT_CATASTROPHIC */	  {bacpThisLayerFinished,	                                                PPP_STOPPED_STATE},	/* ECHO_REQUEST */                {bacpNullState, PPP_ACK_SENT_STATE},	/* ECHO_REPLY */                  {bacpNullState, PPP_ACK_SENT_STATE},	/* DISCARD_REQUEST */             {bacpNullState, PPP_ACK_SENT_STATE},	/* PPP_ECHO_RESPONSE_TIMEOUT */   {bacpNullState, PPP_ACK_SENT_STATE},	/* PPP_ECHO_RESPONSE_FAILURE */   {bacpNullState, PPP_ACK_SENT_STATE}	},	{	/* ----------------------------------------------------------------- */	/* OPENED state: 9                                                   */	/* ----------------------------------------------------------------- */	/* UP */                          {bacpInitializeCounters,	                                                	PPP_STARTING_STATE,	                                   bacpSendConfigurationRequest,	                                                PPP_REQUEST_SENT_STATE},	/* DOWN */                        {bacpThisLayerDown, PPP_STARTING_STATE}, 	/* OPEN */                        {bacpNullState, PPP_OPENED_STATE},	/* CLOSE */                       {bacpNullState, PPP_CLOSED_STATE},	/* TIMEOUT_WITH_COUNTER_GREATER */{bacpSendConfigurationRequest,														 PPP_ACK_SENT_STATE},	/* TIMEOUT_WITH_COUNTER_EXPIRED	*/{bacpNullState, PPP_STOPPED_STATE},	/* RX */	/* CONFIGURE_REQUEST_GOOD */      {bacpSendConfigurationAck,	                                                 PPP_OPENED_STATE},	/* CONFIGURE_REQUEST_BAD */       {bacpThisLayerDown,	                                                 NO_CHANGE_TO_PPP_STATE,	                                   bacpSendConfigurationNak,	                                                PPP_ACK_RECEIVED_STATE},	/* CONFIGURE_REQUEST_BAD_OPTION */ {bacpThisLayerDown,	                                                 NO_CHANGE_TO_PPP_STATE,	                                   bacpSendConfigurationReject,	                                                PPP_ACK_RECEIVED_STATE},	/* CONFIGURE_ACK */               {bacpThisLayerDown,	                                                 NO_CHANGE_TO_PPP_STATE,	                                   bacpSendConfigurationRequest,	                                                PPP_ACK_SENT_STATE},	/* CONFIGURE_NAK */                {bacpThisLayerDown,	                                                 NO_CHANGE_TO_PPP_STATE,	                                   bacpSendConfigurationRequest,	                                                PPP_ACK_SENT_STATE},	/* CONFIGURE_REJECT */            {bacpThisLayerDown,	                                                 NO_CHANGE_TO_PPP_STATE,	                                   bacpSendConfigurationRequest,	                                                PPP_ACK_SENT_STATE},	/* TERMINATE_REQUEST */           {bacpThisLayerDown,	                                                 NO_CHANGE_TO_PPP_STATE,	                                   bacpSendTerminationAck,	                                                PPP_STOPPING_STATE},	/* TERMINATE_ACK */               {bacpThisLayerDown,	                                                 NO_CHANGE_TO_PPP_STATE,	                                   bacpSendConfigurationRequest,	                                                PPP_REQUEST_SENT_STATE},	/* UNKNOWN_CODE */                {bacpSendCodeReject, PPP_OPENED_STATE},	/* CODE_REJECT_PERMITTED */       {bacpSetState, PPP_OPENED_STATE},	/* PROTOCOL_REJECT */             {bacpSetState, PPP_OPENED_STATE},	/* CODE_REJECT_CATASTROPHIC */    {bacpThisLayerDown,	                                                 NO_CHANGE_TO_PPP_STATE,	                                   bacpInitializeCounters,	                                                 NO_CHANGE_TO_PPP_STATE,	                                   bacpSendTerminationRequest,	                                                 PPP_STOPPING_STATE},	/* ECHO_REQUEST */                {bacpNullState, PPP_OPENED_STATE},				/* ECHO_REPLY */                  {bacpNullState, PPP_OPENED_STATE},	/* DISCARD_REQUEST */             {bacpNullState, PPP_OPENED_STATE},	/* PPP_ECHO_RESPONSE_TIMEOUT */	  {bacpNullState, PPP_OPENED_STATE},	/* PPP_ECHO_RESPONSE_FAILURE */   {bacpNullState, PPP_OPENED_STATE}	}    };/******************************************************************************** execute_bacp_state_machine - execute BACP state machine** BACP component makes state transitions in response to calls made to this * function. This function checks for non-NULL value of execute state machine * function and if it is non-NULL, executes the corresponding function from * the state machine table. ** RETURNS: N/A*/void execute_bacp_state_machine	(	PFW_PLUGIN_OBJ_STATE * pluginState,		/* state for the stack */	PPP_EVENT ppp_event,					/* BACP event */	M_BLK_ID pMblk							/* packet */	)	{	BACP_CONTROL_PROTOCOL_STATE_DATA *pStateData = 		(BACP_CONTROL_PROTOCOL_STATE_DATA *)pluginState->stackData;	PPP_STATE original_state;	if (pStateData != NULL)		original_state = pStateData->state;    else		return;	/* check if its a valid state transition */    if (bacp_state_machine_table [original_state][ppp_event].end_state == 														ILLEGAL_PPP_STATE)		{		printf ("BACP: %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;		}	/* call the state machine function 1 */	if (bacp_state_machine_table [original_state][ppp_event].fptr_state_function != 																	NULL)		{		(*bacp_state_machine_table [original_state][ppp_event].fptr_state_function)			(pluginState, pMblk,			bacp_state_machine_table[original_state][ppp_event].end_state);		if ((bacp_state_machine_table [original_state][ppp_event].end_state != 				NO_CHANGE_TO_PPP_STATE) &&		(bacp_state_machine_table [original_state][ppp_event].fptr_state_function				!= bacpSetState))			{			bacpSetState (pluginState, NULL,					bacp_state_machine_table [original_state][ppp_event].end_state);			}		}	/* call the state machine function 2 */	if (bacp_state_machine_table [original_state][ppp_event].fptr_state_function_1 != 																		NULL)		{		(*bacp_state_machine_table [original_state][ppp_event].fptr_state_function_1)			(pluginState, pMblk,			bacp_state_machine_table [original_state][ppp_event].end_state_1);		if ((bacp_state_machine_table [original_state][ppp_event].end_state_1 != 			NO_CHANGE_TO_PPP_STATE) &&		(bacp_state_machine_table [original_state][ppp_event].fptr_state_function_1			!= bacpSetState))			{			bacpSetState (pluginState, NULL,				bacp_state_machine_table [original_state][ppp_event].end_state_1);			}		}	/* call the state machine function 3 */	if (bacp_state_machine_table [original_state][ppp_event].fptr_state_function_2 != 																		NULL)		{		(*bacp_state_machine_table [original_state][ppp_event].fptr_state_function_2)		(pluginState, pMblk,		bacp_state_machine_table [original_state][ppp_event].end_state_2);		if ((bacp_state_machine_table [original_state][ppp_event].end_state_2 != 		NO_CHANGE_TO_PPP_STATE) &&		(bacp_state_machine_table [original_state][ppp_event].fptr_state_function_2		!= bacpSetState))			{			bacpSetState (pluginState, NULL,		    bacp_state_machine_table [original_state][ppp_event].end_state_2);			}		}	/* set the old state */    pStateData->old_state = (BYTE_ENUM (PPP_STATE)) original_state;	}/******************************************************************************** bacpSetState - set BACP state** This function is called to set the state of stackData. Input state is checked* for ILLEGAL_PPP_STATE and if it is not so then stackData state is updated to * this state.** RETURNS: N/A*/void bacpSetState	(	PFW_PLUGIN_OBJ_STATE * pluginState,		/* state for the stack */	M_BLK_ID  pMblk,						/* packet */	PPP_STATE end_state						/* end state */	)	{	BACP_CONTROL_PROTOCOL_STATE_DATA *pStateData = 				(BACP_CONTROL_PROTOCOL_STATE_DATA *)pluginState->stackData;	PPP_STATE original_state = pStateData->state;	/* is end-state invalid -illegal transition */	if (end_state == ILLEGAL_PPP_STATE)		{		printf ("BACP: %s: Illegal transition; state %d, Event %d, stack 0x%x\n",			pluginState->pluginObj->name, original_state,			(USHORT)NUMBER_OF_PPP_EVENTS, (UINT32)pluginState->stackObj);		if (pMblk != NULL)			{			netMblkClChainFree (pMblk);			}		return;		}	/* set the end state */	pStateData->state = (BYTE_ENUM (PPP_STATE)) end_state;	}/******************************************************************************** bacpNullState - NULL state handler function** RETURNS: N/A*/void bacpNullState 	(	PFW_PLUGIN_OBJ_STATE * pluginState,		/* state for the stack */	M_BLK_ID  pMblk,						/* packet */	PPP_STATE end_state						/* end state */	)	{	}/******************************************************************************** bacpThisLayerStart - perform this layer start action** This function calls action table function, this_layer_start. ** RETURNS: N/A*/LOCAL void bacpThisLayerStart	(	PFW_PLUGIN_OBJ_STATE * pluginState,		/* state for the stack */	M_BLK_ID  pMblk,						/* packet */	PPP_STATE end_state						/* end state */	)	{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -