summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-12-19IO: Workaround for broken FreeBSD behaviorOndrej Zajicek (work)
FreeBSD silently changes TTL to 1 when MSG_DONTROUTE is used, even when it is explicitly set to another value. That breaks TTL security sockets, including BFD which always uses TTL 255. Bad FreeBSD!
2018-12-19Doc: Generate MRT progdocOndrej Zajicek (work)
2018-12-19Doc: Rename code documentation files back to DocOndrej Zajicek (work)
2018-12-19Doc: Move root of code documentation to doc dirOndrej Zajicek (work)
It reduces clutter in root and also avoid collision with doc dir on case-insensitive filesystems when name back to Doc.
2018-12-19Unix: Fix variable declarationsOndrej Zajicek (work)
2018-12-17OSPF: Fix wrong LSA collisions detectionOndrej Zajicek (work)
In some circumstances (old LSA flushed but not acknowledged and not removed) origination of a new LSA may wrongly triggers LSA collision code. The patch fixes that. Thanks to Asbjorn Mikkelsen for the bugreport and @mdelagueronniere for the original patch.
2018-12-10OSPF: Fix reconfiguration of vlinksOndrej Zajicek (work)
Fix crash during reconfiguration of OSPF config with vlinks. When vlink is reconfigured, a generic iface-reconfiguration code is used, which in one place supposes that it is running on a regular iface. Thanks to Cybertinus for a bugreport.
2018-12-04Static: Fix reset neighbor entries for ECMP routesOndrej Zajicek (work)
Neighbor entries for static ECMP routes were not cleaned up during reconfigure and pointed to the old instances, which leads to crash after reconfigure. Thanks to Vladimir Osmolovskiy for the bugreport.
2018-11-21MRT documentationOndrej Zajicek (work)
2018-11-20MRT: Fix bug in MRT table dump requested from CLIOndrej Zajicek (work)
2018-11-08Nest: Improve keeping track of IPv6 link-local addressesOndrej Zajicek (work)
Most protocols in IPv6 mode use link-local source addresses and expect that there is one on each active interface. The old code depended on assumption that if there is some IPv6 address on iface, there is also an IPv6 link-local address on that iface (added by kernel when the iface went up). Unfortunately, that is not generally true, as a configured global address sometimes ceases to be tentative (finishes DOD) before a link-local address on the same iface. In such case a protocol iface (namely RAdv and Babel) is activated, but fails to found link-local address and stays in failed state. The patch fixes that by tracking 'primary' IPv6 link-local address, sending iface restart notifications when it changes and making protocols ignore iface-up notifications when no such address is selected for an iface.
2018-11-05Filter: Make ifname attribute modifiableOndrej Zajicek (work)
Allow to change an interface associated with a route by setting ifname attribute. It will also change the route to a direct one.
2018-10-25OSPF: Fix some trace messagesOndrej Zajicek (work)
Missing argument in MTU change trace message can crash bird when MTU change happens and trace messages are active. Thanks to Alexander Velkov for the bugreport.
2018-09-18The MRT protocolOndrej Zajicek (work)
The new MRT protocol is responsible for periodic RIB table dumps in the MRT format (RFC 6396). Also the existing code for BGP4MP MRT dumps is refactored and splitted between BGP to MRT protocols, will be more integrated into MRT in the future. Example: protocol mrt { table "*"; filename "%N_%F_%T.mrt"; period 60; } It is partially based on the old MRT code from Pavel Tvrdik.
2018-09-11Conf: Show the line:char position where the syntax error happensJan Maria Matejka
2018-08-01BGP: Fix BFD/GR interactionOndrej Zajicek (work)
The old code does not cause GR if BFD failed when GR is running, session is re-established but not yet synchronized.
2018-08-01BGP: Minor fixes in long-lived graceful restartOndrej Zajicek (work)
2018-07-28BSD: Use MSG_DONTROUTE for unicast packets on FreeBSDOndrej Zajicek (work)
BSD systems cannot use SO_DONTROUTE, because it does not work properly with multicast packets (perhaps it tries to find iface based on multicast group address). But we can use MSG_DONTROUTE sendmsg() flag for unicast packets. Works on FreeBSD, is ignored on OpenBSD and is broken on NetBSD (i guess due to integrated routing table and ARP table).
2018-07-28Move FreeBSD CFLAGS and LDFLAGS to configureOndrej Zajicek (work)
Backport of commit 09c1e370b3084f7acb7c3777427670a69945368a.
2018-07-17BGP: Long-lived graceful restart enhancementsOndrej Zajicek (work)
When use of LLGR is negotiated, handle hold timeout by LLGR instead of by hard restart. Allow to configure whether BFD session down event should be handled by GR/LLGR or by hard restart.
2018-07-17Doc: Documentation for long-lived graceful restartOndrej Zajicek (work)
2018-07-17BGP: Long-lived graceful restartOndrej Zajicek (work)
The patch implements long-lived graceful restart for BGP, namely draft-uttaro-idr-bgp-persistence-03.
2018-07-06Nest: Fix race condition during reconfiguration, part 2Ondrej Zajicek (work)
If export filter is changed during reconfiguration and a route disappears between reconfiguration and refeed (e.g., if the route is a static route also removed during the reconfiguration), the route is not withdrawn. The issue was fixed for regular channels by an earlier patch. This patch fixes the issue for channels in RA_ACCEPTED mode (first-pass-the-filter), used by BGP with 'secondary' option.
2018-07-03Nest: Fix race condition during reconfigurationOndrej Zajicek (work)
If export filter is changed during reconfiguration and a route disappears between reconfiguration and refeed (e.g., if the route is a static route also removed during the reconfiguration), the route is not withdrawn. The patch fixes that by adding tx reconfiguration timestamp.
2018-04-24Autotools: updated config.guess and config.subMaria Matejka
Updated to version 63b4ce2e8c28aee6a32133e400436e4ca885215a from git://git.savannah.gnu.org/config.git Previous version was 93b5037172b15ad28952481933517f1ba93d125b
2018-04-24Netlink: removed dynamic length array as Clang won't support it.Maria Matejka
2018-04-24Android: check for extra libs needed for buildMaria Matejka
2018-04-23Doc: renamed progdoc files Doc -> progdoc to fix collision with doc/ folder ↵Maria Matejka
on case-insensitive filesystems
2018-03-24Doc: Remove some superfluous slashesOndrej Zajicek (work)
2018-03-24Doc: Be consistent in generating pdf outputOndrej Zajicek (work)
2018-03-23Autoconf replaced by autoreconfOndrej Filip
2018-03-22Date added.v1.6.4Ondrej Filip
2018-03-21NEWS and version updateOndrej Zajicek (work)
2018-03-21Doc: Minor build fixOndrej Zajicek (work)
2018-03-19C99 loop declarations not allowed in 1.6.xOndrej Zajicek (work)
2018-03-14Filter: make bgpmask literals real constructorsJan Maria Matejka
The bgpmask literals can include expressions. This is OK but they have to be interpreted as soon as the code is run, not in the time the code is used as value. This led to strange behavior like rewriting bgpmasks when they shan't be rewritten: function mask_generator(int as) { return [= * as * =]; } function another() bgpmask m1; bgpmask m2; { m1 = mask_generator(10); m2 = mask_generator(20); if (m1 == m2) { print("strange"); # this would happen } } Moreover, sending this to CLI would cause stack overflow and knock down the whole BIRD, as soon as there is at least one route to execute the given filter on. show route filter bgpmask mmm; bgppath ppp; { ppp = +empty+; mmm = [= (ppp ~ mmm) =]; print(mmm); accept; } The magic match operator (~) inside the bgpmask literal would try to resolve mmm, which points to the same bgpmask so it would resolve itself, call the magic match operator and vice versa. After this patch, the bgpmask literal will get resolved as soon as it's assigned to mmm and it also will return a type error as bool is not convertible to ASN in BIRD.
2018-03-13Filters: Removed FI_COMMA, not used for 19 years.Jan Maria Matejka
This instruction was removed in the commit linked below and never used ever again. Rest in peace. commit 84c7e1943f0dbf896b1dd8d02a21120aa00463f4 Author: Pavel Machek <pavel@ucw.cz> Date: Tue Mar 2 19:49:28 1999 +0000
2018-03-13Filter: recursion to loopJan Maria Matejka
It was supposed to do tail-recursion in interpret() but it didn't compile as such. Converting it to loop makes a significant filter performance improvement for flat filters.
2018-03-13Filter: Instruction codes named as enumMaria Jan Matejka
The two-letter instructions were quite messy but they could be easily read from memory dumps. Now GDB (since 2012) supports pretty printing enum values and GCC checks the switch construction for missing enum values so we are converting the nice two-byte values to enums. Anyway, the enum still keeps the old two-byte values to be able to read the instruction codes even without GDB from plain memory dump.
2018-03-07Babel: Fix build with restricted protocol setOndrej Zajicek (work)
All keywords used in Babel config have to be declared locally. Thanks to Leo Vandewoestijne for the bugreport.
2018-01-23IO: Fix socket priorityOndrej Zajicek (work)
On Linux, setting the ToS will also set the priority and the range of accepted values is quite limited (masked by 0x1e). Therefore, 0xc0 is translated to a priority of 0, not something we want, overriding the "7" priority which was set previously explicitely. To avoid that, just move setting priority later in the code. Thanks to Vincent Bernat for the patch.
2018-01-16BGP: Implement 'disable after cease' optionOndrej Zajicek (work)
The option allows to specify that some cease subcodes should disable the protocol when received.
2018-01-16Filter: Allow silent filter executionOndrej Zajicek (work)
A filter should log messages only if executed explicitly (e.g., during route export or route import). When a filter is executed for technical reasons (e.g., to establish whether a route was exported before), it should run silently.
2018-01-03ROA: Fix reconfigurationOndrej Zajicek (work)
2018-01-02Remove libhistory checkOndrej Zajicek (work)
According to GNU Readline developers, if we link with libreadline then there is no need to link with libhistory at all.
2017-12-14Minor cleanupsOndrej Zajicek (work)
2017-11-28Babel: Parse flags in Hello TLVOndrej Zajicek (work)
RFC6126bis introduces a flags field for the Hello TLV, and adds a unicast flag that is used to signify that a hello was sent as unicast. This adds parsing of the flags field and ignores such unicast hellos, which preserves compatibility until we can add a proper implementation of the unicast hello mechanism. Thanks to Toke Hoiland-Jorgensen for the patch.
2017-11-09Filter test: typo fixJan Maria Matejka
2017-10-10Doc: Update sgml2* toolsOndrej Zajicek (work)
The old ones do not work on current Debian.
2017-10-10Doc: Fix referenceOndrej Zajicek (work)