diff options
Diffstat (limited to 'src/vat/api_format.c')
-rw-r--r-- | src/vat/api_format.c | 74 |
1 files changed, 73 insertions, 1 deletions
diff --git a/src/vat/api_format.c b/src/vat/api_format.c index 8c2fb13ecfe..7e17c9adc6d 100644 --- a/src/vat/api_format.c +++ b/src/vat/api_format.c @@ -51,6 +51,7 @@ #include <vnet/mfib/mfib_types.h> #include <vnet/dhcp/dhcp_proxy.h> #include <vnet/bonding/node.h> +#include <vnet/qos/qos_types.h> #include "vat/json_format.h" #include <inttypes.h> @@ -5662,7 +5663,8 @@ _(dns_enable_disable_reply) \ _(dns_name_server_add_del_reply) \ _(session_rule_add_del_reply) \ _(ip_container_proxy_add_del_reply) \ -_(output_acl_set_interface_reply) +_(output_acl_set_interface_reply) \ +_(qos_record_enable_disable_reply) #define _(n) \ static void vl_api_##n##_t_handler \ @@ -5998,6 +6000,7 @@ _(SESSION_RULE_ADD_DEL_REPLY, session_rule_add_del_reply) \ _(SESSION_RULES_DETAILS, session_rules_details) \ _(IP_CONTAINER_PROXY_ADD_DEL_REPLY, ip_container_proxy_add_del_reply) \ _(OUTPUT_ACL_SET_INTERFACE_REPLY, output_acl_set_interface_reply) \ +_(QOS_RECORD_ENABLE_DISABLE_REPLY, qos_record_enable_disable_reply) #define foreach_standalone_reply_msg \ _(SW_INTERFACE_EVENT, sw_interface_event) \ @@ -11996,6 +11999,25 @@ unformat_l2_match (unformat_input_t * input, va_list * args) *matchp = match; return 1; } + +uword +unformat_qos_source (unformat_input_t * input, va_list * args) +{ + int *qs = va_arg (*args, int *); + + if (unformat (input, "ip")) + *qs = QOS_SOURCE_IP; + else if (unformat (input, "mpls")) + *qs = QOS_SOURCE_MPLS; + else if (unformat (input, "ext")) + *qs = QOS_SOURCE_EXT; + else if (unformat (input, "vlan")) + *qs = QOS_SOURCE_VLAN; + else + return 0; + + return 1; +} #endif uword @@ -22895,6 +22917,55 @@ api_ip_container_proxy_add_del (vat_main_t * vam) } static int +api_qos_record_enable_disable (vat_main_t * vam) +{ + unformat_input_t *i = vam->input; + vl_api_qos_record_enable_disable_t *mp; + u32 sw_if_index, qs = 0xff; + u8 sw_if_index_set = 0; + u8 enable = 1; + int ret; + + while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) + { + if (unformat (i, "%U", api_unformat_sw_if_index, vam, &sw_if_index)) + sw_if_index_set = 1; + else if (unformat (i, "sw_if_index %d", &sw_if_index)) + sw_if_index_set = 1; + else if (unformat (i, "%U", unformat_qos_source, &qs)) + ; + else if (unformat (i, "disable")) + enable = 0; + else + { + clib_warning ("parse error '%U'", format_unformat_error, i); + return -99; + } + } + + if (sw_if_index_set == 0) + { + errmsg ("missing interface name or sw_if_index"); + return -99; + } + if (qs == 0xff) + { + errmsg ("input location must be specified"); + return -99; + } + + M (QOS_RECORD_ENABLE_DISABLE, mp); + + mp->sw_if_index = ntohl (sw_if_index); + mp->input_source = qs; + mp->enable = enable; + + S (mp); + W (ret); + return ret; +} + +static int q_or_quit (vat_main_t * vam) { #if VPP_API_TEST_BUILTIN == 0 @@ -23735,6 +23806,7 @@ _(ip_container_proxy_add_del, "[add|del] <address> <sw_if_index>") \ _(output_acl_set_interface, \ "<intfc> | sw_if_index <nn> [ip4-table <nn>] [ip6-table <nn>]\n" \ " [l2-table <nn>] [del]") \ +_(qos_record_enable_disable, "<record-source> <intfc> | sw_if_index <id> [disable]") /* List of command functions, CLI names map directly to functions */ #define foreach_cli_function \ |