From f62e38cc364df4f41e6eb2f128366b90a3aa714a Mon Sep 17 00:00:00 2001 From: Igor Ryzhov Date: Fri, 19 Jan 2024 02:56:45 +0200 Subject: zebra: fix link-params admin-grp config output - it was not printed at all because of the incorrect `yang_dnode_exist` check - the intended output was "admin-group" instead of "admin-grp" used in the actual CLI command Signed-off-by: Igor Ryzhov --- zebra/interface.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'zebra/interface.c') diff --git a/zebra/interface.c b/zebra/interface.c index f38e150d73..cf25fe0139 100644 --- a/zebra/interface.c +++ b/zebra/interface.c @@ -4801,11 +4801,8 @@ static int ag_iter_cb(const struct lyd_node *dnode, void *arg) void cli_show_legacy_admin_group(struct vty *vty, const struct lyd_node *dnode, bool show_defaults) { - if (!yang_dnode_exists(dnode, "legacy-admin-group")) - return; - - vty_out(vty, " admin-group 0x%x\n", - yang_dnode_get_uint32(dnode, "legacy-admin-group")); + vty_out(vty, " admin-grp 0x%x\n", + yang_dnode_get_uint32(dnode, NULL)); } void cli_show_affinity_mode(struct vty *vty, const struct lyd_node *dnode, -- cgit v1.2.3 From 733462a991ffa70a4b4bf04282833956a8925b43 Mon Sep 17 00:00:00 2001 From: Igor Ryzhov Date: Fri, 19 Jan 2024 03:01:40 +0200 Subject: zebra: remove unnecessary checks from CLI First, any data tree validation in CLI handler is not correct, because this code won't be called when the change is done through any other frontend. Second, these checks are not necessary at all, because NB layer handles the change between admin-grp/affinity automatically. Signed-off-by: Igor Ryzhov --- zebra/interface.c | 26 -------------------------- 1 file changed, 26 deletions(-) (limited to 'zebra/interface.c') diff --git a/zebra/interface.c b/zebra/interface.c index cf25fe0139..cbc0eb6908 100644 --- a/zebra/interface.c +++ b/zebra/interface.c @@ -4256,23 +4256,10 @@ DEFPY_YANG(link_params_admin_grp, link_params_admin_grp_cmd, "Administrative group membership\n" "32-bit Hexadecimal value (e.g. 0xa1)\n") { - char xpath[XPATH_MAXLEN]; int idx_bitpattern = 1; unsigned long value; char value_str[11]; - VTY_DECLVAR_CONTEXT(interface, ifp); - - snprintf( - xpath, sizeof(xpath), - "/frr-interface:lib/interface[name='%s']/frr-zebra:zebra/link-params/affinities", - ifp->name); - if (yang_dnode_exists(running_config->dnode, xpath)) { - vty_out(vty, - "cannot use the admin-grp command when affinity is set\n"); - return CMD_WARNING_CONFIG_FAILED; - } - if (sscanf(argv[idx_bitpattern]->arg, "0x%lx", &value) != 1) { vty_out(vty, "link_params_admin_grp: fscanf: %s\n", safe_strerror(errno)); @@ -4738,19 +4725,6 @@ DEFPY_YANG(link_params_affinity, link_params_affinity_cmd, "Interface affinities\n" "Affinity names\n") { - VTY_DECLVAR_CONTEXT(interface, ifp); - char xpath[XPATH_MAXLEN]; - - snprintf( - xpath, sizeof(xpath), - "/frr-interface:lib/interface[name='%s']/frr-zebra:zebra/link-params/legacy-admin-group", - ifp->name); - if (yang_dnode_exists(running_config->dnode, xpath)) { - vty_out(vty, - "cannot use the affinity command when admin-grp is set\n"); - return CMD_WARNING_CONFIG_FAILED; - } - return ag_change(vty, argc, argv, "./frr-zebra:zebra/link-params/affinities/affinity", no, no ? 2 : 1); -- cgit v1.2.3 From 01be34fa3429e97fdcaf8299b74dc18ddb1c9629 Mon Sep 17 00:00:00 2001 From: Igor Ryzhov Date: Fri, 19 Jan 2024 03:21:53 +0200 Subject: zebra: fix default value for affinity-mode - initialize the necessary bit when creating if_link_params - fix CLI description to mark extended as the default mode - correctly set mode to extended when using the "no" form of the command - handle the "show_defaults" parameter correctly in cli_show callback Signed-off-by: Igor Ryzhov --- lib/if.c | 2 +- zebra/interface.c | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) (limited to 'zebra/interface.c') diff --git a/lib/if.c b/lib/if.c index 1328e21874..1a8195de67 100644 --- a/lib/if.c +++ b/lib/if.c @@ -1135,7 +1135,7 @@ struct if_link_params *if_link_params_enable(struct interface *ifp) iflp->unrsv_bw[i] = iflp->default_bw; /* Update Link parameters status */ - iflp->lp_status = LP_MAX_BW | LP_MAX_RSV_BW | LP_UNRSV_BW; + iflp->lp_status = LP_MAX_BW | LP_MAX_RSV_BW | LP_UNRSV_BW | LP_EXTEND_ADM_GRP; /* Set TE metric equal to standard metric only if it is set */ if (ifp->metric != 0) { diff --git a/zebra/interface.c b/zebra/interface.c index cbc0eb6908..5a246db4f2 100644 --- a/zebra/interface.c +++ b/zebra/interface.c @@ -4738,8 +4738,8 @@ DEFPY_YANG(link_params_affinity, link_params_affinity_cmd, DEFPY_YANG(link_params_affinity_mode, link_params_affinity_mode_cmd, "affinity-mode $affmode", "Interface affinity mode\n" - "Standard Admin-Group only RFC3630,5305,5329 (default)\n" - "Extended Admin-Group only RFC7308\n" + "Standard Admin-Group only RFC3630,5305,5329\n" + "Extended Admin-Group only RFC7308 (default)\n" "Standard and extended Admin-Group format\n") { const char *xpath = "./frr-zebra:zebra/link-params/affinity-mode"; @@ -4753,13 +4753,13 @@ DEFPY_YANG(no_link_params_affinity_mode, no_link_params_affinity_mode_cmd, "no affinity-mode []", NO_STR "Interface affinity mode\n" - "Standard Admin-Group only RFC3630,5305,5329 (default)\n" - "Extended Admin-Group only RFC7308\n" + "Standard Admin-Group only RFC3630,5305,5329\n" + "Extended Admin-Group only RFC7308 (default)\n" "Standard and extended Admin-Group format\n") { const char *xpath = "./frr-zebra:zebra/link-params/affinity-mode"; - nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, "standard"); + nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, "extended"); return nb_cli_apply_changes(vty, NULL); } @@ -4788,6 +4788,8 @@ void cli_show_affinity_mode(struct vty *vty, const struct lyd_node *dnode, vty_out(vty, " affinity-mode standard\n"); else if (affinity_mode == AFFINITY_MODE_BOTH) vty_out(vty, " affinity-mode both\n"); + else if (affinity_mode == AFFINITY_MODE_EXTENDED && show_defaults) + vty_out(vty, " affinity-mode extended\n"); } void cli_show_affinity(struct vty *vty, const struct lyd_node *dnode, -- cgit v1.2.3