IGMP plugin

- host mode:
  igmp_listen - API to signal that the host has joined an (S,G)

- route mode:
  igmp_enable - API to enable the reception of host IGMP messages
  igmp_event - API to report the host join/leave from an (S,G)

Change-Id: Id180ec27dee617d33ab3088f5dcf6125d3aa9c8f
Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
diff --git a/src/vnet/ip/igmp_packet.h b/src/vnet/ip/igmp_packet.h
index 503259e..a8e9db6 100644
--- a/src/vnet/ip/igmp_packet.h
+++ b/src/vnet/ip/igmp_packet.h
@@ -83,6 +83,24 @@
   ip4_address_t dst;
 } igmp_message_t;
 
+typedef struct
+{
+  /* type 0x11 (IGMPv3) */
+  igmp_header_t header;
+
+  ip4_address_t dst;
+
+  /* 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;
+
 #define foreach_igmp_membership_group_v3_type	\
   _ (1, mode_is_filter_include)			\
   _ (2, mode_is_filter_exclude)			\