summaryrefslogtreecommitdiffstats
path: root/sysdep/linux/krt-scan.c
diff options
context:
space:
mode:
authorMartin Mares <mj@ucw.cz>1998-10-18 14:50:43 +0200
committerMartin Mares <mj@ucw.cz>1998-10-18 14:50:43 +0200
commit7e7790c61f14dff300d7c5464fdd47e4c15a0731 (patch)
treefaa06678f7dc7bf821af328f29211a03a7ee7b3a /sysdep/linux/krt-scan.c
parent8b1688177b2b3c6a3740f792997f3057b9bff0da (diff)
downloadbird-7e7790c61f14dff300d7c5464fdd47e4c15a0731.tar
bird-7e7790c61f14dff300d7c5464fdd47e4c15a0731.zip
Since almost every UNIX system requires different techniques for reading
the kernel routing table as opposed to modifying it which is approximately the same on non-netlink systems, I've split the kernel routing table routines to read and write parts. To be implemented later ;-)
Diffstat (limited to 'sysdep/linux/krt-scan.c')
-rw-r--r--sysdep/linux/krt-scan.c58
1 files changed, 58 insertions, 0 deletions
diff --git a/sysdep/linux/krt-scan.c b/sysdep/linux/krt-scan.c
new file mode 100644
index 0000000..caae54d
--- /dev/null
+++ b/sysdep/linux/krt-scan.c
@@ -0,0 +1,58 @@
+/*
+ * BIRD -- Linux Routing Table Scanning
+ *
+ * (c) 1998 Martin Mares <mj@ucw.cz>
+ *
+ * Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <string.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 "lib/unix.h"
+#include "lib/krt.h"
+
+#define SCANOPT struct krt_scan_params *p = &x->scanopt
+
+static void
+krt_scan_fire(timer *t)
+{
+ DBG("Scanning kernel table...\n");
+}
+
+void
+krt_scan_preconfig(struct krt_proto *x)
+{
+ SCANOPT;
+
+ p->recurrence = 10; /* FIXME: use reasonable default value */
+}
+
+void
+krt_scan_start(struct krt_proto *x)
+{
+ SCANOPT;
+ timer *t = tm_new(x->p.pool);
+
+ p->timer = t;
+ t->hook = krt_scan_fire;
+ t->data = x;
+ t->recurrent = p->recurrence;
+ krt_scan_fire(t);
+ if (t->recurrent)
+ tm_start(t, t->recurrent);
+}
+
+void
+krt_scan_shutdown(struct krt_proto *x)
+{
+ SCANOPT;
+
+ tm_stop(p->timer);
+}