* limitations under the License.
*/
+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
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
{
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;
- u8 mask[0];
+ 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
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
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 routing 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,
+ needs to include bytes in front
+ with length of skip_n_vectors of target table times sizeof (u32x4)
+ (values of those bytes will be ignored)
*/
-define classify_add_del_session
+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;
- u8 match[0];
-};
-
-/** \brief Classify add / del session response
- @param context - sender context, to match reply w/ request
- @param retval - return code for the add/del session request
-*/
-define classify_add_del_session_reply
-{
- u32 context;
- i32 retval;
+ 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];
};
/** \brief Set/unset policer classify 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 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)
*/
-define policer_classify_set_interface
+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;
};
-/** \brief Set/unset policer classify interface response
- @param context - sender context, to match reply w/ request
- @param retval - return value for request
-*/
-define policer_classify_set_interface_reply
+enum policer_classify_table : u8
{
- u32 context;
- i32 retval;
+ 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
define policer_classify_details
{
u32 context;
- u32 sw_if_index;
+ vl_api_interface_index_t sw_if_index;
u32 table_index;
};
{
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
{
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;
@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)
*/
-define flow_classify_set_interface {
+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;
};
-/** \brief Set/unset flow classify interface response
- @param context - sender context, to match reply w/ request
- @param retval - return value for request
-*/
-define flow_classify_set_interface_reply {
- u32 context;
- i32 retval;
+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.
*/
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
+ @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;
+ bool is_ipv6;
+ vl_api_interface_index_t 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;
+ vl_api_interface_index_t sw_if_index;
+ /* 3 x ~0 => off */
+ u32 ip4_table_index;
+ u32 ip6_table_index;
+ u32 other_table_index;
+ bool 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 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;
+ vl_api_interface_index_t sw_if_index;
+ u32 ip4_table_index;
+ u32 ip6_table_index;
+ u32 l2_table_index;
+ bool 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 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;
+ vl_api_interface_index_t sw_if_index;
+ u32 ip4_table_index;
+ u32 ip6_table_index;
+ u32 l2_table_index;
+ bool is_add;
+};
+
/*
* Local Variables:
* eval: (c-set-style "gnu")
* End:
*/
-
\ No newline at end of file