1*1b8adde7SWilliam Kucharski #ifndef _IGMP_H 2*1b8adde7SWilliam Kucharski #define _IGMP_H 3*1b8adde7SWilliam Kucharski 4*1b8adde7SWilliam Kucharski /* Max interval between IGMP packets */ 5*1b8adde7SWilliam Kucharski #define IGMP_INTERVAL (10*TICKS_PER_SEC) 6*1b8adde7SWilliam Kucharski #define IGMPv1_ROUTER_PRESENT_TIMEOUT (400*TICKS_PER_SEC) 7*1b8adde7SWilliam Kucharski 8*1b8adde7SWilliam Kucharski #define IGMP_QUERY 0x11 9*1b8adde7SWilliam Kucharski #define IGMPv1_REPORT 0x12 10*1b8adde7SWilliam Kucharski #define IGMPv2_REPORT 0x16 11*1b8adde7SWilliam Kucharski #define IGMP_LEAVE 0x17 12*1b8adde7SWilliam Kucharski #define GROUP_ALL_HOSTS 0xe0000001 /* 224.0.0.1 Host byte order */ 13*1b8adde7SWilliam Kucharski 14*1b8adde7SWilliam Kucharski struct igmp { 15*1b8adde7SWilliam Kucharski uint8_t type; 16*1b8adde7SWilliam Kucharski uint8_t response_time; 17*1b8adde7SWilliam Kucharski uint16_t chksum; 18*1b8adde7SWilliam Kucharski in_addr group; 19*1b8adde7SWilliam Kucharski }; 20*1b8adde7SWilliam Kucharski 21*1b8adde7SWilliam Kucharski struct igmp_ip_t { /* Format of an igmp ip packet */ 22*1b8adde7SWilliam Kucharski struct iphdr ip; 23*1b8adde7SWilliam Kucharski uint8_t router_alert[4]; /* Router alert option */ 24*1b8adde7SWilliam Kucharski struct igmp igmp; 25*1b8adde7SWilliam Kucharski }; 26*1b8adde7SWilliam Kucharski 27*1b8adde7SWilliam Kucharski #endif /* _IGMP_H */ 28