diff options
-rw-r--r-- | TODO | 24 | ||||
-rw-r--r-- | nest/iface.c | 2 | ||||
-rw-r--r-- | nest/iface.h | 1 | ||||
-rw-r--r-- | nest/route.h | 1 | ||||
-rw-r--r-- | sysdep/linux/krt-scan.c | 2 | ||||
-rw-r--r-- | sysdep/linux/netlink/netlink.c | 7 | ||||
-rw-r--r-- | sysdep/unix/krt-iface.c | 6 |
7 files changed, 30 insertions, 13 deletions
@@ -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 be087ff4..4f12365c 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 87c4e93f..64bc6b4c 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 41d188da..903e9b93 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 3f3def1a..10a40b7a 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 25d8fc03..11973e93 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 e9df6e43..8c82ffdf 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) |