#include <netinet/igmp.h>
netinet/igmp.h
structigmp
IGMPv1/v2 query and host report format.
| u_char | igmp_type | version & type of IGMP message |
| u_char | igmp_code | subtype for routing msgs |
| u_short | igmp_cksum | IP-style checksum |
| struct in_addr | igmp_group | group address being reported |
(zero for queries)
structigmpv3
IGMP v3 query format.
| u_char | igmp_type | version & type of IGMP message |
| u_char | igmp_code | subtype for routing msgs |
| u_short | igmp_cksum | IP-style checksum |
| struct in_addr | igmp_group | group address being reported |
| u_char | igmp_misc | (zero for queries) reserved/suppress/robustness |
| u_char | igmp_qqi | querier's query interval |
| u_short | igmp_numsrc | number of sources |
macroIGMP_V3_QUERY_MINLEN
#define IGMP_V3_QUERY_MINLEN 12
macroIGMP_EXP
#define IGMP_EXP(x) (((x) >> 4) & 0x07)
macroIGMP_MANT
#define IGMP_MANT(x) ((x) & 0x0f)
macroIGMP_QRESV
#define IGMP_QRESV(x) (((x) >> 4) & 0x0f)
macroIGMP_SFLAG
#define IGMP_SFLAG(x) (((x) >> 3) & 0x01)
macroIGMP_QRV
#define IGMP_QRV(x) ((x) & 0x07)
structigmp_grouprec
| u_char | ig_type | record type |
| u_char | ig_datalen | length of auxiliary data |
| u_short | ig_numsrc | number of sources |
| struct in_addr | ig_group | group address being reported |
macroIGMP_GRPREC_HDRLEN
#define IGMP_GRPREC_HDRLEN 8
structigmp_report
IGMPv3 host membership report header.
| u_char | ir_type | IGMP_v3_HOST_MEMBERSHIP_REPORT |
| u_char | ir_rsv1 | must be zero |
| u_short | ir_cksum | checksum |
| u_short | ir_rsv2 | must be zero |
| u_short | ir_numgrps | number of group records |
macroIGMP_V3_REPORT_MINLEN
#define IGMP_V3_REPORT_MINLEN 8
macroIGMP_V3_REPORT_MAXRECS
#define IGMP_V3_REPORT_MAXRECS 65535
macroIGMP_HOST_MEMBERSHIP_QUERY
Message types, including version number.
#define IGMP_HOST_MEMBERSHIP_QUERY 0x11
membership query
macroIGMP_v1_HOST_MEMBERSHIP_REPORT
#define IGMP_v1_HOST_MEMBERSHIP_REPORT 0x12
Ver. 1 membership report
macroIGMP_v2_HOST_MEMBERSHIP_REPORT
#define IGMP_v2_HOST_MEMBERSHIP_REPORT 0x16
Ver. 2 membership report
macroIGMP_v3_HOST_MEMBERSHIP_REPORT
#define IGMP_v3_HOST_MEMBERSHIP_REPORT 0x22
Ver. 3 membership report
macroIGMP_V3_GROUP_QUERY
#define IGMP_V3_GROUP_QUERY 2
macroIGMP_V3_GROUP_SOURCE_QUERY
#define IGMP_V3_GROUP_SOURCE_QUERY 3
macroIGMP_V1V2_MAX_RI
Maximum report interval for IGMP v1/v2 host membership reports [RFC 1112]
#define IGMP_V1V2_MAX_RI 10
macroIGMP_MAX_HOST_REPORT_DELAY
#define IGMP_MAX_HOST_REPORT_DELAY IGMP_V1V2_MAX_RI
macroIGMP_TIMER_SCALE
IGMP_TIMER_SCALE denotes that the igmp code field specifies
time in tenths of a second.
#define IGMP_TIMER_SCALE 10