Compile and use the new configuration code by default.

This commit is contained in:
Martin Mares 1998-11-27 19:37:07 +00:00
parent f142750d34
commit 70591fa064
3 changed files with 59 additions and 7 deletions

View file

@ -11,7 +11,8 @@ CFLAGS=$(OPT) $(DEBUG) -Wall -W -Wstrict-prototypes -Wno-unused -Wno-parentheses
PROTOCOLS=rip PROTOCOLS=rip
LIBDIRS=sysdep/linux sysdep/unix lib LIBDIRS=sysdep/linux sysdep/unix lib
STDDIRS=nest $(addprefix proto/,$(PROTOCOLS)) BASEDIRS=nest $(addprefix proto/,$(PROTOCOLS))
STDDIRS=$(BASEDIRS) $(OBJDIR)/conf
DIRS=$(STDDIRS) $(OBJDIR)/lib DIRS=$(STDDIRS) $(OBJDIR)/lib
PARTOBJS=$(join $(addsuffix /,$(STDDIRS)),$(subst /,_,$(addsuffix .o,$(STDDIRS)))) PARTOBJS=$(join $(addsuffix /,$(STDDIRS)),$(subst /,_,$(addsuffix .o,$(STDDIRS))))
LIBS=$(OBJDIR)/lib/birdlib.a LIBS=$(OBJDIR)/lib/birdlib.a

24
conf/Makefile Normal file
View file

@ -0,0 +1,24 @@
CONFS=$(TOPDIR)/conf/confbase.Y @CONFS@$(addprefix $(TOPDIR)/,$(addsuffix /config.Y,$(BASEDIRS)))
OBJS=cf-parse.tab.o cf-lex.o
CONF=$(TOPDIR)/conf
ifdef DEBUG
BISON_DEBUG=-t
#FLEX_DEBUG=-d
endif
include $(TOPDIR)/Rules
cf-parse.tab.c cf-parse-tab.h: cf-parse.y
bison -bcf-parse -dv -pcf_ $(BISON_DEBUG) cf-parse.y
cf-parse.y: $(CONFS) $(CONF)/gen_parser.m4
m4 -P $(CONF)/gen_parser.m4 $(CONFS) >cf-parse.y
keywords.h: $(CONFS) $(CONF)/gen_keywords.m4
m4 -P $(CONF)/gen_keywords.m4 $(CONFS) >keywords.h
cf-lex.c: cf-lex.l
flex $(FLEX_DEBUG) -sB8 -ocf-lex.c -Pcf_ cf-lex.l
dep: keywords.h

View file

@ -7,6 +7,8 @@
*/ */
#include <stdio.h> #include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/signal.h> #include <sys/signal.h>
#include "nest/bird.h" #include "nest/bird.h"
@ -16,7 +18,7 @@
#include "nest/route.h" #include "nest/route.h"
#include "nest/protocol.h" #include "nest/protocol.h"
#include "nest/iface.h" #include "nest/iface.h"
#include "nest/confile.h" #include "conf/conf.h"
#include "unix.h" #include "unix.h"
#include "krt.h" #include "krt.h"
@ -54,11 +56,32 @@ signal_init(void)
} }
/* /*
* Config Pool * Reading the Configuration
*/ */
pool *cfg_pool; static int conf_fd;
mempool *cfg_mem;
static int
cf_read(byte *dest, unsigned int len)
{
int l = read(conf_fd, dest, len);
if (l < 0)
cf_error("Read error");
return l;
}
static void
read_config(void)
{
cf_lex_init_tables();
cf_allocate();
conf_fd = open(PATH_CONFIG, O_RDONLY);
if (conf_fd < 0)
die("Unable to open configuration file " PATH_CONFIG ": %m");
cf_read_hook = cf_read;
cf_lex_init(1);
cf_parse();
}
/* /*
* Hic Est main() * Hic Est main()
@ -71,9 +94,11 @@ main(void)
log_init_debug(NULL); log_init_debug(NULL);
resource_init(); resource_init();
cfg_pool = rp_new(&root_pool, "Config");
cfg_mem = mp_new(cfg_pool, 1024);
debug("Reading configuration file.\n");
read_config();
debug("Initializing.\n");
io_init(); io_init();
rt_init(); rt_init();
if_init(); if_init();
@ -88,7 +113,9 @@ main(void)
scan_if_init(); scan_if_init();
auto_router_id(); auto_router_id();
#if 0
protos_start(); protos_start();
#endif
handle_sigusr(0); handle_sigusr(0);