diff options
| author | Igor Ryzhov <iryzhov@nfware.com> | 2024-01-19 14:34:27 +0200 |
|---|---|---|
| committer | Igor Ryzhov <iryzhov@nfware.com> | 2024-01-28 23:28:39 +0200 |
| commit | 59e3ce08fa489274448558610232510782070c29 (patch) | |
| tree | 49cecf15de65f3c8f0f15ad3d7a152c3c6fc980f /zebra/interface.c | |
| parent | b688eb7e9e565abd37b9cd95f2035d25612e2a3f (diff) | |
zebra: convert interface link-params metric command to NB
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
Diffstat (limited to 'zebra/interface.c')
| -rw-r--r-- | zebra/interface.c | 49 |
1 files changed, 14 insertions, 35 deletions
diff --git a/zebra/interface.c b/zebra/interface.c index ec38cc8e11..7e1bc3e4b2 100644 --- a/zebra/interface.c +++ b/zebra/interface.c @@ -3892,8 +3892,8 @@ struct cmd_node link_params_node = { .prompt = "%s(config-link-params)# ", }; -static void link_param_cmd_set_uint32(struct interface *ifp, uint32_t *field, - uint32_t type, uint32_t value) +void link_param_cmd_set_uint32(struct interface *ifp, uint32_t *field, + uint32_t type, uint32_t value) { /* Update field as needed */ if (IS_PARAM_UNSET(ifp->link_params, type) || *field != value) { @@ -3906,8 +3906,9 @@ static void link_param_cmd_set_uint32(struct interface *ifp, uint32_t *field, zebra_interface_parameters_update(ifp); } } -static void link_param_cmd_set_float(struct interface *ifp, float *field, - uint32_t type, float value) + +void link_param_cmd_set_float(struct interface *ifp, float *field, + uint32_t type, float value) { /* Update field as needed */ @@ -3922,7 +3923,7 @@ static void link_param_cmd_set_float(struct interface *ifp, float *field, } } -static void link_param_cmd_unset(struct interface *ifp, uint32_t type) +void link_param_cmd_unset(struct interface *ifp, uint32_t type) { if (ifp->link_params == NULL) return; @@ -4005,40 +4006,19 @@ DEFUN_NOSH (no_link_params_enable, } /* STANDARD TE metrics */ -DEFUN (link_params_metric, +DEFPY_YANG (link_params_metric, link_params_metric_cmd, - "metric (0-4294967295)", + "[no] metric ![(0-4294967295)]$metric", + NO_STR "Link metric for MPLS-TE purpose\n" "Metric value in decimal\n") { - int idx_number = 1; - VTY_DECLVAR_CONTEXT(interface, ifp); - struct if_link_params *iflp = if_link_params_get(ifp); - uint32_t metric; - - metric = strtoul(argv[idx_number]->arg, NULL, 10); - - if (!iflp) - iflp = if_link_params_enable(ifp); - - /* Update TE metric if needed */ - link_param_cmd_set_uint32(ifp, &iflp->te_metric, LP_TE_METRIC, metric); - - return CMD_SUCCESS; -} - -DEFUN (no_link_params_metric, - no_link_params_metric_cmd, - "no metric", - NO_STR - "Disable Link Metric on this interface\n") -{ - VTY_DECLVAR_CONTEXT(interface, ifp); - - /* Unset TE Metric */ - link_param_cmd_unset(ifp, LP_TE_METRIC); + if (!no) + nb_cli_enqueue_change(vty, "./metric", NB_OP_MODIFY, metric_str); + else + nb_cli_enqueue_change(vty, "./metric", NB_OP_DESTROY, NULL); - return CMD_SUCCESS; + return nb_cli_apply_changes(vty, NULL); } DEFUN (link_params_maxbw, @@ -5173,7 +5153,6 @@ void zebra_if_init(void) install_element(LINK_PARAMS_NODE, &link_params_enable_cmd); install_element(LINK_PARAMS_NODE, &no_link_params_enable_cmd); install_element(LINK_PARAMS_NODE, &link_params_metric_cmd); - install_element(LINK_PARAMS_NODE, &no_link_params_metric_cmd); install_element(LINK_PARAMS_NODE, &link_params_maxbw_cmd); install_element(LINK_PARAMS_NODE, &link_params_max_rsv_bw_cmd); install_element(LINK_PARAMS_NODE, &link_params_unrsv_bw_cmd); |
