diff options
author | Martin Mares <mj@ucw.cz> | 1999-05-17 20:14:52 +0000 |
---|---|---|
committer | Martin Mares <mj@ucw.cz> | 1999-05-17 20:14:52 +0000 |
commit | 0e02abfd5770062768eeb4c75061b7d2f656489d (patch) | |
tree | c9ee70e3b8d7eff81ced44994b58e878d9edafdc /conf | |
parent | 4107df1d1b7454a16e6f45ea55aae13b01c9f566 (diff) |
From now we support multiple tables. The master_table variable is
definitely gone. Both rte_update() and rte_discard() have an additional
argument telling which table should they modify.
Also, rte_update() no longer walks the whole protocol list -- each table
has a list of all protocols connected to this table and having the
rt_notify hook set. Each protocol can also freely decide (by calling
proto_add_announce_hook) to connect to any other table, but it will
be probably used only by the table-to-table protocol.
The default debugging dumps now include all routing tables and also
all their connections.
Diffstat (limited to 'conf')
-rw-r--r-- | conf/conf.c | 3 | ||||
-rw-r--r-- | conf/confbase.Y | 4 |
2 files changed, 5 insertions, 2 deletions
diff --git a/conf/conf.c b/conf/conf.c index 61fe9f88..0ce593c7 100644 --- a/conf/conf.c +++ b/conf/conf.c @@ -10,6 +10,7 @@ #include <stdarg.h> #include "nest/bird.h" +#include "nest/route.h" #include "nest/protocol.h" #include "nest/iface.h" #include "lib/resource.h" @@ -49,6 +50,7 @@ config_parse(struct config *c) cf_lex_init(1); cf_lex_init_tables(); protos_preconfig(c); + rt_preconfig(c); cf_parse(); filters_postconfig(); /* FIXME: Do we really need this? */ protos_postconfig(c); @@ -65,6 +67,7 @@ void config_commit(struct config *c) { config = c; + rt_commit(c); protos_commit(c); } diff --git a/conf/confbase.Y b/conf/confbase.Y index 522a1803..2343536a 100644 --- a/conf/confbase.Y +++ b/conf/confbase.Y @@ -25,6 +25,7 @@ CF_DECLS ip_addr a; struct symbol *s; char *t; + struct rtable_config *r; struct f_inst *x; struct filter *f; struct f_tree *e; @@ -78,8 +79,7 @@ expr: CF_ADDTO(conf, definition) definition: DEFINE SYM '=' expr ';' { - if ($2->class != SYM_VOID) cf_error("Symbol already defined"); - $2->class = SYM_NUMBER; + cf_define_symbol($2, SYM_NUMBER, NULL); $2->aux = $4; } ; |