0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-12-22 01:31:55 +00:00
bird/TODO
2000-05-30 10:13:15 +00:00

154 lines
6.2 KiB
Plaintext

Core
~~~~
- client: Ctrl-R eats one more enter
- client: paging?
- client: data losses on large dumps?
Documentation
~~~~~~~~~~~~~
- write doctool
- write documentation :|
Globals
~~~~~~~
- right usage of DBG vs. debug
- logging and tracing; use appropriate log levels
- check incoming packets and log errors!!
- check log calls for trailing newlines and log levels followed by comma
- check if all protocols set proper packet priorities and TTL's.
- try compiling with -Wunused
- does everybody test return value of sk_open?
- doc: references to RFC's we did follow
- protocols: implement CLI hooks and per-procotol CLI commands
- protocols: implement reconfigure hook
- protocols: use locking
- check use of system includes and sprintf()
Various ideas
~~~~~~~~~~~~~
- static: allow specifying a per-route filter program for setting route attributes?
- bgp: timing of updates?
- netlink: realms
- netlink: import Linux route attributes to our rta's, so that they can be filtered?
- config: executable config files
- filters: user defined attributes?
- client: access control
- io: use poll if available
- IPv6 router advertisements
- real multipath (doesn't seem to be simple at all :()
- fake multipath (even less simple)
- route recalculation timing and flap dampening [see RFC2439 for algorithms]
- aggregate engine: standard route aggregation and summarization [RFC2519]
- 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?)
- look at RFC 2386 (QoS-based routing)
- cli: show tables?
OSPF
~~~~
- refuse running on non-multicast devices
- importing of device routes for networks where we don't run OSPF
- check incoming packets using neighbor cache
- RFC2328 appendix E: Use a better algorithm
- automatic generation of external route tags (RFC1403)
- RFC1587 NSSA areas
- RFC2370 opaque LSA's
- respect interface MTU and try not to create larger packets unless unavoidable
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.
o Zkusit HTML projet nejakym validatorem.
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'.
> > 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).
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