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 /isisd/isis_nb_config.c | |
| 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>
Diffstat (limited to 'isisd/isis_nb_config.c')
| -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;  }  | 
