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

📄 igmp_structures.h

📁 路由器协议平台igmp协议设计实现源码。
💻 H
字号:
/*
 $Log:: /OEM Source Code/igmp/igmp_structures.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_STRUCTURES_H_)
#define _IGMP_STRUCTURES_H_

typedef _struct IGMP_MESSAGE
{
	enum IGMP_MESSAGE_TYPE						type;

	UINT												max_response_time;

	ULONG												group_ip_address;

	ULONG												source_ip_address;

	UINT												receiving_port;

} _pack IGMP_MESSAGE;

typedef _struct IGMP_TIMER
{
	enum BOOLEAN            					enabled;

	UINT                          			second_counter;

	UINT                          			expiry_time;

} _pack IGMP_TIMER;

typedef	_struct	IGMP_GROUP_LINKS
{
	struct IGMP_GROUP_CLASS 					*sptr_forward_link;
	struct IGMP_GROUP_CLASS  					*sptr_backward_link;
} _pack IGMP_GROUP_LINKS;

typedef _struct IGMP_MIB_CACHE_ENTRY
{
	ULONG												igmpCacheAddress;
	ULONG												igmpCacheIfIndex;
	enum BOOLEAN										igmpCacheSelf;
	ULONG												igmpCacheLastReporter;
	ULONG												igmpCacheUpTime;
	ULONG												igmpCacheExpiryTime;
	ULONG												igmpCacheStatus;
	ULONG												igmpCacheVersion1HostTimer;
} _pack IGMP_MIB_CACHE_ENTRY;
 
typedef _struct IGMP_ROUTER_GROUP_CLASS
{
	enum IGMP_ROUTER_GROUP_STATE    			state; /* NO_MEMBERS_PRESENT | V2_MEMBERS_PRESENT |
																	V1_MEMBERS_PRESENT | CHECKING_MEMBERSHIP */

	UINT                          			group_specific_query_interval; /* same as last member query interval */
	
	UINT                          			group_specific_query_count; /* same as last member query count */

	IGMP_TIMER                      			group_specific_timer;
	
	IGMP_TIMER                      			retransmit_timer;
	
	IGMP_TIMER                      			v1_host_timer;

} _pack IGMP_ROUTER_GROUP_CLASS;

typedef _struct IGMP_HOST_GROUP_CLASS
{
	enum IGMP_HOST_GROUP_STATE					state; /* NON_MEMBER | DELAYING_MEMBER | IDLE_MEMBER_STATE */

	enum BOOLEAN									this_host_was_last_reporter;

	IGMP_TIMER										report_delay_timer;

} _pack IGMP_HOST_GROUP_CLASS;

typedef _struct IGMP_GROUP_CLASS
{
	IGMP_GROUP_LINKS								links;

	enum BOOLEAN									enabled;

	UINT												port_number;

	ULONG												multicast_group_ip_address;

	ULONG                           			ip_address_of_last_reporter;

	IGMP_ROUTER_GROUP_CLASS						router_group;

	IGMP_HOST_GROUP_CLASS						host_group;

	IGMP_MIB_CACHE_ENTRY							igmpCacheEntry;

} _pack IGMP_GROUP_CLASS;

typedef _struct IGMP_MIB_INTERFACE_ENTRY
{
	ULONG												igmpInterfaceIfIndex; 
	ULONG												igmpInterfaceQueryInterval; 
 	enum BOOLEAN									igmpInterfaceStatus; 
	ULONG												igmpInterfaceVersion;
	ULONG												igmpInterfaceQuerier;
	ULONG												igmpInterfaceQueryMaxResponseTime;
	ULONG												igmpInterfaceQuerierPresentTimeout;
	enum BOOLEAN									igmpInterfaceLeaveEnabled;
	ULONG												igmpInterfaceVersion1QuerierTimer;
	ULONG												igmpInterfaceWrongVersionQueries;
	ULONG												igmpInterfaceJoins;
	ULONG												igmpInterfaceLeaves;
	ULONG												igmpInterfaceGroups;
	ULONG												igmpInterfaceRobustness;
} _pack IGMP_MIB_INTERFACE_ENTRY;

typedef _struct IGMP_HOST_PORT_CLASS
{
	enum BOOLEAN									v1_router_present; 

	UINT												v1_router_present_timer;

} _pack IGMP_HOST_PORT_CLASS;

typedef _struct IGMP_ROUTER_PORT_CLASS
{
	enum IGMP_ROUTER_PORT_STATE				state; /* specifies whether Querier or Non-Querier */

	enum BOOLEAN              					initializing;

   UINT                            			number_of_startup_queries_sent;

	UINT                           			number_of_startup_queries_to_send;

	UINT                           			startup_query_interval;

	UINT                            			general_query_interval;
	
	IGMP_TIMER                       		general_query_timer;

	UINT                            			general_query_max_response_time;
	
	UINT                            			other_querier_present_timeout;

	IGMP_TIMER                       		other_querier_present_timer;

} _pack IGMP_ROUTER_PORT_CLASS;

typedef _struct IGMP_PORT_CLASS
{
	enum BOOLEAN									enabled;

	enum BOOLEAN 									router_enabled;
	
	enum BOOLEAN									host_enabled;

	enum IGMP_VERSION								version;

	UINT												robustness;

	UINT												port_number;

	ULONG												ip_address_of_port;

	ULONG												ip_address_of_querier;

	UINT												max_response_time_from_most_recent_query;

	IGMP_ROUTER_PORT_CLASS						router_port;

	IGMP_HOST_PORT_CLASS							host_port;

	IGMP_MIB_INTERFACE_ENTRY					igmpInterfaceEntry;

	IGMP_GROUP_LINKS								active_group_list;

} _pack IGMP_PORT_CLASS;

typedef _struct IGMP_TRACE_CLASS
{
	enum BOOLEAN									enabled;

	enum BOOLEAN									alarm_enabled;

} _pack IGMP_TRACE_CLASS;

typedef _struct IGMP_CLASS
{
	enum BOOLEAN									initialization_breakpoint;

	enum BOOLEAN									enabled;

	UINT												clock_ticks_per_second;

	UINT												number_of_snmp_time_ticks_per_clock_tick;

	UINT												tick_counter;

	ULONG												stack_id;

	UINT												number_of_ports;

	IGMP_TRACE_CLASS								trace;

	IGMP_PORT_CLASS								port_table[NUMBER_OF_IP_PORTS];

} _pack IGMP_CLASS;

#endif /* _IGMP_STRUCTURES_H_ */

⌨️ 快捷键说明

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