mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-06-13 12:16:31 +00:00
isisd: fix flex-algo northbound configuration
ISIS flex-algo cannot be configured in the same northbound transaction.
> # cat config3
> router isis 1
> flex-algo 129
> priority 128
>
> # vtysh -f config3
> % Configuration failed.
>
> Error type: validation
> The following commands were dynamically grouped into the same transaction and rejected:
> - router isis 1
> - flex-algo 129
> - priority 128
> [1523430|isisd] done
Do not check data presence in running datastore in validation state.
Fixes: 893882ee20
("isisd: add isis flex-algo configuration backend")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
This commit is contained in:
parent
d13d0fe72f
commit
1e5c158af9
@ -3156,19 +3156,16 @@ int isis_instance_flex_algo_affinity_exclude_any_destroy(
|
||||
int isis_instance_flex_algo_prefix_metric_create(struct nb_cb_create_args *args)
|
||||
{
|
||||
struct isis_area *area;
|
||||
const char *area_tag;
|
||||
struct flex_algo *fa;
|
||||
uint32_t algorithm;
|
||||
|
||||
area_tag = yang_dnode_get_string(args->dnode, "../../../area-tag");
|
||||
area = isis_area_lookup(area_tag, VRF_DEFAULT);
|
||||
if (!area)
|
||||
return NB_ERR_RESOURCE;
|
||||
|
||||
algorithm = yang_dnode_get_uint32(args->dnode, "../flex-algo");
|
||||
|
||||
switch (args->event) {
|
||||
case NB_EV_APPLY:
|
||||
area = nb_running_get_entry(args->dnode, NULL, true);
|
||||
if (!area)
|
||||
return NB_ERR_RESOURCE;
|
||||
fa = flex_algo_lookup(area->flex_algos, algorithm);
|
||||
if (!fa) {
|
||||
snprintf(args->errmsg, args->errmsg_len,
|
||||
@ -3191,19 +3188,17 @@ int isis_instance_flex_algo_prefix_metric_destroy(
|
||||
struct nb_cb_destroy_args *args)
|
||||
{
|
||||
struct isis_area *area;
|
||||
const char *area_tag;
|
||||
struct flex_algo *fa;
|
||||
uint32_t algorithm;
|
||||
|
||||
area_tag = yang_dnode_get_string(args->dnode, "../../../area-tag");
|
||||
area = isis_area_lookup(area_tag, VRF_DEFAULT);
|
||||
if (!area)
|
||||
return NB_ERR_RESOURCE;
|
||||
|
||||
algorithm = yang_dnode_get_uint32(args->dnode, "../flex-algo");
|
||||
|
||||
switch (args->event) {
|
||||
case NB_EV_APPLY:
|
||||
area = nb_running_get_entry(args->dnode, NULL, true);
|
||||
if (!area)
|
||||
return NB_ERR_RESOURCE;
|
||||
|
||||
fa = flex_algo_lookup(area->flex_algos, algorithm);
|
||||
if (!fa) {
|
||||
snprintf(args->errmsg, args->errmsg_len,
|
||||
@ -3226,19 +3221,17 @@ static int isis_instance_flex_algo_dplane_set(struct nb_cb_create_args *args,
|
||||
int type)
|
||||
{
|
||||
struct isis_area *area;
|
||||
const char *area_tag;
|
||||
struct flex_algo *fa;
|
||||
uint32_t algorithm;
|
||||
|
||||
area_tag = yang_dnode_get_string(args->dnode, "../../../area-tag");
|
||||
area = isis_area_lookup(area_tag, VRF_DEFAULT);
|
||||
if (!area)
|
||||
return NB_ERR_RESOURCE;
|
||||
|
||||
algorithm = yang_dnode_get_uint32(args->dnode, "../flex-algo");
|
||||
|
||||
switch (args->event) {
|
||||
case NB_EV_APPLY:
|
||||
area = nb_running_get_entry(args->dnode, NULL, true);
|
||||
if (!area)
|
||||
return NB_ERR_RESOURCE;
|
||||
|
||||
fa = flex_algo_lookup(area->flex_algos, algorithm);
|
||||
if (!fa) {
|
||||
snprintf(args->errmsg, args->errmsg_len,
|
||||
@ -3268,19 +3261,17 @@ static int isis_instance_flex_algo_dplane_unset(struct nb_cb_destroy_args *args,
|
||||
int type)
|
||||
{
|
||||
struct isis_area *area;
|
||||
const char *area_tag;
|
||||
struct flex_algo *fa;
|
||||
uint32_t algorithm;
|
||||
|
||||
area_tag = yang_dnode_get_string(args->dnode, "../../../area-tag");
|
||||
area = isis_area_lookup(area_tag, VRF_DEFAULT);
|
||||
if (!area)
|
||||
return NB_ERR_RESOURCE;
|
||||
|
||||
algorithm = yang_dnode_get_uint32(args->dnode, "../flex-algo");
|
||||
|
||||
switch (args->event) {
|
||||
case NB_EV_APPLY:
|
||||
area = nb_running_get_entry(args->dnode, NULL, true);
|
||||
if (!area)
|
||||
return NB_ERR_RESOURCE;
|
||||
|
||||
fa = flex_algo_lookup(area->flex_algos, algorithm);
|
||||
if (!fa) {
|
||||
snprintf(args->errmsg, args->errmsg_len,
|
||||
@ -3350,21 +3341,19 @@ int isis_instance_flex_algo_dplane_ip_destroy(struct nb_cb_destroy_args *args)
|
||||
int isis_instance_flex_algo_metric_type_modify(struct nb_cb_modify_args *args)
|
||||
{
|
||||
struct isis_area *area;
|
||||
const char *area_tag;
|
||||
struct flex_algo *fa;
|
||||
uint32_t algorithm;
|
||||
enum flex_algo_metric_type metric_type;
|
||||
|
||||
area_tag = yang_dnode_get_string(args->dnode, "../../../area-tag");
|
||||
area = isis_area_lookup(area_tag, VRF_DEFAULT);
|
||||
if (!area)
|
||||
return NB_ERR_RESOURCE;
|
||||
|
||||
algorithm = yang_dnode_get_uint32(args->dnode, "../flex-algo");
|
||||
metric_type = yang_dnode_get_enum(args->dnode, NULL);
|
||||
|
||||
switch (args->event) {
|
||||
case NB_EV_APPLY:
|
||||
area = nb_running_get_entry(args->dnode, NULL, true);
|
||||
if (!area)
|
||||
return NB_ERR_RESOURCE;
|
||||
|
||||
fa = flex_algo_lookup(area->flex_algos, algorithm);
|
||||
if (!fa) {
|
||||
snprintf(args->errmsg, args->errmsg_len,
|
||||
@ -3390,21 +3379,19 @@ int isis_instance_flex_algo_metric_type_modify(struct nb_cb_modify_args *args)
|
||||
int isis_instance_flex_algo_priority_modify(struct nb_cb_modify_args *args)
|
||||
{
|
||||
struct isis_area *area;
|
||||
const char *area_tag;
|
||||
struct flex_algo *fa;
|
||||
uint32_t algorithm;
|
||||
uint32_t priority;
|
||||
|
||||
area_tag = yang_dnode_get_string(args->dnode, "../../../area-tag");
|
||||
area = isis_area_lookup(area_tag, VRF_DEFAULT);
|
||||
if (!area)
|
||||
return NB_ERR_RESOURCE;
|
||||
|
||||
algorithm = yang_dnode_get_uint32(args->dnode, "../flex-algo");
|
||||
priority = yang_dnode_get_uint32(args->dnode, NULL);
|
||||
|
||||
switch (args->event) {
|
||||
case NB_EV_APPLY:
|
||||
area = nb_running_get_entry(args->dnode, NULL, true);
|
||||
if (!area)
|
||||
return NB_ERR_RESOURCE;
|
||||
|
||||
fa = flex_algo_lookup(area->flex_algos, algorithm);
|
||||
if (!fa) {
|
||||
snprintf(args->errmsg, args->errmsg_len,
|
||||
@ -3426,21 +3413,19 @@ int isis_instance_flex_algo_priority_modify(struct nb_cb_modify_args *args)
|
||||
int isis_instance_flex_algo_priority_destroy(struct nb_cb_destroy_args *args)
|
||||
{
|
||||
struct isis_area *area;
|
||||
const char *area_tag;
|
||||
struct flex_algo *fa;
|
||||
uint32_t algorithm;
|
||||
uint32_t priority = FLEX_ALGO_PRIO_DEFAULT;
|
||||
|
||||
area_tag = yang_dnode_get_string(args->dnode, "../../../area-tag");
|
||||
area = isis_area_lookup(area_tag, VRF_DEFAULT);
|
||||
if (!area)
|
||||
return NB_ERR_RESOURCE;
|
||||
|
||||
algorithm = yang_dnode_get_uint32(args->dnode, "../flex-algo");
|
||||
priority = yang_dnode_get_uint32(args->dnode, NULL);
|
||||
|
||||
switch (args->event) {
|
||||
case NB_EV_APPLY:
|
||||
area = nb_running_get_entry(args->dnode, NULL, true);
|
||||
if (!area)
|
||||
return NB_ERR_RESOURCE;
|
||||
|
||||
fa = flex_algo_lookup(area->flex_algos, algorithm);
|
||||
if (!fa) {
|
||||
snprintf(args->errmsg, args->errmsg_len,
|
||||
|
Loading…
Reference in New Issue
Block a user