|
From 34f6d0c67a48e2117c061f6ccdcf1f512982fe8f Mon Sep 17 00:00:00 2001
|
|
From: Donald Sharp <sharpd@cumulusnetworks.com>
|
|
Date: Tue, 2 Jun 2020 16:10:48 -0400
|
|
Subject: [PATCH] bgpd: Actually find the sequence number for `bgp
|
|
extcommunity-list...`
|
|
|
|
The code in the bgp extcommunity-list function was using
|
|
argv_find to get the correct idx. The problem was that
|
|
we had already done argv_finds before and idx was non-zero
|
|
thus having us always set the seq pointer to what was last
|
|
looked up. This causes us to pass in a value to the
|
|
underlying function and it would just wisely ignore it
|
|
causing a seq number of 0.
|
|
|
|
We would then write this seq number of 0 and then immediately
|
|
reject it on read in again. BOO!
|
|
|
|
Actually handle argv_find the way it was meant to be.
|
|
|
|
Ticket:CM-29926
|
|
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
|
|
---
|
|
bgpd/bgp_vty.c | 12 ++++--------
|
|
1 file changed, 4 insertions(+), 8 deletions(-)
|
|
|
|
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
|
|
index 3669205ee3..9c8f1e1def 100644
|
|
--- a/bgpd/bgp_vty.c
|
|
+++ b/bgpd/bgp_vty.c
|
|
@@ -17617,8 +17617,7 @@ DEFUN (extcommunity_list_standard,
|
|
argv_find(argv, argc, "WORD", &idx);
|
|
cl_number_or_name = argv[idx]->arg;
|
|
|
|
- argv_find(argv, argc, "(1-4294967295)", &idx);
|
|
- if (idx)
|
|
+ if (argv_find(argv, argc, "(1-4294967295)", &idx))
|
|
seq = argv[idx]->arg;
|
|
|
|
direct = argv_find(argv, argc, "permit", &idx) ? COMMUNITY_PERMIT
|
|
@@ -17663,8 +17662,7 @@ DEFUN (extcommunity_list_name_expanded,
|
|
argv_find(argv, argc, "WORD", &idx);
|
|
cl_number_or_name = argv[idx]->arg;
|
|
|
|
- argv_find(argv, argc, "(1-4294967295)", &idx);
|
|
- if (idx)
|
|
+ if (argv_find(argv, argc, "(1-4294967295)", &idx))
|
|
seq = argv[idx]->arg;
|
|
|
|
direct = argv_find(argv, argc, "permit", &idx) ? COMMUNITY_PERMIT
|
|
@@ -17707,8 +17705,7 @@ DEFUN (no_extcommunity_list_standard_all,
|
|
char *seq = NULL;
|
|
int idx = 0;
|
|
|
|
- argv_find(argv, argc, "(1-4294967295)", &idx);
|
|
- if (idx)
|
|
+ if (argv_find(argv, argc, "(1-4294967295)", &idx))
|
|
seq = argv[idx]->arg;
|
|
|
|
idx = 0;
|
|
@@ -17772,8 +17769,7 @@ DEFUN (no_extcommunity_list_expanded_all,
|
|
char *seq = NULL;
|
|
int idx = 0;
|
|
|
|
- argv_find(argv, argc, "(1-4294967295)", &idx);
|
|
- if (idx)
|
|
+ if (argv_find(argv, argc, "(1-4294967295)", &idx))
|
|
seq = argv[idx]->arg;
|
|
|
|
idx = 0;
|