diff options
author | Jan Maria Matejka <mq@ucw.cz> | 2018-02-14 13:42:53 +0100 |
---|---|---|
committer | Jan Maria Matejka <mq@ucw.cz> | 2018-12-04 10:53:01 +0100 |
commit | 14375237f6901a926d59cc54870cf44ed2a61d20 (patch) | |
tree | e704518cc25caf08985cd169e1e29208da9ac222 /proto | |
parent | e2ae08694e45b2a127c9d741e41dee4b14c2964d (diff) |
Terminology cleanup: The import_control hook is now called preexport.
Once upon a time, far far away, there were the old Bird developers
discussing what direction of route flow shall be called import and
export. They decided to say "import to protocol" and "export to table"
when speaking about a protocol. When speaking about a table, they
spoke about "importing to table" and "exporting to protocol".
The latter terminology was adopted in configuration, then also the
bird CLI in commit ea2ae6dd0 started to use it (in year 2009). Now
it's 2018 and the terminology is the latter. Import is from protocol to
table, export is from table to protocol. Anyway, there was still an
import_control hook which executed right before route export.
One thing is funny. There are two commits in April 1999 with just two
minutes between them. The older announces the final settlement
on config terminology, the newer uses the other definition. Let's see
their commit messages as the git-log tool shows them (the newer first):
commit 9e0e485e50ea74c4f1c5cb65bdfe6ce819c2cee2
Author: Martin Mares <mj@ucw.cz>
Date: Mon Apr 5 20:17:59 1999 +0000
Added some new protocol hooks (look at the comments for better explanation):
make_tmp_attrs Convert inline attributes to ea_list
store_tmp_attrs Convert ea_list to inline attributes
import_control Pre-import decisions
commit 5056c559c4eb253a4eee10cf35b694faec5265eb
Author: Martin Mares <mj@ucw.cz>
Date: Mon Apr 5 20:15:31 1999 +0000
Changed syntax of attaching filters to protocols to hopefully the final
version:
EXPORT <filter-spec> for outbound routes (i.e., those announced
by BIRD to the rest of the world).
IMPORT <filter-spec> for inbound routes (i.e., those imported
by BIRD from the rest of the world).
where <filter-spec> is one of:
ALL pass all routes
NONE drop all routes
FILTER <name> use named filter
FILTER { <filter> } use explicitly defined filter
For all protocols, the default is IMPORT ALL, EXPORT NONE. This includes
the kernel protocol, so that you need to add EXPORT ALL to get the previous
configuration of kernel syncer (as usually, see doc/bird.conf.example for
a bird.conf example :)).
Let's say RIP to this almost 19-years-old inconsistency. For now, if you
import a route, it is always from protocol to table. If you export a
route, it is always from table to protocol.
And they lived happily ever after.
Diffstat (limited to 'proto')
-rw-r--r-- | proto/babel/babel.c | 4 | ||||
-rw-r--r-- | proto/bgp/attrs.c | 2 | ||||
-rw-r--r-- | proto/bgp/bgp.c | 2 | ||||
-rw-r--r-- | proto/bgp/bgp.h | 2 | ||||
-rw-r--r-- | proto/ospf/ospf.c | 8 | ||||
-rw-r--r-- | proto/pipe/pipe.c | 4 | ||||
-rw-r--r-- | proto/radv/radv.c | 6 |
7 files changed, 14 insertions, 14 deletions
diff --git a/proto/babel/babel.c b/proto/babel/babel.c index b4e42a9a..d321f1d8 100644 --- a/proto/babel/babel.c +++ b/proto/babel/babel.c @@ -2104,7 +2104,7 @@ babel_prepare_attrs(struct linpool *pool, ea_list *next, uint metric, u64 router static int -babel_import_control(struct proto *P, struct rte **new, struct linpool *pool UNUSED) +babel_preexport(struct proto *P, struct rte **new, struct linpool *pool UNUSED) { struct rta *a = (*new)->attrs; @@ -2228,7 +2228,7 @@ babel_init(struct proto_config *CF) P->if_notify = babel_if_notify; P->rt_notify = babel_rt_notify; - P->import_control = babel_import_control; + P->preexport = babel_preexport; P->make_tmp_attrs = babel_make_tmp_attrs; P->store_tmp_attrs = babel_store_tmp_attrs; P->rte_better = babel_rte_better; diff --git a/proto/bgp/attrs.c b/proto/bgp/attrs.c index dcc4a273..572adff8 100644 --- a/proto/bgp/attrs.c +++ b/proto/bgp/attrs.c @@ -1371,7 +1371,7 @@ bgp_free_prefix(struct bgp_channel *c, struct bgp_prefix *px) */ int -bgp_import_control(struct proto *P, rte **new, struct linpool *pool UNUSED) +bgp_preexport(struct proto *P, rte **new, struct linpool *pool UNUSED) { rte *e = *new; struct proto *SRC = e->attrs->src->proto; diff --git a/proto/bgp/bgp.c b/proto/bgp/bgp.c index 7f2eb4d0..496393ab 100644 --- a/proto/bgp/bgp.c +++ b/proto/bgp/bgp.c @@ -1533,7 +1533,7 @@ bgp_init(struct proto_config *CF) struct bgp_config *cf = (struct bgp_config *) CF; P->rt_notify = bgp_rt_notify; - P->import_control = bgp_import_control; + P->preexport = bgp_preexport; P->neigh_notify = bgp_neigh_notify; P->reload_routes = bgp_reload_routes; P->feed_begin = bgp_feed_begin; diff --git a/proto/bgp/bgp.h b/proto/bgp/bgp.h index 2729780c..e1ff013a 100644 --- a/proto/bgp/bgp.h +++ b/proto/bgp/bgp.h @@ -533,7 +533,7 @@ int bgp_rte_mergable(rte *pri, rte *sec); int bgp_rte_recalculate(rtable *table, net *net, rte *new, rte *old, rte *old_best); struct rte *bgp_rte_modify_stale(struct rte *r, struct linpool *pool); void bgp_rt_notify(struct proto *P, struct channel *C, net *n, rte *new, rte *old); -int bgp_import_control(struct proto *, struct rte **, struct linpool *); +int bgp_preexport(struct proto *, struct rte **, struct linpool *); int bgp_get_attr(struct eattr *e, byte *buf, int buflen); void bgp_get_route_info(struct rte *, byte *buf); diff --git a/proto/ospf/ospf.c b/proto/ospf/ospf.c index 4faad360..dbae585d 100644 --- a/proto/ospf/ospf.c +++ b/proto/ospf/ospf.c @@ -101,7 +101,7 @@ #include <stdlib.h> #include "ospf.h" -static int ospf_import_control(struct proto *P, rte **new, struct linpool *pool); +static int ospf_preexport(struct proto *P, rte **new, struct linpool *pool); static struct ea_list *ospf_make_tmp_attrs(struct rte *rt, struct linpool *pool); static void ospf_store_tmp_attrs(struct rte *rt); static void ospf_reload_routes(struct channel *C); @@ -315,7 +315,7 @@ ospf_init(struct proto_config *CF) P->rt_notify = ospf_rt_notify; P->if_notify = ospf_if_notify; P->ifa_notify = cf->ospf2 ? ospf_ifa_notify2 : ospf_ifa_notify3; - P->import_control = ospf_import_control; + P->preexport = ospf_preexport; P->reload_routes = ospf_reload_routes; P->make_tmp_attrs = ospf_make_tmp_attrs; P->store_tmp_attrs = ospf_store_tmp_attrs; @@ -434,7 +434,7 @@ ospf_disp(timer * timer) /** - * ospf_import_control - accept or reject new route from nest's routing table + * ospf_preexport - accept or reject new route from nest's routing table * @P: OSPF protocol instance * @new: the new route * @attrs: list of attributes @@ -444,7 +444,7 @@ ospf_disp(timer * timer) * import to the filters. */ static int -ospf_import_control(struct proto *P, rte **new, struct linpool *pool UNUSED) +ospf_preexport(struct proto *P, rte **new, struct linpool *pool UNUSED) { struct ospf_proto *p = (struct ospf_proto *) P; struct ospf_area *oa = ospf_main_area(p); diff --git a/proto/pipe/pipe.c b/proto/pipe/pipe.c index 82ccf38a..efb992ca 100644 --- a/proto/pipe/pipe.c +++ b/proto/pipe/pipe.c @@ -98,7 +98,7 @@ pipe_rt_notify(struct proto *P, struct channel *src_ch, net *n, rte *new, rte *o } static int -pipe_import_control(struct proto *P, rte **ee, struct linpool *p UNUSED) +pipe_preexport(struct proto *P, rte **ee, struct linpool *p UNUSED) { struct proto *pp = (*ee)->sender->proto; @@ -179,7 +179,7 @@ pipe_init(struct proto_config *CF) struct pipe_config *cf = (void *) CF; P->rt_notify = pipe_rt_notify; - P->import_control = pipe_import_control; + P->preexport = pipe_preexport; P->reload_routes = pipe_reload_routes; pipe_configure_channels(p, cf); diff --git a/proto/radv/radv.c b/proto/radv/radv.c index 12d90823..990b6024 100644 --- a/proto/radv/radv.c +++ b/proto/radv/radv.c @@ -28,7 +28,7 @@ * processes asynchronous events (specified by RA_EV_* codes), and radv_timer(), * which triggers sending RAs and computes the next timeout. * - * The RAdv protocol could receive routes (through radv_import_control() and + * The RAdv protocol could receive routes (through radv_preexport() and * radv_rt_notify()), but only the configured trigger route is tracked (in * &active var). When a radv protocol is reconfigured, the connected routing * table is examined (in radv_check_active()) to have proper &active value in @@ -396,7 +396,7 @@ radv_net_match_trigger(struct radv_config *cf, net *n) } int -radv_import_control(struct proto *P, rte **new, struct linpool *pool UNUSED) +radv_preexport(struct proto *P, rte **new, struct linpool *pool UNUSED) { // struct radv_proto *p = (struct radv_proto *) P; struct radv_config *cf = (struct radv_config *) (P->cf); @@ -580,7 +580,7 @@ radv_init(struct proto_config *CF) P->main_channel = proto_add_channel(P, proto_cf_main_channel(CF)); - P->import_control = radv_import_control; + P->preexport = radv_preexport; P->rt_notify = radv_rt_notify; P->if_notify = radv_if_notify; P->ifa_notify = radv_ifa_notify; |