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

📄 igmp_state_machine.h

📁 路由器协议平台igmp协议设计实现源码。
💻 H
📖 第 1 页 / 共 3 页
字号:

/* IGMP_ROUTER_GROUP_V1_REPORT_RECEIVED_EVENT */		  {igmp_router_start_group_specific_timer,
                                                         igmp_router_start_v1_host_timer,
                                                         NULL,
                                                         (enum IGMP_ROUTER_GROUP_STATE) IGMP_ROUTER_GROUP_V1_MEMBERS_PRESENT_STATE},

/* IGMP_ROUTER_GROUP_LEAVE_MESSAGE_RECEIVED_EVENT */	  {NULL, NULL, NULL, (enum IGMP_ROUTER_GROUP_STATE) IGMP_INVALID_STATE},

/* IGMP_ROUTER_GROUP_SPECIFIC_TIMER_EXPIRED_EVENT */	  {igmp_router_notify_routing_of_group_deletion,
                                                         NULL,
                                                         NULL,
                                                         (enum IGMP_ROUTER_GROUP_STATE) IGMP_ROUTER_GROUP_NO_MEMBERS_PRESENT_STATE},

/* IGMP_ROUTER_GROUP_RETRANSMIT_TIMER_EXPIRED_EVENT */  {NULL, NULL, NULL, (enum IGMP_ROUTER_GROUP_STATE) IGMP_INVALID_STATE},

/* IGMP_ROUTER_GROUP_V1_HOST_TIMER_EXPIRED_EVENT */	  {NULL, NULL, NULL, (enum IGMP_ROUTER_GROUP_STATE) IGMP_ROUTER_GROUP_V2_MEMBERS_PRESENT_STATE},

/* IGMP_ROUTER_GROUP_SPECIFIC_QUERY_RECEIVED_EVENT */	  {NULL, NULL, NULL, (enum IGMP_ROUTER_GROUP_STATE) IGMP_INVALID_STATE}
},
/*-------------------------------------------------*/
/*    IGMP_ROUTER_GROUP_V2_MEMBERS_PRESENT_STATE   */
/*-------------------------------------------------*/
{
/* IGMP_ROUTER_GROUP_V2_REPORT_RECEIVED_EVENT */        {igmp_router_start_group_specific_timer,
                                                         NULL,
                                                         NULL,
                                                         (enum IGMP_ROUTER_GROUP_STATE) IGMP_ROUTER_GROUP_V2_MEMBERS_PRESENT_STATE},

/* IGMP_ROUTER_GROUP_V1_REPORT_RECEIVED_EVENT */		  {igmp_router_start_group_specific_timer,
                                                         igmp_router_start_v1_host_timer,
                                                         NULL,
                                                         (enum IGMP_ROUTER_GROUP_STATE) IGMP_ROUTER_GROUP_V1_MEMBERS_PRESENT_STATE},

/* IGMP_ROUTER_GROUP_LEAVE_MESSAGE_RECEIVED_EVENT */	  {igmp_router_start_star_timer,
                                                         igmp_router_start_retransmit_timer,
                                                         igmp_router_tx_message,
                                                         (enum IGMP_ROUTER_GROUP_STATE) IGMP_ROUTER_GROUP_CHECKING_MEMBERSHIP_STATE},

/* IGMP_ROUTER_GROUP_SPECIFIC_TIMER_EXPIRED_EVENT */	  {igmp_router_notify_routing_of_group_deletion,
                                                         NULL,
                                                         NULL,
                                                         (enum IGMP_ROUTER_GROUP_STATE) IGMP_ROUTER_GROUP_NO_MEMBERS_PRESENT_STATE},

/* IGMP_ROUTER_GROUP_RETRANSMIT_TIMER_EXPIRED_EVENT */  {NULL, NULL, NULL, (enum IGMP_ROUTER_GROUP_STATE) IGMP_INVALID_STATE},

/* IGMP_ROUTER_GROUP_V1_HOST_TIMER_EXPIRED_EVENT */	  {NULL, NULL, NULL, (enum IGMP_ROUTER_GROUP_STATE) IGMP_INVALID_STATE},

/* IGMP_ROUTER_GROUP_SPECIFIC_QUERY_RECEIVED_EVENT */	  {NULL, NULL, NULL, (enum IGMP_ROUTER_GROUP_STATE) IGMP_INVALID_STATE}
},
/*-------------------------------------------------*/
/*    IGMP_ROUTER_GROUP_CHECKING_MEMBERSHIP_STATE  */
/*-------------------------------------------------*/
{
/* IGMP_ROUTER_GROUP_V2_REPORT_RECEIVED_EVENT */        {igmp_router_start_group_specific_timer,
                                                         NULL,
                                                         NULL,
                                                         (enum IGMP_ROUTER_GROUP_STATE) IGMP_ROUTER_GROUP_V2_MEMBERS_PRESENT_STATE},

/* IGMP_ROUTER_GROUP_V1_REPORT_RECEIVED_EVENT */		  {igmp_router_start_group_specific_timer,
                                                         igmp_router_start_v1_host_timer,
                                                         NULL,
                                                         (enum IGMP_ROUTER_GROUP_STATE) IGMP_ROUTER_GROUP_V1_MEMBERS_PRESENT_STATE},

/* IGMP_ROUTER_GROUP_LEAVE_MESSAGE_RECEIVED_EVENT */	  {NULL, NULL, NULL, (enum IGMP_ROUTER_GROUP_STATE) IGMP_INVALID_STATE},

/* IGMP_ROUTER_GROUP_SPECIFIC_TIMER_EXPIRED_EVENT */	  {igmp_router_notify_routing_of_group_deletion,
                                                         igmp_router_clear_retransmit_timer,
                                                         NULL,
                                                         (enum IGMP_ROUTER_GROUP_STATE) IGMP_ROUTER_GROUP_NO_MEMBERS_PRESENT_STATE},

/* IGMP_ROUTER_GROUP_RETRANSMIT_TIMER_EXPIRED_EVENT */  {igmp_router_tx_message,
                                                         igmp_router_start_retransmit_timer,
                                                         NULL,
                                                         (enum IGMP_ROUTER_GROUP_STATE) IGMP_ROUTER_GROUP_CHECKING_MEMBERSHIP_STATE},

/* IGMP_ROUTER_GROUP_V1_HOST_TIMER_EXPIRED_EVENT */	  {NULL, NULL, NULL, (enum IGMP_ROUTER_GROUP_STATE) IGMP_INVALID_STATE},

/* IGMP_ROUTER_GROUP_SPECIFIC_QUERY_RECEIVED_EVENT */	  {NULL, NULL, NULL, (enum IGMP_ROUTER_GROUP_STATE) IGMP_INVALID_STATE}
}
};

/***************************************************************************************************************************/
/*                                           Non Querier Mode Group State Transition Table                                 */
/*                                                                                                                         */
/*  +-------------------++----------------------------------------------------------------------------------------------+  */
/*  |                   ||                                                                                              |  */
/*  |                   ||                                            State                                             |  */
/*  |                   ++----------------------------------------------------------------------------------------------|  */
/*  | Event             ||  No Members Present     V1 Members Present      V2 Members Present      Checking Membership  |  */
/*  |-------------------++----------------------+-----------------------+-----------------------+-----------------------|  */
/*  |V2 Report Received || o Notify Routing of  | o Start Group         | o No actions          | o Start Group         |  */
/*  |                   ||   group addition     |   Specific Timer      |                       |   Specific Timer      |  */
/*  |                   || o Start Group        |                       |                       |                       |  */
/*  |                   ||   Specific Timer     |                       |                       |                       |  */
/*  |                   ||                      |                       |                       |                       |  */
/*  |                   ||-> V1 Members Present |-> V1 Members Present  |-> Invalid State       |-> V1 Members Present  |  */
/*  |-------------------++----------------------+-----------------------+-----------------------+-----------------------|  */                    
/*  |V1 Report Received || o Notify Routing of  | o Start Group         | o No actions          | o Start Group         |  */
/*  |                   ||   group addition     |   Specific Timer      |                       |   Specific Timer      |  */
/*  |                   || o Start Group        |                       |                       |                       |  */
/*  |                   ||   Specific Timer     |                       |                       |                       |  */
/*  |                   ||                      |                       |                       |                       |  */
/*  |                   ||-> V1 Members Present |-> V1 Members Present  |-> Invalid State       |-> V1 Members Present  |  */
/*  |-------------------++----------------------+-----------------------+-----------------------+-----------------------|  */
/*  |Leave Message      || o No actions         | o No actions          | o No actions          |  o No actions         |  */
/*  |    Received       ||                      |                       |                       |                       |  */
/*  |                   ||-> Invalid State      |-> Invalid State       |-> Invalid State       |-> Invalid State       |  */
/*  |-------------------++----------------------+-----------------------+-----------------------+-----------------------|  */
/*  |Group Specific     || o No actions         | o Notify Routing of   | o No actions          |  o Notify Routing of  |  */
/*  |    Timer Expired  ||                      |   Group Deletion      |                       |    Group Deletion     |  */
/*  |                   ||                      |                       |                       |                       |  */
/*  |                   ||-> Invalid State      |-> No Members Present  |-> Invalid State       |-> No Members Present  |  */
/*  |-------------------++----------------------+-----------------------+-----------------------+-----------------------|  */
/*  |Retransmit Timer   || o No actions         | o No actions          | o No actions          |  o No actions         |  */
/*  |    Expired        ||                      |                       |                       |                       |  */
/*  |                   ||-> Invalid State      |-> Invalid State       |-> Invalid State       |-> Invalid State       |  */
/*  |-------------------++----------------------+-----------------------+-----------------------+-----------------------|  */
/*  |V1 Host Timer      || o No actions         | o No actions          | o No actions          |  o No actions         |  */
/*  |    Expired        ||                      |                       |                       |                       |  */
/*  |                   ||                      |                       |                       |                       |  */
/*  |                   ||-> Invalid State      |-> Invalid State       |-> Invalid State       |-> Invalid State       |  */
/*  |-------------------++----------------------+-----------------------+-----------------------+-----------------------|  */
/*  |Group Specific     || o No actions         | o Start star timer    | o No actions          |  o No actions         |  */
/*  |    Query Received ||                      |                       |                       |                       |  */
/*  |                   ||                      |                       |                       |                       |  */
/*  |                   ||-> Invalid State      |-> Checking Membership |-> Invalid State       |-> Invalid State       |  */
/*  +-------------------++----------------------+-----------------------+-----------------------+-----------------------+  */
/*                                                                                                                         */
/***************************************************************************************************************************/

IGMP_ROUTER_GROUP_STATE_TRANSITION_TABLE_ENTRY
	igmp_router_non_querier_mode_group_state_transition_table[NUMBER_OF_IGMP_ROUTER_GROUP_STATES][NUMBER_OF_IGMP_ROUTER_GROUP_EVENTS] =
{
/*-------------------------------------------------*/
/*    IGMP_ROUTER_GROUP_NO_MEMBERS_PRESENT_STATE   */
/*-------------------------------------------------*/
{
/* IGMP_ROUTER_GROUP_V2_REPORT_RECEIVED_EVENT */        {igmp_router_notify_routing_of_group_addition,
                                                         igmp_router_start_group_specific_timer,
                                                         NULL,
                                                         (enum IGMP_ROUTER_GROUP_STATE) IGMP_ROUTER_GROUP_V1_MEMBERS_PRESENT_STATE},

/* IGMP_ROUTER_GROUP_V1_REPORT_RECEIVED_EVENT */		  {igmp_router_notify_routing_of_group_addition,
                                                         igmp_router_start_group_specific_timer,
                                                         NULL,
                                                         (enum IGMP_ROUTER_GROUP_STATE) IGMP_ROUTER_GROUP_V1_MEMBERS_PRESENT_STATE},

/* IGMP_ROUTER_GROUP_LEAVE_MESSAGE_RECEIVED_EVENT */	  {NULL, NULL, NULL, (enum IGMP_ROUTER_GROUP_STATE) IGMP_INVALID_STATE},

/* IGMP_ROUTER_GROUP_SPECIFIC_TIMER_EXPIRED_EVENT */	  {NULL, NULL, NULL, (enum IGMP_ROUTER_GROUP_STATE) IGMP_INVALID_STATE},

/* IGMP_ROUTER_GROUP_RETRANSMIT_TIMER_EXPIRED_EVENT */  {NULL, NULL, NULL, (enum IGMP_ROUTER_GROUP_STATE) IGMP_INVALID_STATE},

/* IGMP_ROUTER_GROUP_V1_HOST_TIMER_EXPIRED_EVENT */	  {NULL, NULL, NULL, (enum IGMP_ROUTER_GROUP_STATE) IGMP_INVALID_STATE},

/* IGMP_ROUTER_GROUP_SPECIFIC_QUERY_RECEIVED_EVENT */	  {NULL, NULL, NULL, (enum IGMP_ROUTER_GROUP_STATE) IGMP_INVALID_STATE}
},
/*-------------------------------------------------*/
/*    IGMP_ROUTER_GROUP_V1_MEMBERS_PRESENT_STATE   */
/*-------------------------------------------------*/
{
/* IGMP_ROUTER_GROUP_V2_REPORT_RECEIVED_EVENT */        {igmp_router_start_group_specific_timer,
                                                         NULL,
                                                         NULL,
                                                         (enum IGMP_ROUTER_GROUP_STATE) IGMP_ROUTER_GROUP_V1_MEMBERS_PRESENT_STATE},

/* IGMP_ROUTER_GROUP_V1_REPORT_RECEIVED_EVENT */		  {igmp_router_start_group_specific_timer,
                                                         NULL,
                                                         NULL,
                                                         (enum IGMP_ROUTER_GROUP_STATE) IGMP_ROUTER_GROUP_V1_MEMBERS_PRESENT_STATE},

/* IGMP_ROUTER_GROUP_LEAVE_MESSAGE_RECEIVED_EVENT */	  {NULL, NULL, NULL, (enum IGMP_ROUTER_GROUP_STATE) IGMP_INVALID_STATE},

/* IGMP_ROUTER_GROUP_SPECIFIC_TIMER_EXPIRED_EVENT */	  {igmp_router_notify_routing_of_group_deletion,
                                                         NULL,
                                                         NULL,
                                                         (enum IGMP_ROUTER_GROUP_STATE) IGMP_ROUTER_GROUP_NO_MEMBERS_PRESENT_STATE},

/* IGMP_ROUTER_GROUP_RETRANSMIT_TIMER_EXPIRED_EVENT */  {NULL, NULL, NULL, (enum IGMP_ROUTER_GROUP_STATE) IGMP_INVALID_STATE},

/* IGMP_ROUTER_GROUP_V1_HOST_TIMER_EXPIRED_EVENT */	  {NULL, NULL, NULL, (enum IGMP_ROUTER_GROUP_STATE) IGMP_INVALID_STATE},

⌨️ 快捷键说明

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