#define IGMP_MINLEN 8
#define IGMP_MEMBERSHIP_QUERY 0x11
#define IGMP_V1_MEMBERSHIP_REPORT 0x12
#define IGMP_V2_MEMBERSHIP_REPORT 0x16
#define IGMP_V3_MEMBERSHIP_REPORT 0x22
#define IGMP_V2_LEAVE_GROUP 0x17
#define IGMP_MAX_HOST_REPORT_DELAY 10
#define IGMP_TIMER_SCALE 10
#define IGMP_REPORT_MODE_IN 1
#define IGMP_REPORT_MODE_EX 2
#define IGMP_REPORT_TO_IN 3
#define IGMP_REPORT_TO_EX 4
#define IGMP_REPORT_ALLOW_NEW 5
#define IGMP_REPORT_BLOCK_OLD 6
#define IGMP_MASK_CUR_STATE 0x01
#define IGMP_MASK_ALLOW_NEW 0x02
#define IGMP_MASK_BLOCK_OLD 0x04
#define IGMP_MASK_TO_IN 0x08
#define IGMP_MASK_TO_EX 0x10
#define IGMP_MASK_STATE_T1 0x20
#define IGMP_MASK_STATE_T2 0x40
#define IGMP_MASK_IF_STATE 0x80
#define IGMP_MASK_STATE_TX
#define IGMP_MASK_PENDING
#define IGMP_EXCLUDE_LIST 1
#define IGMP_INCLUDE_LIST 2
#define IGMP_RECORDED_LIST 3
See: | Type struct igmp |
See: | Type struct igmp_report |
struct igmp | |
{ | |
uint8_t igmp_type; | |
uint8_t igmp_code; | |
uint16_t igmp_cksum; | |
uint32_t igmp_group; | |
} |
struct igmpv3 | |
{ | |
uint8_t igmp_type; | |
uint8_t igmp_code; | |
uint16_t igmp_cksum; | |
uint32_t igmp_group; | |
uint8_t igmp_misc; | |
uint8_t igmp_qqi; | |
uint16_t igmp_numsrc; | |
uint32_t igmp_sources[1]; | |
} |
struct igmp_grouprec | |
{ | |
uint8_t ig_type; | |
uint8_t ig_datalen; | |
uint16_t ig_numsrc; | |
uint32_t ig_group; | |
uint32_t ig_sources[1]; | |
} |
struct igmp_report | |
{ | |
uint8_t ir_type; | |
uint8_t ir_rsv1; | |
uint16_t ir_cksum; | |
uint16_t ir_rsv2; | |
uint16_t ir_numgrps; | |
struct igmp_grouprec ir_groups[1]; | |
} |