Don't enable dnsmasq IPSET functionality on 2.4 kernel
[tomato.git] / release / src / router / radvd / TODO
blob751c12c1d986827f5fd49175c26ea61baa7de159
2                        NOTE WELL
3                        =========
5         *NONE* of the items are being actively worked on.
6         So, if you're interested in one of these features,
7         it means you'll have to submit a patch... :-)
10 read list of interfaces with SIOCGIFCONF (AF_INET6 support in the kernel would
11 be nice) or from /proc
13 Quoting Peter Bieringer (peter@bieringer.de):
14 > Das war's schon. Ach ja, wenn Du mal eine neue Version machst, kannst Du
15 > noch einen Schalter einbauen, damit radvd trotz debug-level >0 auf Wunsch
16 > als daemon in den Hintergrund starten kann?
17 [ Peter wants that a debugging level greater than 0 doesn't stop radvd
18 from forking.]
20 support for few protocol constants defined in RFC 4861 Sec 10 is missing.
22 consider whether UnicastOnly flag should be detected by radvdump.
24 read the man pages one more time and make sure their are understandable
25 and English is correct
27 The following parts of RFC4861 are not implemented:
28  - section 6.2.5: when AdvSendAdvertisements changes to FALSE, we don't send 
29    a final RA with zero Router Lifetime (we just send it when shutting down).
30    (SHOULD)
31  - section 6.2.8: if the link-local address of the router changes, it should
32    multicast a few RAs from the old address with zero router lifetime, and a
33    few from the new address. (SHOULD).
35 Consider whether to support RFC 4286 (Multicast Router Discovery).
37 Consider whether to support multiple IPv4 addresses with Base6to4Interface
38 (currently the code just picks one).
40 Consider whether to support multiple prefixes and routes with a single
41 configuration line (instead of having to specify each prefix/route
42 separately) somewhat similar to how RDNSS configuration already supports.
44 Consider whether to support a generalization of Base6to4Interface for
45 arbitrary IPv6 prefixes, to be used for automatic generation of downstream
46 prefixes.  Also consider whether this would need to support multiple IPv6
47 prefixes on the upstream interfaces.  See question 3 in README for more on
48 this.
50 Use getifaddrs() instead of ioctl SIOCGIFADDR and other friends.  The
51 problem with this is that e.g. RHL73's glibc didn't support getifaddrs(),
52 and before glibc 2.3.3 getifaddrs() didn't use netlink so it didn't work
53 well with IPv6.  These old compat concerns are likely moot now..
55 Consider whether radvd should work around missing/broken interfaces by
56 default, especially if a previously working interface gets disabled.
58 Implement Secure Neighbor Discovery (RFC 3971).
60 Interface reconfiguration is only supported on Linux.  Consider whether to
61 support that (and privilege separation as a result) on BSD as well.
63 The restrictions of the (privilege separation) master process could
64 be restricted as currently it basically only needs to write to /proc,
65 do some logging and nothing else.
67 radvd does not support splitting up RAs to multiple packets (RFC4861 6.2.3
68 last paragraph). In practise this limits advertising to ~45 prefixes on a 
69 link, but there is no reason to be able to so.  In order to avoid
70 fragmenting packets yet support receiving full-size frames, our hack is to
71 have a bigger receive than send buffer. We could try using setsockopt
72 IPV6_DONTFRAG, but at least Linux glibc doesn't appear to support it yet.
74 Triggered by: https://bugzilla.redhat.com/show_bug.cgi?id=554125
75 Known problems (probably can't do anything about these):
76  - If interface MAC address changes, radvd will keep sending the old MAC
77    in its LL option (until HUP signal).  The kernel will keep sending
78    Ethernet frames with the old MAC until interface is flapped.
79    More: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=508466
81 http://lists.litech.org/pipermail/radvd-devel-l/2009-August/000420.html
82 localtime() used in vlog() is not reentrant, and is not safe in signal
83 handling context.  There may be other such functions as well. It's not clear
84 what could be done about that.