diff options
| -rw-r--r-- | bgpd/bgp_clist.c | 4 | ||||
| -rw-r--r-- | bgpd/bgp_community.c | 13 | ||||
| -rw-r--r-- | bgpd/bgp_community.h | 3 | ||||
| -rw-r--r-- | bgpd/bgp_routemap.c | 5 | ||||
| -rw-r--r-- | doc/user/bgp.rst | 17 | ||||
| -rw-r--r-- | tests/topotests/bgp_communities_topo1/test_bgp_communities_topo2.py | 64 | 
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 = {  | 
