diff --git a/doc/bird.sgml b/doc/bird.sgml index 13034336..63f251ad 100644 --- a/doc/bird.sgml +++ b/doc/bird.sgml @@ -33,8 +33,8 @@ This document contains documentation for BIRD Internet Routing Daemon
You may wonder what 'bird' means. It is acronym of 'BIRD Internet Routing Daemon', and we think that's cool name. Its task is similar to what firmware of Cisco routers does, -or what gated () or GNU zebra () does. However, you can not run Cisco's firmware on "normal" computer +or what gated or GNU zebra does. However, you can not run Cisco's firmware on "normal" computer and gated is really hard to configure and comes under wrong license. Bird is being developed on Charles University, Prague, and can be freely distributed under terms of GNU General Public License. Bird is designed to run on Unix and unix-like systems, it is primarily developed on Linux. @@ -47,7 +47,9 @@ it is slightly modified linuxdoc dtd. Anything in <descrip> tags is consi configuration primitives, <cf> is fragment of configuration within normal text, <m> is "meta" information -- something in config which is not keyword. -Configuration +Configuration + +Introduction Bird is configured using text configuration file. At startup, bird reads You can find example of more complicated configuration file in doc/bird.conf.example. -Global options +Global options + log " set logging of classes (either all or table create new routing table. + + eval evaluates give filter expression. It is basically mainly for testing. -Per-protocol options +Per-protocol options - +Several options are per-protocol, but all protocols support them. They are described here. + + preference sets preference of this protocol. disabled disables given protocol. @@ -122,6 +129,8 @@ ignored. If there's variable number of options, it is grouped using { export This is similar to export keyword, except that it works in direction from main routing table to protocol. + + table Connect this protocol to non-default table. There are per-protocol options that give sense only with certain protocols. @@ -234,7 +243,7 @@ booleans (that is to prevent you from shooting in the foot). Operations Filter language supports common integer operations (+,-,*,/), parenthesis case is similar to case from Pascal. Syntax is case . Expression after -case can be of any type that can be on the left side of ~ operator, and anything that could +case can be of any type that can be on the left side of ˜ operator, and anything that could be member of set is allowed before :. Multiple commands are allowed without {} grouping. If argument matches neither of : clauses, else: clause is used. (Case is actually implemented as set matching, internally.) +Here is example that uses if and case structures: + + +case arg1 { + 2: print "two"; print "I can do more commands without {}"; + 3 .. 5: print "three to five"; + else: print "something else"; + } + +if 1234 = i then printn "."; else { print "*** FAIL: if 1 else"; } + + Protocols Rip @@ -321,7 +342,7 @@ interface but not listen on it. Following options generally override specified behavior from rfc. If you use any of these options, bird will no longer be rfc-compatible, which means it will not be able to talk to anything -other than equally (mis-)configured bird. I warned you. +other than equally misconfigured bird. I warned you. port number
Bird is configured using text configuration file. At startup, bird reads You can find example of more complicated configuration file in doc/bird.conf.example. -Global options +Global options + log " set logging of classes (either all or table create new routing table. + + eval evaluates give filter expression. It is basically mainly for testing. -Per-protocol options +Per-protocol options - +Several options are per-protocol, but all protocols support them. They are described here. + + preference sets preference of this protocol. disabled disables given protocol. @@ -122,6 +129,8 @@ ignored. If there's variable number of options, it is grouped using { export This is similar to export keyword, except that it works in direction from main routing table to protocol. + + table Connect this protocol to non-default table. There are per-protocol options that give sense only with certain protocols. @@ -234,7 +243,7 @@ booleans (that is to prevent you from shooting in the foot). Operations Filter language supports common integer operations (+,-,*,/), parenthesis case is similar to case from Pascal. Syntax is case . Expression after -case can be of any type that can be on the left side of ~ operator, and anything that could +case can be of any type that can be on the left side of ˜ operator, and anything that could be member of set is allowed before :. Multiple commands are allowed without {} grouping. If argument matches neither of : clauses, else: clause is used. (Case is actually implemented as set matching, internally.) +Here is example that uses if and case structures: + + +case arg1 { + 2: print "two"; print "I can do more commands without {}"; + 3 .. 5: print "three to five"; + else: print "something else"; + } + +if 1234 = i then printn "."; else { print "*** FAIL: if 1 else"; } + + Protocols Rip @@ -321,7 +342,7 @@ interface but not listen on it. Following options generally override specified behavior from rfc. If you use any of these options, bird will no longer be rfc-compatible, which means it will not be able to talk to anything -other than equally (mis-)configured bird. I warned you. +other than equally misconfigured bird. I warned you. port number
log " set logging of classes (either all or table create new routing table. + + eval evaluates give filter expression. It is basically mainly for testing. -Per-protocol options +Per-protocol options - +Several options are per-protocol, but all protocols support them. They are described here. + + preference sets preference of this protocol. disabled disables given protocol. @@ -122,6 +129,8 @@ ignored. If there's variable number of options, it is grouped using { export This is similar to export keyword, except that it works in direction from main routing table to protocol. + + table Connect this protocol to non-default table. There are per-protocol options that give sense only with certain protocols. @@ -234,7 +243,7 @@ booleans (that is to prevent you from shooting in the foot). Operations Filter language supports common integer operations (+,-,*,/), parenthesis case is similar to case from Pascal. Syntax is case . Expression after -case can be of any type that can be on the left side of ~ operator, and anything that could +case can be of any type that can be on the left side of ˜ operator, and anything that could be member of set is allowed before :. Multiple commands are allowed without {} grouping. If argument matches neither of : clauses, else: clause is used. (Case is actually implemented as set matching, internally.) +Here is example that uses if and case structures: + + +case arg1 { + 2: print "two"; print "I can do more commands without {}"; + 3 .. 5: print "three to five"; + else: print "something else"; + } + +if 1234 = i then printn "."; else { print "*** FAIL: if 1 else"; } + + Protocols Rip @@ -321,7 +342,7 @@ interface but not listen on it. Following options generally override specified behavior from rfc. If you use any of these options, bird will no longer be rfc-compatible, which means it will not be able to talk to anything -other than equally (mis-)configured bird. I warned you. +other than equally misconfigured bird. I warned you. port number
+Several options are per-protocol, but all protocols support them. They are described here. + + preference sets preference of this protocol. disabled disables given protocol. @@ -122,6 +129,8 @@ ignored. If there's variable number of options, it is grouped using { export This is similar to export keyword, except that it works in direction from main routing table to protocol. + + table Connect this protocol to non-default table. There are per-protocol options that give sense only with certain protocols. @@ -234,7 +243,7 @@ booleans (that is to prevent you from shooting in the foot). Operations Filter language supports common integer operations (+,-,*,/), parenthesis case is similar to case from Pascal. Syntax is case . Expression after -case can be of any type that can be on the left side of ~ operator, and anything that could +case can be of any type that can be on the left side of ˜ operator, and anything that could be member of set is allowed before :. Multiple commands are allowed without {} grouping. If argument matches neither of : clauses, else: clause is used. (Case is actually implemented as set matching, internally.) +Here is example that uses if and case structures: + + +case arg1 { + 2: print "two"; print "I can do more commands without {}"; + 3 .. 5: print "three to five"; + else: print "something else"; + } + +if 1234 = i then printn "."; else { print "*** FAIL: if 1 else"; } + + Protocols Rip @@ -321,7 +342,7 @@ interface but not listen on it. Following options generally override specified behavior from rfc. If you use any of these options, bird will no longer be rfc-compatible, which means it will not be able to talk to anything -other than equally (mis-)configured bird. I warned you. +other than equally misconfigured bird. I warned you. port number
Several options are per-protocol, but all protocols support them. They are described here. + + preference sets preference of this protocol. disabled disables given protocol. @@ -122,6 +129,8 @@ ignored. If there's variable number of options, it is grouped using { export This is similar to export keyword, except that it works in direction from main routing table to protocol. + + table Connect this protocol to non-default table.
There are per-protocol options that give sense only with certain protocols. @@ -234,7 +243,7 @@ booleans (that is to prevent you from shooting in the foot). Operations Filter language supports common integer operations (+,-,*,/), parenthesis case is similar to case from Pascal. Syntax is case . Expression after -case can be of any type that can be on the left side of ~ operator, and anything that could +case can be of any type that can be on the left side of ˜ operator, and anything that could be member of set is allowed before :. Multiple commands are allowed without {} grouping. If argument matches neither of : clauses, else: clause is used. (Case is actually implemented as set matching, internally.) +Here is example that uses if and case structures: + + +case arg1 { + 2: print "two"; print "I can do more commands without {}"; + 3 .. 5: print "three to five"; + else: print "something else"; + } + +if 1234 = i then printn "."; else { print "*** FAIL: if 1 else"; } + + Protocols Rip @@ -321,7 +342,7 @@ interface but not listen on it. Following options generally override specified behavior from rfc. If you use any of these options, bird will no longer be rfc-compatible, which means it will not be able to talk to anything -other than equally (mis-)configured bird. I warned you. +other than equally misconfigured bird. I warned you. port number
Filter language supports common integer operations (+,-,*,/), parenthesis case is similar to case from Pascal. Syntax is case . Expression after -case can be of any type that can be on the left side of ~ operator, and anything that could +case can be of any type that can be on the left side of ˜ operator, and anything that could be member of set is allowed before :. Multiple commands are allowed without {} grouping. If argument matches neither of : clauses, else: clause is used. (Case is actually implemented as set matching, internally.) +Here is example that uses if and case structures: + + +case arg1 { + 2: print "two"; print "I can do more commands without {}"; + 3 .. 5: print "three to five"; + else: print "something else"; + } + +if 1234 = i then printn "."; else { print "*** FAIL: if 1 else"; } + + Protocols Rip @@ -321,7 +342,7 @@ interface but not listen on it. Following options generally override specified behavior from rfc. If you use any of these options, bird will no longer be rfc-compatible, which means it will not be able to talk to anything -other than equally (mis-)configured bird. I warned you. +other than equally misconfigured bird. I warned you. port number
Here is example that uses if and case structures: + + +case arg1 { + 2: print "two"; print "I can do more commands without {}"; + 3 .. 5: print "three to five"; + else: print "something else"; + } + +if 1234 = i then printn "."; else { print "*** FAIL: if 1 else"; } + + Protocols Rip @@ -321,7 +342,7 @@ interface but not listen on it. Following options generally override specified behavior from rfc. If you use any of these options, bird will no longer be rfc-compatible, which means it will not be able to talk to anything -other than equally (mis-)configured bird. I warned you. +other than equally misconfigured bird. I warned you. port number
+case arg1 { + 2: print "two"; print "I can do more commands without {}"; + 3 .. 5: print "three to five"; + else: print "something else"; + } + +if 1234 = i then printn "."; else { print "*** FAIL: if 1 else"; } +
Following options generally override specified behavior from rfc. If you use any of these options, bird will no longer be rfc-compatible, which means it will not be able to talk to anything -other than equally (mis-)configured bird. I warned you. +other than equally misconfigured bird. I warned you. port number