diff options
author | Igor Putovny <igor.putovny@nic.cz> | 2023-06-21 13:15:07 +0200 |
---|---|---|
committer | Ondrej Zajicek <santiago@crfreenet.org> | 2023-09-26 15:46:24 +0200 |
commit | 977b82fba49b22d9548546d88b105945921efaed (patch) | |
tree | c62f27e9923c25336263883e2c069f8e87d150dc /conf | |
parent | 0a729b509c2c4476cbf66c64620a863e6a381c8c (diff) |
Basic route aggregation
Add a new protocol offering route aggregation.
User can specify list of route attributes in the configuration file and
run route aggregation on the export side of the pipe protocol. Routes are
sorted and for every group of equivalent routes new route is created and
exported to the routing table. It is also possible to specify filter
which will run for every route before aggregation.
Furthermore, it will be possible to set attributes of new routes
according to attributes of the aggregated routes.
This is a work in progress.
Original work by Igor Putovny, subsequent cleanups and finalization by
Maria Matejka.
Diffstat (limited to 'conf')
-rw-r--r-- | conf/conf.h | 3 | ||||
-rw-r--r-- | conf/confbase.Y | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/conf/conf.h b/conf/conf.h index 486499ad..b07b417c 100644 --- a/conf/conf.h +++ b/conf/conf.h @@ -238,6 +238,9 @@ struct symbol *cf_new_symbol(struct sym_scope *scope, pool *p, struct linpool *l sym_->var_ = def_; \ sym_; }) +#define cf_create_symbol(conf_, name_, type_, var_, def_) \ + cf_define_symbol(conf_, cf_get_symbol(conf_, name_), type_, var_, def_) + void cf_push_scope(struct config *, struct symbol *); void cf_pop_scope(struct config *); void cf_push_soft_scope(struct config *); diff --git a/conf/confbase.Y b/conf/confbase.Y index 0364bc6e..69a7676c 100644 --- a/conf/confbase.Y +++ b/conf/confbase.Y @@ -95,6 +95,7 @@ CF_DECLS struct timeformat *tf; mpls_label_stack *mls; const struct adata *bs; + struct aggr_item_node *ai; } %token END CLI_MARKER INVALID_TOKEN ELSECOL DDOT |