From: Appu Joseph Date: Fri, 29 May 2020 14:23:36 +0000 (-0400) Subject: bgpd: Fix "malformed communities" for accept-own-nexthop X-Git-Tag: base_7.5~328^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=68f36a94da0e6274e60f191bc9c851b34c9e6f2e;p=matthieu%2Ffrr.git bgpd: Fix "malformed communities" for accept-own-nexthop "set community accept-own-nexthop" returns "malformed communities" error. This is because the token matching hits an earlier "accept-own" and leaves "-nexthop" as a separate token to be processed. Reorder the switch cases so that both are processed correctly. Signed-off-by: Appu Joseph --- diff --git a/bgpd/bgp_community.c b/bgpd/bgp_community.c index 0d60fbf479..b6cc2b839f 100644 --- a/bgpd/bgp_community.c +++ b/bgpd/bgp_community.c @@ -677,6 +677,14 @@ community_gettoken(const char *buf, enum community_token *token, uint32_t *val) p += strlen("graceful-shutdown"); return p; } + if (strncmp(p, "accept-own-nexthop", + strlen("accept-own-nexthop")) + == 0) { + *val = COMMUNITY_ACCEPT_OWN_NEXTHOP; + *token = community_token_accept_own_nexthop; + p += strlen("accept-own-nexthop"); + return p; + } if (strncmp(p, "accept-own", strlen("accept-own")) == 0) { *val = COMMUNITY_ACCEPT_OWN; @@ -728,14 +736,6 @@ community_gettoken(const char *buf, enum community_token *token, uint32_t *val) p += strlen("no-llgr"); return p; } - if (strncmp(p, "accept-own-nexthop", - strlen("accept-own-nexthop")) - == 0) { - *val = COMMUNITY_ACCEPT_OWN_NEXTHOP; - *token = community_token_accept_own_nexthop; - p += strlen("accept-own-nexthop"); - return p; - } if (strncmp(p, "blackhole", strlen("blackhole")) == 0) { *val = COMMUNITY_BLACKHOLE;