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

📄 igmp_state_machine.h

📁 路由器协议平台igmp协议设计实现源码。
💻 H
📖 第 1 页 / 共 3 页
字号:
/*
 $Log:: /OEM Source Code/igmp/igmp_state_machine.h                                                 $
 * 
 * 1     4/23/98 9:53p Release Engineer
 * Initial release
 * IGMP v4.1.0
 */
/************************************************************************/
/*  Copyright (C) 1997-1998 RouterWare, Inc.                            */
/*  Unpublished - rights reserved under the Copyright Laws of the       */
/*  United States.  Use, duplication, or disclosure by the              */
/*  Government is subject to restrictions as set forth in               */
/*  subparagraph (c)(1)(ii) of the Rights in Technical Data and         */
/*  Computer Software clause at 252.227-7013.                           */
/*  RouterWare, Inc., 3961 MacArthur Blvd. Suite 212, Newport Beach, CA */
/************************************************************************/
#if !defined (_IGMP_STATE_MACHINE_H_)
#define _IGMP_STATE_MACHINE_H_

#if defined GLOBAL_FILE

/***************************************************************************************************************/
/*                                    Port State Transition Table                                              */
/*                                                                                                             */
/*    +----------------------------++---------------------------------------------------------------------+    */
/*    |                            ||                               State                                 |    */
/*    |                            ++---------------------------------+-----------------------------------|    */
/*    |                            ||                                 |                                   |    */
/*    | Event                      ||    Non Querier                  |     Querier                       |    */
/*    |============================++=================================+===================================|    */
/*    |General Query Timer Expired ||   o No actions                  |    o Trasmit General Query        |    */
/*    |                            ||                                 |    o Start General Query Timer    |    */
/*    |                            ||                                 |                                   |    */
/*    |                            ||  -> Invalid state               |   -> Querier                      |    */
/*    |----------------------------++---------------------------------+-----------------------------------|    */
/*    |Query Received from Router  ||   o Start other Querier         |    o Start Other Querier          |    */
/*    |    with Lower IP address   ||     Present Timer               |      Present Timer                |    */
/*    |                            ||                                 |                                   |    */
/*    |                            ||  -> Non Querier                 |    -> Non Querier                 |    */
/*    |----------------------------++---------------------------------+-----------------------------------|    */
/*    |Other Querier Present timer ||   o Transmit General Query      |     o No actions                  |    */
/*    |                            ||   o Start General Query Timer   |                                   |    */
/*    |                            ||                                 |                                   |    */
/*    |                            ||  -> Querier                     |    -> Invalid State               |    */
/*    +----------------------------++---------------------------------+-----------------------------------+    */
/*                                                                                                             */
/*                                                                                                             */
/***************************************************************************************************************/

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] =
{
/*-------------------------------------------------*/
/*        IGMP_ROUTER_PORT_NON_QUERIER_STATE       */
/*-------------------------------------------------*/
{
/* IGMP_ROUTER_PORT_GENERAL_QUERY_TIMER_EXPIRED_EVENT */                        {NULL, NULL, NULL, (enum IGMP_ROUTER_PORT_STATE) IGMP_INVALID_STATE},

/* IGMP_ROUTER_PORT_QUERY_RECEIVED_FROM_ROUTER_WITH_LOWER_IP_ADDRESS_EVENT */	  {igmp_router_start_other_querier_present_timer,
                                                                                 NULL,
                                                                                 NULL,
                                                                                 (enum IGMP_ROUTER_PORT_STATE) IGMP_ROUTER_PORT_NON_QUERIER_STATE},

/* IGMP_ROUTER_PORT_OTHER_QUERIER_PRESENT_TIMER_EXPIRED_EVENT */					  {igmp_router_tx_message,
                                                                                 igmp_router_start_general_query_timer,
                                                                                 NULL,
                                                                                 (enum IGMP_ROUTER_PORT_STATE) IGMP_ROUTER_PORT_QUERIER_STATE}
},
/*-------------------------------------------------*/
/*        IGMP_ROUTER_PORT_QUERIER_STATE           */
/*-------------------------------------------------*/
{
/* IGMP_ROUTER_PORT_GENERAL_QUERY_TIMER_EXPIRED_EVENT */                        {igmp_router_tx_message,
                                                                                 igmp_router_start_general_query_timer,
                                                                                 NULL,
                                                                                 (enum IGMP_ROUTER_PORT_STATE) IGMP_ROUTER_PORT_QUERIER_STATE},

/* IGMP_ROUTER_PORT_QUERY_RECEIVED_FROM_ROUTER_WITH_LOWER_IP_ADDRESS_EVENT */	  {igmp_router_start_other_querier_present_timer,
                                                                                 NULL,
                                                                                 NULL,
                                                                                 (enum IGMP_ROUTER_PORT_STATE) IGMP_ROUTER_PORT_NON_QUERIER_STATE},

/* IGMP_ROUTER_PORT_OTHER_QUERIER_PRESENT_TIMER_EXPIRED_EVENT */					  {NULL, NULL, NULL, (enum IGMP_ROUTER_PORT_STATE) IGMP_INVALID_STATE}
}
};

/***************************************************************************************************************************/
/*                                           Querier Mode Group Next State 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 Start Group         | o Start Group         |  */
/*  |                   ||   Group Addition     |   Specific Timer      |   Specific Timer      |   Specific Timer      |  */
/*  |                   || o Start Group        |                       |                       |                       |  */
/*  |                   ||   Specific Timer     |                       |                       |                       |  */
/*  |                   ||                      |                       |                       |                       |  */
/*  |                   ||-> V2 Members Present |-> V1 Members Present  |-> V2 Members Present  |-> V2 Members Present  |  */
/*  |-------------------++----------------------+-----------------------+-----------------------+-----------------------|  */                    
/*  |V1 Report Received || o Notify Routing of  | o Start Group         | o Start Group         | o Start Group         |  */
/*  |                   ||   Group Addition     |   Specific Timer      |   Specific Timer      |   Specific Timer      |  */
/*  |                   || o Start Group        | o Start V1 Host       | o Start V1 Host       | o Start V1 Host       |  */
/*  |                   ||   Specific Timer     |   Timer               |   Timer               |   Timer               |  */
/*  |                   || o Start V1 Host      |                       |                       |                       |  */
/*  |                   ||   Timer              |                       |                       |                       |  */
/*  |                   ||                      |                       |                       |                       |  */
/*  |                   ||-> V1 Members Present |-> V1 Members Present  |-> V1 Members Present  |-> V1 Members Present  |  */
/*  |-------------------++----------------------+-----------------------+-----------------------+-----------------------|  */
/*  |Leave Message      || o No actions         | o No actions          | o Start star timer    | o No actions          |  */
/*  |    Received       ||                      |                       | o Start retransmit    |                       |  */
/*  |                   ||                      |                       |   timer               |                       |  */
/*  |                   ||                      |                       | o Send group specific |                       |  */
/*  |                   ||                      |                       |   query               |                       |  */
/*  |                   ||                      |                       |                       |                       |  */
/*  |                   ||-> Invalid State      |-> Invalid State       |-> Checking Membership |-> Invalid State       |  */
/*  |-------------------++----------------------+-----------------------+-----------------------+-----------------------|  */
/*  |Group Specific     || o No actions         | o Notify Routing of   | o Notify Routing of   | o Notify Routing of   |  */
/*  |    Timer Expired  ||                      |   Group Deletion      |   Group Deletion      |   Group Deletion      |  */
/*  |                   ||                      |                       |                       | o Clear retransmit    |  */
/*  |                   ||                      |                       |                       |   timer               |  */
/*  |                   ||                      |                       |                       |                       |  */
/*  |                   ||                      |                       |                       |                       |  */
/*  |                   ||-> Invalid State      |-> No Members Present  |-> No Members Present  |-> No Members Present  |  */
/*  |-------------------++----------------------+-----------------------+-----------------------+-----------------------|  */
/*  |Retransmit Timer   || o No actions         | o No actions          | o No actions          | o Send group specific |  */
/*  |    Expired        ||                      |                       |                       |   query               |  */
/*  |                   ||                      |                       |                       | o Start retransmit    |  */
/*  |                   ||                      |                       |                       |   timer               |  */
/*  |                   ||                      |                       |                       |                       |  */
/*  |                   ||-> Invalid State      |-> Invalid State       |-> Invalid State       |-> Checking Membership |  */
/*  |-------------------++----------------------+-----------------------+-----------------------+-----------------------|  */
/*  |V1 Host Timer      || o No actions         | o No actions          | o No actions          | o No actions          |  */
/*  |    Expired        ||                      |                       |                       |                       |  */
/*  |                   ||                      |                       |                       |                       |  */
/*  |                   ||-> Invalid State      |-> V2 Members Present  |-> Invalid State       |-> Invalid State       |  */
/*  |-------------------++----------------------+-----------------------+-----------------------+-----------------------|  */
/*  |Group Specific     || o No actions         | o No actions          | o No actions          | o No actions          |  */
/*  |    Query Received ||                      |                       |                       |                       |  */
/*  |                   ||-> Invalid State      |-> Invalid State       |-> Invalid State       |-> Invalid State       |  */
/*  +-------------------++----------------------+-----------------------+-----------------------+-----------------------+  */
/*                                                                                                                         */
/***************************************************************************************************************************/

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] =
{
/*-------------------------------------------------*/
/*    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_V2_MEMBERS_PRESENT_STATE},

/* IGMP_ROUTER_GROUP_V1_REPORT_RECEIVED_EVENT */		  {igmp_router_notify_routing_of_group_addition,
                                                         igmp_router_start_group_specific_timer,
                                                         igmp_router_start_v1_host_timer,
                                                         (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},

⌨️ 快捷键说明

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