diff options
-rw-r--r-- | src/vat/api_format.c | 74 | ||||
-rw-r--r-- | src/vpp/api/custom_dump.c | 19 |
2 files changed, 90 insertions, 3 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 \ diff --git a/src/vpp/api/custom_dump.c b/src/vpp/api/custom_dump.c index 9989bdc2c35..26e87d67cbc 100644 --- a/src/vpp/api/custom_dump.c +++ b/src/vpp/api/custom_dump.c @@ -38,7 +38,7 @@ #include <vlibapi/api.h> #include <vlibmemory/api.h> #include <vnet/lisp-cp/lisp_types.h> - +#include <vnet/qos/qos_types.h> #include <vpp/stats/stats.h> #include <vpp/oam/oam.h> @@ -3418,6 +3418,20 @@ static void *vl_api_ip_container_proxy_add_del_t_print FINISH; } +static void *vl_api_qos_record_enable_disable_t_print + (vl_api_qos_record_enable_disable_t * mp, void *handle) +{ + u8 *s; + + s = format (0, "SCRIPT: qos_record_enable_disable "); + s = format (s, "sw_if_index %d ", ntohl (mp->sw_if_index)); + s = format (s, "input_source %U ", format_qos_source, mp->input_source); + + if (!mp->enable) + s = format (s, "disable "); + + FINISH; +} #define foreach_custom_print_no_arg_function \ _(lisp_eid_table_vni_dump) \ @@ -3624,7 +3638,8 @@ _(DNS_NAME_SERVER_ADD_DEL, dns_name_server_add_del) \ _(DNS_RESOLVE_NAME, dns_resolve_name) \ _(DNS_RESOLVE_IP, dns_resolve_ip) \ _(SESSION_RULE_ADD_DEL, session_rule_add_del) \ -_(OUTPUT_ACL_SET_INTERFACE, output_acl_set_interface) +_(OUTPUT_ACL_SET_INTERFACE, output_acl_set_interface) \ +_(QOS_RECORD_ENABLE_DISABLE, qos_record_enable_disable) void vl_msg_api_custom_dump_configure (api_main_t * am) { |