diff options
author | Mauro Sardara <msardara@cisco.com> | 2020-03-24 17:34:14 +0000 |
---|---|---|
committer | Mauro Sardara <msardara@cisco.com> | 2020-09-14 17:31:15 +0000 |
commit | 88509fe353767cbde707c3e3b1f29392957819f3 (patch) | |
tree | cccd51bac7966cd3138c525e8075d90341184a66 /hicn-plugin/src/strategies/strategy_mw_cli.c | |
parent | d875ae92a7fa1eaab3bc2616aeeedfc64a81fea4 (diff) |
[HICN-574] Host stack plugin for VPP.
Signed-off-by: Mauro Sardara <msardara@cisco.com>
Change-Id: I8d8fdffef31a7013265d6529c5f52f3d5ec70d18
Signed-off-by: Mauro Sardara <msardara@cisco.com>
Signed-off-by: Mauro <you@example.com>
Signed-off-by: Mauro Sardara <msardara@cisco.com>
Diffstat (limited to 'hicn-plugin/src/strategies/strategy_mw_cli.c')
-rw-r--r-- | hicn-plugin/src/strategies/strategy_mw_cli.c | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/hicn-plugin/src/strategies/strategy_mw_cli.c b/hicn-plugin/src/strategies/strategy_mw_cli.c deleted file mode 100644 index 636d7effa..000000000 --- a/hicn-plugin/src/strategies/strategy_mw_cli.c +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (c) 2017-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. - */ - -#include <vnet/vnet.h> -#include <vnet/dpo/dpo.h> -#include <vlib/vlib.h> -#include <vnet/fib/fib_entry.h> -#include <vnet/fib/fib_table.h> - -#include "../strategy_dpo_manager.h" -#include "../faces/face.h" -#include "../error.h" -#include "../route.h" -#include "dpo_mw.h" - -static clib_error_t * -hicn_mw_strategy_cli_set_weight_command_fn (vlib_main_t * vm, - unformat_input_t * main_input, - vlib_cli_command_t * cmd) -{ - clib_error_t *cl_err = 0; - int ret = HICN_ERROR_NONE; - fib_prefix_t prefix; - hicn_face_id_t faceid = HICN_FACE_NULL; - u32 fib_index; - u32 weight = HICN_PARAM_FIB_ENTRY_NHOP_WGHT_DFLT; - hicn_dpo_ctx_t *hicn_dpo_ctx; - const dpo_id_t *hicn_dpo_id; - - /* Get a line of input. */ - unformat_input_t _line_input, *line_input = &_line_input; - if (unformat_user (main_input, unformat_line_input, line_input)) - { - while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT) - { - if (unformat (line_input, "prefix %U/%u", unformat_ip46_address, - &prefix.fp_addr, IP46_TYPE_ANY, &prefix.fp_len)) - ; - else if (unformat (line_input, "face %u", &faceid)) - ; - else if (unformat (line_input, "weight %u", &weight)) - ; - else - { - return clib_error_return (0, "%s", - get_error_string - (HICN_ERROR_CLI_INVAL)); - } - - } - } - - if (((weight < 0) || (weight > HICN_PARAM_FIB_ENTRY_NHOP_WGHT_MAX))) - { - cl_err = clib_error_return (0, - "Next-hop weight must be between 0 and %d", - (int) HICN_PARAM_FIB_ENTRY_NHOP_WGHT_MAX); - goto done; - } - - if (((ip46_address_is_zero (&prefix.fp_addr)) || faceid == HICN_FACE_NULL)) - { - cl_err = - clib_error_return (0, "Please specify prefix and a valid faceid..."); - goto done; - } - - prefix.fp_proto = - ip46_address_is_ip4 (&prefix. - fp_addr) ? FIB_PROTOCOL_IP4 : FIB_PROTOCOL_IP6; - ret = hicn_route_get_dpo (&prefix, &hicn_dpo_id, &fib_index); - - if (ret == HICN_ERROR_NONE) - { - hicn_dpo_ctx = hicn_strategy_dpo_ctx_get (hicn_dpo_id->dpoi_index); - - if (hicn_dpo_ctx == NULL - || hicn_dpo_id->dpoi_type != hicn_dpo_strategy_mw_get_type ()) - { - cl_err = clib_error_return (0, get_error_string (ret)); - goto done; - } - - hicn_strategy_mw_ctx_t *mw_dpo = - (hicn_strategy_mw_ctx_t *) hicn_dpo_ctx; - int idx = ~0; - for (int i = 0; i < hicn_dpo_ctx->entry_count; i++) - if (hicn_dpo_ctx->next_hops[i] == faceid) - idx = i; - - if (idx == ~0) - { - cl_err = - clib_error_return (0, - get_error_string - (HICN_ERROR_STRATEGY_NH_NOT_FOUND)); - goto done; - } - - mw_dpo->weight[idx] = weight; - } - else - { - cl_err = clib_error_return (0, get_error_string (ret)); - - } - -done: - - return (cl_err); - -} - -/* cli declaration for 'strategy mw' */ -/* *INDENT-OFF* */ -VLIB_CLI_COMMAND(hicn_mw_strategy_cli_set_weight_command, static)= -{ - .path = "hicn strategy mw set", - .short_help = "hicn strategy mw set prefix <prefix> face <face_id> weight <weight>", - .function = hicn_mw_strategy_cli_set_weight_command_fn, -}; -/* *INDENT-ON* */ - -/* - * fd.io coding-style-patch-verification: ON - * - * Local Variables: - * eval: (c-set-style "gnu") - * End: - */ |