From 41677025ee67fcccd34493f9b205037dd68811c9 Mon Sep 17 00:00:00 2001 From: Ondrej Zajicek Date: Thu, 28 Jan 2010 15:59:18 +0100 Subject: Changes 'ignore communities' to 'interpret communities'. --- doc/bird.sgml | 17 +++++++++-------- proto/bgp/attrs.c | 2 +- proto/bgp/bgp.h | 2 +- proto/bgp/config.Y | 5 +++-- 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. - ignore communities RFC 1997 demands that - BGP speaker should process well-known communities like + interpret communities 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. enable as4 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 -- cgit v1.2.3