summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonatas Abraitis <donatas@opensourcerouting.org>2024-10-30 10:45:28 +0200
committerMergify <37929162+mergify[bot]@users.noreply.github.com>2024-11-05 15:18:39 +0000
commit6e58833466f006555bf581e2123805e47ceac347 (patch)
tree487355d1cbead2b8174d6d31b969fbae432411b9
parent628eaf6b81cfa9a62bd096db83f4f92b25123d8e (diff)
bgpd: Treat numbered community-list only if it's in a range 1-500
Before this patch, if we set something like: ``` bgp extcommunity-list expanded 1234 permit admin ``` In running config we have: ``` bgp extcommunity-list 1234 seq 5 permit admin ``` That leads to incorrect rendering, even more the line can't be deleted. With this fix we treat numbered community-list only if it's inside the range 1-500, otherwise it's a non-numbered clist. Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org> (cherry picked from commit 4c1ee29116aff081f63b1fc7dad18cbfe1b8007f)
-rw-r--r--bgpd/bgp_clist.c2
-rw-r--r--bgpd/bgp_clist.h4
2 files changed, 5 insertions, 1 deletions
diff --git a/bgpd/bgp_clist.c b/bgpd/bgp_clist.c
index e522307134..634775cfd3 100644
--- a/bgpd/bgp_clist.c
+++ b/bgpd/bgp_clist.c
@@ -181,7 +181,7 @@ community_list_insert(struct community_list_handler *ch, const char *name,
}
/* In case of name is all digit character */
- if (i == strlen(name)) {
+ if (i == strlen(name) && number <= COMMUNITY_LIST_NUMBER_MAX) {
new->sort = COMMUNITY_LIST_NUMBER;
/* Set access_list to number list. */
diff --git a/bgpd/bgp_clist.h b/bgpd/bgp_clist.h
index a435b92ce1..f0ca90bdef 100644
--- a/bgpd/bgp_clist.h
+++ b/bgpd/bgp_clist.h
@@ -20,6 +20,10 @@
/* Number and string based community-list name. */
#define COMMUNITY_LIST_STRING 0
#define COMMUNITY_LIST_NUMBER 1
+/* The numbered community-list (including large/ext communities)
+ * have a range between 1-500.
+ */
+#define COMMUNITY_LIST_NUMBER_MAX 500
#define COMMUNITY_SEQ_NUMBER_AUTO -1