Commit 9335f1c4 authored by Ondřej Surý's avatar Ondřej Surý
Browse files

New upstream version 2.0.4

parent da6d0a91
commit b9deced219cfda2afe8604b24351ae10ac56f98b
Author: Ondrej Zajicek (work) <>
Date: Tue Feb 26 18:19:35 2019 +0100
NEWS and version update
commit 7c36eb3e8bd7d06f65dc7319d42b6abe782c5b89
Author: Maria Matejka <>
Date: Fri Feb 22 12:41:51 2019 +0100
Conf: Switch for faster (and slightly bigger) lexer
commit 93af78d2d29ce11e20d46f60cfe1d3ef68052e5c
Author: Ondrej Zajicek (work) <>
Date: Fri Feb 22 02:16:39 2019 +0100
Nest: Do not compare rte.flags during rte_update()
Route flags are mosty internal state of rtable, they are not significant
to whether a route has changed. With the old code, all routes received as
a part of enhanced route refresh are always re-announced to other peers
due to change in REF_STALE.
commit ae294cc2d02ec02cbea11c275b64e7637ba0ea68
Author: Ondrej Zajicek (work) <>
Date: Tue Feb 19 18:30:28 2019 +0100
HTML are no longer generated in srcdir
commit 900fda4411a5346f808a575101b1260b5f73fa93
Author: Ondrej Zajicek (work) <>
Date: Tue Feb 19 18:20:07 2019 +0100
Doc: Detect SP/OpenSP automatically
commit 3a8ca7abbcf6452fa56d0c1c6ddcf7d5bd6876ed
Author: Ondrej Zajicek (work) <>
Date: Tue Feb 19 16:26:09 2019 +0100
Nest: Prevent withdraws from propagation back to source protocol (for accepted mode)
Update for one of previous patches, handles the the issue for
first-accepted mode of route propagation.
commit bf8d7bba9ef3c6d95661f97dc71fa7a6b2cf0b87
Author: Ondrej Zajicek (work) <>
Date: Sun Feb 17 01:54:01 2019 +0100
OSPF: Reset LSAs during area type change
When area is reconfigured to a different type, we need to flush LSAs as
they may not be valid (e.g. NSSA-LSA for non-NSSA area). Also, when we
have have just one OSPF area and that changes type, we could restart OSPF
as there is no state to keep anyway. That solves issue with different
handling of external routes exported to OSPF based of main area type.
commit 4a3f5b36173299d44e26dc18db4e5d103875f8c4
Author: Ondrej Zajicek (work) <>
Date: Wed Feb 13 15:40:22 2019 +0100
OSPF: Basic support for DN-bit handling (RFC 4576)
External LSAs originated by OSPF routers with VPN-PE behavior enabled are
marked by DN flag and they are ignored by other OSPF routers with VPN-PE
commit 1e958e52d3ef0c38e5fb5e673bcce95d1c28ac0e
Author: Ondrej Zajicek (work) <>
Date: Sat Feb 9 16:15:01 2019 +0100
OSPF: Do not originate Router-Information LSA
As we do not have much usage for it yet.
commit cd16538fc91778e31f8241f62ee47056f099c051
Merge: 6e8fb668 f9b97f1c
Author: Ondrej Zajicek (work) <>
Date: Sat Feb 9 15:53:16 2019 +0100
Merge remote-tracking branch 'origin/mq-opt'
commit 6e8fb66859a17b295cd9246264221a75cdbe6c55
Author: Ondrej Zajicek (work) <>
Date: Tue Feb 5 19:00:43 2019 +0100
Nest: Improve export counter handling
One of previous workarounds for phantom route avoidance breaks export
counters by expanding sending of spurious withdraws, which are send when
we are not sure whether we have advertised that routes in the past.
If not, then export counter is decreased, but it was not increased
before, so it overflows under zero.
The patch fixes that by sendung spurious withdraws, but not counting them
on export counter. That may lead to error in the other direction, but that
happens only as a race condition (i.e., in normal operation filters
return proper values about old route export state).
commit 52fdd1cb76be1e278799001fa57f56888062dd86
Author: Ondrej Zajicek (work) <>
Date: Tue Feb 5 15:59:26 2019 +0100
Nest: Report preferred counters also when 'import keep filtered' is enabled
Thanks to Michal Nowak for reporting the issue.
commit a9b97cbcb74d918f3f606eb87a506712dccd2832
Author: Ondrej Zajicek (work) <>
Date: Sun Feb 3 20:22:40 2019 +0100
OSPF: Send direct acknowledgements as unicast
Direct acknowledgements should be send as unicast to a corresponding
neighbor. Only delayed acks should be send as multicast to all/designated
commit 16605f2fdad730b8bb570e17192dc5f45cf15d3f
Author: Ondrej Zajicek (work) <>
Date: Sun Feb 3 17:31:27 2019 +0100
OSPF: Reject duplicate DBDES packets after dead interval
Master may free last DBDES packet immediately. Slave must wait dead
interval before freeing last DBDES packet and then reject duplicate
DBDES packets with SeqNumberMismatch.
commit 9c94583a3ded3b2792bd08d88beb10100a82d7b4
Author: Ondrej Zajicek (work) <>
Date: Sun Feb 3 16:20:37 2019 +0100
OSPF: DD seqnum should be initialized only for first attempts
After SeqNumberMismatch/BadLSReq, we should continue with the old
seqnum++. The old code tries to do that by n->adj, but it was set
commit 267da8138d7f429941f2d829b44cf9bdd94a14d6
Author: Ondrej Zajicek (work) <>
Date: Sun Feb 3 15:45:43 2019 +0100
OSPF: Reject DBDES packets with non-matching MTU
As it is specified in RFC 2328. The old code just provided warning.
commit e1c275d87b26f35c29ec8bfab0a3265810463574
Author: Ondrej Zajicek (work) <>
Date: Sat Feb 2 13:28:16 2019 +0100
Nest: Reestablish preferred counters
commit f9b97f1c6282be398d2c2bb896dbb453f638f720
Author: Maria Matejka <>
Date: Fri Feb 1 14:09:01 2019 +0100
Perf: Added forgotten all-protocol options
commit a8d0f2516c1ee0372edfc607832ae78632e404ca
Author: Maria Matejka <>
Date: Tue Jan 29 15:19:06 2019 +0100
Nest: FIB rehash values tweaked for better performance
commit e85e37d91d0c5fca6cb7a3ea80fac582074c389d
Author: Maria Matejka <>
Date: Tue Jan 29 14:22:55 2019 +0100
Perf: Prune the table after every loop to have clean state.
commit 7411b694c3ca9db4947f577f826b622ff23e570d
Author: Maria Matejka <>
Date: Thu Jan 31 15:03:43 2019 +0100
Perf: Write also BIRD version to have all the needed data in the logfile
commit c65a9a05f9005d8b7369d07a3f0e99b2f205955b
Author: Maria Matejka <>
Date: Thu Jan 31 15:02:15 2019 +0100
Nest: Don't lookup net in table before filters are run.
Using dummy net instead. This should help with performance on rejected
commit e84c81b76ff6af88041b55c4ed25c208f78d4826
Author: Ondrej Zajicek (work) <>
Date: Wed Jan 30 17:25:21 2019 +0100
Nest: Prevent withdraws from propagation back to source protocol
The earlier fix loosen conditions for not running filters on old
route when deciding about route propagation to a protocol to avoid
issues with ghost routes in some race conditions.
Unfortunately, the fix also caused back-propagation of withdraws. For
regular updates, back-propagation is prevented in import_control hooks,
but these are not called on withdraws. For them, import_control hooks
are called on old routes instead, changing (old, NULL) notification
to (NULL, NULL), which is ignored. By not calling export processing
in some cases, the withdraw is not ignored and is back-propagated.
This patch fixes that by contract conditions so the earlier fix is not
applied to back-propagated updates.
commit ee95f281f038684a4a2613a0c54af7389afe64da
Author: Ondrej Zajicek (work) <>
Date: Sat Jan 26 21:02:35 2019 +0100
Doc: Add documentation for OSPF retransmit delay option
Thanks to Igor Podlesny for notification.
commit 1c730ee761b3c9b7ff12a0ad11c5b1768d1e4ada
Author: Ondrej Zajicek (work) <>
Date: Sat Jan 26 20:44:37 2019 +0100
Doc: Remove doc for already removed option
commit b8a3608aa59a67364f05dbd0d0332371a200f226
Author: Ondrej Zajicek (work) <>
Date: Sat Jan 26 19:48:16 2019 +0100
BGP: Cleanup channels when going down
When going up, uncleaned old channel state may trigger unexpected
conditions crashing bird.
commit 5a50a98980a3554b66cedda6992ece4063a0e85a
Author: Ondrej Zajicek (work) <>
Date: Thu Jan 24 22:34:33 2019 +0100
OSPF: Opaque LSAs and Router Information LSA
Add support for OSPFv2 Opaque LSAs (RFC 5250) and for Router Information
LSA (RFC 7770). The second part is here mainly for testing opaque LSAs.
commit 954888859969587a288501b6801ab0ddb1f94133
Author: Jan Maria Matejka <>
Date: Fri Dec 14 16:10:19 2018 +0100
Nest: Don't make tmp_attr before preexport is called
commit 3e60932a289e55e212dec1cbaf3bca44b2bbaeb8
Author: Ondrej Zajicek (work) <>
Date: Sat Jan 5 00:38:37 2019 +0100
......@@ -41,8 +41,3 @@ For compiling BIRD documentation you also need:
- Linuxdoc-Tools
- LaTeX
Note that build scripts for BIRD documentation expects 'nsgmls' from
James Clark's SP suite, while modern distributions use 'onsgmls' from
OpenSP suite. It is possible to build BIRD documentation with OpenSP
tools, but it requires manually tweaking paths in doc/sgml2* scripts.
Version 2.0.4 (2019-02-27)
o OSPF: Opaque LSAs (RFC 5250)
o OSPF: DN-bit handling (RFC 4576)
o Preferred route counters are back
o Important BGP bugfix
o Several bugfixes related to route propagation
o some minor bugfixes
Version 2.0.3 (2019-01-05)
o MRT table dumps (RFC 6396)
o BGP Long-lived graceful restart
......@@ -23,7 +23,7 @@ $(o) $(o)cf-parse.y
$(BISON) $(BISON_DEBUG) $(BISONFLAGS) -dv -pcf_ -b $( $<
$(o)cf-lex.c: $(s)cf-lex.l
$(FLEX) $(FLEX_DEBUG) -s -B -8 -Pcf_ -o$@ $<
$(FLEX) $(FLEX_DEBUG) -f -s -B -8 -Pcf_ -o$@ $<
$(o)cf-lex.o: $(o) $(o)keywords.h
$(o)cf-lex.o: CFLAGS+=-Wno-sign-compare -Wno-unused-function
......@@ -654,6 +654,7 @@ CFLAGS
......@@ -679,7 +680,6 @@ infodir
......@@ -763,7 +763,6 @@ datadir='${datarootdir}'
......@@ -1016,15 +1015,6 @@ do
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
-runstatedir | --runstatedir | --runstatedi | --runstated \
| --runstate | --runstat | --runsta | --runst | --runs \
| --run | --ru | --r)
ac_prev=runstatedir ;;
-runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
| --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
| --run=* | --ru=* | --r=*)
runstatedir=$ac_optarg ;;
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
......@@ -1162,7 +1152,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
libdir localedir mandir runstatedir
libdir localedir mandir
eval ac_val=\$$ac_var
# Remove trailing slashes.
......@@ -1315,7 +1305,6 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
......@@ -3491,6 +3491,11 @@ protocol ospf [v2|v3] &lt;name&gt; {
Specifies interval in seconds between retransmissions of unacknowledged
updates. Default value is 5.
<tag><label id="ospf-transmit-delay">transmit delay <M>num</M></tag>
Specifies estimated transmission delay of link state updates send over
the interface. The value is added to LSA age of LSAs propagated through
it. Default value is 1.
<tag><label id="ospf-priority">priority <M>num</M></tag>
On every multiple access network (e.g., the Ethernet) Designated Router
and Backup Designated router are elected. These routers have some special
......@@ -3511,16 +3516,6 @@ protocol ospf [v2|v3] &lt;name&gt; {
<m/dead/ seconds, it will consider the neighbor down. If both directives
<cf/dead count/ and <cf/dead/ are used, <cf/dead/ has precedence.
<tag><label id="ospf-secondary">secondary <M>switch</M></tag>
On BSD systems, older versions of BIRD supported OSPFv2 only for the
primary IP address of an interface, other IP ranges on the interface
were handled as stub networks. Since v1.4.1, regular operation on
secondary IP addresses is supported, but disabled by default for
compatibility. This option allows to enable it. The option is a
transitional measure, will be removed in the next major release as the
behavior will be changed. On Linux systems, the option is irrelevant, as
operation on non-primary addresses is already the regular behavior.
<tag><label id="ospf-rx-buffer">rx buffer <M>num</M></tag>
This option allows to specify the size of buffers used for packet
processing. The buffer size should be bigger than maximal size of any
\input mjmac
\centerline{\Big Projekt BIRD}
\centerline{\Big\ss (Basic Internet Routing Daemon)}
\vskip 1in
\halign{\quad \hfil # & \quad # \hfil \cr
Vedouc projektu: & RNDr. Libor Forst \cr
astnci: & Leo Bitto \cr
& Ondej Filip \cr
& Pavel Machek \cr
& Martin Mare \cr
& {\I (tmto je projekt obsazen)} \cr
Cl projektu: & \vtop{\hsize=0.6\hsize
Clem projektu je vyvinout kompletn podporu dynamickho routingu
Internetovskch protokol (IP a IPv6) pro operan systmy kompatibiln
s~UNIXem, zejmna pak pro Linux. Zkladn rysy programu:
\:Podpora pouit obou verz IP souasn na~te sti.
\:Komunikace s~okolnmi routery prostednictvm protokol RIPv2, OSPFv2 a BGP4.
\:Filtrace routovacch tabulek.
\:Monost re-exportu informac zskanch jednm protokolem do~protokol
\:Vyuit vymoenost Linuxovho jdra (vcensobn routovac tabulky,
netlink apod.).
\:Dynamick rekonfigurovatelnost za bhu.
\:TOS-based routing.
\input mjmac
\centerline{\Big Projekt BIRD}
\centerline{\Big\ss (Basic Internet Routing Daemon)}
\centerline{\large\it zprva o~stavu projektu ke~dni 10. 11. 1999}
\vskip 0.5in
\leftline{\Large Obsazen}
\noindent\halign{\quad \hfil # & \quad # \hfil \cr
Vedouc projektu: & RNDr. Libor Forst \cr
astnci: & Ondej Filip \cr
& Pavel Machek \cr
& Martin Mare \cr
\leftline{\Large Specifikace}
Clem projektu je vyvinout program umoujc dynamick routing
internetovskch protokol (IPv4 a IPv6) pro operan systmy kompatibiln
s~UNIXem (zejmna pak pro Linux). Tento program komunikuje s~ostatnmi
routery v~sti (respektive jej sti, na n se dynamick routing vztahuje)
prostednictvm standardnch protokol (RIPv2, OSPFv2, BGP4), vymuje si
s~nimi informace o~topologii st a jejch dynamickch zmnch a podle takto
zjitn topologie nastavuje routovac tabulky jdra OS.
Program dle zajiuje distribuci routovacch informac mezi jednotlivmi
(jinak na sob nazvislmi) protokoly, piem tyto informace umouje
filtrovat podle pravidel specifikovanch v~jednoduchm programovacm
jazyku, m lze mimo jin realizovat policy-based routing, kter
je jinak dostupn pouze v~drahch komernch routerech.
Projekt si rovn klade za cl vyut nejnovjch vymoenost
modernch UNIXovch OS, jako jsou vcensobn routovac tabulky, netlink
Router bude mono za bhu ovldat prostednictvm dcch pkaz
pedvanch po loklnm socketu. To zahrnuje vpis stavovch informac
celho systmu (routovacch tabulek, topologickch map protokolu OSPF,
atributovch tabulek BGP a jinch daj nezbytnch pro sprvce st)
a zejmna zmnu konfigurace bez nutnosti restartu protokol zmnami
\leftline{\Large Stav projektu}
Po ztrt jednoho z~len tmu pokrauje vvoj ponkud pomalejm
tempem ne se pvodn oekvalo, nicmn zadn projektu hodlme splnit
v~celm rozsahu a projekt bhem tohoto kolnho roku dokonit. V~souasn
dob chyb zejmna dokumentace (jej nynj podoba se omezuje vhradn
na~bohat komente ve~zdrojovch textech) a podpora protokolu BGP.
\noindent Stav jednotlivch st projektu:
\halign{# \hfil & \qquad \hfil#\cr
Building system & 100\% \cr
Jdro routeru & 90\% \cr
Sprva datovch struktur & 80\% \cr
Podpora IPv4 & 100\% \cr
Podpora IPv6 & 70\% \cr
Interface na Linux 2.0 & 100\% \cr
Interface na Linux 2.2 & 100\% \cr
Interface na FreeBSD & 20\% \cr
Protokol RIP & 90\% \cr
Protokol OSPF pro IPv4 & 40\% \cr
Protokol OSPF pro IPv6 & 10\% \cr
Protokol BGP & 0\% \cr
Interpreter filtr & 70\% \cr
Parser konfigurace & 70\% \cr
Dlkov ovldn & 20\% \cr
Dokumentace & 0\% \cr
Online help & 0\% \cr
......@@ -28,12 +28,16 @@ use lib "/usr/perl5";
use lib "/usr/lib/perl5";
use lib "/usr/share/perl5";
$progs = {
"NSGMLS" => "/usr/bin/onsgmls",
"NSGMLS" => "/usr/bin/nsgmls",
"SGMLSASP" => "/usr/bin/sgmlsasp",
"GROFF" => "/usr/bin/groff",
"GROFFMACRO" => "-ms",
"AWK" => "/usr/share/linuxdoc-tools/awkwhich"
if (! -x $progs->{"NSGMLS"})
{ $progs->{"NSGMLS"} = "/usr/bin/onsgmls"; }
$ENV{"SGML_CATALOG_FILES"} = "$DataDir/dtd/catalog" .
......@@ -28,12 +28,16 @@ use lib "/usr/perl5";
use lib "/usr/lib/perl5";
use lib "/usr/share/perl5";
$progs = {
"NSGMLS" => "/usr/bin/onsgmls",
"NSGMLS" => "/usr/bin/nsgmls",
"SGMLSASP" => "/usr/bin/sgmlsasp",
"GROFF" => "/usr/bin/groff",
"GROFFMACRO" => "-ms",
"AWK" => "/usr/share/linuxdoc-tools/awkwhich"
if (! -x $progs->{"NSGMLS"})
{ $progs->{"NSGMLS"} = "/usr/bin/onsgmls"; }
$ENV{"SGML_CATALOG_FILES"} = "$DataDir/dtd/catalog" .
......@@ -28,12 +28,16 @@ use lib "/usr/perl5";
use lib "/usr/lib/perl5";
use lib "/usr/share/perl5";
$progs = {
"NSGMLS" => "/usr/bin/onsgmls",
"NSGMLS" => "/usr/bin/nsgmls",
"SGMLSASP" => "/usr/bin/sgmlsasp",
"GROFF" => "/usr/bin/groff",
"GROFFMACRO" => "-ms",
"AWK" => "/usr/share/linuxdoc-tools/awkwhich"
if (! -x $progs->{"NSGMLS"})
{ $progs->{"NSGMLS"} = "/usr/bin/onsgmls"; }
$ENV{"SGML_CATALOG_FILES"} = "$DataDir/dtd/catalog" .
all: slides.dvi
slides.dvi: slides.tex
csplain slides.tex slides.dvi
dvips -o -D600 -ta4 slides.dvi
view: slides.dvi
xdvi -expert -geometry 1100x700 -l -s 4 -paper a4 -margins 1in slides.dvi
viewlarge: slides.dvi
xdvi -expert -geometry 1024x700 -l -s 1 -paper a4 -margins 1in slides.dvi
viewreal: slides.dvi
xdvi -expert -geometry 1024x700 -l -s 6 -paper a4 -margins 1in slides.dvi
rm -f *~ *.log *.tfm *.*pk *.*gf *.ps *.dvi
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
\input epsf.tex
\font\srm=csss12 scaled \magstep3
\font\stit=csb12 scaled \magstep3
\font\sem=csssbx12 scaled \magstep3
\font\sit=csssi12 scaled \magstep3
\font\stt=cstt12 scaled \magstep3
\font\stitle=cscsc12 scaled \magstep4
\def\em#1{{\emfont #1}}
\font\rmfont=cmr10 scaled \magstep4
\font\ttfont=cmtt10 scaled \magstep4
\font\ifont=cmmi10 scaled \magstep4
\font\symfont=cmsy10 scaled \magstep4
\font\exfont=cmex10 scaled \magstep4
\font\rmfonts=cmr7 scaled \magstep4
\font\ifonts=cmmi7 scaled \magstep4
\font\symfonts=cmsy7 scaled \magstep4
\font\exfonts=cmex7 scaled \magstep4
\line{\vrule width 0pt height 25pt depth 4pt \stit #1\hfill\smash{\lower1ex\copy\birdbox}}
\hrule height 2pt
\def\itemize#1{\par{\advance\leftskip by 35pt{\parskip=5pt #1}\par}}
\def\:{\par\leavevmode\llap{$\bullet$\hskip 7pt}}
\def\>{\par\leavevmode\llap{$\circ$\hskip 7pt}}