From 68f36a94da0e6274e60f191bc9c851b34c9e6f2e Mon Sep 17 00:00:00 2001 From: Appu Joseph Date: Fri, 29 May 2020 10:23:36 -0400 Subject: [PATCH] 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 --- bgpd/bgp_community.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) 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; -- 2.39.5