Changes 'ignore communities' to 'interpret communities'.

This commit is contained in:
Ondrej Zajicek 2010-01-28 15:59:18 +01:00
parent 6cb8f742f1
commit 41677025ee
4 changed files with 14 additions and 12 deletions

View file

@ -996,16 +996,17 @@ for each neighbor using the following configuration parameters:
capability and accepts such requests. Even when disabled, BIRD capability and accepts such requests. Even when disabled, BIRD
can send route refresh requests. Default: on. can send route refresh requests. Default: on.
<tag>ignore communities <m/switch/</tag> RFC 1997 demands that <tag>interpret communities <m/switch/</tag> RFC 1997 demands
BGP speaker should process well-known communities like that BGP speaker should process well-known communities like
no-export (65535, 65281) or no-advertise (65535, 65282). For no-export (65535, 65281) or no-advertise (65535, 65282). For
example, received route carrying a no-adverise community example, received route carrying a no-adverise community
should not be advertised to any of its neighbors. BIRD has should not be advertised to any of its neighbors. If this
such behavior hardwired (it is evaluated when a route is option is enabled (which is by default), BIRD has such
exported to the protocol just before the export filter). This behavior automatically (it is evaluated when a route is
option allows to disable such hardwired processing of exported to the protocol just before the export filter).
well-known communities (in that case, similar behavior can be Otherwise, this integrated processing of well-known
implemented in the export filter). Default: off. communities is disabled. In that case, similar behavior can be
implemented in the export filter. Default: on.
<tag>enable as4 <m/switch/</tag> BGP protocol was designed to use 2B AS numbers <tag>enable as4 <m/switch/</tag> BGP protocol was designed to use 2B AS numbers
and was extended later to allow 4B AS number. BIRD supports 4B AS extension, and was extended later to allow 4B AS number. BIRD supports 4B AS extension,

View file

@ -976,7 +976,7 @@ bgp_import_control(struct proto *P, rte **new, ea_list **attrs, struct linpool *
if (bgp_cluster_list_loopy(p, e->attrs)) if (bgp_cluster_list_loopy(p, e->attrs))
return -1; return -1;
if (!p->cf->ignore_communities && bgp_community_filter(p, e)) if (p->cf->interpret_communities && bgp_community_filter(p, e))
return -1; return -1;
if (p->local_as == new_bgp->local_as && p->is_internal && new_bgp->is_internal) if (p->local_as == new_bgp->local_as && p->is_internal && new_bgp->is_internal)

View file

@ -37,7 +37,7 @@ struct bgp_config {
int advertise_ipv4; /* Whether we should add IPv4 capability advertisement to OPEN message */ int advertise_ipv4; /* Whether we should add IPv4 capability advertisement to OPEN message */
u32 route_limit; /* Number of routes that may be imported, 0 means disable limit */ u32 route_limit; /* Number of routes that may be imported, 0 means disable limit */
int passive; /* Do not initiate outgoing connection */ int passive; /* Do not initiate outgoing connection */
int ignore_communities; /* Skip hardwired handling of well-known communities */ int interpret_communities; /* Hardwired handling of well-known communities */
unsigned connect_retry_time; unsigned connect_retry_time;
unsigned hold_time, initial_hold_time; unsigned hold_time, initial_hold_time;
unsigned keepalive_time; unsigned keepalive_time;

View file

@ -23,7 +23,7 @@ CF_KEYWORDS(BGP, LOCAL, NEIGHBOR, AS, HOLD, TIME, CONNECT, RETRY, KEEPALIVE,
BGP_ATOMIC_AGGR, BGP_AGGREGATOR, BGP_COMMUNITY, SOURCE, ADDRESS, BGP_ATOMIC_AGGR, BGP_AGGREGATOR, BGP_COMMUNITY, SOURCE, ADDRESS,
PASSWORD, RR, RS, CLIENT, CLUSTER, ID, AS4, ADVERTISE, IPV4, PASSWORD, RR, RS, CLIENT, CLUSTER, ID, AS4, ADVERTISE, IPV4,
CAPABILITIES, LIMIT, PASSIVE, PREFER, OLDER, MISSING, LLADDR, CAPABILITIES, LIMIT, PASSIVE, PREFER, OLDER, MISSING, LLADDR,
DROP, IGNORE, ROUTE, REFRESH, COMMUNITIES) DROP, IGNORE, ROUTE, REFRESH, INTERPRET, COMMUNITIES)
CF_GRAMMAR CF_GRAMMAR
@ -44,6 +44,7 @@ bgp_proto_start: proto_start BGP {
BGP_CFG->enable_as4 = 1; BGP_CFG->enable_as4 = 1;
BGP_CFG->capabilities = 2; BGP_CFG->capabilities = 2;
BGP_CFG->advertise_ipv4 = 1; BGP_CFG->advertise_ipv4 = 1;
BGP_CFG->interpret_communities = 1;
BGP_CFG->default_local_pref = 100; BGP_CFG->default_local_pref = 100;
} }
; ;
@ -86,7 +87,7 @@ bgp_proto:
| bgp_proto PASSWORD TEXT ';' { BGP_CFG->password = $3; } | bgp_proto PASSWORD TEXT ';' { BGP_CFG->password = $3; }
| bgp_proto ROUTE LIMIT expr ';' { BGP_CFG->route_limit = $4; } | bgp_proto ROUTE LIMIT expr ';' { BGP_CFG->route_limit = $4; }
| bgp_proto PASSIVE bool ';' { BGP_CFG->passive = $3; } | bgp_proto PASSIVE bool ';' { BGP_CFG->passive = $3; }
| bgp_proto IGNORE COMMUNITIES bool ';' { BGP_CFG->ignore_communities = $4; } | bgp_proto INTERPRET COMMUNITIES bool ';' { BGP_CFG->interpret_communities = $4; }
; ;
CF_ADDTO(dynamic_attr, BGP_PATH CF_ADDTO(dynamic_attr, BGP_PATH