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

📄 igmp_state_machine.h

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

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

/* IGMP_ROUTER_GROUP_V1_REPORT_RECEIVED_EVENT */		  {NULL, NULL, NULL, (enum IGMP_ROUTER_GROUP_STATE) IGMP_INVALID_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_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_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},

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

/****************************************************************************************************/
/*                            Host State Transition Table                                           */
/*                                                                                                  */
/*  +----------------++--------------------------------------------------------------------------+  */
/*  |                ||                                    State                                 |  */
/*  |                ||--------------------------------------------------------------------------|  */
/*  |Event           ||        Non Member        |    Delaying Member    |    Idle Member        |  */
/*  |================++==========================+=======================+=======================|  */
/*  |Join Group      ||   o Send join report     |  o No actions         |  o No actions         |  */
/*  |                ||   o Set this host as     |                       |                       |  */
/*  |                ||     last reporter        |                       |                       |  */
/*  |                ||   o Start report         |                       |                       |  */
/*  |                ||     delay timer          |                       |                       |  */
/*  |                ||                          |                       |                       |  */
/*  |                ||  -> Delaying Member      | -> Invalid State      | -> Invalid State      |  */
/*  |----------------++--------------------------+-----------------------+-----------------------|  */
/*  |Leave Group     ||   o No actions           |  o Start report       |  o Send leave if      |  */
/*  |                ||                          |    delay timer        |    this host last     |  */
/*  |                ||                          |  o Send leave if      |    reporter           |  */
/*  |                ||                          |    this host last     |                       |  */
/*  |                ||                          |    reporter           |                       |  */
/*  |                ||                          |                       |                       |  */
/*  |                ||  -> Invalid State        | -> Non Member         | -> Non Member         |  */
/*  |----------------++--------------------------+-----------------------+-----------------------|  */
/*  |Query Received  ||   o No actions           |  o Check and reset    |  o Start report       |  */
/*  |                ||                          |    report delay timer |    delay timer        |  */
/*  |                ||                          |                       |                       |  */
/*  |                ||  -> Invalid State        | -> Delaying Member    | -> Delaying Member    |  */
/*  |----------------++--------------------------+-----------------------+-----------------------|  */
/*  |Report Received ||   o No actions           |  o Stop report        |  o No actions         |  */
/*  |                ||                          |    delay timer        |                       |  */
/*  |                ||                          |  o Clear last         |                       |  */
/*  |                ||                          |    reporter           |                       |  */
/*  |                ||                          |                       |                       |  */
/*  |                ||  -> Invalid State        | -> Idle Member        | -> Invalid State      |  */
/*  |----------------++--------------------------+-----------------------+-----------------------|  */
/*  |Report Delay    ||   o No actions           |  o Send join report   |  o No actions         |  */
/*  |Timer Expired   ||                          |  o Set this host as   |                       |  */
/*  |                ||                          |    last reporter      |                       |  */
/*  |                ||                          |                       |                       |  */
/*  |                ||  -> Invalid State        | -> Idle Member        | -> Invalid State      |  */
/*  +----------------++--------------------------+-----------------------+-----------------------+  */
/*                                                                                                  */
/****************************************************************************************************/

IGMP_HOST_STATE_TRANSITION_TABLE_ENTRY
	igmp_host_group_state_transition_table[NUMBER_OF_IGMP_HOST_GROUP_STATES][NUMBER_OF_IGMP_HOST_GROUP_EVENTS] =
{
/*--------------------------------------------------*/
/*          IGMP_HOST_GROUP_NON_MEMBER_STATE        */
/*--------------------------------------------------*/
{
/* IGMP_HOST_GROUP_JOIN_EVENT */                         {igmp_host_send_join_report_message,
																			 igmp_host_set_this_host_as_last_reporter,
																			 igmp_host_start_report_delay_timer,
																			 IGMP_HOST_GROUP_DELAYING_MEMBER_STATE},

/* IGMP_HOST_GROUP_LEAVE_EVENT */                        {NULL, NULL, NULL,(enum IGMP_HOST_GROUP_STATE) IGMP_INVALID_STATE},

/* IGMP_HOST_GROUP_QUERY_RECEIVED_EVENT */               {NULL, NULL, NULL,(enum IGMP_HOST_GROUP_STATE) IGMP_INVALID_STATE},

/* IGMP_HOST_GROUP_REPORT_RECEIVED_EVENT */              {NULL, NULL, NULL,(enum IGMP_HOST_GROUP_STATE) IGMP_INVALID_STATE},

/* IGMP_HOST_GROUP_REPORT_DELAY_TIMER_EXPIRED_EVENT */   {NULL, NULL, NULL,(enum IGMP_HOST_GROUP_STATE) IGMP_INVALID_STATE}
},
/*---------------------------------------------------*/
/*        IGMP_HOST_GROUP_DELAYING_MEMBER_STATE      */
/*---------------------------------------------------*/
{
/* IGMP_HOST_GROUP_JOIN_EVENT */                         {NULL, NULL, NULL,(enum IGMP_HOST_GROUP_STATE) IGMP_INVALID_STATE},

/* IGMP_HOST_GROUP_LEAVE_EVENT */                        {igmp_host_stop_report_delay_timer,
																			 igmp_host_send_leave_if_this_host_last_repoter,
																			 NULL,
																			 IGMP_HOST_GROUP_NON_MEMBER_STATE},

/* IGMP_HOST_GROUP_QUERY_RECEIVED_EVENT */               {igmp_host_check_and_reset_report_delay_timer,
																			 NULL,
																			 NULL,
																			 IGMP_HOST_GROUP_DELAYING_MEMBER_STATE},

/* IGMP_HOST_GROUP_REPORT_RECEIVED_EVENT */              {igmp_host_stop_report_delay_timer,
																			 igmp_host_clear_last_reporter,
																			 NULL,
																			 IGMP_HOST_GROUP_IDLE_MEMBER_STATE},

/* IGMP_HOST_GROUP_REPORT_DELAY_TIMER_EXPIRED_EVENT */   {igmp_host_send_join_report_message,
																			 igmp_host_set_this_host_as_last_reporter,
																			 NULL,
																			 IGMP_HOST_GROUP_IDLE_MEMBER_STATE}
},
/*---------------------------------------------------*/
/*        IGMP_HOST_GROUP_IDLE_MEMBER_STATE          */
/*---------------------------------------------------*/
{
/* IGMP_HOST_GROUP_JOIN_EVENT */                         {NULL, NULL, NULL,(enum IGMP_HOST_GROUP_STATE) IGMP_INVALID_STATE},

/* IGMP_HOST_GROUP_LEAVE_EVENT */                        {igmp_host_send_leave_if_this_host_last_repoter,
																			 NULL,
																			 NULL,
																			 IGMP_HOST_GROUP_NON_MEMBER_STATE},

/* IGMP_HOST_GROUP_QUERY_RECEIVED_EVENT */               {igmp_host_start_report_delay_timer,
																			 NULL,
																			 NULL,
																			 IGMP_HOST_GROUP_DELAYING_MEMBER_STATE},

/* IGMP_HOST_GROUP_REPORT_RECEIVED_EVENT */              {NULL, NULL, NULL,(enum IGMP_HOST_GROUP_STATE) IGMP_INVALID_STATE},

/* IGMP_HOST_GROUP_REPORT_DELAY_TIMER_EXPIRED_EVENT */   {NULL, NULL, NULL,(enum IGMP_HOST_GROUP_STATE) IGMP_INVALID_STATE}
}
};

#else

extern IGMP_ROUTER_PORT_STATE_TRANSITION_TABLE_ENTRY
	igmp_router_port_state_transition_table[NUMBER_OF_IGMP_ROUTER_PORT_STATES][NUMBER_OF_IGMP_ROUTER_PORT_EVENTS];
extern IGMP_ROUTER_GROUP_STATE_TRANSITION_TABLE_ENTRY
	igmp_router_querier_mode_group_state_transition_table[NUMBER_OF_IGMP_ROUTER_GROUP_STATES][NUMBER_OF_IGMP_ROUTER_GROUP_EVENTS];
extern 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];
extern IGMP_HOST_STATE_TRANSITION_TABLE_ENTRY
	igmp_host_group_state_transition_table[NUMBER_OF_IGMP_HOST_GROUP_STATES][NUMBER_OF_IGMP_HOST_GROUP_EVENTS];

#endif /* GLOBAL_FILE */

#endif /* _IGMP_STATE_MACHINE_H_ */

⌨️ 快捷键说明

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