From f07572c3c748f5ee5a0277ad4210d76001423512 Mon Sep 17 00:00:00 2001 From: Igor Ryzhov Date: Mon, 26 Apr 2021 22:01:43 +0300 Subject: [PATCH] isisd: move ldp-sync checks from cli to nb callbacks Signed-off-by: Igor Ryzhov --- isisd/isis_cli.c | 36 ------------------------------------ isisd/isis_nb_config.c | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 36 deletions(-) diff --git a/isisd/isis_cli.c b/isisd/isis_cli.c index f29d6e3412..3e719df4bb 100644 --- a/isisd/isis_cli.c +++ b/isisd/isis_cli.c @@ -3057,7 +3057,6 @@ DEFPY(isis_mpls_if_ldp_sync, isis_mpls_if_ldp_sync_cmd, NO_STR "IS-IS routing protocol\n" MPLS_STR MPLS_LDP_SYNC_STR) { const struct lyd_node *dnode; - struct interface *ifp; dnode = yang_dnode_get(vty->candidate_config->dnode, "%s/frr-isisd:isis", VTY_CURR_XPATH); @@ -3066,17 +3065,6 @@ DEFPY(isis_mpls_if_ldp_sync, isis_mpls_if_ldp_sync_cmd, return CMD_SUCCESS; } - ifp = nb_running_get_entry(NULL, VTY_CURR_XPATH, false); - if (if_is_loopback(ifp)) { - vty_out(vty, "ldp-sync does not run on loopback interface\n"); - return CMD_SUCCESS; - } - - if (ifp->vrf_id != VRF_DEFAULT) { - vty_out(vty, "ldp-sync only runs on DEFAULT VRF\n"); - return CMD_SUCCESS; - } - nb_cli_enqueue_change(vty, "./frr-isisd:isis/mpls/ldp-sync", NB_OP_MODIFY, no ? "false" : "true"); @@ -3100,7 +3088,6 @@ DEFPY(isis_mpls_if_ldp_sync_holddown, isis_mpls_if_ldp_sync_holddown_cmd, "Time in seconds\n") { const struct lyd_node *dnode; - struct interface *ifp; dnode = yang_dnode_get(vty->candidate_config->dnode, "%s/frr-isisd:isis", VTY_CURR_XPATH); @@ -3109,17 +3096,6 @@ DEFPY(isis_mpls_if_ldp_sync_holddown, isis_mpls_if_ldp_sync_holddown_cmd, return CMD_SUCCESS; } - ifp = nb_running_get_entry(NULL, VTY_CURR_XPATH, false); - if (if_is_loopback(ifp)) { - vty_out(vty, "ldp-sync does not run on loopback interface\n"); - return CMD_SUCCESS; - } - - if (ifp->vrf_id != VRF_DEFAULT) { - vty_out(vty, "ldp-sync only runs on DEFAULT VRF\n"); - return CMD_SUCCESS; - } - nb_cli_enqueue_change(vty, "./frr-isisd:isis/mpls/holddown", NB_OP_MODIFY, holddown_str); @@ -3132,7 +3108,6 @@ DEFPY(no_isis_mpls_if_ldp_sync_holddown, no_isis_mpls_if_ldp_sync_holddown_cmd, NO_MPLS_LDP_SYNC_HOLDDOWN_STR "Time in seconds\n") { const struct lyd_node *dnode; - struct interface *ifp; dnode = yang_dnode_get(vty->candidate_config->dnode, "%s/frr-isisd:isis", VTY_CURR_XPATH); @@ -3141,17 +3116,6 @@ DEFPY(no_isis_mpls_if_ldp_sync_holddown, no_isis_mpls_if_ldp_sync_holddown_cmd, return CMD_SUCCESS; } - ifp = nb_running_get_entry(NULL, VTY_CURR_XPATH, false); - if (if_is_loopback(ifp)) { - vty_out(vty, "ldp-sync does not run on loopback interface\n"); - return CMD_SUCCESS; - } - - if (ifp->vrf_id != VRF_DEFAULT) { - vty_out(vty, "ldp-sync only runs on DEFAULT VRF\n"); - return CMD_SUCCESS; - } - nb_cli_enqueue_change(vty, "./frr-isisd:isis/mpls/holddown", NB_OP_DESTROY, NULL); diff --git a/isisd/isis_nb_config.c b/isisd/isis_nb_config.c index 58a3304629..f9028bdd9f 100644 --- a/isisd/isis_nb_config.c +++ b/isisd/isis_nb_config.c @@ -3171,9 +3171,20 @@ int lib_interface_isis_mpls_ldp_sync_modify(struct nb_cb_modify_args *args) struct isis_circuit *circuit; struct ldp_sync_info *ldp_sync_info; bool ldp_sync_enable; + struct interface *ifp; switch (args->event) { case NB_EV_VALIDATE: + ifp = nb_running_get_entry(args->dnode->parent->parent->parent, + NULL, false); + if (ifp == NULL) + return NB_ERR_VALIDATION; + if (if_is_loopback(ifp)) { + snprintf(args->errmsg, args->errmsg_len, + "LDP-Sync does not run on loopback interface"); + return NB_ERR_VALIDATION; + } + circuit = nb_running_get_entry(args->dnode, NULL, false); if (circuit == NULL || circuit->area == NULL) break; @@ -3215,9 +3226,20 @@ int lib_interface_isis_mpls_holddown_modify(struct nb_cb_modify_args *args) struct isis_circuit *circuit; struct ldp_sync_info *ldp_sync_info; uint16_t holddown; + struct interface *ifp; switch (args->event) { case NB_EV_VALIDATE: + ifp = nb_running_get_entry(args->dnode->parent->parent->parent, + NULL, false); + if (ifp == NULL) + return NB_ERR_VALIDATION; + if (if_is_loopback(ifp)) { + snprintf(args->errmsg, args->errmsg_len, + "LDP-Sync does not run on loopback interface"); + return NB_ERR_VALIDATION; + } + circuit = nb_running_get_entry(args->dnode, NULL, false); if (circuit == NULL || circuit->area == NULL) break; @@ -3248,9 +3270,20 @@ int lib_interface_isis_mpls_holddown_destroy(struct nb_cb_destroy_args *args) { struct isis_circuit *circuit; struct ldp_sync_info *ldp_sync_info; + struct interface *ifp; switch (args->event) { case NB_EV_VALIDATE: + ifp = nb_running_get_entry(args->dnode->parent->parent->parent, + NULL, false); + if (ifp == NULL) + return NB_ERR_VALIDATION; + if (if_is_loopback(ifp)) { + snprintf(args->errmsg, args->errmsg_len, + "LDP-Sync does not run on loopback interface"); + return NB_ERR_VALIDATION; + } + circuit = nb_running_get_entry(args->dnode, NULL, false); if (circuit == NULL || circuit->area == NULL) break; -- 2.39.5