From 0e02abfd5770062768eeb4c75061b7d2f656489d Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Mon, 17 May 1999 20:14:52 +0000 Subject: 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. --- conf/conf.c | 3 +++ conf/confbase.Y | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'conf') diff --git a/conf/conf.c b/conf/conf.c index 61fe9f8..0ce593c 100644 --- a/conf/conf.c +++ b/conf/conf.c @@ -10,6 +10,7 @@ #include #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 522a180..2343536 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; } ; -- cgit v1.2.3