diff options
author | Jakub Grajciar <jgrajcia@cisco.com> | 2020-03-02 13:16:53 +0100 |
---|---|---|
committer | Ole Trøan <otroan@employees.org> | 2020-03-12 12:28:47 +0000 |
commit | cd01fb4237b78a1805e1dd4b018bd03eb342580c (patch) | |
tree | ec01ce74afa4a061bd9575f23101a31e589fa65f /src | |
parent | f52420d507f0ff810f5146b7153781e313d7bc07 (diff) |
policer: API cleanup
Use consistent API types.
Type: fix
Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
Change-Id: Ia14f33992353b419b70b55beed63ab8ed6a2e837
Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/vat/api_format.c | 48 | ||||
-rw-r--r-- | src/vnet/CMakeLists.txt | 5 | ||||
-rw-r--r-- | src/vnet/policer/policer.api | 70 | ||||
-rw-r--r-- | src/vnet/policer/policer_api.c | 31 | ||||
-rw-r--r-- | src/vnet/policer/policer_types.api | 62 | ||||
-rw-r--r-- | src/vpp/api/custom_dump.c | 6 |
6 files changed, 142 insertions, 80 deletions
diff --git a/src/vat/api_format.c b/src/vat/api_format.c index a98e2ed873d..a18eb91dae5 100644 --- a/src/vat/api_format.c +++ b/src/vat/api_format.c @@ -4555,18 +4555,18 @@ vl_api_policer_details_t_handler (vl_api_policer_details_t * mp) vat_main_t *vam = &vat_main; u8 *conform_dscp_str, *exceed_dscp_str, *violate_dscp_str; - if (mp->conform_action_type == SSE2_QOS_ACTION_MARK_AND_TRANSMIT) - conform_dscp_str = format (0, "%U", format_dscp, mp->conform_dscp); + if (mp->conform_action.type == SSE2_QOS_ACTION_API_MARK_AND_TRANSMIT) + conform_dscp_str = format (0, "%U", format_dscp, mp->conform_action.dscp); else conform_dscp_str = format (0, ""); - if (mp->exceed_action_type == SSE2_QOS_ACTION_MARK_AND_TRANSMIT) - exceed_dscp_str = format (0, "%U", format_dscp, mp->exceed_dscp); + if (mp->exceed_action.type == SSE2_QOS_ACTION_API_MARK_AND_TRANSMIT) + exceed_dscp_str = format (0, "%U", format_dscp, mp->exceed_action.dscp); else exceed_dscp_str = format (0, ""); - if (mp->violate_action_type == SSE2_QOS_ACTION_MARK_AND_TRANSMIT) - violate_dscp_str = format (0, "%U", format_dscp, mp->violate_dscp); + if (mp->violate_action.type == SSE2_QOS_ACTION_API_MARK_AND_TRANSMIT) + violate_dscp_str = format (0, "%U", format_dscp, mp->violate_action.dscp); else violate_dscp_str = format (0, ""); @@ -4593,11 +4593,11 @@ vl_api_policer_details_t_handler (vl_api_policer_details_t * mp) ntohl (mp->extended_limit), ntohl (mp->extended_bucket), clib_net_to_host_u64 (mp->last_update_time), - format_policer_action_type, mp->conform_action_type, + format_policer_action_type, mp->conform_action.type, conform_dscp_str, - format_policer_action_type, mp->exceed_action_type, + format_policer_action_type, mp->exceed_action.type, exceed_dscp_str, - format_policer_action_type, mp->violate_action_type, + format_policer_action_type, mp->violate_action.type, violate_dscp_str); vec_free (conform_dscp_str); @@ -4618,11 +4618,11 @@ static void vl_api_policer_details_t_handler_json format (0, "%U", format_policer_round_type, mp->round_type); type_str = format (0, "%U", format_policer_type, mp->type); conform_action_str = format (0, "%U", format_policer_action_type, - mp->conform_action_type); + mp->conform_action.type); exceed_action_str = format (0, "%U", format_policer_action_type, - mp->exceed_action_type); + mp->exceed_action.type); violate_action_str = format (0, "%U", format_policer_action_type, - mp->violate_action_type); + mp->violate_action.type); if (VAT_JSON_ARRAY != vam->json_tree.type) { @@ -4658,24 +4658,24 @@ static void vl_api_policer_details_t_handler_json ntohl (mp->last_update_time)); vat_json_object_add_string_copy (node, "conform_action", conform_action_str); - if (mp->conform_action_type == SSE2_QOS_ACTION_MARK_AND_TRANSMIT) + if (mp->conform_action.type == SSE2_QOS_ACTION_API_MARK_AND_TRANSMIT) { - u8 *dscp_str = format (0, "%U", format_dscp, mp->conform_dscp); + u8 *dscp_str = format (0, "%U", format_dscp, mp->conform_action.dscp); vat_json_object_add_string_copy (node, "conform_dscp", dscp_str); vec_free (dscp_str); } vat_json_object_add_string_copy (node, "exceed_action", exceed_action_str); - if (mp->exceed_action_type == SSE2_QOS_ACTION_MARK_AND_TRANSMIT) + if (mp->exceed_action.type == SSE2_QOS_ACTION_API_MARK_AND_TRANSMIT) { - u8 *dscp_str = format (0, "%U", format_dscp, mp->exceed_dscp); + u8 *dscp_str = format (0, "%U", format_dscp, mp->exceed_action.dscp); vat_json_object_add_string_copy (node, "exceed_dscp", dscp_str); vec_free (dscp_str); } vat_json_object_add_string_copy (node, "violate_action", violate_action_str); - if (mp->violate_action_type == SSE2_QOS_ACTION_MARK_AND_TRANSMIT) + if (mp->violate_action.type == SSE2_QOS_ACTION_API_MARK_AND_TRANSMIT) { - u8 *dscp_str = format (0, "%U", format_dscp, mp->violate_dscp); + u8 *dscp_str = format (0, "%U", format_dscp, mp->violate_action.dscp); vat_json_object_add_string_copy (node, "violate_dscp", dscp_str); vec_free (dscp_str); } @@ -17382,12 +17382,12 @@ api_policer_add_del (vat_main_t * vam) mp->rate_type = rate_type; mp->round_type = round_type; mp->type = type; - mp->conform_action_type = conform_action.action_type; - mp->conform_dscp = conform_action.dscp; - mp->exceed_action_type = exceed_action.action_type; - mp->exceed_dscp = exceed_action.dscp; - mp->violate_action_type = violate_action.action_type; - mp->violate_dscp = violate_action.dscp; + mp->conform_action.type = conform_action.action_type; + mp->conform_action.dscp = conform_action.dscp; + mp->exceed_action.type = exceed_action.action_type; + mp->exceed_action.dscp = exceed_action.dscp; + mp->violate_action.type = violate_action.action_type; + mp->violate_action.dscp = violate_action.dscp; mp->color_aware = color_aware; S (mp); 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: + */ diff --git a/src/vpp/api/custom_dump.c b/src/vpp/api/custom_dump.c index a4e04ebeaf2..1cc2aa64c28 100644 --- a/src/vpp/api/custom_dump.c +++ b/src/vpp/api/custom_dump.c @@ -2189,11 +2189,11 @@ static void *vl_api_policer_add_del_t_print } s = format (s, "conform_action %U ", format_policer_action, - mp->conform_action_type, mp->conform_dscp); + mp->conform_action.type, mp->conform_action.dscp); s = format (s, "exceed_action %U ", format_policer_action, - mp->exceed_action_type, mp->exceed_dscp); + mp->exceed_action.type, mp->exceed_action.dscp); s = format (s, "violate_action %U ", format_policer_action, - mp->violate_action_type, mp->violate_dscp); + mp->violate_action.type, mp->violate_action.dscp); if (mp->color_aware) s = format (s, "color-aware "); |