17c478bd9Sstevel@tonic-gate #ifndef	_IGMP_H
27c478bd9Sstevel@tonic-gate #define	_IGMP_H
37c478bd9Sstevel@tonic-gate 
47c478bd9Sstevel@tonic-gate /* Max interval between IGMP packets */
57c478bd9Sstevel@tonic-gate #define IGMP_INTERVAL			(10*TICKS_PER_SEC)
67c478bd9Sstevel@tonic-gate #define IGMPv1_ROUTER_PRESENT_TIMEOUT	(400*TICKS_PER_SEC)
77c478bd9Sstevel@tonic-gate 
87c478bd9Sstevel@tonic-gate #define IGMP_QUERY	0x11
97c478bd9Sstevel@tonic-gate #define IGMPv1_REPORT	0x12
107c478bd9Sstevel@tonic-gate #define IGMPv2_REPORT	0x16
117c478bd9Sstevel@tonic-gate #define IGMP_LEAVE	0x17
127c478bd9Sstevel@tonic-gate #define GROUP_ALL_HOSTS 0xe0000001 /* 224.0.0.1 Host byte order */
137c478bd9Sstevel@tonic-gate 
147c478bd9Sstevel@tonic-gate struct igmp {
157c478bd9Sstevel@tonic-gate 	uint8_t  type;
167c478bd9Sstevel@tonic-gate 	uint8_t  response_time;
177c478bd9Sstevel@tonic-gate 	uint16_t chksum;
187c478bd9Sstevel@tonic-gate 	in_addr group;
197c478bd9Sstevel@tonic-gate };
207c478bd9Sstevel@tonic-gate 
217c478bd9Sstevel@tonic-gate struct igmp_ip_t { /* Format of an igmp ip packet */
227c478bd9Sstevel@tonic-gate 	struct iphdr ip;
237c478bd9Sstevel@tonic-gate 	uint8_t router_alert[4]; /* Router alert option */
247c478bd9Sstevel@tonic-gate 	struct igmp igmp;
257c478bd9Sstevel@tonic-gate };
267c478bd9Sstevel@tonic-gate 
277c478bd9Sstevel@tonic-gate #endif	/* _IGMP_H */
28