summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOndrej Zajicek <santiago@crfreenet.org>2010-01-28 15:59:18 +0100
committerOndrej Zajicek <santiago@crfreenet.org>2010-01-28 15:59:18 +0100
commit41677025ee67fcccd34493f9b205037dd68811c9 (patch)
treee4ecf086191e4ec93ff8941f0d2896e95cecfe14
parent6cb8f742f1adf99881334b8ae21c398d98571aa1 (diff)
downloadbird-41677025ee67fcccd34493f9b205037dd68811c9.tar
bird-41677025ee67fcccd34493f9b205037dd68811c9.zip
Changes 'ignore communities' to 'interpret communities'.
-rw-r--r--doc/bird.sgml17
-rw-r--r--proto/bgp/attrs.c2
-rw-r--r--proto/bgp/bgp.h2
-rw-r--r--proto/bgp/config.Y5
4 files changed, 14 insertions, 12 deletions
diff --git a/doc/bird.sgml b/doc/bird.sgml
index c1fc3d8..343d016 100644
--- a/doc/bird.sgml
+++ b/doc/bird.sgml
@@ -996,16 +996,17 @@ for each neighbor using the following configuration parameters:
capability and accepts such requests. Even when disabled, BIRD
can send route refresh requests. Default: on.
- <tag>ignore communities <m/switch/</tag> RFC 1997 demands that
- BGP speaker should process well-known communities like
+ <tag>interpret communities <m/switch/</tag> RFC 1997 demands
+ that BGP speaker should process well-known communities like
no-export (65535, 65281) or no-advertise (65535, 65282). For
example, received route carrying a no-adverise community
- should not be advertised to any of its neighbors. BIRD has
- such behavior hardwired (it is evaluated when a route is
- exported to the protocol just before the export filter). This
- option allows to disable such hardwired processing of
- well-known communities (in that case, similar behavior can be
- implemented in the export filter). Default: off.
+ should not be advertised to any of its neighbors. If this
+ option is enabled (which is by default), BIRD has such
+ behavior automatically (it is evaluated when a route is
+ exported to the protocol just before the export filter).
+ Otherwise, this integrated processing of well-known
+ 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
and was extended later to allow 4B AS number. BIRD supports 4B AS extension,
diff --git a/proto/bgp/attrs.c b/proto/bgp/attrs.c
index 9bf6fd5..4cfabf1 100644
--- a/proto/bgp/attrs.c
+++ b/proto/bgp/attrs.c
@@ -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))
return -1;
- if (!p->cf->ignore_communities && bgp_community_filter(p, e))
+ if (p->cf->interpret_communities && bgp_community_filter(p, e))
return -1;
if (p->local_as == new_bgp->local_as && p->is_internal && new_bgp->is_internal)
diff --git a/proto/bgp/bgp.h b/proto/bgp/bgp.h
index 9966d20..7f574ed 100644
--- a/proto/bgp/bgp.h
+++ b/proto/bgp/bgp.h
@@ -37,7 +37,7 @@ struct bgp_config {
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 */
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 hold_time, initial_hold_time;
unsigned keepalive_time;
diff --git a/proto/bgp/config.Y b/proto/bgp/config.Y
index cf32cd1..095e1ce 100644
--- a/proto/bgp/config.Y
+++ b/proto/bgp/config.Y
@@ -23,7 +23,7 @@ CF_KEYWORDS(BGP, LOCAL, NEIGHBOR, AS, HOLD, TIME, CONNECT, RETRY, KEEPALIVE,
BGP_ATOMIC_AGGR, BGP_AGGREGATOR, BGP_COMMUNITY, SOURCE, ADDRESS,
PASSWORD, RR, RS, CLIENT, CLUSTER, ID, AS4, ADVERTISE, IPV4,
CAPABILITIES, LIMIT, PASSIVE, PREFER, OLDER, MISSING, LLADDR,
- DROP, IGNORE, ROUTE, REFRESH, COMMUNITIES)
+ DROP, IGNORE, ROUTE, REFRESH, INTERPRET, COMMUNITIES)
CF_GRAMMAR
@@ -44,6 +44,7 @@ bgp_proto_start: proto_start BGP {
BGP_CFG->enable_as4 = 1;
BGP_CFG->capabilities = 2;
BGP_CFG->advertise_ipv4 = 1;
+ BGP_CFG->interpret_communities = 1;
BGP_CFG->default_local_pref = 100;
}
;
@@ -86,7 +87,7 @@ bgp_proto:
| bgp_proto PASSWORD TEXT ';' { BGP_CFG->password = $3; }
| bgp_proto ROUTE LIMIT expr ';' { BGP_CFG->route_limit = $4; }
| 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