1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #ifndef _UAPI_LINUX_IGMP_H
18 #define _UAPI_LINUX_IGMP_H
19
20 #include <linux/types.h>
21 #include <asm/byteorder.h>
22
23
24
25
26
27
28
29
30
31 struct igmphdr {
32 __u8 type;
33 __u8 code;
34 __sum16 csum;
35 __be32 group;
36 };
37
38
39 #define IGMPV3_MODE_IS_INCLUDE 1
40 #define IGMPV3_MODE_IS_EXCLUDE 2
41 #define IGMPV3_CHANGE_TO_INCLUDE 3
42 #define IGMPV3_CHANGE_TO_EXCLUDE 4
43 #define IGMPV3_ALLOW_NEW_SOURCES 5
44 #define IGMPV3_BLOCK_OLD_SOURCES 6
45
46 struct igmpv3_grec {
47 __u8 grec_type;
48 __u8 grec_auxwords;
49 __be16 grec_nsrcs;
50 __be32 grec_mca;
51 __be32 grec_src[0];
52 };
53
54 struct igmpv3_report {
55 __u8 type;
56 __u8 resv1;
57 __sum16 csum;
58 __be16 resv2;
59 __be16 ngrec;
60 struct igmpv3_grec grec[0];
61 };
62
63 struct igmpv3_query {
64 __u8 type;
65 __u8 code;
66 __sum16 csum;
67 __be32 group;
68 #if defined(__LITTLE_ENDIAN_BITFIELD)
69 __u8 qrv:3,
70 suppress:1,
71 resv:4;
72 #elif defined(__BIG_ENDIAN_BITFIELD)
73 __u8 resv:4,
74 suppress:1,
75 qrv:3;
76 #else
77 #error "Please fix <asm/byteorder.h>"
78 #endif
79 __u8 qqic;
80 __be16 nsrcs;
81 __be32 srcs[0];
82 };
83
84 #define IGMP_HOST_MEMBERSHIP_QUERY 0x11
85 #define IGMP_HOST_MEMBERSHIP_REPORT 0x12
86 #define IGMP_DVMRP 0x13
87 #define IGMP_PIM 0x14
88 #define IGMP_TRACE 0x15
89 #define IGMPV2_HOST_MEMBERSHIP_REPORT 0x16
90 #define IGMP_HOST_LEAVE_MESSAGE 0x17
91 #define IGMPV3_HOST_MEMBERSHIP_REPORT 0x22
92
93 #define IGMP_MTRACE_RESP 0x1e
94 #define IGMP_MTRACE 0x1f
95
96 #define IGMP_MRDISC_ADV 0x30
97
98
99
100
101
102 #define IGMP_DELAYING_MEMBER 0x01
103 #define IGMP_IDLE_MEMBER 0x02
104 #define IGMP_LAZY_MEMBER 0x03
105 #define IGMP_SLEEPING_MEMBER 0x04
106 #define IGMP_AWAKENING_MEMBER 0x05
107
108 #define IGMP_MINLEN 8
109
110 #define IGMP_MAX_HOST_REPORT_DELAY 10
111
112
113 #define IGMP_TIMER_SCALE 10
114
115
116 #define IGMP_AGE_THRESHOLD 400
117
118
119
120 #define IGMP_ALL_HOSTS htonl(0xE0000001L)
121 #define IGMP_ALL_ROUTER htonl(0xE0000002L)
122 #define IGMPV3_ALL_MCR htonl(0xE0000016L)
123 #define IGMP_LOCAL_GROUP htonl(0xE0000000L)
124 #define IGMP_LOCAL_GROUP_MASK htonl(0xFFFFFF00L)
125
126
127
128
129
130 #endif