+ ip4_address_t group_address;
+
+ /* Reserved, Suppress Router-Side Processing flag and
+ Querier's Robustness Variable RRRRSQQQ. */
+ u8 resv_s_qrv;
+
+ /* Querier's Query Interval Code */
+ u8 qqi_code;
+
+ u16 n_src_addresses;
+ ip4_address_t src_addresses[0];
+} igmp_membership_query_v3_t;
+
+always_inline u32
+igmp_membership_query_v3_length (const igmp_membership_query_v3_t * q)
+{
+ return (sizeof (*q) +
+ (sizeof (ip4_address_t) *
+ clib_net_to_host_u16 (q->n_src_addresses)));
+}
+
+always_inline int
+igmp_membership_query_v3_is_geeral (const igmp_membership_query_v3_t * q)
+{
+ return (0 == q->group_address.as_u32);
+}