TODO 6.25 KB
Newer Older
1 2
Core
~~~~
Martin Mareš's avatar
Martin Mareš committed
3 4 5 6
- client: Ctrl-R eats one more enter
- client: paging?
- client: data losses on large dumps?

Martin Mareš's avatar
Martin Mareš committed
7 8 9 10
Documentation
~~~~~~~~~~~~~
- write doctool
- write documentation :|
11

12
Globals
Martin Mareš's avatar
Martin Mareš committed
13 14 15 16
~~~~~~~
- right usage of DBG vs. debug
- logging and tracing; use appropriate log levels
- check incoming packets and log errors!!
17
- check log calls for trailing newlines and log levels followed by comma
Martin Mareš's avatar
Martin Mareš committed
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 22
- doc: references to RFC's we did follow
- 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()
Martin Mareš's avatar
Martin Mareš committed
26 27 28

Various ideas
~~~~~~~~~~~~~
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
Martin Mareš's avatar
Martin Mareš committed
38 39
- real multipath (doesn't seem to be simple at all :()
- fake multipath (even less simple)
Martin Mareš's avatar
Martin Mareš committed
40
- route recalculation timing and flap dampening [see RFC2439 for algorithms]
41
- aggregate engine: standard route aggregation and summarization [RFC2519]
Martin Mareš's avatar
Martin Mareš committed
42 43 44
- 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?)
45
- look at RFC 2386 (QoS-based routing)
46
- cli: show tables?
47

48 49
OSPF
~~~~
50
	- refuse running on non-multicast devices
51
	- importing of device routes for networks where we don't run OSPF
Martin Mareš's avatar
Martin Mareš committed
52 53
	- check incoming packets using neighbor cache
	- RFC2328 appendix E: Use a better algorithm
54
	- automatic generation of external route tags (RFC1403)
Martin Mareš's avatar
Martin Mareš committed
55 56 57
	- RFC1587 NSSA areas
	- RFC2370 opaque LSA's
	- respect interface MTU and try not to create larger packets unless unavoidable
Pavel Machek's avatar
Pavel Machek committed
58 59 60 61 62 63 64 65 66 67 68 69 70 71

Documentation (sorry, its in czech)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

K SGML:

o  Mohl bys, prosim, nekam napsat, co je vsechno potreba udelat, aby bylo
   dokumentaci mozno postavit? Skoncil jsem u toho, ze jsem do doc/sbase/
   zkopiroval spoustu souboru z /usr/lib/sgml-tools a pridal nekolik symlinku
   -- ted uz sice dokumentaci vygeneruji, ale asi to neni ta spravna cesta.

K HTML:

o  "2000" zcela vypadava mimo hlavicku.
Martin Mareš's avatar
Martin Mareš committed
72
o  Zkusit HTML projet nejakym validatorem.
Pavel Machek's avatar
Pavel Machek committed
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Uvod:

o  Chybi sekce popisujici instalaci, spousteni a command-line options.
o  "About routing tables" by melo byt podstatne podrobnejsi (vysvetlit, co vlastne
   routovaci tabulky jsou, co obsahuji, ze vubec existuji nejake atributy, k cemu
   slouzi, ze nektere tabulky jsou synchronizovane s kernelem, zatimco jine nikoliv,
   ze lze prenaset routy mezi tabulkami (odkaz na protokol pipe), ze k tabulkam
   jsou pres filtry pripojeny protokoly atd.) Asi z toho udelat samostatnou kapitolu.
o  Zminit logy a kategorie hlasek.

Filtry:

o  Napsat neco o tom, jak filtry debugovat -- ze existuje trasovani filtru
   a CLI command pro vypsani routovaci tabulky tak, jak projde filtrem ci tak,
   jak ji vidi dany protokol.
o  `filters internally work ...' patri do progdoc.
o  Vysvetlit nesting a zastinovani.
o  Nadefinovat, co se stane, kdyz funkce nevrati hodnotu, i kdyz ma.
o  Typy: tez rici, ze integery se lisi nejen od booleanu, ale take od enumu.
o  Boolean: TRUE nebo true? U kazdeho typu zminit, jak vypadaji literaly
   tohoto typu a psat je vzdycky tt fontem.
o  int: Nadefinovat rozsah a rici, ze preteceni se nekontroluje. Zminit
   hexadecimalni konstanty.
o  ip: IPv4/IPv6 nezavisi na verzi BIRDa, nybrz na compile-time konfiguraci.
o  ip: .mask zminit zvlast mezi specialnimi operatory.
o  set: lepe vysvetlit matchovani prefixu, ukazat na prikladu.
o  bgppath: list of autonomous system _numbers_
o  bgpmask: vysvetlit matchovani.
o  operations: prejmenovat na `operators', mela by to asi byt tabulka
   operatoru, u kazdeho receno, na jakych typech je definovan a jakeho
   typu je vysledek.
o  operations: ~ pracuje i na clistech, neni-liz pravda?
o  Examply by mohly byt krapet smysluplnejsi.
o  defined(): To, ze undefined attribute cannot be accessed, by melo byt
   rozhodne receno nekde jinde (v uvodu sekce) -- vzdyt u defined samotneho
   to mozne je.
o  attributes: nemyslim, ze jsou vsechny -- co treba scope a preference?
o  print: a coz takhle printn apod.?
o  Mezi prikazy nikde neni zminen napriklad accept a reject.
o  Co se stane, kdyz filtr skonci, aniz by vydal verdikt?

Protocols:

o  RIP: Per-interface optiony uvadet tez jako definition list.
o  passwords: syntaxe data uz, tusim, davno vypada jinak.

Struktura dokumentace:

o  Chybi kapitola o CLI a o clientovi.
o  Na konci (nebo ve zvlast sekci pro kazdy protokol?) by mel byt seznam referenci
   na vsechny mozne dokumenty, zejmena vsak vsechna RFC, kterymi se ridime nebo
   ktera maji neco spolecneho s tim, co delame (napriklad RPSL).

K jazyku:

o  K "BIRD Internet Routing Daemon" by mel patrit urcity clen.
o  Pokud je v zavorce cela veta, patri pred ')' tecka, pokud neni, tak
   nepatri.
o  Davej si pozor na rody -- router je vzdycky `it', nikdy `he'.

134 135 136 137 138 139 140 141 142 143
> > Nechtel bys kapitolu o clientovy napsat ty? Ja o nem nic nevim, a
> > kvalita uzivatelske dokumentace je o hodne dulezitejsi nez
> > programatorske.
>
>    O clientovi neni temer co psat, commandy si, myslim, snadno najdes v config.Y.
> Protokol je velice jednoduchy: uzivatel posila prikazy, BIRD odpovida radky
> typu CCCCs..., kde CCCC je kod hlasky (viz doc/reply-codes), `s' je whitespace,
> `...' hlaska. Viceradkove odpovedi maji na vsech radcich mimo posledniho misto `s'
> minus a nebo na druhem az predposlednim radku misto celeho prefixu jen whitespace
> (presne jako ve FTP).
144 145 146 147 148 149 150 151 152 153

Jeste by to chtelo trosku podrobneji:

(1) zminit se o atributech, rici, co vsechno o route rikaji a odkazat  
    na kapitolu o filtrech, kde jsou presne nadefinovany
(2) kdyz mluvis o preferenci, mel bys rici, co to je (ze to je atribut)
    a kdo jej vlastne nastavuje (ze existuje globalni default pro typ
    protokolu, ktery muzes overridovat v konfiguraci protokolu, coz
    muzes pro konkretni routu overridovat filtrem).
(3) popsat spojeni mezi routovacimi tabulkami, filtry a protokoly