#ifndef IGMP_H #define IGMP_H #include "stdint.h" #include #define IGMP_QUERY 0x11 #define IGMPv1_REPORT 0x12 #define IGMPv2_REPORT 0x16 #define IGMP_LEAVE 0x17 #define GROUP_ALL_HOSTS 0xe0000001 /* 224.0.0.1 Host byte order */ #define MULTICAST_MASK 0xf0000000 #define MULTICAST_NETWORK 0xe0000000 enum { IGMP_SERVER, MAX_IGMP }; struct igmp { uint8_t type; uint8_t response_time; uint16_t chksum; struct in_addr group; } PACKED; struct igmp_ip_t { /* Format of an igmp ip packet */ struct iphdr ip; uint8_t router_alert[4]; /* Router alert option */ struct igmp igmp; } PACKED; struct igmptable_t { struct in_addr group; unsigned long time; } PACKED; extern void join_group ( int slot, unsigned long group ); extern void leave_group ( int slot ); #endif /* IGMP_H */