summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--TODO24
-rw-r--r--nest/iface.c2
-rw-r--r--nest/iface.h1
-rw-r--r--nest/route.h1
-rw-r--r--sysdep/linux/krt-scan.c2
-rw-r--r--sysdep/linux/netlink/netlink.c7
-rw-r--r--sysdep/unix/krt-iface.c6
7 files changed, 30 insertions, 13 deletions
diff --git a/TODO b/TODO
index 475c545..79efcb0 100644
--- a/TODO
+++ b/TODO
@@ -1,13 +1,17 @@
Core
~~~~
-- IPv6 support
+- IPv6: router advertisements
+- IPv6: test it!
+- IPv6: hashing functions etc.
+
+- krt-iface: check whether the interface alias hack works
+- krt-iface and netlink: unnumberedness of tunnels
-- counters (according to SNMP MIB?)
- better memory allocators
- real attribute cache
- real neighbor cache
-- default preferences of protocols: prefer BGP over OSPF/RIP external routes?
+- preferences of protocols
- static: check validity of route destination?
- static: allow specifying a per-route filter program for setting route attributes?
@@ -23,12 +27,16 @@ Core
- config: when parsing prefix, check zero bits
- config: reconfiguration
- config: useless rules when protocols disabled
+- config: remove protocol startup priority hacks?
+- config: better datetime format
- krt: rescan interfaces when route addition fails?
- krt: does PERSIST mode have any sense if kernel syncer is shut down as last?
- tagging of external routes?
+- io: use poll if available
+
- port to FreeBSD
Commands
@@ -41,6 +49,16 @@ show <name> # show everything you know about symbol <name>
static ??? [<name>]
symbols
(disable|enable|restart) <protocol> # or ALL?
+- showing of routing table as seen by given protocol
+
+Client
+~~~~~~
+- write it!
+
+Documentation
+~~~~~~~~~~~~~
+- write doctool
+- write documentation :|
Cleanup
~~~~~~~
diff --git a/nest/iface.c b/nest/iface.c
index be087ff..4f12365 100644
--- a/nest/iface.c
+++ b/nest/iface.c
@@ -224,8 +224,6 @@ if_dump(struct iface *i)
debug(" BC");
if (i->flags & IF_MULTICAST)
debug(" MC");
- if (i->flags & IF_TUNNEL)
- debug(" TUNL");
if (i->flags & IF_LOOPBACK)
debug(" LOOP");
if (i->flags & IF_IGNORE)
diff --git a/nest/iface.h b/nest/iface.h
index 87c4e93..64bc6b4 100644
--- a/nest/iface.h
+++ b/nest/iface.h
@@ -43,7 +43,6 @@ struct iface {
#define IF_UNNUMBERED 4
#define IF_BROADCAST 8
#define IF_MULTICAST 0x10
-#define IF_TUNNEL 0x20 /* FIXME: Remove? */
#define IF_ADMIN_DOWN 0x40
#define IF_LOOPBACK 0x80
#define IF_IGNORE 0x100 /* Not to be used by routing protocols (loopbacks etc.) */
diff --git a/nest/route.h b/nest/route.h
index 41d188d..903e9b9 100644
--- a/nest/route.h
+++ b/nest/route.h
@@ -270,7 +270,6 @@ typedef struct eattr {
} u;
} eattr;
-/* FIXME: Introduce real protocol numbers? */
#define EAP_GENERIC 0 /* Generic attributes */
#define EAP_BGP 1 /* BGP attributes */
#define EAP_RIP 2 /* RIP */
diff --git a/sysdep/linux/krt-scan.c b/sysdep/linux/krt-scan.c
index 3f3def1..10a40b7 100644
--- a/sysdep/linux/krt-scan.c
+++ b/sysdep/linux/krt-scan.c
@@ -103,7 +103,7 @@ krt_parse_entry(byte *ent, struct krt_proto *p)
if (ng)
a.iface = ng->iface;
else
- /* FIXME: Remove this warning? */
+ /* FIXME: Remove this warning? Handle it somehow... */
log(L_WARN "Kernel told us to use non-neighbor %I for %I/%d", gw, net->n.prefix, net->n.pxlen);
a.dest = RTD_ROUTER;
a.gw = gw;
diff --git a/sysdep/linux/netlink/netlink.c b/sysdep/linux/netlink/netlink.c
index 25d8fc0..11973e9 100644
--- a/sysdep/linux/netlink/netlink.c
+++ b/sysdep/linux/netlink/netlink.c
@@ -30,7 +30,7 @@
#include <linux/netlink.h>
#include <linux/rtnetlink.h>
-#ifndef MSG_TRUNC /* FIXME: Hack to circumvent omissions in glibc includes */
+#ifndef MSG_TRUNC /* Hack: Several versions of glibc miss this one :( */
#define MSG_TRUNC 0x20
#endif
@@ -143,7 +143,7 @@ nl_error(struct nlmsghdr *h)
e = (struct nlmsgerr *) NLMSG_DATA(h);
ec = -e->error;
if (ec)
- log(L_WARN "Netlink: %s", strerror(ec)); /* FIXME: Shut up? */
+ log(L_WARN "Netlink: %s", strerror(ec));
return ec;
}
@@ -472,7 +472,6 @@ nl_send_route(struct krt_proto *p, rte *e, int new)
r.h.nlmsg_type = new ? RTM_NEWROUTE : RTM_DELROUTE;
r.h.nlmsg_len = NLMSG_LENGTH(sizeof(struct rtmsg));
r.h.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK | (new ? NLM_F_CREATE|NLM_F_REPLACE : 0);
- /* FIXME: Do we really need to process ACKs? */
r.r.rtm_family = BIRD_AF;
r.r.rtm_dst_len = net->n.pxlen;
@@ -666,7 +665,7 @@ nl_parse_route(struct nlmsghdr *h, int scan)
if (ng)
ra.iface = ng->iface;
else
- /* FIXME: Remove this warning? */
+ /* FIXME: Remove this warning? Handle it somehow... */
log(L_WARN "Kernel told us to use non-neighbor %I for %I/%d", ra.gw, net->n.prefix, net->n.pxlen);
}
else
diff --git a/sysdep/unix/krt-iface.c b/sysdep/unix/krt-iface.c
index e9df6e4..8c82ffd 100644
--- a/sysdep/unix/krt-iface.c
+++ b/sysdep/unix/krt-iface.c
@@ -191,7 +191,11 @@ krt_if_scan(struct kif_proto *p)
break;
}
}
-#ifdef CLEAN_WAY_WORKING_ONLY_ON_LINUX_2_1 /* FIXME */
+#if 0
+ /*
+ * Linux 2.1 and higher supports this, but it's not needed since
+ * we prefer to use Netlink there anyway.
+ */
ic.ifc_req = NULL;
ic.ifc_len = 999999999;
if (ioctl(if_scan_sock, SIOCGIFCONF, &ic) < 0)