mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-06-15 03:33:50 +00:00
lib: Ignore duplicate alist/plist entries in CLI
If duplicate value is entered, the whole plist/alist just dropped. Before: ``` $ grep prefix-list /etc/frr/frr.conf ip prefix-list test seq 5 permit 1.1.1.1/32 ip prefix-list test seq 10 permit 1.1.1.1/32 $ systemctl restart frr $ vtysh -c 'show run | include prefix-list' $ ``` After: ``` $ grep prefix-list /etc/frr/frr.conf ip prefix-list test seq 5 permit 1.1.1.1/32 ip prefix-list test seq 10 permit 1.1.1.1/32 $ systemctl restart frr $ vtysh -c 'show run | include prefix-list' ip prefix-list test seq 5 permit 1.1.1.1/32 ``` Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
This commit is contained in:
parent
d45a846e5c
commit
1db0e0c6c8
@ -151,7 +151,6 @@ DEFPY_YANG(
|
|||||||
* Backward compatibility: don't complain about duplicated values,
|
* Backward compatibility: don't complain about duplicated values,
|
||||||
* just silently accept.
|
* just silently accept.
|
||||||
*/
|
*/
|
||||||
if (seq_str == NULL) {
|
|
||||||
ada.ada_type = "ipv4";
|
ada.ada_type = "ipv4";
|
||||||
ada.ada_name = name;
|
ada.ada_name = name;
|
||||||
ada.ada_action = action;
|
ada.ada_action = action;
|
||||||
@ -168,10 +167,8 @@ DEFPY_YANG(
|
|||||||
ada.ada_value[0] = "";
|
ada.ada_value[0] = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Duplicated entry without sequence, just quit. */
|
|
||||||
if (acl_is_dup(vty->candidate_config->dnode, &ada))
|
if (acl_is_dup(vty->candidate_config->dnode, &ada))
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create the access-list first, so we can generate sequence if
|
* Create the access-list first, so we can generate sequence if
|
||||||
@ -280,7 +277,6 @@ DEFPY_YANG(
|
|||||||
* Backward compatibility: don't complain about duplicated values,
|
* Backward compatibility: don't complain about duplicated values,
|
||||||
* just silently accept.
|
* just silently accept.
|
||||||
*/
|
*/
|
||||||
if (seq_str == NULL) {
|
|
||||||
ada.ada_type = "ipv4";
|
ada.ada_type = "ipv4";
|
||||||
ada.ada_name = name;
|
ada.ada_name = name;
|
||||||
ada.ada_action = action;
|
ada.ada_action = action;
|
||||||
@ -318,10 +314,8 @@ DEFPY_YANG(
|
|||||||
idx++;
|
idx++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Duplicated entry without sequence, just quit. */
|
|
||||||
if (acl_is_dup(vty->candidate_config->dnode, &ada))
|
if (acl_is_dup(vty->candidate_config->dnode, &ada))
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create the access-list first, so we can generate sequence if
|
* Create the access-list first, so we can generate sequence if
|
||||||
@ -466,7 +460,6 @@ DEFPY_YANG(
|
|||||||
* Backward compatibility: don't complain about duplicated values,
|
* Backward compatibility: don't complain about duplicated values,
|
||||||
* just silently accept.
|
* just silently accept.
|
||||||
*/
|
*/
|
||||||
if (seq_str == NULL) {
|
|
||||||
ada.ada_type = "ipv4";
|
ada.ada_type = "ipv4";
|
||||||
ada.ada_name = name;
|
ada.ada_name = name;
|
||||||
ada.ada_action = action;
|
ada.ada_action = action;
|
||||||
@ -483,10 +476,8 @@ DEFPY_YANG(
|
|||||||
ada.ada_value[0] = "";
|
ada.ada_value[0] = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Duplicated entry without sequence, just quit. */
|
|
||||||
if (acl_is_dup(vty->candidate_config->dnode, &ada))
|
if (acl_is_dup(vty->candidate_config->dnode, &ada))
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create the access-list first, so we can generate sequence if
|
* Create the access-list first, so we can generate sequence if
|
||||||
@ -656,7 +647,6 @@ DEFPY_YANG(
|
|||||||
* Backward compatibility: don't complain about duplicated values,
|
* Backward compatibility: don't complain about duplicated values,
|
||||||
* just silently accept.
|
* just silently accept.
|
||||||
*/
|
*/
|
||||||
if (seq_str == NULL) {
|
|
||||||
ada.ada_type = "ipv6";
|
ada.ada_type = "ipv6";
|
||||||
ada.ada_name = name;
|
ada.ada_name = name;
|
||||||
ada.ada_action = action;
|
ada.ada_action = action;
|
||||||
@ -673,10 +663,8 @@ DEFPY_YANG(
|
|||||||
ada.ada_value[0] = "";
|
ada.ada_value[0] = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Duplicated entry without sequence, just quit. */
|
|
||||||
if (acl_is_dup(vty->candidate_config->dnode, &ada))
|
if (acl_is_dup(vty->candidate_config->dnode, &ada))
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create the access-list first, so we can generate sequence if
|
* Create the access-list first, so we can generate sequence if
|
||||||
@ -850,7 +838,6 @@ DEFPY_YANG(
|
|||||||
* Backward compatibility: don't complain about duplicated values,
|
* Backward compatibility: don't complain about duplicated values,
|
||||||
* just silently accept.
|
* just silently accept.
|
||||||
*/
|
*/
|
||||||
if (seq_str == NULL) {
|
|
||||||
ada.ada_type = "mac";
|
ada.ada_type = "mac";
|
||||||
ada.ada_name = name;
|
ada.ada_name = name;
|
||||||
ada.ada_action = action;
|
ada.ada_action = action;
|
||||||
@ -863,10 +850,8 @@ DEFPY_YANG(
|
|||||||
ada.ada_value[0] = "";
|
ada.ada_value[0] = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Duplicated entry without sequence, just quit. */
|
|
||||||
if (acl_is_dup(vty->candidate_config->dnode, &ada))
|
if (acl_is_dup(vty->candidate_config->dnode, &ada))
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create the access-list first, so we can generate sequence if
|
* Create the access-list first, so we can generate sequence if
|
||||||
@ -1272,7 +1257,6 @@ DEFPY_YANG(
|
|||||||
* Backward compatibility: don't complain about duplicated values,
|
* Backward compatibility: don't complain about duplicated values,
|
||||||
* just silently accept.
|
* just silently accept.
|
||||||
*/
|
*/
|
||||||
if (seq_str == NULL) {
|
|
||||||
pda.pda_type = "ipv4";
|
pda.pda_type = "ipv4";
|
||||||
pda.pda_name = name;
|
pda.pda_name = name;
|
||||||
pda.pda_action = action;
|
pda.pda_action = action;
|
||||||
@ -1284,10 +1268,8 @@ DEFPY_YANG(
|
|||||||
pda.any = true;
|
pda.any = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Duplicated entry without sequence, just quit. */
|
|
||||||
if (plist_is_dup(vty->candidate_config->dnode, &pda))
|
if (plist_is_dup(vty->candidate_config->dnode, &pda))
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create the prefix-list first, so we can generate sequence if
|
* Create the prefix-list first, so we can generate sequence if
|
||||||
@ -1476,7 +1458,6 @@ DEFPY_YANG(
|
|||||||
* Backward compatibility: don't complain about duplicated values,
|
* Backward compatibility: don't complain about duplicated values,
|
||||||
* just silently accept.
|
* just silently accept.
|
||||||
*/
|
*/
|
||||||
if (seq_str == NULL) {
|
|
||||||
pda.pda_type = "ipv6";
|
pda.pda_type = "ipv6";
|
||||||
pda.pda_name = name;
|
pda.pda_name = name;
|
||||||
pda.pda_action = action;
|
pda.pda_action = action;
|
||||||
@ -1488,10 +1469,8 @@ DEFPY_YANG(
|
|||||||
pda.any = true;
|
pda.any = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Duplicated entry without sequence, just quit. */
|
|
||||||
if (plist_is_dup(vty->candidate_config->dnode, &pda))
|
if (plist_is_dup(vty->candidate_config->dnode, &pda))
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create the prefix-list first, so we can generate sequence if
|
* Create the prefix-list first, so we can generate sequence if
|
||||||
|
Loading…
Reference in New Issue
Block a user