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

📄 bacpstate.c

📁 这是全套的PPP协议的源码
💻 C
📖 第 1 页 / 共 3 页
字号:
/* bacpstate.c - state machine table *//* Copyright 1999 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01c,06aug02,jr fixed build warnings 01b,19jun01,sd commented bacpZeroRestartCounters () which is unused01a,09feb01,sd created*//*DESCRIPTIONThis module implements the state machine functions for the BACP component.These functions are called from the execute_bacp_state_machine () to take the necessary action on the occurance of a event. Thes functions call the action table functions for taking the necessary action.*//**$Log:: /Rtrware/devdrvrs/BACP/vbacpsts.h                                                          $ *  * 4     4/30/98 3:01p Alex * Bacp v4.2.0 check in *  * 1     4/24/98 12:55a Release Engineer * code cleanup, code style changes, linted, system level test * BACP v4.2.0**//* includes */#include "vxWorks.h"#include "stdio.h"#include "private/ppp/bacpstate.h"/* locals and forwards */LOCAL void bacpThisLayerStart (PFW_PLUGIN_OBJ_STATE * pluginObjState,					M_BLK_ID pMblk, PPP_STATE end_state);LOCAL void bacpThisLayerFinished (PFW_PLUGIN_OBJ_STATE * pluginObjState,					M_BLK_ID pMblk, PPP_STATE end_state);LOCAL void bacpThisLayerUp (PFW_PLUGIN_OBJ_STATE * pluginObjState,					M_BLK_ID pMblk, PPP_STATE end_state);LOCAL void bacpThisLayerDown (PFW_PLUGIN_OBJ_STATE * pluginObjState,					M_BLK_ID pMblk, PPP_STATE end_state);LOCAL void bacpInitializeCounters (PFW_PLUGIN_OBJ_STATE * pluginObjState,					M_BLK_ID pMblk, PPP_STATE end_state);#if 0LOCAL void bacpZeroRestartCounters (PFW_PLUGIN_OBJ_STATE * pluginObjState,					M_BLK_ID pMblk, PPP_STATE end_state);#endifLOCAL void bacpSendConfigurationRequest (PFW_PLUGIN_OBJ_STATE * pluginObjState,					M_BLK_ID pMblk, PPP_STATE end_state);LOCAL void bacpSendConfigurationAck (PFW_PLUGIN_OBJ_STATE * pluginObjState,					M_BLK_ID pMblk, PPP_STATE end_state);LOCAL void bacpSendConfigurationNak (PFW_PLUGIN_OBJ_STATE * pluginObjState,					M_BLK_ID pMblk, PPP_STATE end_state);LOCAL void bacpSendConfigurationReject (PFW_PLUGIN_OBJ_STATE * pluginObjState,					M_BLK_ID pMblk, PPP_STATE end_state);LOCAL void bacpSendTerminationRequest (PFW_PLUGIN_OBJ_STATE * pluginObjState,					M_BLK_ID pMblk, PPP_STATE end_state);LOCAL void bacpSendTerminationAck (PFW_PLUGIN_OBJ_STATE * pluginObjState,					M_BLK_ID pMblk, PPP_STATE end_state);LOCAL void bacpSendCodeReject (PFW_PLUGIN_OBJ_STATE * pluginObjState,					M_BLK_ID pMblk, PPP_STATE end_state);/* globals */BACP_STATE_MACHINE_TABLE	bacp_state_machine_table [NUMBER_OF_PPP_STATES][NUMBER_OF_PPP_EVENTS] = 	{	{	/* ----------------------------------------------------------------- */	/* INITIAL state: 0                                                  */	/* This is the state when the BACP module is just created after the  */	/* system reset. First and only event expected in this state is call */	/* to initialize BACP. The state is then changed to STOPPED .		 */	/*																 	 */	/* ----------------------------------------------------------------- */	/* UP */						  {bacpNullState, PPP_CLOSED_STATE},    	/* DOWN */                        {bacpNullState, PPP_INITIAL_STATE},	/* OPEN */                        {bacpInitializeCounters,													PPP_STARTING_STATE},	/* CLOSE */                       {bacpNullState, PPP_INITIAL_STATE},	/* TIMEOUT_WITH_COUNTER_GREATER */{bacpNullState, PPP_INITIAL_STATE},	/* TIMEOUT_WITH_COUNTER_EXPIRED */{bacpNullState, PPP_INITIAL_STATE},	/* RX */		/* CONFIGURE_REQUEST_GOOD */      {bacpNullState, PPP_INITIAL_STATE},	/* CONFIGURE_REQUEST_BAD */       {bacpNullState, PPP_INITIAL_STATE},	/* CONFIGURE_REQUEST_BAD_OPTION */{bacpNullState, PPP_INITIAL_STATE},	/* CONFIGURE_ACK */               {bacpNullState, PPP_INITIAL_STATE},	/* CONFIGURE_NAK */               {bacpNullState, PPP_INITIAL_STATE},	/* CONFIGURE_REJECT */            {bacpNullState, PPP_INITIAL_STATE},	/* TERMINATE_REQUEST */           {bacpNullState, PPP_INITIAL_STATE},	/* TERMINATE_ACK */               {bacpNullState, PPP_INITIAL_STATE},	/* UNKNOWN_CODE */                {bacpNullState, PPP_INITIAL_STATE},	/* CODE_REJECT_PERMITTED */       {bacpNullState, PPP_INITIAL_STATE},	/* PROTOCOL_REJECT */             {bacpNullState, PPP_INITIAL_STATE},	/* CODE_REJECT_CATASTROPHIC */    {bacpNullState, PPP_INITIAL_STATE},	/* ECHO_REQUEST */                {bacpNullState, PPP_INITIAL_STATE},	/* ECHO_REPLY */                  {bacpNullState, PPP_INITIAL_STATE},	/* DISCARD_REQUEST */             {bacpNullState, PPP_INITIAL_STATE},	/* PPP_ECHO_RESPONSE_TIMEOUT */   {bacpNullState, PPP_INITIAL_STATE},	/* PPP_ECHO_RESPONSE_FAILURE */   {bacpNullState, PPP_INITIAL_STATE}	},	{	/* ----------------------------------------------------------------- */	/* STARTING state: 1       not used                                  */	/* ----------------------------------------------------------------- */	/* UP */                          {bacpInitializeCounters,	                                                	PPP_STARTING_STATE,	                                   bacpSendConfigurationRequest,	                                                PPP_REQUEST_SENT_STATE,									   bacpThisLayerStart,									 				PPP_REQUEST_SENT_STATE},	/* DOWN */                        {bacpNullState, PPP_STARTING_STATE},	/* OPEN */                        {bacpInitializeCounters, PPP_STARTING_STATE},	/* CLOSE */                       {bacpNullState, PPP_CLOSED_STATE},	/* TIMEOUT_WITH_COUNTER_GREATER */{bacpNullState, PPP_STARTING_STATE},	/* TIMEOUT_WITH_COUNTER_EXPIRED */{bacpNullState, PPP_STARTING_STATE},	/* RX */			/* CONFIGURE_REQUEST_GOOD */      {bacpNullState, PPP_STARTING_STATE},	/* CONFIGURE_REQUEST_BAD  */      {bacpNullState, PPP_STARTING_STATE},	/* CONFIGURE_REQUEST_BAD_OPTION */{bacpNullState, PPP_STARTING_STATE},	/* CONFIGURE_ACK */               {bacpNullState, PPP_STARTING_STATE},	/* CONFIGURE_NAK */               {bacpNullState, PPP_STARTING_STATE},	/* CONFIGURE_REJECT */            {bacpNullState, PPP_STARTING_STATE},	/* TERMINATE_REQUEST */           {bacpNullState, PPP_STARTING_STATE},	/* TERMINATE_ACK */               {bacpNullState, PPP_STARTING_STATE},	/* UNKNOWN_CODE  */               {bacpNullState, PPP_STARTING_STATE},	/* CODE_REJECT_PERMITTED */       {bacpNullState, PPP_STARTING_STATE},	/* PROTOCOL_REJECT */             {bacpNullState, PPP_STARTING_STATE},	/* CODE_REJECT_CATASTROPHIC */    {bacpNullState, PPP_STARTING_STATE},	/* ECHO_REQUEST */                {bacpNullState, PPP_STARTING_STATE},	/* ECHO_REPLY */                  {bacpNullState, PPP_STARTING_STATE},	/* DISCARD_REQUEST */             {bacpNullState, PPP_STARTING_STATE},	/* PPP_ECHO_RESPONSE_TIMEOUT */   {bacpNullState, PPP_STARTING_STATE},	/* PPP_ECHO_RESPONSE_FAILURE */   {bacpNullState, PPP_STARTING_STATE}	},	{	/* ----------------------------------------------------------------- */	/* CLOSED state: 2                                                   */	/* equivalent to INITIAL state, needs an OPEN to start sending CR    */	/* ----------------------------------------------------------------- */	/* UP */                          {bacpNullState, PPP_CLOSED_STATE}, 	/* DOWN	*/                        {bacpNullState, PPP_CLOSED_STATE},	/* OPEN */                        {bacpInitializeCounters,	                                                	PPP_STARTING_STATE,	                                   bacpSendConfigurationRequest,	                                                PPP_REQUEST_SENT_STATE,									   bacpThisLayerStart,									 				PPP_REQUEST_SENT_STATE},	/* CLOSE */                        {bacpNullState, NO_CHANGE_TO_PPP_STATE},	/* TIMEOUT_WITH_COUNTER_GREATER	*/ {bacpNullState, PPP_CLOSED_STATE},	/* TIMEOUT_WITH_COUNTER_EXPIRED */ {bacpNullState, PPP_CLOSED_STATE},	/* RX */	/* CONFIGURE_REQUEST_GOOD */  		{bacpNullState, PPP_CLOSED_STATE},	/* CONFIGURE_REQUEST_BAD */    		{bacpNullState, PPP_CLOSED_STATE},	/* CONFIGURE_REQUEST_BAD_OPTION */  {bacpNullState, PPP_CLOSED_STATE},	/* CONFIGURE_ACK */            		{bacpNullState, PPP_CLOSED_STATE},	/* CONFIGURE_NAK */            		{bacpNullState, PPP_CLOSED_STATE},	/* CONFIGURE_REJECT */         		{bacpNullState, PPP_CLOSED_STATE},	/* TERMINATE_REQUEST */        		{bacpNullState, PPP_CLOSED_STATE},	/* TERMINATE_ACK */            		{bacpNullState, PPP_CLOSED_STATE},	/* UNKNOWN_CODE */             		{bacpNullState, PPP_CLOSED_STATE},	/* CODE_REJECT_PERMITTED */    		{bacpNullState, PPP_CLOSED_STATE},	/* PROTOCOL_REJECT */          		{bacpNullState, PPP_CLOSED_STATE},	/* CODE_REJECT_CATASTROPHIC */ 		{bacpNullState, PPP_CLOSED_STATE},	/* ECHO_REQUEST */             		{bacpNullState, PPP_CLOSED_STATE},	/* ECHO_REPLY */               		{bacpNullState, PPP_CLOSED_STATE},	/* DISCARD_REQUEST */          		{bacpNullState, PPP_CLOSED_STATE},	/* PPP_ECHO_RESPONSE_TIMEOUT */		{bacpNullState, PPP_CLOSED_STATE},	/* PPP_ECHO_RESPONSE_FAILURE */		{bacpNullState, PPP_CLOSED_STATE}	},	{	/* ----------------------------------------------------------------- */	/* STOPPED state: 3                                                  */	/* MP connection is down, we need un UP event to set timers and		 */ 	/* send CR     														 */	/* ----------------------------------------------------------------- */	/* UP */                          {bacpInitializeCounters,	                                                	PPP_STARTING_STATE,	                                   bacpSendConfigurationRequest,	                                                PPP_REQUEST_SENT_STATE,									   bacpThisLayerStart,									 				PPP_REQUEST_SENT_STATE},	/* DOWN */                        {bacpNullState, PPP_STOPPED_STATE},	/* OPEN */                        {bacpNullState, PPP_STOPPED_STATE},	/* CLOSE */                       {bacpNullState, PPP_STOPPED_STATE},	/* TIMEOUT_WITH_COUNTER_GREATER	*/{bacpNullState, PPP_STOPPED_STATE},	/* TIMEOUT_WITH_COUNTER_EXPIRED	*/{bacpNullState, PPP_STOPPED_STATE},	/* RX */	/* CONFIGURE_REQUEST_GOOD */      {bacpNullState, PPP_STOPPED_STATE},	/* CONFIGURE_REQUEST_BAD */       {bacpNullState, PPP_STOPPED_STATE},	/* CONFIGURE_REQUEST_BAD_OPTION */{bacpNullState, PPP_STOPPED_STATE},	/* CONFIGURE_ACK */               {bacpNullState, PPP_STOPPED_STATE},	/* CONFIGURE_NAK */               {bacpNullState, PPP_STOPPED_STATE},	/* CONFIGURE_REJECT */            {bacpNullState, PPP_STOPPED_STATE},	/* TERMINATE_REQUEST */           {bacpNullState, PPP_STOPPED_STATE},	/* TERMINATE_ACK */               {bacpNullState, PPP_STOPPED_STATE},	/* UNKNOWN_CODE	*/                {bacpNullState, PPP_STOPPED_STATE},	/* CODE_REJECT_PERMITTED */       {bacpNullState, PPP_STOPPED_STATE},	/* PROTOCOL_REJECT */             {bacpNullState, PPP_STOPPED_STATE},	/* CODE_REJECT_CATASTROPHIC */    {bacpNullState, PPP_STOPPED_STATE},	/* ECHO_REQUEST */                {bacpNullState, PPP_STOPPED_STATE},	/* ECHO_REPLY */                  {bacpNullState, PPP_STOPPED_STATE},	/* DISCARD_REQUEST */             {bacpNullState, PPP_STOPPED_STATE},	/* PPP_ECHO_RESPONSE_TIMEOUT */   {bacpNullState, PPP_STOPPED_STATE},	/* PPP_ECHO_RESPONSE_FAILURE */   {bacpNullState, PPP_STOPPED_STATE} 	},	{	/* ----------------------------------------------------------------- */	/* CLOSING state: 4                                                  */	/* We received a CLOSE comand and are waiting to go to CLOSED state  */	/* ----------------------------------------------------------------- */	/* UP */                          {bacpInitializeCounters,	                                                	PPP_STARTING_STATE,	                                   bacpSendConfigurationRequest,	                                                PPP_REQUEST_SENT_STATE},	/* DOWN	*/                        {bacpNullState, PPP_CLOSING_STATE},	/* OPEN */                        {bacpNullState, PPP_CLOSING_STATE},	/* CLOSE */                       {bacpNullState, PPP_CLOSING_STATE},	/* TIMEOUT_WITH_COUNTER_GREATER */{bacpSendTerminationRequest,	                                                 	PPP_CLOSING_STATE},	/* TIMEOUT_WITH_COUNTER_EXPIRED*/ {bacpThisLayerFinished, 														PPP_CLOSED_STATE},	/* RX */	/* CONFIGURE_REQUEST_GOOD */      {bacpSetState, PPP_CLOSING_STATE},	/* CONFIGURE_REQUEST_BAD */       {bacpSetState, PPP_CLOSING_STATE},	/* CONFIGURE_REQUEST_BAD_OPTION */{bacpSetState, PPP_CLOSING_STATE},	/* CONFIGURE_ACK */               {bacpSetState, PPP_CLOSING_STATE},	/* CONFIGURE_NAK */               {bacpSetState, PPP_CLOSING_STATE},	/* CONFIGURE_REJECT */            {bacpSetState, PPP_CLOSING_STATE},	/* TERMINATE_REQUEST */	          {bacpSendTerminationAck,	                                                 PPP_CLOSING_STATE},	/* TERMINATE_ACK */               {bacpThisLayerFinished,	                                                 PPP_CLOSED_STATE},	/* UNKNOWN_CODE */                {bacpSendCodeReject,													 PPP_CLOSING_STATE},	/* CODE_REJECT_PERMITTED */       {bacpSetState, PPP_CLOSING_STATE},	/* PROTOCOL_REJECT */             {bacpSetState, PPP_CLOSING_STATE},	/* CODE_REJECT_CATASTROPHIC */    {bacpThisLayerFinished,	                                                 PPP_CLOSED_STATE},	/* ECHO_REQUEST */                {bacpNullState, PPP_CLOSING_STATE},	/* ECHO_REPLY */                  {bacpNullState, PPP_CLOSING_STATE},	/* DISCARD_REQUEST */             {bacpNullState, PPP_CLOSING_STATE},	/* PPP_ECHO_RESPONSE_TIMEOUT */   {bacpNullState, PPP_CLOSING_STATE},	/* PPP_ECHO_RESPONSE_FAILURE */   {bacpNullState, PPP_CLOSING_STATE}	},	{	/* ----------------------------------------------------------------- */	/* STOPPING state: 5                                                 */	/* ----------------------------------------------------------------- */	/* UP */                         {bacpInitializeCounters,	                                                	PPP_STARTING_STATE,	                                   bacpSendConfigurationRequest,	                                                PPP_REQUEST_SENT_STATE},	/* DOWN */                        {bacpSetState, PPP_INITIAL_STATE},	/* OPEN */                        {bacpNullState, PPP_STOPPING_STATE},	/* CLOSE */                       {bacpNullState, PPP_STOPPING_STATE},	/* */	/* TIMEOUT_WITH_COUNTER_GREATER */{bacpSendTerminationRequest,                                                         PPP_STOPPING_STATE},	/* TIMEOUT_WITH_COUNTER_EXPIRED */{bacpThisLayerFinished,	                                                 PPP_STOPPED_STATE},	/* RX */	/* CONFIGURE_REQUEST_GOOD */      {bacpSetState, PPP_STOPPING_STATE},	/* CONFIGURE_REQUEST_BAD */       {bacpSetState, PPP_STOPPING_STATE},	/* CONFIGURE_REQUEST_BAD_OPTION */{bacpSetState, PPP_STOPPING_STATE},	/* CONFIGURE_ACK */               {bacpSetState, PPP_STOPPING_STATE},	/* CONFIGURE_NAK */               {bacpSetState, PPP_STOPPING_STATE},	/* CONFIGURE_REJECT */            {bacpSetState, PPP_STOPPING_STATE},	/* TERMINATE_REQUEST */           {bacpSendTerminationAck,	                                                 PPP_STOPPING_STATE},	/* TERMINATE_ACK */               {bacpThisLayerFinished,                                                     PPP_STOPPED_STATE},	/* UNKNOWN_CODE */                {bacpSendCodeReject, PPP_STOPPING_STATE},	/* CODE_REJECT_PERMITTED */       {bacpSetState, PPP_STOPPING_STATE},	/* PROTOCOL_REJECT */             {bacpSetState, PPP_STOPPING_STATE},	/* CODE_REJECT_CATASTROPHIC */    {bacpThisLayerFinished,	                                                 PPP_STOPPED_STATE},	/* ECHO_REQUEST	*/                {bacpNullState, PPP_STOPPING_STATE},	/* ECHO_REPLY */                  {bacpNullState, PPP_STOPPING_STATE},	/* DISCARD_REQUEST */             {bacpNullState, PPP_STOPPING_STATE},	/* PPP_ECHO_RESPONSE_TIMEOUT */   {bacpNullState, PPP_STOPPING_STATE},	/* PPP_ECHO_RESPONSE_FAILURE */   {bacpNullState, PPP_STOPPING_STATE}	},	{	/* ----------------------------------------------------------------- */	/* REQUEST_SENT state: 6                                             */	/* Our configurastion request is sent out. Nothing is received yet   */	/* from theother side, we are waiting for configuration ACK/NAK/REJ  */	/* and config REQ If we timeout sending CRs then we go to STOPPED    */	/* state and wait - the side probably does not support BACP          */	/* ----------------------------------------------------------------- */	/* UP */                          {bacpInitializeCounters,	                                                	PPP_STARTING_STATE,	                                   bacpSendConfigurationRequest,	                                                PPP_REQUEST_SENT_STATE}, 	/* DOWN */                       {bacpSetState, PPP_STOPPED_STATE},	/* OPEN	*/                       {bacpNullState, PPP_REQUEST_SENT_STATE},	/* CLOSE */                      {bacpNullState, PPP_REQUEST_SENT_STATE},	/* TIMEOUT_WITH_COUNTER_GREATER*/{bacpSendConfigurationRequest,	                                                PPP_REQUEST_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,	                                                NO_CHANGE_TO_PPP_STATE,	                                  bacpSetState, PPP_ACK_RECEIVED_STATE},	/* CONFIGURE_NAK */              {bacpInitializeCounters,	                                                NO_CHANGE_TO_PPP_STATE, 	                                  bacpSendConfigurationRequest,	                                                PPP_REQUEST_SENT_STATE},	/* CONFIGURE_REJECT */           {bacpInitializeCounters,	                                                NO_CHANGE_TO_PPP_STATE, 	                                  bacpSendConfigurationRequest,	                                                PPP_REQUEST_SENT_STATE},	/* TERMINATE_REQUEST */          {bacpSendTerminationAck,	                                                PPP_REQUEST_SENT_STATE},	/* TERMINATE_ACK */              {bacpSetState, PPP_REQUEST_SENT_STATE},

⌨️ 快捷键说明

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