Download raw body.
bgpd: shorthand for DOWNGRADE community
On Thu, Sep 24, 2026 at 11:17:57AM +0000, Job Snijders wrote:
> For https://datatracker.ietf.org/doc/html/draft-ietf-grow-downgrade-bgp-community
> IANA assigned a new well-known BGP community. For now just provide
> shorthand like (just like is done for other WKC).
>
> OK?
OK claudio@
Do you want to add the draft to bgpd.8?
The question is how do we signal the LE DSCP towards those networks?
> Index: bgpctl/bgpctl.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpctl/bgpctl.c,v
> diff -u -p -r1.324 bgpctl.c
> --- bgpctl/bgpctl.c 24 Jul 2026 05:01:57 -0000 1.324
> +++ bgpctl/bgpctl.c 24 Sep 2026 11:16:49 -0000
> @@ -1034,6 +1034,8 @@ fmt_community(uint16_t a, uint16_t v)
> return "NO_PEER";
> case COMMUNITY_BLACKHOLE:
> return "BLACKHOLE";
> + case COMMUNITY_DOWNGRADE:
> + return "DOWNGRADE";
> default:
> break;
> }
> Index: bgpctl/parser.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpctl/parser.c,v
> diff -u -p -r1.140 parser.c
> --- bgpctl/parser.c 7 May 2026 12:35:03 -0000 1.140
> +++ bgpctl/parser.c 24 Sep 2026 11:16:50 -0000
> @@ -1216,6 +1216,10 @@ parsecommunity(struct community *c, char
> setcommunity(c, COMMUNITY_WELLKNOWN,
> COMMUNITY_BLACKHOLE, 0, 0);
> return;
> + } else if (strcasecmp(s, "DOWNGRADE") == 0) {
> + setcommunity(c, COMMUNITY_WELLKNOWN,
> + COMMUNITY_DOWNGRADE, 0, 0);
> + return;
> }
>
> if ((p = strchr(s, ':')) == NULL)
> Index: bgpd/bgpd.conf.5
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpd/bgpd.conf.5,v
> diff -u -p -r1.258 bgpd.conf.5
> --- bgpd/bgpd.conf.5 18 Sep 2026 15:46:14 -0000 1.258
> +++ bgpd/bgpd.conf.5 24 Sep 2026 11:16:50 -0000
> @@ -1808,6 +1808,7 @@ to do wildcard matching.
> Alternatively, well-known communities may be given by name instead and
> include
> .Ic BLACKHOLE ,
> +.Ic DOWNGRADE ,
> .Ic GRACEFUL_SHUTDOWN ,
> .Ic NO_EXPORT ,
> .Ic NO_ADVERTISE ,
> Index: bgpd/bgpd.h
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpd/bgpd.h,v
> diff -u -p -r1.548 bgpd.h
> --- bgpd/bgpd.h 21 Sep 2026 19:06:16 -0000 1.548
> +++ bgpd/bgpd.h 24 Sep 2026 11:16:51 -0000
> @@ -1203,9 +1203,10 @@ struct filter_peers {
> #define COMMUNITY_NEIGHBOR_AS 2
> #define COMMUNITY_LOCAL_AS 3
>
> -/* wellknown community definitions */
> +/* well-known community definitions */
> #define COMMUNITY_WELLKNOWN 0xffff
> #define COMMUNITY_GRACEFUL_SHUTDOWN 0x0000 /* RFC 8326 */
> +#define COMMUNITY_DOWNGRADE 0x000A /* draft-grow-downgrade */
> #define COMMUNITY_BLACKHOLE 0x029A /* RFC 7999 */
> #define COMMUNITY_NO_EXPORT 0xff01
> #define COMMUNITY_NO_ADVERTISE 0xff02
> Index: bgpd/parse.y
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpd/parse.y,v
> diff -u -p -r1.505 parse.y
> --- bgpd/parse.y 21 Sep 2026 18:45:09 -0000 1.505
> +++ bgpd/parse.y 24 Sep 2026 11:16:53 -0000
> @@ -4460,6 +4460,10 @@ parsecommunity(struct community *c, int
> setcommunity(c, COMMUNITY_WELLKNOWN,
> COMMUNITY_BLACKHOLE, 0, 0);
> return (0);
> + } else if (strcasecmp(s, "DOWNGRADE") == 0) {
> + setcommunity(c, COMMUNITY_WELLKNOWN,
> + COMMUNITY_DOWNGRADE, 0, 0);
> + return (0);
> }
>
> if ((p = strchr(s, ':')) == NULL) {
>
--
:wq Claudio
bgpd: shorthand for DOWNGRADE community