summaryrefslogtreecommitdiffstats
path: root/src/vnet
diff options
context:
space:
mode:
Diffstat (limited to 'src/vnet')
-rw-r--r--src/vnet/CMakeLists.txt5
-rw-r--r--src/vnet/policer/policer.api70
-rw-r--r--src/vnet/policer/policer_api.c31
-rw-r--r--src/vnet/policer/policer_types.api62
4 files changed, 115 insertions, 53 deletions
diff --git a/src/vnet/CMakeLists.txt b/src/vnet/CMakeLists.txt
index 5ea5f16ab84..0ae1b0a8328 100644
--- a/src/vnet/CMakeLists.txt
+++ b/src/vnet/CMakeLists.txt
@@ -98,7 +98,10 @@ list(APPEND VNET_HEADERS
policer/xlate.h
)
-list(APPEND VNET_API_FILES policer/policer.api)
+list(APPEND VNET_API_FILES
+ policer/policer.api
+ policer/policer_types.api
+)
##############################################################################
# Cop - junk filter
diff --git a/src/vnet/policer/policer.api b/src/vnet/policer/policer.api
index 8ca0ffbc791..946cc357b80 100644
--- a/src/vnet/policer/policer.api
+++ b/src/vnet/policer/policer.api
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015-2016 Cisco and/or its affiliates.
+ * Copyright (c) 2015-2020 Cisco and/or its affiliates.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
@@ -13,7 +13,9 @@
* limitations under the License.
*/
-option version = "1.0.0";
+option version = "2.0.0";
+
+import "vnet/policer/policer_types.api";
/** \brief Add/del policer
@param client_index - opaque cookie to identify the sender
@@ -28,34 +30,28 @@ option version = "1.0.0";
@param round_type - rounding type
@param type - policer algorithm
@param color_aware - 0=color-blind, 1=color-aware
- @param conform_action_type - conform action type
- @param conform_dscp - DSCP for conform mar-and-transmit action
- @param exceed_action_type - exceed action type
- @param exceed_dscp - DSCP for exceed mar-and-transmit action
- @param violate_action_type - violate action type
- @param violate_dscp - DSCP for violate mar-and-transmit action
+ @param conform_action - conform action
+ @param exceed_action - exceed action type
+ @param violate_action - violate action type
*/
define policer_add_del
{
u32 client_index;
u32 context;
- u8 is_add;
- u8 name[64];
+ bool is_add;
+ string name[64];
u32 cir;
u32 eir;
u64 cb;
u64 eb;
- u8 rate_type;
- u8 round_type;
- u8 type;
- u8 color_aware;
- u8 conform_action_type;
- u8 conform_dscp;
- u8 exceed_action_type;
- u8 exceed_dscp;
- u8 violate_action_type;
- u8 violate_dscp;
+ vl_api_sse2_qos_rate_type_t rate_type;
+ vl_api_sse2_qos_round_type_t round_type;
+ vl_api_sse2_qos_policer_type_t type;
+ bool color_aware;
+ vl_api_sse2_qos_action_t conform_action;
+ vl_api_sse2_qos_action_t exceed_action;
+ vl_api_sse2_qos_action_t violate_action;
};
/** \brief Add/del policer response
@@ -81,8 +77,8 @@ define policer_dump
u32 client_index;
u32 context;
- u8 match_name_valid;
- u8 match_name[64];
+ bool match_name_valid;
+ string match_name[64];
};
/** \brief Policer operational state response.
@@ -95,12 +91,9 @@ define policer_dump
@param rate_type - rate type
@param round_type - rounding type
@param type - policer algorithm
- @param conform_action_type - conform action type
- @param conform_dscp - DSCP for conform mar-and-transmit action
- @param exceed_action_type - exceed action type
- @param exceed_dscp - DSCP for exceed mar-and-transmit action
- @param violate_action_type - violate action type
- @param violate_dscp - DSCP for violate mar-and-transmit action
+ @param conform_action - conform action
+ @param exceed_action - exceed action
+ @param violate_action - violate action
@param single_rate - 1 = single rate policer, 0 = two rate policer
@param color_aware - for hierarchical policing
@param scale - power-of-2 shift amount for lower rates
@@ -116,22 +109,19 @@ define policer_details
{
u32 context;
- u8 name[64];
+ string name[64];
u32 cir;
u32 eir;
u64 cb;
u64 eb;
- u8 rate_type;
- u8 round_type;
- u8 type;
- u8 conform_action_type;
- u8 conform_dscp;
- u8 exceed_action_type;
- u8 exceed_dscp;
- u8 violate_action_type;
- u8 violate_dscp;
- u8 single_rate;
- u8 color_aware;
+ vl_api_sse2_qos_rate_type_t rate_type;
+ vl_api_sse2_qos_round_type_t round_type;
+ vl_api_sse2_qos_policer_type_t type;
+ vl_api_sse2_qos_action_t conform_action;
+ vl_api_sse2_qos_action_t exceed_action;
+ vl_api_sse2_qos_action_t violate_action;
+ bool single_rate;
+ bool color_aware;
u32 scale;
u32 cir_tokens_per_period;
u32 pir_tokens_per_period;
diff --git a/src/vnet/policer/policer_api.c b/src/vnet/policer/policer_api.c
index ae57a9359ea..b543a3c2e0e 100644
--- a/src/vnet/policer/policer_api.c
+++ b/src/vnet/policer/policer_api.c
@@ -68,12 +68,16 @@ vl_api_policer_add_del_t_handler (vl_api_policer_add_del_t * mp)
cfg.rb.kbps.eir_kbps = ntohl (mp->eir);
cfg.rb.kbps.cb_bytes = clib_net_to_host_u64 (mp->cb);
cfg.rb.kbps.eb_bytes = clib_net_to_host_u64 (mp->eb);
- cfg.conform_action.action_type = mp->conform_action_type;
- cfg.conform_action.dscp = mp->conform_dscp;
- cfg.exceed_action.action_type = mp->exceed_action_type;
- cfg.exceed_action.dscp = mp->exceed_dscp;
- cfg.violate_action.action_type = mp->violate_action_type;
- cfg.violate_action.dscp = mp->violate_dscp;
+ cfg.conform_action.action_type =
+ (sse2_qos_action_type_en) mp->conform_action.type;
+ cfg.conform_action.dscp = mp->conform_action.dscp;
+ cfg.exceed_action.action_type =
+ (sse2_qos_action_type_en) mp->exceed_action.type;
+ cfg.exceed_action.dscp = mp->exceed_action.dscp;
+ cfg.violate_action.action_type =
+ (sse2_qos_action_type_en) mp->violate_action.type;
+ cfg.violate_action.dscp = mp->violate_action.dscp;
+
cfg.color_aware = mp->color_aware;
error = policer_add_del (vm, name, &cfg, &policer_index, mp->is_add);
@@ -111,12 +115,15 @@ send_policer_details (u8 * name,
mp->rate_type = config->rate_type;
mp->round_type = config->rnd_type;
mp->type = config->rfc;
- mp->conform_action_type = config->conform_action.action_type;
- mp->conform_dscp = config->conform_action.dscp;
- mp->exceed_action_type = config->exceed_action.action_type;
- mp->exceed_dscp = config->exceed_action.dscp;
- mp->violate_action_type = config->violate_action.action_type;
- mp->violate_dscp = config->violate_action.dscp;
+ mp->conform_action.type =
+ (vl_api_sse2_qos_action_type_t) config->conform_action.action_type;
+ mp->conform_action.dscp = config->conform_action.dscp;
+ mp->exceed_action.type =
+ (vl_api_sse2_qos_action_type_t) config->exceed_action.action_type;
+ mp->exceed_action.dscp = config->exceed_action.dscp;
+ mp->violate_action.type =
+ (vl_api_sse2_qos_action_type_t) config->violate_action.action_type;
+ mp->violate_action.dscp = config->violate_action.dscp;
mp->single_rate = templ->single_rate ? 1 : 0;
mp->color_aware = templ->color_aware ? 1 : 0;
mp->scale = htonl (templ->scale);
diff --git a/src/vnet/policer/policer_types.api b/src/vnet/policer/policer_types.api
new file mode 100644
index 00000000000..903bb603d78
--- /dev/null
+++ b/src/vnet/policer/policer_types.api
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2020 Cisco and/or its affiliates.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+enum sse2_qos_rate_type : u8
+{
+ SSE2_QOS_RATE_API_KBPS = 0,
+ SSE2_QOS_RATE_API_PPS,
+ SSE2_QOS_RATE_API_INVALID,
+};
+
+enum sse2_qos_round_type : u8
+{
+ SSE2_QOS_ROUND_API_TO_CLOSEST = 0,
+ SSE2_QOS_ROUND_API_TO_UP,
+ SSE2_QOS_ROUND_API_TO_DOWN,
+ SSE2_QOS_ROUND_API_INVALID,
+};
+
+enum sse2_qos_policer_type : u8
+{
+ SSE2_QOS_POLICER_TYPE_API_1R2C = 0,
+ SSE2_QOS_POLICER_TYPE_API_1R3C_RFC_2697 = 1,
+ SSE2_QOS_POLICER_TYPE_API_2R3C_RFC_2698 = 2,
+ SSE2_QOS_POLICER_TYPE_API_2R3C_RFC_4115 = 3,
+ SSE2_QOS_POLICER_TYPE_API_2R3C_RFC_MEF5CF1 = 4,
+ SSE2_QOS_POLICER_TYPE_API_MAX,
+};
+
+enum sse2_qos_action_type : u8
+{
+ SSE2_QOS_ACTION_API_DROP = 0,
+ SSE2_QOS_ACTION_API_TRANSMIT,
+ SSE2_QOS_ACTION_API_MARK_AND_TRANSMIT,
+};
+
+/** \brief SSE2 QOS action
+ @param conform_action_type - conform action type
+ @param conform_dscp - DSCP for conform mark-and-transmit action
+*/
+typedef sse2_qos_action
+{
+ vl_api_sse2_qos_action_type_t type;
+ u8 dscp;
+};
+
+/*
+ * Local Variables:
+ * eval: (c-set-style "gnu")
+ * End:
+ */