TODO 2.76 KB
Newer Older
1 2
Core
~~~~
3
- config: when parsing prefix, check zero bits
4
- config: try to unify expressions
5

6
- static: check validity of route destination?
7

Martin Mareš's avatar
Martin Mareš committed
8
- configure: default CFLAGS?
Martin Mareš's avatar
Martin Mareš committed
9

10
- filters: deletion of mandatory attributes?
11 12 13
- filters: user defined attributes?

- cli: show tables?
Martin Mareš's avatar
Martin Mareš committed
14 15 16 17 18 19
- cli: show where is routed given IP address?

- client: Ctrl-R eats one more enter
- client: paging?
- client: data losses on large dumps?

20
- table: ocassional core dumps in rt_prune()
21 22
- table: filtering of old routes during updates?
- table: do feeding by parts
23

Martin Mareš's avatar
Martin Mareš committed
24 25
- bgp: timing of updates?
- bgp: dump and get_route_info
26
- bgp: when protocol is down, don't print Idle state
Martin Mareš's avatar
Martin Mareš committed
27

28
- proto: Don't show repeated `Changed state to ...' messages if only internal states change
Martin Mareš's avatar
Martin Mareš committed
29

30 31
- iface: Don't complain about missing broadcast addresses.

Martin Mareš's avatar
Martin Mareš committed
32 33 34 35
Documentation
~~~~~~~~~~~~~
- write doctool
- write documentation :|
36

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

Various ideas
~~~~~~~~~~~~~
58 59
- static: allow specifying a per-route filter program for setting route attributes?
- netlink: realms
60
- netlink: import Linux route attributes to our rta's, so that they can be filtered?
61
- config: executable config files
62
- client: access control
63
- io: use poll if available
64
- IPv6 router advertisements
Martin Mareš's avatar
Martin Mareš committed
65 66
- real multipath (doesn't seem to be simple at all :()
- fake multipath (even less simple)
Martin Mareš's avatar
Martin Mareš committed
67
- route recalculation timing and flap dampening [see RFC2439 for algorithms]
68
- aggregate engine: standard route aggregation and summarization [RFC2519]
Martin Mareš's avatar
Martin Mareš committed
69 70 71
- 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?)
72
- look at RFC 2386 (QoS-based routing)
73 74


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