d247d261e5
writing it?)
165 lines
7.1 KiB
Text
165 lines
7.1 KiB
Text
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.
|
|
|
|
Uvod:
|
|
|
|
o "What is bird": tam by melo byt receno, _co_ je BIRD, nikoliv cemu se podoba.
|
|
To obnasi jednak par vet o tom, o co se vlastne snazi, potom nejaky feature
|
|
list (s odkazy do jednotlivych casti dokumentace?) a tez neco na tema "v cem
|
|
jsme lepsi nez konkurence" (a neargumentovat pouze licenci :) ).
|
|
Rovnez tak neni vubec urcen jen pro unixove systemy -- je velice portabilni
|
|
a shodou okolnosti Unix (presneji Linux) je jediny zatim napsany port.
|
|
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 Na zacatku zejmena vysvetlit, jak jsou filtry do systemu zapojeny, k cemu slouzi,
|
|
ze dostanou routu a ocekava se od nich verdikt. Teprve pak vysvetlovat, ze to
|
|
jsou programy, ze mohou volat funkce atd. Tez zminit, ze protokol ma pravo
|
|
nektere routy akceptovat/odmitnout bez toho, aniz by se zeptal filtru.
|
|
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 Popsat runtime errory a ze se chovaji jako rejecty.
|
|
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 Chybi operace na clistech a cestach.
|
|
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 U kazdeho protokolu rici, jestli podporujeme pouze IPv4 nebo i IPv6 verzi.
|
|
o RIP: Vysvetlit, na ktere site se RIP hodi a na ktere ne, rici, ze je
|
|
hodnoty spise historicke, ale ze ve svete IPv6 se bezne pouziva, protoze
|
|
zatim neexistuji slusne implementace OSPFv3.
|
|
o RIP: Per-interface optiony uvadet tez jako definition list.
|
|
o RIP: U RIP-specific atributu zminit, jakeho jsou typu a jak vznikaji.
|
|
o Example u RIPu je out of date: `honour' -> `honor' apod. Tez ukazat
|
|
per-interface optiony.
|
|
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 Nerika se `comparation', nybrz `comparison'.
|
|
o RFC (a ostatni zkratky) psat vzdy velkymi pismeny.
|
|
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).
|