1#pragma once
2
3#include <netinet/in.h>
4#include <stdint.h>
5
6struct igmp {
7    uint8_t igmp_type;
8    uint8_t igmp_code;
9    uint16_t igmp_cksum;
10    struct in_addr igmp_group;
11};
12
13#define IGMP_MINLEN 8
14
15#define IGMP_MEMBERSHIP_QUERY 0x11
16#define IGMP_V1_MEMBERSHIP_REPORT 0x12
17#define IGMP_V2_MEMBERSHIP_REPORT 0x16
18#define IGMP_V2_LEAVE_GROUP 0x17
19
20#define IGMP_DVMRP 0x13
21#define IGMP_PIM 0x14
22#define IGMP_TRACE 0x15
23
24#define IGMP_MTRACE_RESP 0x1e
25#define IGMP_MTRACE 0x1f
26
27#define IGMP_MAX_HOST_REPORT_DELAY 10
28#define IGMP_TIMER_SCALE 10
29
30#define IGMP_DELAYING_MEMBER 1
31#define IGMP_IDLE_MEMBER 2
32#define IGMP_LAZY_MEMBER 3
33#define IGMP_SLEEPING_MEMBER 4
34#define IGMP_AWAKENING_MEMBER 5
35
36#define IGMP_v1_ROUTER 1
37#define IGMP_v2_ROUTER 2
38
39#define IGMP_HOST_MEMBERSHIP_QUERY IGMP_MEMBERSHIP_QUERY
40#define IGMP_HOST_MEMBERSHIP_REPORT IGMP_V1_MEMBERSHIP_REPORT
41#define IGMP_HOST_NEW_MEMBERSHIP_REPORT IGMP_V2_MEMBERSHIP_REPORT
42#define IGMP_HOST_LEAVE_MESSAGE IGMP_V2_LEAVE_GROUP
43