Minor cleanups.
This commit is contained in:
parent
e693ddff87
commit
476e108425
7 changed files with 30 additions and 13 deletions
24
TODO
24
TODO
|
@ -1,13 +1,17 @@
|
||||||
Core
|
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
|
- better memory allocators
|
||||||
- real attribute cache
|
- real attribute cache
|
||||||
- real neighbor 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: check validity of route destination?
|
||||||
- static: allow specifying a per-route filter program for setting route attributes?
|
- 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: when parsing prefix, check zero bits
|
||||||
- config: reconfiguration
|
- config: reconfiguration
|
||||||
- config: useless rules when protocols disabled
|
- config: useless rules when protocols disabled
|
||||||
|
- config: remove protocol startup priority hacks?
|
||||||
|
- config: better datetime format
|
||||||
|
|
||||||
- krt: rescan interfaces when route addition fails?
|
- krt: rescan interfaces when route addition fails?
|
||||||
- krt: does PERSIST mode have any sense if kernel syncer is shut down as last?
|
- krt: does PERSIST mode have any sense if kernel syncer is shut down as last?
|
||||||
|
|
||||||
- tagging of external routes?
|
- tagging of external routes?
|
||||||
|
|
||||||
|
- io: use poll if available
|
||||||
|
|
||||||
- port to FreeBSD
|
- port to FreeBSD
|
||||||
|
|
||||||
Commands
|
Commands
|
||||||
|
@ -41,6 +49,16 @@ show <name> # show everything you know about symbol <name>
|
||||||
static ??? [<name>]
|
static ??? [<name>]
|
||||||
symbols
|
symbols
|
||||||
(disable|enable|restart) <protocol> # or ALL?
|
(disable|enable|restart) <protocol> # or ALL?
|
||||||
|
- showing of routing table as seen by given protocol
|
||||||
|
|
||||||
|
Client
|
||||||
|
~~~~~~
|
||||||
|
- write it!
|
||||||
|
|
||||||
|
Documentation
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
- write doctool
|
||||||
|
- write documentation :|
|
||||||
|
|
||||||
Cleanup
|
Cleanup
|
||||||
~~~~~~~
|
~~~~~~~
|
||||||
|
|
|
@ -224,8 +224,6 @@ if_dump(struct iface *i)
|
||||||
debug(" BC");
|
debug(" BC");
|
||||||
if (i->flags & IF_MULTICAST)
|
if (i->flags & IF_MULTICAST)
|
||||||
debug(" MC");
|
debug(" MC");
|
||||||
if (i->flags & IF_TUNNEL)
|
|
||||||
debug(" TUNL");
|
|
||||||
if (i->flags & IF_LOOPBACK)
|
if (i->flags & IF_LOOPBACK)
|
||||||
debug(" LOOP");
|
debug(" LOOP");
|
||||||
if (i->flags & IF_IGNORE)
|
if (i->flags & IF_IGNORE)
|
||||||
|
|
|
@ -43,7 +43,6 @@ struct iface {
|
||||||
#define IF_UNNUMBERED 4
|
#define IF_UNNUMBERED 4
|
||||||
#define IF_BROADCAST 8
|
#define IF_BROADCAST 8
|
||||||
#define IF_MULTICAST 0x10
|
#define IF_MULTICAST 0x10
|
||||||
#define IF_TUNNEL 0x20 /* FIXME: Remove? */
|
|
||||||
#define IF_ADMIN_DOWN 0x40
|
#define IF_ADMIN_DOWN 0x40
|
||||||
#define IF_LOOPBACK 0x80
|
#define IF_LOOPBACK 0x80
|
||||||
#define IF_IGNORE 0x100 /* Not to be used by routing protocols (loopbacks etc.) */
|
#define IF_IGNORE 0x100 /* Not to be used by routing protocols (loopbacks etc.) */
|
||||||
|
|
|
@ -270,7 +270,6 @@ typedef struct eattr {
|
||||||
} u;
|
} u;
|
||||||
} eattr;
|
} eattr;
|
||||||
|
|
||||||
/* FIXME: Introduce real protocol numbers? */
|
|
||||||
#define EAP_GENERIC 0 /* Generic attributes */
|
#define EAP_GENERIC 0 /* Generic attributes */
|
||||||
#define EAP_BGP 1 /* BGP attributes */
|
#define EAP_BGP 1 /* BGP attributes */
|
||||||
#define EAP_RIP 2 /* RIP */
|
#define EAP_RIP 2 /* RIP */
|
||||||
|
|
|
@ -103,7 +103,7 @@ krt_parse_entry(byte *ent, struct krt_proto *p)
|
||||||
if (ng)
|
if (ng)
|
||||||
a.iface = ng->iface;
|
a.iface = ng->iface;
|
||||||
else
|
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);
|
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.dest = RTD_ROUTER;
|
||||||
a.gw = gw;
|
a.gw = gw;
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
#include <linux/netlink.h>
|
#include <linux/netlink.h>
|
||||||
#include <linux/rtnetlink.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
|
#define MSG_TRUNC 0x20
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ nl_error(struct nlmsghdr *h)
|
||||||
e = (struct nlmsgerr *) NLMSG_DATA(h);
|
e = (struct nlmsgerr *) NLMSG_DATA(h);
|
||||||
ec = -e->error;
|
ec = -e->error;
|
||||||
if (ec)
|
if (ec)
|
||||||
log(L_WARN "Netlink: %s", strerror(ec)); /* FIXME: Shut up? */
|
log(L_WARN "Netlink: %s", strerror(ec));
|
||||||
return 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_type = new ? RTM_NEWROUTE : RTM_DELROUTE;
|
||||||
r.h.nlmsg_len = NLMSG_LENGTH(sizeof(struct rtmsg));
|
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);
|
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_family = BIRD_AF;
|
||||||
r.r.rtm_dst_len = net->n.pxlen;
|
r.r.rtm_dst_len = net->n.pxlen;
|
||||||
|
@ -666,7 +665,7 @@ nl_parse_route(struct nlmsghdr *h, int scan)
|
||||||
if (ng)
|
if (ng)
|
||||||
ra.iface = ng->iface;
|
ra.iface = ng->iface;
|
||||||
else
|
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);
|
log(L_WARN "Kernel told us to use non-neighbor %I for %I/%d", ra.gw, net->n.prefix, net->n.pxlen);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -191,7 +191,11 @@ krt_if_scan(struct kif_proto *p)
|
||||||
break;
|
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_req = NULL;
|
||||||
ic.ifc_len = 999999999;
|
ic.ifc_len = 999999999;
|
||||||
if (ioctl(if_scan_sock, SIOCGIFCONF, &ic) < 0)
|
if (ioctl(if_scan_sock, SIOCGIFCONF, &ic) < 0)
|
||||||
|
|
Loading…
Reference in a new issue