diff options
| -rw-r--r-- | bgpd/bgp_route.c | 9 | 
1 files changed, 4 insertions, 5 deletions
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index 404d7b153c..15e771dffb 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -1690,14 +1690,13 @@ static bool bgp_community_filter(struct peer *peer, struct attr *attr)  			return true;  		/* NO_EXPORT check. */ -		if (peer->sort == BGP_PEER_EBGP && -		    community_include(bgp_attr_get_community(attr), -				      COMMUNITY_NO_EXPORT)) +		if (peer->sort == BGP_PEER_EBGP && peer->sub_sort != BGP_PEER_EBGP_OAD && +		    community_include(bgp_attr_get_community(attr), COMMUNITY_NO_EXPORT))  			return true;  		/* NO_EXPORT_SUBCONFED check. */ -		if (peer->sort == BGP_PEER_EBGP -		    || peer->sort == BGP_PEER_CONFED) +		if ((peer->sort == BGP_PEER_EBGP && peer->sub_sort != BGP_PEER_EBGP_OAD) || +		    peer->sort == BGP_PEER_CONFED)  			if (community_include(bgp_attr_get_community(attr),  					      COMMUNITY_NO_EXPORT_SUBCONFED))  				return true;  | 
