diff options
| author | Louis Scalbert <louis.scalbert@6wind.com> | 2024-09-09 13:09:49 +0200 |
|---|---|---|
| committer | Louis Scalbert <louis.scalbert@6wind.com> | 2024-09-09 13:10:29 +0200 |
| commit | d13d0fe72f49e259db5125bd301dffac688b7b43 (patch) | |
| tree | f94d4e9871ba878d87d060860db49c02c7cbc035 | |
| parent | 1999bdf36ad6b51253f403c9213e7644a34596e6 (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>
| -rw-r--r-- | isisd/isis_nb_config.c | 57 |
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; } |
