Fix "Old Style VLA" build warnings
[vpp.git] / src / vnet / classify / classify.api
index de9de77..c5e81fd 100644 (file)
@@ -13,7 +13,7 @@
  * limitations under the License.
  */
 
-vl_api_version 1.0.0
+option version = "2.0.0";
 
 /** \brief Add/Delete classification table request
     @param client_index - opaque cookie to identify the sender
@@ -37,7 +37,8 @@ vl_api_version 1.0.0
             can be accessible by configuring current_data_offset to -14
             if there is no vlan tag.
             This is valid only if current_data_flag is set to 1.
-    @param mask[] - match mask
+    @param mask_len - length of match mask, should be equal to match_n_vectors * sizeof (u32x4)
+    @param mask - match mask
 */
 define classify_add_del_table
 {
@@ -54,7 +55,8 @@ define classify_add_del_table
   u32 miss_next_index;
   u32 current_data_flag;
   i32 current_data_offset;
-  u8 mask[0];
+  u32 mask_len;
+  u8 mask[mask_len];
 };
 
 /** \brief Add/Delete classification table response
@@ -90,9 +92,16 @@ define classify_add_del_table_reply
            2: Classified IP packets will be looked up from the
               specified ipv6 fib table (configured by metadata as VRF id).
               Only valid for L3 input ACL node
+           3: Classified packet will be steered to source routig policy
+              of given index (in metadata).
+              This is only valid for IPv6 packets redirected to a source
+              routing node.
     @param metadata - valid only if action != 0
            VRF id if action is 1 or 2.
-    @param match[] - for add, match value for session, required
+           sr policy index if action is 3.
+    @param match_len - length of match, should be equal to skip_n_vectors plus match_n_vectors
+                       of target table times sizeof (u32x4)
+    @param match - for add, match value for session, required
 */
 autoreply define classify_add_del_session
 {
@@ -105,7 +114,8 @@ autoreply define classify_add_del_session
   i32 advance;
   u8 action;
   u32 metadata;
-  u8 match[0];
+  u32 match_len;
+  u8 match[match_len];
 };
 
 /** \brief Set/unset policer classify interface
@@ -321,6 +331,86 @@ define flow_classify_details {
     u32 table_index;
 };
 
+/** \brief Set/unset the classification table for an interface request 
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param is_ipv6 - ipv6 if non-zero, else ipv4
+    @param sw_if_index - interface to associate with the table
+    @param table_index - index of the table, if ~0 unset the table
+*/
+autoreply define classify_set_interface_ip_table
+{
+  u32 client_index;
+  u32 context;
+  u8 is_ipv6;
+  u32 sw_if_index;
+  u32 table_index;             /* ~0 => off */
+};
+
+/** \brief Set/unset l2 classification tables for an interface request
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param sw_if_index - interface to set/unset tables for
+    @param ip4_table_index - ip4 index, use ~0 for all 3 indexes to unset
+    @param ip6_table_index - ip6 index
+    @param other_table_index - other index
+*/
+autoreply define classify_set_interface_l2_tables
+{
+  u32 client_index;
+  u32 context;
+  u32 sw_if_index;
+  /* 3 x ~0 => off */
+  u32 ip4_table_index;
+  u32 ip6_table_index;
+  u32 other_table_index;
+  u8 is_input;
+};
+
+/** \brief Set/unset input ACL interface
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param sw_if_index - interface to set/unset input ACL
+    @param ip4_table_index - ip4 classify table index (~0 for skip)
+    @param ip6_table_index - ip6 classify table index (~0 for skip)
+    @param l2_table_index  -  l2 classify table index (~0 for skip)
+    @param is_add - Set input ACL if non-zero, else unset
+    Note: User is recommeneded to use just one valid table_index per call.
+          (ip4_table_index, ip6_table_index, or l2_table_index)
+*/
+autoreply define input_acl_set_interface
+{
+  u32 client_index;
+  u32 context;
+  u32 sw_if_index;
+  u32 ip4_table_index;
+  u32 ip6_table_index;
+  u32 l2_table_index;
+  u8 is_add;
+};
+
+/** \brief Set/unset output ACL interface
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param sw_if_index - interface to set/unset output ACL
+    @param ip4_table_index - ip4 classify table index (~0 for skip)
+    @param ip6_table_index - ip6 classify table index (~0 for skip)
+    @param l2_table_index  -  l2 classify table index (~0 for skip)
+    @param is_add - Set output ACL if non-zero, else unset
+    Note: User is recommeneded to use just one valid table_index per call.
+          (ip4_table_index, ip6_table_index, or l2_table_index)
+*/
+autoreply define output_acl_set_interface
+{
+  u32 client_index;
+  u32 context;
+  u32 sw_if_index;
+  u32 ip4_table_index;
+  u32 ip6_table_index;
+  u32 l2_table_index;
+  u8 is_add;
+};
+
 /*
  * Local Variables:
  * eval: (c-set-style "gnu")