TODO 2.49 KB
Newer Older
1 2
Core
~~~~
3 4
- config: when parsing prefix, check zero bits

5
- static: check validity of route destination?
6
- static: allow specifying a per-route filter program for setting route attributes?
Martin Mareš's avatar
Martin Mareš committed
7

8
- krt: rescan interfaces when route addition fails?
Martin Mareš's avatar
Martin Mareš committed
9 10 11

- tagging of external routes?

12 13
- when an identical route is received, don't trigger updates

Martin Mareš's avatar
Martin Mareš committed
14 15 16
- configure: --enable-ipv6
- configure: IPv6 on glibc 2.0?

Martin Mareš's avatar
Martin Mareš committed
17 18 19 20 21 22 23
- forgetting device routes???
- kernel syncer doesn't support reconfiguration
- filter-defined internal attributes
- netlink: realms

- bgp: wait on restart

24 25
Commands
~~~~~~~~
Martin Mareš's avatar
Martin Mareš committed
26
- showing of routing table as seen by given protocol
27

Martin Mareš's avatar
Martin Mareš committed
28 29 30 31
Documentation
~~~~~~~~~~~~~
- write doctool
- write documentation :|
32

33
Globals
Martin Mareš's avatar
Martin Mareš committed
34 35
~~~~~~~
- right usage of DBG vs. debug
36 37
- kill preconfigs?
- check dump functions
Martin Mareš's avatar
Martin Mareš committed
38 39 40
- cleanup debugging calls
- logging and tracing; use appropriate log levels
- check incoming packets and log errors!!
41
- check log calls for trailing newlines and log levels followed by comma
Martin Mareš's avatar
Martin Mareš committed
42
- check if all protocols set proper packet priorities and TTL's.
Martin Mareš's avatar
Martin Mareš committed
43
- replace all NUM, IPA and expr tokens by constant filter expressions
44
- try compiling with -Wunused
45
- does everybody test return value of sk_open?
46 47
- doc: references to RFC's we did follow
- protocols: implement CLI hooks and per-procotol CLI commands
48
- protocols: implement reconfigure hook
Martin Mareš's avatar
Martin Mareš committed
49
- protocols: use locking
50
- check use of system includes and sprintf()
Martin Mareš's avatar
Martin Mareš committed
51 52 53

Various ideas
~~~~~~~~~~~~~
54
- netlink: import Linux route attributes to our rta's, so that they can be filtered?
55
- config: executable config files
56
- client: access control
57
- io: use poll if available
58
- IPv6 router advertisements
Martin Mareš's avatar
Martin Mareš committed
59 60
- real multipath (doesn't seem to be simple at all :()
- fake multipath (even less simple)
Martin Mareš's avatar
Martin Mareš committed
61
- route recalculation timing and flap dampening [see RFC2439 for algorithms]
62
- aggregate engine: standard route aggregation and summarization [RFC2519]
Martin Mareš's avatar
Martin Mareš committed
63 64 65
- aggregate engine: injection of manually configured pseudo-static routes
- generate default route if any working BGP connection exists (aggregate engine again?)
- generate default route to IGP's (aggregate engine yet another time?)
66
- look at RFC 2386 (QoS-based routing)
67 68


69 70
OSPF
~~~~
71
	- refuse running on non-multicast devices
72
	- importing of device routes for networks where we don't run OSPF
Martin Mareš's avatar
Martin Mareš committed
73 74
	- check incoming packets using neighbor cache
	- RFC2328 appendix E: Use a better algorithm
75
	- automatic generation of external route tags (RFC1403)
Martin Mareš's avatar
Martin Mareš committed
76 77 78
	- RFC1587 NSSA areas
	- RFC2370 opaque LSA's
	- respect interface MTU and try not to create larger packets unless unavoidable