Commit 0432c017 authored by Martin Mareš's avatar Martin Mareš
Browse files

Split protocol init to building of protocol list and real protocol init.

Added kernel route table syncer skeleton.
parent 05e56feb
......@@ -106,15 +106,20 @@ protos_dump_all(void)
debug(" inactive %s\n", p->name);
}
void
protos_build(void)
{
init_list(&protocol_list);
add_tail(&protocol_list, &proto_device.n);
add_tail(&protocol_list, &proto_rip.n);
}
void
protos_init(void)
{
struct protocol *p;
debug("Initializing protocols\n");
init_list(&protocol_list);
add_tail(&protocol_list, &proto_device.n);
add_tail(&protocol_list, &proto_rip.n); /* HACK: We should really read this from config */
WALK_LIST(p, protocol_list)
p->init(p);
}
......@@ -32,6 +32,7 @@ struct protocol {
void (*postconfig)(struct protocol *); /* After configuring */
};
void protos_build(void);
void protos_init(void);
void protos_preconfig(void);
void protos_postconfig(void);
......
......@@ -248,6 +248,7 @@ void rta_dump_all(void);
#define DEF_PREF_BGP 100 /* BGP */
#define DEF_PREF_OSPF_EXTERNAL 80 /* OSPF external routes */
#define DEF_PREF_RIP_EXTERNAL 70 /* RIP external routes */
#define DEF_PREF_UKR 50 /* Unidentified Kernel Route */
#define DEF_PREF_SINK 10 /* Sink route */
#endif
......@@ -4,3 +4,4 @@ timer.h
io.c
unix.h
sync-if.c
sync-rt.c
......@@ -76,6 +76,8 @@ main(void)
io_init();
rt_init();
if_init();
protos_build();
add_tail(&protocol_list, &proto_unix_kernel.n); /* FIXME: Must be _always_ the last one */
protos_init();
protos_preconfig();
protos_postconfig();
......
......@@ -180,4 +180,3 @@ scan_if_init(void)
if_scan_timer->recurrent = if_scan_period;
tm_start(if_scan_timer, if_scan_period);
}
/*
* BIRD -- Unix Routing Table Scanning and Syncing
*
* (c) 1998 Martin Mares <mj@ucw.cz>
*
* Can be freely distributed and used under the terms of the GNU GPL.
*/
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/ioctl.h>
#include <errno.h>
#define LOCAL_DEBUG
#include "nest/bird.h"
#include "nest/iface.h"
#include "nest/route.h"
#include "nest/protocol.h"
#include "lib/timer.h"
#include "unix.h"
void
uk_rt_notify(struct proto *p, net *net, rte *new, rte *old)
{
}
void
uk_start(struct proto *p)
{
}
void
uk_init(struct protocol *x)
{
}
void
uk_preconfig(struct protocol *x)
{
struct proto *p = proto_new(&proto_unix_kernel, sizeof(struct proto));
p->preference = DEF_PREF_UKR;
p->rt_notify = uk_rt_notify;
p->start = uk_start;
}
void
uk_postconfig(struct protocol *x)
{
}
struct protocol proto_unix_kernel = {
{ NULL, NULL },
"kernel",
0,
uk_init,
uk_preconfig,
uk_postconfig
};
......@@ -22,4 +22,8 @@ extern int if_scan_period;
void scan_if_init(void);
/* sync-rt.c */
extern struct protocol proto_unix_kernel;
#endif
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment