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 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 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