VAT for qos_record_enable_disable API
[vpp.git] / src / vat / api_format.c
index 8c2fb13..7e17c9a 100644 (file)
@@ -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
@@ -22894,6 +22916,55 @@ api_ip_container_proxy_add_del (vat_main_t * vam)
   return ret;
 }
 
+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)
 {
@@ -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                                    \