classify: API cleanup
[vpp.git] / src / vnet / classify / classify.api
index 52ab186..38c7343 100644 (file)
  * limitations under the License.
  */
 
-option version = "2.0.0";
+option version = "3.0.0";
+
+import "vnet/interface_types.api";
 
 /** \brief Add/Delete classification table request
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
     @param is_add- if non-zero add the table, else delete it
     @param del_chain - if non-zero delete the whole chain of tables
-    @param table_index - if add, reuturns index of the created table, else specifies the table to delete  
+    @param table_index - if add, returns index of the created table, else specifies the table to delete
     @param nbuckets - number of buckets when adding a table
     @param memory_size - memory size when adding a table
     @param match_n_vectors - number of match vectors
@@ -44,24 +46,24 @@ define classify_add_del_table
 {
   u32 client_index;
   u32 context;
-  u8 is_add;
-  u8 del_chain;
-  u32 table_index;
-  u32 nbuckets;
-  u32 memory_size;
-  u32 skip_n_vectors;
-  u32 match_n_vectors;
-  u32 next_table_index;
-  u32 miss_next_index;
-  u32 current_data_flag;
-  i32 current_data_offset;
+  bool is_add;
+  bool del_chain;
+  u32 table_index [default=0xffffffff];
+  u32 nbuckets [default=2];
+  u32 memory_size [default=2097152];
+  u32 skip_n_vectors [default=0];
+  u32 match_n_vectors [default=1];
+  u32 next_table_index [default=0xffffffff];
+  u32 miss_next_index [default=0xffffffff];
+  u8 current_data_flag [default=0];
+  i16 current_data_offset [default=0];
   u32 mask_len;
   u8 mask[mask_len];
 };
 
 /** \brief Add/Delete classification table response
     @param context - sender context, to match reply w/ request
-    @param retval - return code for the table add/del requst
+    @param retval - return code for the table add/del request
     @param new_table_index - for add, returned index of the new table
     @param skip_n_vectors - for add, returned value of skip_n_vectors in table
     @param match_n_vectors -for add, returned value of match_n_vectors in table
@@ -75,6 +77,14 @@ define classify_add_del_table_reply
   u32 match_n_vectors;
 };
 
+enum classify_action : u8
+{
+  CLASSIFY_API_ACTION_NONE = 0,
+  CLASSIFY_API_ACTION_SET_IP4_FIB_INDEX = 1,
+  CLASSIFY_API_ACTION_SET_IP6_FIB_INDEX = 2,
+  CLASSIFY_API_ACTION_SET_METADATA = 3,
+};
+
 /** \brief Classify add / del session request
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
@@ -92,7 +102,7 @@ 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
+           3: Classified packet will be steered to source routing policy
               of given index (in metadata).
               This is only valid for IPv6 packets redirected to a source
               routing node.
@@ -110,13 +120,13 @@ autoreply define classify_add_del_session
 {
   u32 client_index;
   u32 context;
-  u8 is_add;
+  bool is_add;
   u32 table_index;
-  u32 hit_next_index;
-  u32 opaque_index;
-  i32 advance;
-  u8 action;
-  u32 metadata;
+  u32 hit_next_index [default=0xffffffff];
+  u32 opaque_index [default=0xffffffff];
+  i32 advance [default=0];
+  vl_api_classify_action_t action [default=0];
+  u32 metadata [default=0];
   u32 match_len;
   u8 match[match_len];
 };
@@ -129,33 +139,43 @@ autoreply define classify_add_del_session
     @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 if non-zero, else unset
-    Note: User is recommeneded to use just one valid table_index per call.
+    Note: User is recommended to use just one valid table_index per call.
           (ip4_table_index, ip6_table_index, or l2_table_index)
 */
 autoreply define policer_classify_set_interface
 {
   u32 client_index;
   u32 context;
-  u32 sw_if_index;
+  vl_api_interface_index_t sw_if_index;
   u32 ip4_table_index;
   u32 ip6_table_index;
   u32 l2_table_index;
-  u8 is_add;
+  bool is_add;
+};
+
+enum policer_classify_table : u8
+{
+  POLICER_CLASSIFY_API_TABLE_IP4,
+  POLICER_CLASSIFY_API_TABLE_IP6,
+  POLICER_CLASSIFY_API_TABLE_L2,
 };
 
+
 /** \brief Get list of policer classify interfaces and tables
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
     @param type - classify table type
+    @param sw_if_index - filter on sw_if_index
 */
 define policer_classify_dump
 {
   u32 client_index;
   u32 context;
-  u8 type;
+  vl_api_policer_classify_table_t type;
+  vl_api_interface_index_t sw_if_index;
 };
 
-/** \brief Policer iclassify operational state response.
+/** \brief Policer classify operational state response.
     @param context - sender context, to match reply w/ request
     @param sw_if_index - software interface index
     @param table_index - classify table index
@@ -163,7 +183,7 @@ define policer_classify_dump
 define policer_classify_details
 {
   u32 context;
-  u32 sw_if_index;
+  vl_api_interface_index_t sw_if_index;
   u32 table_index;
 };
 
@@ -199,7 +219,7 @@ define classify_table_by_interface
 {
   u32 client_index;
   u32 context;
-  u32 sw_if_index;
+  vl_api_interface_index_t sw_if_index;
 };
 
 /** \brief Reply for classify table id by interface index request
@@ -214,7 +234,7 @@ define classify_table_by_interface_reply
 {
   u32 context;
   i32 retval;
-  u32 sw_if_index;
+  vl_api_interface_index_t sw_if_index;
   u32 l2_table_id;
   u32 ip4_table_id;
   u32 ip6_table_id;
@@ -300,27 +320,35 @@ define classify_session_details
     @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 if non-zero, else unset
-    Note: User is recommeneded to use just one valid table_index per call.
+    Note: User is recommended to use just one valid table_index per call.
           (ip4_table_index, ip6_table_index, or l2_table_index)
 */
 autoreply define flow_classify_set_interface {
     u32 client_index;
     u32 context;
-    u32 sw_if_index;
+    vl_api_interface_index_t sw_if_index;
     u32 ip4_table_index;
     u32 ip6_table_index;
-    u8  is_add;
+    bool is_add;
+};
+
+enum flow_classify_table : u8
+{
+  FLOW_CLASSIFY_API_TABLE_IP4,
+  FLOW_CLASSIFY_API_TABLE_IP6,
 };
 
 /** \brief Get list of flow classify interfaces and tables
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
-    @param type - classify table type
+    @param type - flow classify table type
+    @param sw_if_index - filter on sw_if_index
 */
 define flow_classify_dump {
     u32 client_index;
     u32 context;
-    u8 type;
+    vl_api_flow_classify_table_t type;
+    vl_api_interface_index_t sw_if_index;
 };
 
 /** \brief Flow classify operational state response.
@@ -330,11 +358,11 @@ define flow_classify_dump {
 */
 define flow_classify_details {
     u32 context;
-    u32 sw_if_index;
+    vl_api_interface_index_t sw_if_index;
     u32 table_index;
 };
 
-/** \brief Set/unset the classification table for an interface request 
+/** \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
@@ -345,8 +373,8 @@ autoreply define classify_set_interface_ip_table
 {
   u32 client_index;
   u32 context;
-  u8 is_ipv6;
-  u32 sw_if_index;
+  bool is_ipv6;
+  vl_api_interface_index_t sw_if_index;
   u32 table_index;             /* ~0 => off */
 };
 
@@ -362,12 +390,12 @@ autoreply define classify_set_interface_l2_tables
 {
   u32 client_index;
   u32 context;
-  u32 sw_if_index;
+  vl_api_interface_index_t sw_if_index;
   /* 3 x ~0 => off */
   u32 ip4_table_index;
   u32 ip6_table_index;
   u32 other_table_index;
-  u8 is_input;
+  bool is_input;
 };
 
 /** \brief Set/unset input ACL interface
@@ -378,18 +406,18 @@ autoreply define classify_set_interface_l2_tables
     @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.
+    Note: User is recommended 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;
+  vl_api_interface_index_t sw_if_index;
   u32 ip4_table_index;
   u32 ip6_table_index;
   u32 l2_table_index;
-  u8 is_add;
+  bool is_add;
 };
 
 /** \brief Set/unset output ACL interface
@@ -400,18 +428,18 @@ autoreply define input_acl_set_interface
     @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.
+    Note: User is recommended 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;
+  vl_api_interface_index_t sw_if_index;
   u32 ip4_table_index;
   u32 ip6_table_index;
   u32 l2_table_index;
-  u8 is_add;
+  bool is_add;
 };
 
 /*
@@ -419,4 +447,3 @@ autoreply define output_acl_set_interface
  * eval: (c-set-style "gnu")
  * End:
  */