doc: update TODO
the TODO was last touched in 2006. This is a first pass at cleaning it
up, motivated primarily by the need for an up-to-date idea list for the
Google Summer of Code 2013.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
diff --git a/TODO b/TODO
index 24941de..0da3553 100644
--- a/TODO
+++ b/TODO
@@ -1,78 +1,188 @@
Quagga TODO list
- 2004/11/24
+ 2013-03-29
-zebra:
-o Pointopoint address configuration.
-o Multiple (alias) address configuration for the interface when kernel
- support it [just starting].
-o improve rtnetlink to handle sequence number tracking and reconciliation
- and resyncs.
-o Add support for valid and preferred lifetimes to IPv6 addresses
-o proper support for (at least) 1-level recursive routes
-o Ability to set src on routes, where systems support it.
-o Ability to apply route-maps to daemon route updates.
+This is the Quagga primary TODO list. It is on git because that way changes
+pass through the usual process just like code does, therefore they will have
+the same visibility.
-bgpd:
+If you are working on something beyond a simple fix, to avoid double work it
+is a good idea to submit a patch to this TODO list when you are starting,
+listing what you're doing. Also, as others may have done just that, check
+the list before starting.
-o BGP TCP MD5 authentication by password command.
-o HUP signal support (reload configuration file).
-o BGP multi-path extension
-o move FSM state to be per-connection, not per-peer.
-o Add support for internal and minimum-metric MED setting
+Google Summer of Code 2013 note: this list double-serves as idea list for the
+Summer of Code. Ideas considered suitable for students are marked with a star
+after the number, like this: "[Q999*] achieve world peace". They will also
+have extended descriptions. Nevertheless, if you'd like to do something else,
+just write a mail to the mailing list: quagga-dev@lists.quagga.net
-ripd:
+"GSoC-Mentors:" listings are preliminary at this point.
-o Multipath support.
+
+Overall
+=======
+
+[Q000] improve unit test architecture
+
+[Q001] kick invalid runtime tests from configure.ac, use list of supported
+ OSes and their APIs instead.
+ Priority: low
+ State: patch half-done 2013-03-29 David Lamparter
+
+[Q002*] clean up zebra IPC, remove code duplication, align to common API
+ Priority: high
+ GSoC-Mentors: David Lamparter, Christian Franke
+
+ Quagga posesses an IPC mechanism to exchange route information among
+ the different daemons and Zebra, the kernel-interface. This mechanism
+ is implemented in libzebra, but is currently used in all sorts of
+ different ways in the individual protocol daemons. Also, in the future
+ the entire protocol needs to be redone in an extensible way, so we're
+ able to support MPLS, BFD, Multi-Topology/Instance, VRFs, ...
+
+ This TODO entry only refers to the first-step API cleanup. All the
+ daemons need to use a single, well-defined libzebra API. Only after
+ this has been addressed can we look upon changing the protocol itself,
+ since by then it will be encapsulated inside libzebra.
+
+[Q003] add multi-instance / multi-topology support to the individual protocols
+
+[Q004] MPLS support
+ State: work in progress 2013-03-29 Renato Westphal, Timo Teräs
+
+[Q005] BFD support
+ State: two old implementations exist, contact Hasso Tepper
+
+
+library
+=======
+
+[L000] improve route_table speed, eg strided lookups for common prefix depths.
+
+[L001] ipv6 addresses need concept of valid/preferred
+
+[L002] implement a generic daemon access/control protocol (eg D-Bus like?
+ simplified SNMP-a-like? NETCONF?)
+
+[L003] extend vty command definitions to allow them to be self-documenting
+ i18n command help strings
+
+[L004] create a common libspf (for ospfd, ospf6d and possibly isisd and more).
+ cf. TODO item [O000] for the ospfd/ospf6d specific variant
+
+[L005] stabilise the API (possibly including symbol/library versioning voodoo)
+
+[L006] Document the exported API (DocBook/Doxygen?)
+
+[LE00] incorporate library changes from Euro-IX branch, except threading
+
+[LE01] incorporate threading library support from Euro-IX branch
+
+
+zebra
+=====
+
+[Z000] Pointopoint address configuration.
+ Priority: low
+ State: patch done & tested 2013-03-29 David Lamparter
+
+[Z001] Add support for valid and preferred lifetimes to IPv6 addresses
+
+[Z002] proper support for (at least) 1-level recursive routes
+ Priority: high
+
+[Z003] Ability to set src on routes, where systems support it.
+
+[Z004] Ability to apply route-maps to daemon route updates.
+
+
+bgpd
+====
+
+[B000] HUP signal support (reload configuration file).
+
+[B001] BGP multi-path extension, relaxed mode
+ Priority: medium
+
+[B002] move FSM state to be per-connection, not per-peer.
+
+[B003] Add support for internal and minimum-metric MED setting
+
+
+ripd
+====
+
+[R000] Multipath support.
+
+
+ospfd/ospf6d
+============
+
+[O000] move SPF to common code
+
+[O001] extend code sharing between ospfd and ospf6d beyond SPF
+
+[O002*] OSPF testing replay tool
+ Priority: medium
+ GSoC-Mentors: Martin Winter, Christian Franke, David Lamparter
+
+ In order to extensively test OSPF implementations, a tool to fake an
+ OSPF neighbor is immensely useful. This tool needs to be capable of
+ forming an adjacency and pushing LSAs to the device to be tested. To
+ maintain the adjacency, some minimal state tracking is useful.
+
+ In total, the tool needs to form an adjacency, read and push LSAs, and
+ output received LSAs. Additional tools to generate LSAs from
+ specifications as well as verify received LSA correctness can then be
+ built on top of that.
+
+ The tool needs to support IPv4 and IPv6, possibly split into 2 tools
+ with some code sharing.
ospfd:
-o Rewrite the incremental RT update code.
-o Demand circuits.
-o Multiple instances.
-o OSPF MIB [SNMP get is amost finished].
-o HUP signal treatment.
-o Fragment Oversized LSAs
-o move SPF to common code
-o NSSA priority rules (RFC3101 2.4)
-o Type-7 address ranges (RFC3101 2.2)
-o Originating Type-7 default into area (RFC3101 2.7)
+[O400] Demand circuits.
+ Priority: very low
+
+[O401] Multiple instances.
+ Priority: medium
+
+[O402] HUP signal treatment.
+ Priority: medium
+ State: patch on ML needs review 2012-06-04 Mattias Walström
ospf6d:
-o move SPF to common code
-o add router-id lookups
+[O600] fix ospf6d in general
+ Priority: high
+ State: patches tickling in from Cumulus Networks 2013-03-29 Dinesh Dutt
-isisd:
+isisd
+=====
-o finish SPF
-o select nearest L2 when running SPF for L1
-o remove the routes when holding time for nexthop expires
-o redistribution
-o autosummary
+[I000] reassess isisd TODO
-o Mesh groups (RFC2973)
-o Crypto authentication (RFC3567)
+[I001*] IS-IS testing replay tool
+ Priority: medium
+ GSoC-Mentors: Martin Winter, Christian Franke, David Lamparter
-lib:
-o improve route_table speed, eg strided lookups for common prefix depths.
-o improve hash tables, eg auto-growing hash tables
-o move performance sensitive users of hashes over to jhash
-o clean up linked lists
-o ipv6 addresses need concept of valid/preferred
-o implement a generic daemon access/control protocol (eg D-Bus like?
- simplified SNMP-a-like?)
-o merge SPF code from ospfd and ospf6d into a common libspf
-o depends-on(generic A/C protocol) move snmp to seperate daemon
-o extend command definitions to allow them to be self-documenting
-o i18n command help strings
-o Document the exported API (DocBook/Doxygen?)
+ see [O002*].
-vtysh:
-o untangle readline specific bits
-o add a vtyd with a vty (ie telnet) frontend (as opposed to readline)
-o depends-on(generic A/C protocol) use such
-o better AAA support than just PAM, eg krb5, SASL, LDAP..
- -----------------------------
+[I002] Mesh groups (RFC2973)
+
+[I003] Crypto authentication (RFC3567)
+
+
+vtysh
+=====
+
+[V000] untangle readline specific bits
+
+[V001] add a vtyd with a vty (ie telnet) frontend (as opposed to readline)
+
+[V002] (=> [L002]) use daemon control protocol
+
+[V003] better AAA support than just PAM, eg krb5, SASL, LDAP...