diff options
Diffstat (limited to 'gpxe/src/include/igmp.h')
-rw-r--r-- | gpxe/src/include/igmp.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/gpxe/src/include/igmp.h b/gpxe/src/include/igmp.h new file mode 100644 index 00000000..8b3292f2 --- /dev/null +++ b/gpxe/src/include/igmp.h @@ -0,0 +1,42 @@ +#ifndef IGMP_H +#define IGMP_H + +#include "stdint.h" +#include <gpxe/in.h> + +#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 */ |