summaryrefslogtreecommitdiff
path: root/conf
diff options
context:
space:
mode:
authorMartin Mares <mj@ucw.cz>1999-05-17 20:14:52 +0000
committerMartin Mares <mj@ucw.cz>1999-05-17 20:14:52 +0000
commit0e02abfd5770062768eeb4c75061b7d2f656489d (patch)
treec9ee70e3b8d7eff81ced44994b58e878d9edafdc /conf
parent4107df1d1b7454a16e6f45ea55aae13b01c9f566 (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.c3
-rw-r--r--conf/confbase.Y4
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;
}
;