]> git.ipfire.org Git - thirdparty/bird.git/blob - TODO
Added the introduction chapter of progdoc.
[thirdparty/bird.git] / TODO
1 Core
2 ~~~~
3 - client: Ctrl-R eats one more enter
4 - client: paging?
5 - client: data losses on large dumps?
6
7 Documentation
8 ~~~~~~~~~~~~~
9 - write doctool
10 - write documentation :|
11
12 Globals
13 ~~~~~~~
14 - right usage of DBG vs. debug
15 - logging and tracing; use appropriate log levels
16 - check incoming packets and log errors!!
17 - check log calls for trailing newlines and log levels followed by comma
18 - check if all protocols set proper packet priorities and TTL's.
19 - try compiling with -Wunused
20 - does everybody test return value of sk_open?
21 - doc: references to RFC's we did follow
22 - protocols: implement CLI hooks and per-procotol CLI commands
23 - protocols: implement reconfigure hook
24 - protocols: use locking
25 - check use of system includes and sprintf()
26
27 Various ideas
28 ~~~~~~~~~~~~~
29 - static: allow specifying a per-route filter program for setting route attributes?
30 - bgp: timing of updates?
31 - netlink: realms
32 - netlink: import Linux route attributes to our rta's, so that they can be filtered?
33 - config: executable config files
34 - filters: user defined attributes?
35 - client: access control
36 - io: use poll if available
37 - IPv6 router advertisements
38 - real multipath (doesn't seem to be simple at all :()
39 - fake multipath (even less simple)
40 - route recalculation timing and flap dampening [see RFC2439 for algorithms]
41 - aggregate engine: standard route aggregation and summarization [RFC2519]
42 - aggregate engine: injection of manually configured pseudo-static routes
43 - generate default route if any working BGP connection exists (aggregate engine again?)
44 - generate default route to IGP's (aggregate engine yet another time?)
45 - look at RFC 2386 (QoS-based routing)
46 - cli: show tables?
47
48 OSPF
49 ~~~~
50 - refuse running on non-multicast devices
51 - importing of device routes for networks where we don't run OSPF
52 - check incoming packets using neighbor cache
53 - RFC2328 appendix E: Use a better algorithm
54 - automatic generation of external route tags (RFC1403)
55 - RFC1587 NSSA areas
56 - RFC2370 opaque LSA's
57 - respect interface MTU and try not to create larger packets unless unavoidable
58
59 Documentation (sorry, its in czech)
60 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
61
62 K SGML:
63
64 o Mohl bys, prosim, nekam napsat, co je vsechno potreba udelat, aby bylo
65 dokumentaci mozno postavit? Skoncil jsem u toho, ze jsem do doc/sbase/
66 zkopiroval spoustu souboru z /usr/lib/sgml-tools a pridal nekolik symlinku
67 -- ted uz sice dokumentaci vygeneruji, ale asi to neni ta spravna cesta.
68
69 K HTML:
70
71 o "2000" zcela vypadava mimo hlavicku.
72 o Zkusit HTML projet nejakym validatorem.
73
74 Uvod:
75
76 o Chybi sekce popisujici instalaci, spousteni a command-line options.
77 o "About routing tables" by melo byt podstatne podrobnejsi (vysvetlit, co vlastne
78 routovaci tabulky jsou, co obsahuji, ze vubec existuji nejake atributy, k cemu
79 slouzi, ze nektere tabulky jsou synchronizovane s kernelem, zatimco jine nikoliv,
80 ze lze prenaset routy mezi tabulkami (odkaz na protokol pipe), ze k tabulkam
81 jsou pres filtry pripojeny protokoly atd.) Asi z toho udelat samostatnou kapitolu.
82 o Zminit logy a kategorie hlasek.
83 o Chybi installation requirements: tedy ze potrebujeme GCC a GNU make.
84
85 Filtry:
86
87 o Napsat neco o tom, jak filtry debugovat -- ze existuje trasovani filtru
88 a CLI command pro vypsani routovaci tabulky tak, jak projde filtrem ci tak,
89 jak ji vidi dany protokol.
90 o `filters internally work ...' patri do progdoc.
91 o Vysvetlit nesting a zastinovani.
92 o Nadefinovat, co se stane, kdyz funkce nevrati hodnotu, i kdyz ma.
93 o ip: IPv4/IPv6 nezavisi na verzi BIRDa, nybrz na compile-time konfiguraci.
94 o ip: .mask zminit zvlast mezi specialnimi operatory.
95 o set: lepe vysvetlit matchovani prefixu, ukazat na prikladu.
96 o bgppath: list of autonomous system _numbers_
97 o bgpmask: vysvetlit matchovani.
98 o operations: prejmenovat na `operators', mela by to asi byt tabulka
99 operatoru, u kazdeho receno, na jakych typech je definovan a jakeho
100 typu je vysledek.
101 o attributes: nemyslim, ze jsou vsechny -- co treba scope a preference?
102 o print: a coz takhle printn apod.?
103 o Mezi prikazy nikde neni zminen napriklad accept a reject.
104 o Co se stane, kdyz filtr skonci, aniz by vydal verdikt?
105
106 Protocols:
107
108 o RIP: Per-interface optiony uvadet tez jako definition list.
109 o passwords: syntaxe data uz, tusim, davno vypada jinak.
110
111 Struktura dokumentace:
112
113 o Chybi kapitola o CLI a o clientovi.
114 o Na konci (nebo ve zvlast sekci pro kazdy protokol?) by mel byt seznam referenci
115 na vsechny mozne dokumenty, zejmena vsak vsechna RFC, kterymi se ridime nebo
116 ktera maji neco spolecneho s tim, co delame (napriklad RPSL).
117
118 K jazyku:
119
120 o K "BIRD Internet Routing Daemon" by mel patrit urcity clen.
121 o Pokud je v zavorce cela veta, patri pred ')' tecka, pokud neni, tak
122 nepatri.
123 o Davej si pozor na rody -- router je vzdycky `it', nikdy `he'.
124
125 > > Nechtel bys kapitolu o clientovy napsat ty? Ja o nem nic nevim, a
126 > > kvalita uzivatelske dokumentace je o hodne dulezitejsi nez
127 > > programatorske.
128 >
129 > O clientovi neni temer co psat, commandy si, myslim, snadno najdes v config.Y.
130 > Protokol je velice jednoduchy: uzivatel posila prikazy, BIRD odpovida radky
131 > typu CCCCs..., kde CCCC je kod hlasky (viz doc/reply-codes), `s' je whitespace,
132 > `...' hlaska. Viceradkove odpovedi maji na vsech radcich mimo posledniho misto `s'
133 > minus a nebo na druhem az predposlednim radku misto celeho prefixu jen whitespace
134 > (presne jako ve FTP).
135
136 Jeste by to chtelo trosku podrobneji:
137
138 (1) zminit se o atributech, rici, co vsechno o route rikaji a odkazat
139 na kapitolu o filtrech, kde jsou presne nadefinovany
140 (2) kdyz mluvis o preferenci, mel bys rici, co to je (ze to je atribut)
141 a kdo jej vlastne nastavuje (ze existuje globalni default pro typ
142 protokolu, ktery muzes overridovat v konfiguraci protokolu, coz
143 muzes pro konkretni routu overridovat filtrem).
144 (3) popsat spojeni mezi routovacimi tabulkami, filtry a protokoly