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