igmp: use explicit types in api
[vpp.git] / src / plugins / igmp / igmp.api
index 2a2e680..c79ff6e 100644 (file)
@@ -18,6 +18,7 @@
 
 option version = "1.0.0";
 import "vnet/ip/ip_types.api";
+import "vnet/interface_types.api";
 
 /**
  * @brief Filter mode
@@ -61,11 +62,11 @@ enum filter_mode {
  *   @param saddr - source address
  *   @param gaddr - group address
  */
-typeonly define igmp_group
+typedef igmp_group
 {
   vl_api_filter_mode_t filter;
   u8 n_srcs;
-  u32 sw_if_index;
+  vl_api_interface_index_t sw_if_index;
   vl_api_ip4_address_t gaddr;
   vl_api_ip4_address_t saddrs[n_srcs];
 };
@@ -93,9 +94,51 @@ autoreply define igmp_enable_disable
   u32 client_index;
   u32 context;
 
-  u8 enable;
+  bool enable;
   u8 mode;
-  u32 sw_if_index;
+  vl_api_interface_index_t sw_if_index;
+};
+
+/**
+ * @brief
+ *  Add/del proxy device on specified VRF.
+ *  Interface must be IGMP enabled in HOST mode.
+ *
+ *   @param client_index - opaque cookie to identify the sender
+ *   @param context - sender context, to match reply w/ request
+ *   @param add - add (1) del (0)
+ *   @param vrf_id - VRF id
+ *   @param sw_if_index - upstream interface sw index
+ */
+autoreply define igmp_proxy_device_add_del
+{
+  u32 client_index;
+  u32 context;
+
+  u8 add;
+  u32 vrf_id;
+  vl_api_interface_index_t sw_if_index;
+};
+
+/**
+ * @brief
+ *  Add/del downstream interface to/from proxy device.
+ *  Interface must be IGMP enabled in ROUTER mode.
+ *
+ *   @param client_index - opaque cookie to identify the sender
+ *   @param context - sender context, to match reply w/ request
+ *   @param add - add (1) del (0)
+ *   @param vrf_id - VRF id
+ *   @param sw_if_index - downstream interface sw index
+ */
+autoreply define igmp_proxy_device_add_del_interface
+{
+  u32 client_index;
+  u32 context;
+
+  bool add;
+  u32 vrf_id;
+  vl_api_interface_index_t sw_if_index;
 };
 
 /**
@@ -109,7 +152,7 @@ define igmp_dump
   u32 client_index;
   u32 context;
 
-  u32 sw_if_index;
+  vl_api_interface_index_t sw_if_index;
 };
 
 /**
@@ -123,7 +166,7 @@ define igmp_details
 {
   u32 context;
 
-  u32 sw_if_index;
+  vl_api_interface_index_t sw_if_index;
   vl_api_ip4_address_t saddr;
   vl_api_ip4_address_t gaddr;
 };
@@ -138,7 +181,7 @@ autoreply define igmp_clear_interface
   u32 client_index;
   u32 context;
 
-  u32 sw_if_index;
+  vl_api_interface_index_t sw_if_index;
 };
 
 /**
@@ -173,9 +216,7 @@ service {
  */
 define igmp_event
 {
-  u32 context;
-
-  u32 sw_if_index;
+  vl_api_interface_index_t sw_if_index;
   vl_api_filter_mode_t filter;
   vl_api_ip4_address_t saddr;
   vl_api_ip4_address_t gaddr;