summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgp_clist.c4
-rw-r--r--bgpd/bgp_community.c13
-rw-r--r--bgpd/bgp_community.h3
-rw-r--r--bgpd/bgp_routemap.c5
-rw-r--r--doc/user/bgp.rst17
-rw-r--r--tests/topotests/bgp_communities_topo1/test_bgp_communities_topo2.py64
6 files changed, 45 insertions, 61 deletions
diff --git a/bgpd/bgp_clist.c b/bgpd/bgp_clist.c
index 2cbbe0a5a9..1d2ba3bf58 100644
--- a/bgpd/bgp_clist.c
+++ b/bgpd/bgp_clist.c
@@ -449,8 +449,12 @@ static char *community_str_get(struct community *com, int i)
comval = ntohl(comval);
switch (comval) {
+#if CONFDATE > 20230801
+CPP_NOTICE("Deprecate COMMUNITY_INTERNET BGP community")
+#endif
case COMMUNITY_INTERNET:
str = XSTRDUP(MTYPE_COMMUNITY_STR, "internet");
+ zlog_warn("`internet` community is deprecated");
break;
case COMMUNITY_GSHUT:
str = XSTRDUP(MTYPE_COMMUNITY_STR, "graceful-shutdown");
diff --git a/bgpd/bgp_community.c b/bgpd/bgp_community.c
index e2bce9cbce..ff6e477355 100644
--- a/bgpd/bgp_community.c
+++ b/bgpd/bgp_community.c
@@ -168,7 +168,6 @@ struct community *community_uniq_sort(struct community *com)
For Well-known communities value, below keyword is used.
- 0x0 "internet"
0xFFFF0000 "graceful-shutdown"
0xFFFF0001 "accept-own"
0xFFFF0002 "route-filter-translated-v4"
@@ -229,8 +228,12 @@ static void set_community_string(struct community *com, bool make_json,
comval = ntohl(comval);
switch (comval) {
+#if CONFDATE > 20230801
+CPP_NOTICE("Deprecate COMMUNITY_INTERNET BGP community")
+#endif
case COMMUNITY_INTERNET:
len += strlen(" internet");
+ zlog_warn("`internet` community is deprecated");
break;
case COMMUNITY_GSHUT:
len += strlen(" graceful-shutdown");
@@ -295,6 +298,9 @@ static void set_community_string(struct community *com, bool make_json,
strlcat(str, " ", len);
switch (comval) {
+#if CONFDATE > 20230801
+CPP_NOTICE("Deprecate COMMUNITY_INTERNET BGP community")
+#endif
case COMMUNITY_INTERNET:
strlcat(str, "internet", len);
if (make_json) {
@@ -303,6 +309,7 @@ static void set_community_string(struct community *com, bool make_json,
json_object_array_add(json_community_list,
json_string);
}
+ zlog_warn("`internet` community is deprecated");
break;
case COMMUNITY_GSHUT:
strlcat(str, "graceful-shutdown", len);
@@ -673,10 +680,14 @@ community_gettoken(const char *buf, enum community_token *token, uint32_t *val)
/* Well known community string check. */
if (isalpha((unsigned char)*p)) {
+#if CONFDATE > 20230801
+CPP_NOTICE("Deprecate COMMUNITY_INTERNET BGP community")
+#endif
if (strncmp(p, "internet", strlen("internet")) == 0) {
*val = COMMUNITY_INTERNET;
*token = community_token_no_export;
p += strlen("internet");
+ zlog_warn("`internet` community is deprecated");
return p;
}
if (strncmp(p, "graceful-shutdown", strlen("graceful-shutdown"))
diff --git a/bgpd/bgp_community.h b/bgpd/bgp_community.h
index 35909a638d..e7af362ea8 100644
--- a/bgpd/bgp_community.h
+++ b/bgpd/bgp_community.h
@@ -30,6 +30,9 @@ struct community {
};
/* Well-known communities value. */
+#if CONFDATE > 20230801
+CPP_NOTICE("Deprecate COMMUNITY_INTERNET BGP community")
+#endif
#define COMMUNITY_INTERNET 0x0
#define COMMUNITY_GSHUT 0xFFFF0000
#define COMMUNITY_ACCEPT_OWN 0xFFFF0001
diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c
index f9def03693..873884ba54 100644
--- a/bgpd/bgp_routemap.c
+++ b/bgpd/bgp_routemap.c
@@ -5870,9 +5870,14 @@ DEFUN_YANG (set_community,
else
first = 1;
+#if CONFDATE > 20230801
+CPP_NOTICE("Deprecate COMMUNITY_INTERNET BGP community")
+#endif
if (strncmp(argv[i]->arg, "internet", strlen(argv[i]->arg))
== 0) {
buffer_putstr(b, "internet");
+ vty_out(vty, "%% `internet` community is deprecated\n");
+ zlog_warn("`internet` community is deprecated");
continue;
}
if (strncmp(argv[i]->arg, "local-AS", strlen(argv[i]->arg))
diff --git a/doc/user/bgp.rst b/doc/user/bgp.rst
index c5319a8e88..06d5d5857a 100644
--- a/doc/user/bgp.rst
+++ b/doc/user/bgp.rst
@@ -2113,9 +2113,6 @@ is 4 octet long. The following format is used to define the community value.
``7675:80`` can be used when AS 7675 wants to pass local policy value 80 to
neighboring peer.
-``internet``
- ``internet`` represents well-known communities value 0.
-
``graceful-shutdown``
``graceful-shutdown`` represents well-known communities value
``GRACEFUL_SHUTDOWN`` ``0xFFFF0000`` ``65535:0``. :rfc:`8326` implements
@@ -2486,17 +2483,6 @@ community-list.
match community FILTER
-The communities value keyword ``internet`` has special meanings in standard
-community lists. In the below example ``internet`` matches all BGP routes even
-if the route does not have communities attribute at all. So community list
-``INTERNET`` is the same as ``FILTER`` in the previous example.
-
-.. code-block:: frr
-
- bgp community-list standard INTERNET deny 1:1
- bgp community-list standard INTERNET permit internet
-
-
The following configuration is an example of communities value deletion. With
this configuration the community values ``100:1`` and ``100:2`` are removed
from BGP updates. For communities value deletion, only ``permit``
@@ -2566,9 +2552,6 @@ Extended Community Lists
there is no matched entry, deny will be returned. When `extcommunity` is
empty it matches to any routes.
- A special handling for ``internet`` community is applied. It matches
- any community.
-
.. clicmd:: bgp extcommunity-list expanded NAME permit|deny LINE
This command defines a new expanded extcommunity-list. `line` is a string
diff --git a/tests/topotests/bgp_communities_topo1/test_bgp_communities_topo2.py b/tests/topotests/bgp_communities_topo1/test_bgp_communities_topo2.py
index 7db6a51c92..324f53f3a6 100644
--- a/tests/topotests/bgp_communities_topo1/test_bgp_communities_topo2.py
+++ b/tests/topotests/bgp_communities_topo1/test_bgp_communities_topo2.py
@@ -11,7 +11,7 @@
Following tests are covered to test bgp community functionality:
1. Verify that BGP well known communities work fine for
eBGP and iBGP peers.
- Well known communities tested: no-export, local-AS, internet
+ Well known communities tested: no-export, local-AS
"""
@@ -140,11 +140,11 @@ def teardown_module(mod):
#####################################################
-def test_bgp_no_export_local_as_and_internet_communities_p0(request):
+def test_bgp_no_export_local_as_communities_p0(request):
"""
Verify that BGP well known communities work fine for
eBGP and iBGP peers.
- Well known communities tested: no-export, local-AS, internet
+ Well known communities tested: no-export, local-AS
"""
tc_name = request.node.name
@@ -170,7 +170,7 @@ def test_bgp_no_export_local_as_and_internet_communities_p0(request):
tc_name, result
)
- for comm_type in ["no-export", "local-AS", "internet"]:
+ for comm_type in ["no-export", "local-AS"]:
step("Create a route-map on R1 to set community as {}".format(comm_type))
@@ -258,45 +258,23 @@ def test_bgp_no_export_local_as_and_internet_communities_p0(request):
tc_name, result
)
- if comm_type == "internet":
- step(
- "Verify that these prefixes, originated on R1, are"
- "received on both R2 and R3"
- )
-
- result = verify_rib(
- tgen,
- addr_type,
- "r3",
- input_dict_4,
- next_hop=topo["routers"]["r1"]["links"]["r3"][addr_type].split("/")[
- 0
- ],
- )
- assert result is True, "Testcase {} : Failed \n Error: {}".format(
- tc_name, result
- )
- else:
- step(
- "Verify that these prefixes, originated on R1, are not"
- "received on R3 but received on R2"
- )
-
- result = verify_rib(
- tgen,
- addr_type,
- "r3",
- input_dict_4,
- next_hop=topo["routers"]["r1"]["links"]["r3"][addr_type].split("/")[
- 0
- ],
- expected=False,
- )
- assert result is not True, (
- "Testcase {} : Failed \n "
- "Expected: Routes are still present in rib of r3 \n "
- "Found: {}".format(tc_name, result)
- )
+ step(
+ "Verify that these prefixes, originated on R1, are not"
+ "received on R3 but received on R2"
+ )
+ result = verify_rib(
+ tgen,
+ addr_type,
+ "r3",
+ input_dict_4,
+ next_hop=topo["routers"]["r1"]["links"]["r3"][addr_type].split("/")[0],
+ expected=False,
+ )
+ assert result is not True, (
+ "Testcase {} : Failed \n "
+ "Expected: Routes are still present in rib of r3 \n "
+ "Found: {}".format(tc_name, result)
+ )
step("Remove route-map from redistribute static on R1")
input_dict_2 = {