summaryrefslogtreecommitdiffstats
path: root/bgpd/bgp_evpn_vty.c
diff options
context:
space:
mode:
authoranlan_cs <vic.lan@pica8.com>2022-10-21 07:17:29 +0200
committeranlan_cs <vic.lan@pica8.com>2022-10-24 14:51:12 +0200
commit7231b9ab170de27b431b7b586b4f0008bf358e74 (patch)
tree712fb32fe674675ff62085f97bbf4d52e70c7bbb /bgpd/bgp_evpn_vty.c
parentMerge pull request #12144 from patrasar/v4-over-v6_nh (diff)
downloadfrr-7231b9ab170de27b431b7b586b4f0008bf358e74.tar.xz
frr-7231b9ab170de27b431b7b586b4f0008bf358e74.zip
bgpd: return failure for wildcard ERT
The "RTLIST..." list should be maintained integrity. If wildcard check failed, it should immediately return failure. Otherwise user configuration will be partial. ``` anlan(config-router-af)# route-target export *:55 33:33 % Wildcard '*' only applicable for import anlan(config-router-af)# route-target both *:55 33:33 % Wildcard '*' only applicable for import ``` With this commit, the RTs without wildcard will not be executed as before. And the same for `no` form. Signed-off-by: anlan_cs <vic.lan@pica8.com>
Diffstat (limited to 'bgpd/bgp_evpn_vty.c')
-rw-r--r--bgpd/bgp_evpn_vty.c27
1 files changed, 20 insertions, 7 deletions
diff --git a/bgpd/bgp_evpn_vty.c b/bgpd/bgp_evpn_vty.c
index f920a783b..997250db1 100644
--- a/bgpd/bgp_evpn_vty.c
+++ b/bgpd/bgp_evpn_vty.c
@@ -5866,13 +5866,6 @@ static int parse_rtlist(struct bgp *bgp, struct vty *vty, int argc,
* the ecommunity parser.
*/
if ((argv[i]->arg)[0] == '*') {
- if (!is_import) {
- vty_out(vty,
- "%% Wildcard '*' only applicable for import\n");
- ret = CMD_WARNING;
- continue;
- }
-
(argv[i]->arg)[0] = '0';
is_wildcard = true;
}
@@ -5950,6 +5943,16 @@ DEFUN (bgp_evpn_vrf_rt,
return CMD_WARNING_CONFIG_FAILED;
}
+ if (rt_type != RT_TYPE_IMPORT) {
+ for (int i = 2; i < argc; i++) {
+ if ((argv[i]->arg)[0] == '*') {
+ vty_out(vty,
+ "%% Wildcard '*' only applicable for import\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ }
+ }
+
/* Add/update the import route-target */
if (rt_type == RT_TYPE_BOTH || rt_type == RT_TYPE_IMPORT)
tmp_ret = parse_rtlist(bgp, vty, argc, argv, 2, true, true);
@@ -6056,6 +6059,16 @@ DEFUN (no_bgp_evpn_vrf_rt,
}
}
+ if (rt_type != RT_TYPE_IMPORT) {
+ for (int i = 3; i < argc; i++) {
+ if ((argv[i]->arg)[0] == '*') {
+ vty_out(vty,
+ "%% Wildcard '*' only applicable for import\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ }
+ }
+
if (rt_type == RT_TYPE_BOTH || rt_type == RT_TYPE_IMPORT)
tmp_ret = parse_rtlist(bgp, vty, argc, argv, 3, false, true);