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

📄 igmp.h

📁 TCP-IP红宝书源代码
💻 H
字号:
/* igmp.h - IG_VER, IG_TYP */

#define	HG_TSIZE	15		/* host group table size	*/

#define	IG_VERSION	 1		/* RFC 1112 version number	*/

#define	IG_HLEN		 8		/* IGMP header length		*/
#define	IGT_HQUERY	 1		/* host membership query	*/
#define	IGT_HREPORT	 2		/* host membership report	*/

struct igmp {
	unsigned char	ig_vertyp;	/* version and type field	*/
	char		ig_unused;	/* not used by IGMP		*/
	unsigned short	ig_cksum;	/* compl. of 1's compl. sum	*/
	IPaddr		ig_gaddr;	/* host group IP address	*/
};

#define	IG_VER(pig)	(((pig)->ig_vertyp>>4) & 0xf)
#define	IG_TYP(pig)	((pig)->ig_vertyp & 0xf)

#define	IG_NSEND	2		/* # IGMP join messages to send	*/
#define	IG_DELAY	5		/* delay for resends (1/10 secs)*/

/* Host Group Membership States */

#define	HGS_FREE	0	/* unallocated host group table entry	*/
#define	HGS_DELAYING	1	/* delay timer running for this group	*/
#define	HGS_IDLE	2	/* in the group but no report pending	*/
#define	HGS_STATIC	3	/* for 224.0.0.1; no state changes	*/

struct hg {
	unsigned char	 hg_state;	/* HGS_* above			*/
	unsigned char	 hg_ifnum;	/* interface index for group	*/
	IPaddr		 hg_ipa;	/* IP multicast address		*/
	unsigned long	 hg_refs;	/* reference count		*/
	Bool		 hg_ttl;	/* max IP ttl for this group	*/
};

/* Host Group Update Process Info. */

extern	PROCESS		igmp_update();
#define	IGUSTK		512		/* stack size for update proc.	*/
#define	IGUPRI		 50		/* update process priority	*/
#define	IGUNAM		"igmp_update"	/* name of update  process	*/
#define	IGUARGC		0		/* count of args to hgupdate	*/

struct hginfo {
	Bool	hi_valid;	/* TRUE if hginit() has been called	*/
	int	hi_mutex;	/* table mutual exclusion		*/
	int	hi_uport;	/* listen port for delay timer expires	*/
};

extern struct hginfo	HostGroup;

extern IPaddr ig_allhosts;	/* "all hosts" group address (224.0.0.1)*/
extern IPaddr ig_allDmask;	/* net mask to match all class D addrs.	*/
extern struct hg hgtable[];

int hgjoin(unsigned, IPaddr, Bool);
int hgadd(unsigned, IPaddr, Bool);
int hgleave(unsigned, IPaddr);
int hgarpdel(unsigned, IPaddr);
struct hg *hglookup(unsigned, IPaddr);
int igmp(int, unsigned, IPaddr);
int igmp_settimers(unsigned);
int hgrand(void);

⌨️ 快捷键说明

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