| Branch: | Revision:

iof-bird-daemon / proto @ c8cafc8e

# Date Author Comment
c8cafc8e 11/08/2016 04:46 PM Ondrej Zajicek (work)

Minor code cleanups

e03dc6a9 11/02/2016 04:53 PM Ondrej Zajicek (work)

BFD: Authentication

Implement BFD authentication (part of RFC 5880). Supports plaintext
passwords and cryptographic MD5 / SHA-1 authentication.

Based on former commit from Pavel Tvrdik

29239ba2 11/02/2016 04:53 PM Ondrej Zajicek (work)

OSPF: Use message authentication interface

Based on former commit from Pavel Tvrdik

390601f0 11/02/2016 04:53 PM Ondrej Zajicek (work)

RIP: Use message authentication interface

Based on former commit from Pavel Tvrdik

56cb3bed 11/02/2016 03:23 PM Pavel Tvrdík

Nest: Add support for MAC algorithms in grammar

de2a27e2 11/02/2016 03:23 PM Ondrej Zajicek (work)

Add generic message authentication interface

Add generic interface for generating and verifying MACs (message
authentication codes). Replace multiple HMAC implementation with
a generic one.

3e236955 11/01/2016 01:52 PM Jan Moskyto Matejka

Build: switch on -Wextra, get rid of most of the warnings

There are several unresolved -Wmissing-field-initializers on older
versions of GCC than 5.1, all of them false positive.

3213273d 10/27/2016 09:08 AM Ondrej Filip

IANA assigned a different number to large BGP communities - changed.

66dbdbd9 10/03/2016 10:48 AM Ondrej Zajicek (work)

BGP: Support for large communities

Add support for large communities (draft-ietf-idr-large-community),
96bit alternative to RFC 1997 communities.

Thanks to Matt Griswold for the original patch.

0f5054f6 09/15/2016 02:18 PM Pavel Tvrdik

BFD: Fix invalid read from pollfd array

It is possible that sockets_add() are called between sockets_prepare()
and sockets_fire() during poll loop in birdloop_main(), so we need to
use loop->poll_fd.used instead of loop->sock_num to find the last field.

84cac51a 09/14/2016 09:53 AM Ondrej Zajicek (work)

Nest: Keep multipath next hops sorted

13a31a40 07/20/2016 01:55 PM Ondrej Zajicek (work)

Babel: Immediately update hello interval on interface reconfigure

An interface reconfiguration may change both the hello and update
intervals. An update interval change is immediately put into effect,
while a hello interval change is not. This also updates the hello...

c6ed5a0f 07/19/2016 12:38 PM Ondrej Zajicek (work)

Babel: Do not maintain feasibility distance for our own routes

We do not need to maintain feasibility distances for our own router
ID (we ignore the updates anyway). Not doing so makes the routes be
garbage collected sooner when export filters change.

Signed-off-by: Toke Høiland-Jørgensen <>

0f673666 07/19/2016 12:28 PM Ondrej Zajicek (work)

Babel: Do not keep an infeasible route as selected

When a route becomes infeasible it should not be kept as selected; this
is forbidden by section 3.6 of the RFC and prevents subsequent updates
from the same router ID from replacing it.

Signed-off-by: Toke Høiland-Jørgensen <>

5d6ca220 07/19/2016 12:23 PM Ondrej Zajicek (work)

Babel: Send wildcard retractions on shutdown and startup

This makes BIRD send a wildcard retraction on all interfaces before
shutting down and right after starting up. This helps ensure that
neighbours will discard the announced routes as soon as possible,...

ecae2f43 07/19/2016 11:33 AM Ondrej Zajicek (work)

Babel: Rework handling of retractions

An update with wildcard AE and infinite metric should be treated as a
global retraction of all prefixes announced by that neighbour, per
section 4.4.9 of the RFC. In addition, router ID and seqno in retraction
updates should be ignored. This reworks the handling of retractions and...

321ff8c4 07/19/2016 09:57 AM Ondrej Zajicek (work)

Babel: Make sure intervals do not overflow

Intervals are carried as 16-bit centisecond values, but kept internally
in 16-bit second values, which causes a potential for overflow. This adds
some checks to make sure this does not happen.

Signed-off-by: Toke Høiland-Jørgensen <>

ea0cb652 07/11/2016 06:41 PM Ondrej Zajicek (work)

BGP: Fix extended messages

Change attribute length limit to handle extended (64 kB) messages.

Do not mix updates and withdraws (RFC 7606).

775a5a81 06/29/2016 12:24 PM Ondrej Zajicek (work)

BGP: Skip empty path segments in received AS_PATH

Although RFC 4271 does not forbid empty path segments, they are useless
and some implementations consider them invalid. It is clarified in RFC 7606,
specifying that AS_PATH with empty segment is considered malformed.

8e433d6a 05/12/2016 01:49 PM Pavel Tvrdik

Prog Doc: Complete several missing parameters

937e75d8 04/28/2016 04:01 PM Ondrej Zajicek (work)

Add the Babel routing protocol (RFC 6126)

This patch implements the IPv6 subset of the Babel routing protocol.
Based on the patch from Toke Hoiland-Jorgensen, with some heavy
modifications and bugfixes.

Thanks to Toke Hoiland-Jorgensen for the original patch.

a7baa098 04/13/2016 12:37 PM Ondrej Zajicek (work)

BSD: Add the IPsec SA/SP database entries control

Add code for manipulation with TCP-MD5 keys in the IPsec SA/SP database
at FreeBSD systems. Now, BGP MD5 authentication (RFC 2385) keys are
handled automatically on both Linux and FreeBSD.

Based on patches from Pavel Tvrdik.

bd22d7f4 04/06/2016 09:57 AM Ondrej Zajicek (work)

IO: Avoid multiple event cycles in one loop cycle.

Event cycle may took too much time and trigger next timer events, so
avoid cycling between timer and event cycles inside the loop cycle.

9e7b3ebd 04/06/2016 09:49 AM Ondrej Zajicek (work)

IO: Replace RX priority heuristic with explicit mark

In BIRD, RX has lower priority than TX with the exception of RX from
control socket. The patch replaces heuristic based on socket type with
explicit mark and uses it for both control socket and BGP session waiting...

665b8e52 03/23/2016 01:21 AM Ondrej Zajicek (work)

Birdlib: Do cleanups after remove/free

To avoid byzantine behavior in case of some errors, linked lists are
cleared after rem_node() and resource headers are cleared after rfree().

39a6b19d 03/23/2016 01:21 AM Ondrej Zajicek (work)

OSPF: Fix bogus LSA ID collisions between received and originated LSAs

After restart, LSAs locally originated by the previous instance are
received from neighbors. They are installed to LSA db and flushed. If
export of a route triggers origination of a new external LSA before flush...

a459f4df 03/23/2016 01:21 AM Ondrej Zajicek (work)

OSPF: Fix reading from freed memory

Thanks to Pavel Tvrdik for noticing it.

62a4ad36 03/22/2016 12:23 PM Jan Moskyto Matejka

Merge remote-tracking branch 'origin/poll'

9036bbf2 03/17/2016 05:40 PM Pavel Tvrdík

RIP: fix typo in configuration at rx length opt

fd926ed4 03/15/2016 01:57 PM Jan Moskyto Matejka

Poll: Prevent the improbable case of EAGAIN after POLLIN

e3f506f9 02/25/2016 05:23 PM Ondrej Zajicek (work)

OSPF: Multicast ability is irrelevant for stub interfaces

487c6961 02/11/2016 03:38 PM Ondrej Zajicek (work)

BGP: Fix bug in incoming connection handling

When a BGP session was established by an outgoing connection with
Graceful Restart behavior negotiated, a pending incoming connection in
OpenSent state, and another incoming connection was received, then the
outgoing connection (and whole BGP session) was closed, but the old...

52e21323 11/25/2015 02:52 PM Ondrej Zajicek (work)

BGP: Update capability number from IANA for extended messages

33b4f40a 11/24/2015 03:01 PM Pavel Tvrdík

MD5: Mormalize naming style

8eb8e546 10/17/2015 12:44 PM Ondrej Zajicek (work)

Merge branch 'master' into rip-new

8465dccb 10/05/2015 11:18 AM Ondrej Zajicek (work)

Major RIP redesign

The new RIP implementation fixes plenty of old bugs and also adds support
for many new features: ECMP support, link state support, BFD support,
configurable split horizon and more. Most options are now per-interface.

b5e76398 08/19/2015 09:16 AM Ondrej Zajicek

OSPF: Fixes some issues with link detection

Thanks to Bernardo Figueiredo and Israel G. Lugo for the bugreport.

538264cf 07/24/2015 04:02 PM Ondrej Zajicek

Static: Support for BFD controlled static routes

1321e12a 07/20/2015 03:11 PM Ondrej Zajicek

Static: Allows to specify attributes for static routes

The patch adds suport for specifying route attributes together with
static routes, e.g.:

route via { krt_advmss = 1200; ospf_metric1 = 100; };
ffa398b8 07/19/2015 09:39 AM Ondrej Zajicek

BFD: Fixes crash after socket error

Thanks to Thomas King for the bugreport.

06e0d1b6 07/18/2015 11:38 AM Ondrej Zajicek

BGP: Extended messages support

Implements draft-ietf-idr-bgp-extended-messages-10, for now
undocumented and with temporary private capability number.

8d9eef17 06/08/2015 12:24 AM Ondrej Zajicek

BGP multipath support

Kernel option 'merge paths' allows to merge routes exported to kernel
protocol (currently BGP and static routes) to multipath routes.

d217ba51 06/08/2015 12:24 AM Ondrej Zajicek

Moving of mulipath merging code from OSPF to nest

ae80a2de 06/08/2015 12:24 AM Pavel Tvrdík

unsigned [int] -> uint

e348ef01 06/08/2015 12:24 AM Pavel Tvrdík

unsgined char -> byte

398f9225 06/01/2015 08:41 AM Ondrej Filip

Typo fix by Hans van Kranenburg

77edab64 05/01/2015 12:40 PM Ondrej Zajicek

OSPF: Redesign LSA checksumming

New LSA checksumming code separates generic Fletcher-16 and OSPF-specific
code and avoids back and forth endianity conversions, making it much more
readable and also several times faster.

30d09eb9 04/28/2015 11:45 AM Ondrej Zajicek

OSPF: Fixes validation of LSA checksums

Prior to this patch, BIRD validates the OSPF LSA checksum by calculating
a new checksum and comparing it with the checksum in the header. Due to
the specifics of the Fletcher checksum used in OSPF, this is not
necessarily correct as the checkbytes in the header may be calculated via...

ef3cac66 04/18/2015 11:26 AM Ondrej Zajicek

OSPF: Fixes handling of external routes with immediate gw

The bug caused that received external LSAs with locally reachable
next hops were ignored. I wonder why nobody noticed it sooner.

304ac2e8 04/12/2015 08:47 AM Ondrej Zajicek

Minor fixes

d924d5a5 03/31/2015 10:10 PM Ondrej Zajicek

BGP: Fixes serious bug in TX handling

Under some circumstances and heavy load, TX could be postponed
until the session fails with hold timer expired.

Thanks to Javor Kliachev for making the bug reproductible.

2eadd36f 03/29/2015 07:24 PM Ondrej Zajicek

BGP: AS-wide unique router ID (RFC 6286) support

RFC 6286 relaxed rules for router IDs, allowing EBGP sessions between
routers with the same ID (but different ASN).

9aed29e6 03/29/2015 04:29 PM Ondrej Zajicek

BGP: Enhanced route refresh (RFC 7313) support

Also hook feed_done is renamed to feed_end.

509aab5d 03/02/2015 09:58 AM Ondrej Zajicek

Fixes serious bug in BGP add-path

Temporary rta is reused in BGP, while rta_lookup() breaks it.

Thanks to Alexander Chernikov for analysing the problem.

9c89560e 02/22/2015 07:14 PM Ondrej Zajicek

Use IP_PORTRANGE_HIGH for BFD where available

6cf72d7a 02/22/2015 04:21 PM Ondrej Zajicek

Rename BGP option 'start delay' to 'connect delay'

Also update log message for error-triggered startup delay.

a1beb8f3 02/22/2015 12:50 PM Ondrej Zajicek

Relax BGP neighbor parameter

Permit specifying neighbor address, AS number and port independently.
Add 'interface' parameter for specifying interface for link-local
sessions independently.

Thanks to Alexander V. Chernikov for the original patch.

2bbc3083 02/21/2015 08:08 PM Ondrej Zajicek

Store protocol config size inside protocol structure

Make proto_config_new() use this info instead of supplied size.

Thanks to Alexander V. Chernikov for the patch.

374917ad 02/21/2015 07:55 PM Ondrej Zajicek

Make BGP protocol instance search a separate function

Thanks to Alexander V. Chernikov for the patch.

4a591d4b 02/21/2015 06:31 PM Pavel Tvrdik

Replacing GNU old-style field designator extension

8ce9a877 02/21/2015 01:52 PM Ondrej Zajicek

Fixes minor bug in BFD.

Thanks to Pavel Tvrdik for noticing it.

dfc7a6c6 02/21/2015 11:24 AM Ondrej Zajicek

Fixes potential alignment bug in BGP.

Thanks to Andrew ( for the bug report.

523f020b 02/21/2015 11:15 AM Ondrej Zajicek

Link state support in BGP.

Configurable fast shutdown of a BGP session when an interface loses link.

ac9dc669 11/03/2014 07:35 PM Ondrej Zajicek

Bugfix in latest OSPF changes.

cd3b7003 11/03/2014 01:53 PM Ondrej Zajicek

Bugfix to OSPF reconfiguration.

6f8bbaa1 11/03/2014 09:42 AM Ondrej Zajicek

Fininshing integrated OSPF.

88a183c6 10/24/2014 09:11 AM Ondrej Zajicek

Integrated IP functions.

f8fefde3 10/24/2014 09:07 AM Ondrej Zajicek

Refactoring of OSPF messages.

78342404 10/14/2014 03:23 PM Ondrej Zajicek

Merge remote-tracking branch 'origin/master' into soft-int

1123e707 10/02/2014 10:52 AM Ondrej Zajicek

Implements token bucket filter for rate limiting.

dcde7ae5 10/02/2014 10:52 AM Ondrej Zajicek

Allows to configure different remote port for BGP sessions.

Thanks to João Taveira Araújo for the original patch.

0479b443 10/02/2014 10:52 AM Ondrej Zajicek

Fixes some warnings.

178a197a 07/21/2014 07:50 PM Ondrej Zajicek

OSPF instance id option and documentation update.

742029eb 07/19/2014 03:28 PM Ondrej Zajicek

Whitespace cleanup in OSPF.

a7a7372a 07/18/2014 04:24 PM Ondrej Zajicek

Temporary integrated OSPF commit.

75148289 07/07/2014 08:56 PM Ondrej Zajicek

Implements default router preference (RFC 4191) for RAdv.

Thanks to Baptiste Jonglez for the patch.

70945cb6 06/26/2014 09:58 AM Ondrej Zajicek

Temporary integrated OSPF commit.

9eceab33 05/29/2014 09:05 PM Ondrej Zajicek

String constants could be used for string option values.

Thanks to Frederik Kriewitz for the patch.

05476c4d 05/18/2014 09:42 AM Ondrej Zajicek

IPv4/IPv6 integrated socket code.

66370eac 05/04/2014 09:49 AM Ondrej Zajicek

Fixes BGP crash when update with some attributes and empty NLRI is received.

Thanks to Charlie Allom for the bugreport.

984d7349 04/26/2014 10:46 PM Ondrej Zajicek

Fixes limit verification during reconfiguration.

145368f5 04/23/2014 11:54 AM Ondrej Zajicek

Extends multipath support for OSPF.

Fixes cases where the same network or external route are propagated by
several OSPF routes and some other corner cases in next hop construction
and ECMP. Allows to specify whether external routes should be merged.

Thanks to Peter Christensen for the original patch.

859cbd75 04/14/2014 10:50 AM Ondrej Zajicek

Fixes a bug in (mainly) IPv6 BGP.

Stack variable may be used unitialized and that would lead to spurious
rta_free(), which may cause crash. The bug was introduced in 1.4.1 from
merging add-path branch.

Thanks to Peter Andreev for reporting it and Alexander V. Chernikov for...

2750b248 04/02/2014 06:09 PM Ondrej Zajicek

Fixes missing line in BFD context help.

864f52a5 04/02/2014 05:58 PM Ondrej Zajicek

Fixes nasty bug in BFD.

When a BFD session is removed while being scheduled for notification,
the session stays in notify list and is removed twice, which leads to
a strange crash after a while.

d7c06285 03/30/2014 11:52 PM Ondrej Zajicek

Check validity of interface definitions.

Thanks to Aleksey Berezin for the bugreport.

4e7c974d 03/24/2014 06:22 PM Ondrej Zajicek

Fixes a bug in graceful restart.

c980f800 03/24/2014 11:41 AM Ondrej Zajicek

Merge branch 'bgp-grace'

227af309 03/24/2014 11:32 AM Ondrej Zajicek

Fixes some minor issues in graceful restart.

6eda3f13 03/23/2014 12:35 AM Ondrej Zajicek

Documentation (and minor fixes) for BGP graceful restart.

0c791f87 03/20/2014 01:07 PM Ondrej Zajicek

BGP graceful restart support.

Also significant core protocol state changes needed for that,
global graceful restart recovery state and kernel proto support
for recovery.

d40c2659 02/26/2014 03:01 PM Ondrej Zajicek

Fixes issues with static protocol reconfiguration.

The old static route was not removed when the nexthop changed and the
new one was not viable (no neighbor).

Thanks to Pierluigi Rolando for the original patch.

5c200e0a 02/06/2014 07:15 PM Ondrej Zajicek

Merge branch 'add-path'

10c2e1e0 02/06/2014 04:54 PM Ondrej Zajicek

Fixes crash when state of disabled OSPF protocol is queried.

Thanks to Ondrej Caletka for the bugreport.

cba9cbf1 02/06/2014 04:51 PM Ondrej Zajicek

Silence this annoying warning.

48e5f32d 02/06/2014 04:46 PM Ondrej Zajicek

Many changes in I/O and OSPF sockets and packet handling.

- BSD: specify src addr on IP sockets by IP_HDRINCL
- BSD: specify src addr on UDP sockets by IP_SENDSRCADDR
- Linux: specify src addr on IP/UDP sockets by IP_PKTINFO
- IPv6: specify src addr on IP/UDP sockets by IPV6_PKTINFO...

6601a148 12/10/2013 09:30 PM Ondrej Zajicek

Merge branch 'add-path'

2d0b7e24 12/02/2013 10:54 AM Ondrej Zajicek

Fixes problem with source address selection in BGP and BFD.

e7d2ac44 12/01/2013 12:49 PM Ondrej Zajicek

Finishes add-path.

Fixes some bugs and uses generic hash implementation.

283c7dfa 11/25/2013 05:42 PM Ondrej Zajicek

Merge branch 'master' into add-path