diff --git a/doc/Makefile b/doc/Makefile
new file mode 100644
index 00000000..cef98bf3
--- /dev/null
+++ b/doc/Makefile
@@ -0,0 +1,30 @@
+# Makefile for bird documentation system
+
+
+SHELL = /bin/sh
+
+all: bird.html
+
+clean:
+ rm *.html *.tex *.dvi *.log
+
+%.html: %.sgml
+ ./sgml2html $<
+
+dnl INFO format:
+
+%.info: %.sgml
+ sgml2info $<
+
+dnl TXT format:
+
+%.txt: %.sgml
+ sgml2txt $<
+
+dnl LATEX format:
+
+%.dvi: %.sgml
+ ./sgml2latex $<
+
+%.tex: %.sgml
+ ./sgml2latex --output=tex $<
diff --git a/doc/bird.sgml b/doc/bird.sgml
index 4b744d0c..50da577a 100644
--- a/doc/bird.sgml
+++ b/doc/bird.sgml
@@ -95,9 +95,9 @@ no equivalent of while() or for() command, and recursive functions are not permi
You can find sources of filters language in
filter/ directory. filter/config.Y contains
filter gramar, and basically translates source from user into tree of
-f_inst structures. These trees are later interpreted using
+f_inst structures. These trees are later interpreted using
code in filter/filter.c. Filters internally work with
-values/variables in struct f_val, which contains type of
+values/variables in struct f_val, which contains type of
value and value.
Filter basically looks like this:
@@ -161,10 +161,10 @@ booleans (that is to prevent you from shooting in the foot).
set int looks like
+ but you can not modify them. Constant of type set int looks like
[ 1, 2, 5..7 ]. As you can see, both simple values and ranges are permitted in
sets. Sets of prefixes are special: you can specify which prefixes should match them by
- using [ 1.0.0.0/8+, 2.0.0.0/8-, 3.0.0.0/8{5,6} ]. 3.0.0.0/8{5,6} matches
+ using [ 1.0.0.0/8+, 2.0.0.0/8-, 3.0.0.0/8{5,6} ]. 3.0.0.0/8{5,6} matches
prefixes 3.X.X.X, whose prefixlength is 5 to 6. 3.0.0.0/8+ is shorthand for 3.0.0.0/{0,8},
3.0.0.0/8- is shorthand for 3.0.0.0/{0,7}.
@@ -211,7 +211,7 @@ parameters. They get route table entry as implicit parameter.
Filters support two control structures: if/then/else and
case. Syntax of if/then/else is if expression then
-command; else command; and you can use {
+command; else command; and you can use {
command_1; command_2; ... } instead of one
or both commands. else clause may be ommited. Case is
used like this:
@@ -255,7 +255,7 @@ HREF="fixme">rfc1234.
all, password means that plaintext password is embedded into each packet, and md5 means
that packets are authenticated using md5 cryptographics hash. See rfc1234. If you set authentication to non-none, it is good idea to add
- passwords { } section.
+ passwords { } section.
There are two options that can be specified per-interface. First is metric, with