📄 igmp_state_machine.h
字号:
/* 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 + -