11 #ifndef __IGMP_PROTO_H__
12 #define __IGMP_PROTO_H__
31 #define IGMP_TYPE_QUERY 0x11
32 #define IGMP_TYPE_V1_REPORT 0x12
33 #define IGMP_TYPE_V2_REPORT 0x16
34 #define IGMP_TYPE_V2_LEAVE 0x17
35 #define IGMP_TYPE_V3_REPORT 0x22
60 #define IGMP_SUPP_RTR_PROC_MASK 0x8
61 #define IGMP_QRV_MASK 0x7
78 return (uint8_t*)(ptr + 1);
117 #define IGMP_FIXFLOAT_FLAG 0x80
118 #define IGMP_FLOAT_EXP_MASK 0x70
119 #define IGMP_FLOAT_EXP_SHIFT 4
120 #define IGMP_FLOAT_MANT_MASK 0x0F
121 #define IGMP_FLOAT_MANT_HIGHBIT 0x10
122 #define IGMP_FLOAT_MAX_MANT 0x1F
123 #define IGMP_FLOAT_MANT_SHIFT 0
124 #define IGMP_FLOAT_EXP_OFFSET 3
125 #define IGMP_FLOAT_MAX_EXP 0x07
126 #define IGMP_MAX_FLOAT_ENCODABLE \
127 ((IGMP_FLOAT_MANT_MASK | IGMP_FLOAT_MANT_HIGHBIT) << \
128 (IGMP_FLOAT_MAX_EXP + IGMP_FLOAT_EXP_OFFSET))
132 #define IGMP_MAX_RESP_MSEC 100
133 #define IGMP_MAX_RESP_DEFAULT 100
134 #define IGMP_V2_MAX_MAX_RESP 0xFF
142 static inline boolean
145 return ((*addr & 0xf0) == 0xe0);
igmp_hdr igmp_v3_query_hdr
uint16_t igmp_v3_rpt_num_srcs
uint8_t igmp_v3_rpt_aux_len
igmp_hdr igmp_v3_report_hdr
igmp_v1v2_pkt igmp_pkt_v1v2
igmp_hdr igmp_v1v2_pkt_hdr
uint8_t igmp_v3_query_s_qrv
uint16_t igmp_v3_report_rsvd
igmp_v3_query igmp_pkt_v3_query
static uint8_t * get_igmp_v3_rpt_source(igmp_v3_rpt_rcrd *ptr)
uint16_t igmp_v3_query_num_srcs
uint8_t igmp_v3_rpt_rec_type
static boolean igmp_addr_is_mcast(const uint8_t *addr)
igmp_v3_rpt_rcrd igmp_v3_report_rcrd[0]
uint8_t igmp_v3_query_group[IPV4_ADDR_LEN]
struct igmp_naked_header_ igmp_naked_header
uint8_t igmp_v3_query_source[0]
union igmp_packet_ igmp_packet
igmp_v3_report igmp_pkt_v3_rpt
struct igmp_hdr_ igmp_hdr
struct igmp_v1v2_pkt_ igmp_v1v2_pkt
uint8_t igmp_v1v2_pkt_group[IPV4_ADDR_LEN]
struct igmp_v3_report_ igmp_v3_report
uint16_t igmp_v3_report_num_rcrds
uint8_t igmp_v3_query_qqic
struct igmp_v3_rpt_rcrd_ igmp_v3_rpt_rcrd
uint8_t igmp_v3_rpt_group[IPV4_ADDR_LEN]
struct igmp_v3_query_ igmp_v3_query
igmp_naked_header igmp_pkt_naked