summaryrefslogtreecommitdiff
path: root/isisd/isis_nb_config.c
diff options
context:
space:
mode:
authorLouis Scalbert <louis.scalbert@6wind.com>2024-09-09 13:09:49 +0200
committerLouis Scalbert <louis.scalbert@6wind.com>2024-09-09 13:10:29 +0200
commitd13d0fe72f49e259db5125bd301dffac688b7b43 (patch)
treef94d4e9871ba878d87d060860db49c02c7cbc035 /isisd/isis_nb_config.c
parent1999bdf36ad6b51253f403c9213e7644a34596e6 (diff)
isisd: avoid nb_running_get_entry during validation
Avoid calling nb_running_get_entry() during northbound validation. Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
Diffstat (limited to 'isisd/isis_nb_config.c')
-rw-r--r--isisd/isis_nb_config.c57
1 files changed, 23 insertions, 34 deletions
diff --git a/isisd/isis_nb_config.c b/isisd/isis_nb_config.c
index fcab014aac..36aee11f0b 100644
--- a/isisd/isis_nb_config.c
+++ b/isisd/isis_nb_config.c
@@ -2890,29 +2890,22 @@ int isis_instance_flex_algo_destroy(struct nb_cb_destroy_args *args)
struct isis_area *area;
uint32_t algorithm;
+ if (args->event != NB_EV_APPLY)
+ return NB_OK;
+
algorithm = yang_dnode_get_uint32(args->dnode, "flex-algo");
area = nb_running_get_entry(args->dnode, NULL, true);
- switch (args->event) {
- case NB_EV_APPLY:
- for (ALL_LIST_ELEMENTS(area->flex_algos->flex_algos, node,
- nnode, fa)) {
- if (fa->algorithm == algorithm)
- flex_algo_free(area->flex_algos, fa);
- }
- if (list_isempty(area->flex_algos->flex_algos)) {
- for (ALL_LIST_ELEMENTS_RO(area->circuit_list, node,
- circuit))
- isis_link_params_update_asla(circuit,
- circuit->interface);
- }
- lsp_regenerate_schedule(area, area->is_type, 0);
- break;
- case NB_EV_VALIDATE:
- case NB_EV_PREPARE:
- case NB_EV_ABORT:
- break;
+ for (ALL_LIST_ELEMENTS(area->flex_algos->flex_algos, node, nnode, fa)) {
+ if (fa->algorithm == algorithm)
+ flex_algo_free(area->flex_algos, fa);
+ }
+ if (list_isempty(area->flex_algos->flex_algos)) {
+ for (ALL_LIST_ELEMENTS_RO(area->circuit_list, node, circuit))
+ isis_link_params_update_asla(circuit,
+ circuit->interface);
}
+ lsp_regenerate_schedule(area, area->is_type, 0);
return NB_OK;
}
@@ -2960,26 +2953,22 @@ int isis_instance_flex_algo_advertise_definition_destroy(
struct flex_algo *fa;
uint32_t algorithm;
+
+ if (args->event != NB_EV_APPLY)
+ return NB_OK;
+
area = nb_running_get_entry(args->dnode, NULL, true);
algorithm = yang_dnode_get_uint32(args->dnode, "../flex-algo");
- switch (args->event) {
- case NB_EV_APPLY:
- fa = flex_algo_lookup(area->flex_algos, algorithm);
- if (!fa) {
- snprintf(args->errmsg, args->errmsg_len,
- "flex-algo object not found");
- return NB_ERR_RESOURCE;
- }
- fa->advertise_definition = false;
- lsp_regenerate_schedule(area, area->is_type, 0);
- break;
- case NB_EV_VALIDATE:
- case NB_EV_PREPARE:
- case NB_EV_ABORT:
- break;
+ fa = flex_algo_lookup(area->flex_algos, algorithm);
+ if (!fa) {
+ snprintf(args->errmsg, args->errmsg_len,
+ "flex-algo object not found");
+ return NB_ERR_RESOURCE;
}
+ fa->advertise_definition = false;
+ lsp_regenerate_schedule(area, area->is_type, 0);
return NB_OK;
}