igmp.h (c398230b64aea809cb7c5cea8db580af7097920c) igmp.h (71498f308b2324dbd94e94fd8c4ae41bf4bd663b)
1/*-
2 * Copyright (c) 1988 Stephen Deering.
3 * Copyright (c) 1992, 1993
4 * The Regents of the University of California. All rights reserved.
5 *
6 * This code is derived from software contributed to Berkeley by
7 * Stephen Deering of Stanford University.
8 *

--- 41 unchanged lines hidden (view full) ---

50 */
51struct igmp {
52 u_char igmp_type; /* version & type of IGMP message */
53 u_char igmp_code; /* subtype for routing msgs */
54 u_short igmp_cksum; /* IP-style checksum */
55 struct in_addr igmp_group; /* group address being reported */
56}; /* (zero for queries) */
57
1/*-
2 * Copyright (c) 1988 Stephen Deering.
3 * Copyright (c) 1992, 1993
4 * The Regents of the University of California. All rights reserved.
5 *
6 * This code is derived from software contributed to Berkeley by
7 * Stephen Deering of Stanford University.
8 *

--- 41 unchanged lines hidden (view full) ---

50 */
51struct igmp {
52 u_char igmp_type; /* version & type of IGMP message */
53 u_char igmp_code; /* subtype for routing msgs */
54 u_short igmp_cksum; /* IP-style checksum */
55 struct in_addr igmp_group; /* group address being reported */
56}; /* (zero for queries) */
57
58#define IGMP_MINLEN 8
58struct igmpv3 {
59 u_char igmp_type; /* version & type of IGMP message */
60 u_char igmp_code; /* subtype for routing msgs */
61 u_short igmp_cksum; /* IP-style checksum */
62 struct in_addr igmp_group; /* group address being reported */
63 /* (zero for queries) */
64 u_char igmp_misc; /* reserved/suppress/robustness */
65 u_char igmp_qqi; /* querier's query interval */
66 u_short igmp_numsrc; /* number of sources */
67 /*struct in_addr igmp_sources[1];*/ /* source addresses */
68};
59
69
70struct igmp_grouprec {
71 u_char ig_type; /* record type */
72 u_char ig_datalen; /* length of auxiliary data */
73 u_short ig_numsrc; /* number of sources */
74 struct in_addr ig_group; /* group address being reported */
75 /*struct in_addr ig_sources[1];*/ /* source addresses */
76};
77
78struct igmp_report {
79 u_char ir_type; /* record type */
80 u_char ir_rsv1; /* reserved */
81 u_short ir_cksum; /* checksum */
82 u_short ir_rsv2; /* reserved */
83 u_short ir_numgrps; /* number of group records */
84 struct igmp_grouprec ir_groups[1]; /* group records */
85};
86
87#define IGMP_MINLEN 8
88#define IGMP_HDRLEN 8
89#define IGMP_GRPREC_HDRLEN 8
90#define IGMP_PREPEND 0
91
92#define IGMP_QRV(pigmp) ((pigmp)->igmp_misc & (0x07)) /* XXX */
93#define IGMP_MAXSOURCES(len) (((len) - 12) >> 2) /* XXX */
94
60/*
61 * Message types, including version number.
62 */
63#define IGMP_MEMBERSHIP_QUERY 0x11 /* membership query */
64#define IGMP_V1_MEMBERSHIP_REPORT 0x12 /* Ver. 1 membership report */
65#define IGMP_V2_MEMBERSHIP_REPORT 0x16 /* Ver. 2 membership report */
66#define IGMP_V2_LEAVE_GROUP 0x17 /* Leave-group message */
67
68#define IGMP_DVMRP 0x13 /* DVMRP routing message */
69#define IGMP_PIM 0x14 /* PIM routing message */
70
71#define IGMP_MTRACE_RESP 0x1e /* traceroute resp.(to sender)*/
72#define IGMP_MTRACE 0x1f /* mcast traceroute messages */
73
95/*
96 * Message types, including version number.
97 */
98#define IGMP_MEMBERSHIP_QUERY 0x11 /* membership query */
99#define IGMP_V1_MEMBERSHIP_REPORT 0x12 /* Ver. 1 membership report */
100#define IGMP_V2_MEMBERSHIP_REPORT 0x16 /* Ver. 2 membership report */
101#define IGMP_V2_LEAVE_GROUP 0x17 /* Leave-group message */
102
103#define IGMP_DVMRP 0x13 /* DVMRP routing message */
104#define IGMP_PIM 0x14 /* PIM routing message */
105
106#define IGMP_MTRACE_RESP 0x1e /* traceroute resp.(to sender)*/
107#define IGMP_MTRACE 0x1f /* mcast traceroute messages */
108
109#define IGMP_V3_MEMBERSHIP_REPORT 0x22 /* Ver. 3 membership report */
110
74#define IGMP_MAX_HOST_REPORT_DELAY 10 /* max delay for response to */
75 /* query (in seconds) according */
76 /* to RFC1112 */
77
78
79#define IGMP_TIMER_SCALE 10 /* denotes that the igmp code field */
80 /* specifies time in 10th of seconds*/
81
82/*
83 * The following four defininitions are for backwards compatibility.
84 * They should be removed as soon as all applications are updated to
85 * use the new constant names.
86 */
87#define IGMP_HOST_MEMBERSHIP_QUERY IGMP_MEMBERSHIP_QUERY
88#define IGMP_HOST_MEMBERSHIP_REPORT IGMP_V1_MEMBERSHIP_REPORT
89#define IGMP_HOST_NEW_MEMBERSHIP_REPORT IGMP_V2_MEMBERSHIP_REPORT
90#define IGMP_HOST_LEAVE_MESSAGE IGMP_V2_LEAVE_GROUP
91
92#endif /* _NETINET_IGMP_H_ */
111#define IGMP_MAX_HOST_REPORT_DELAY 10 /* max delay for response to */
112 /* query (in seconds) according */
113 /* to RFC1112 */
114
115
116#define IGMP_TIMER_SCALE 10 /* denotes that the igmp code field */
117 /* specifies time in 10th of seconds*/
118
119/*
120 * The following four defininitions are for backwards compatibility.
121 * They should be removed as soon as all applications are updated to
122 * use the new constant names.
123 */
124#define IGMP_HOST_MEMBERSHIP_QUERY IGMP_MEMBERSHIP_QUERY
125#define IGMP_HOST_MEMBERSHIP_REPORT IGMP_V1_MEMBERSHIP_REPORT
126#define IGMP_HOST_NEW_MEMBERSHIP_REPORT IGMP_V2_MEMBERSHIP_REPORT
127#define IGMP_HOST_LEAVE_MESSAGE IGMP_V2_LEAVE_GROUP
128
129#endif /* _NETINET_IGMP_H_ */