summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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)
2017-10-10RAdv: Documentation for more specific routesMichal 'vorner' Vaner
2017-10-06RAdv: Change specific route options to be per-interfaceOndrej Zajicek (work)
And change default values of specific route options to be consistent with values of default router options.
2017-10-04RAdv: Support for more specific routes (RFC 4191)Michal 'vorner' Vaner
The patch implements Default Router Preferences and More-Specific Routes (RFC 4191) for RAdv protocol, allowing to announce router preference and more specific routes in router advertisements. Routes can be exported to RAdv like to regular routing protocols. Some cleanups, bugfixes and other changes done by Ondrej Zajicek.
2017-09-20filter: Allow assigning enums into extended attributesMichal 'vorner' Vaner
They are internally ints, but they got refused as a wrong type. This fixes setting of the BGP origin and is also needed for RA.
2017-09-19BGP: Shutdown communication (RFC 8203)Ondrej Zajicek (work)
The patch implements BGP Administrative Shutdown Communication (RFC 8203) allowing BGP operators to pass messages related to BGP session administrative shutdown/restart. It handles both transmit and receive of shutdown messages. Messages are logged and may be displayed by show protocol all command. Thanks to Job Snijders for the basic patch.
2017-09-19Docs: FIB iteration macrosMichal 'vorner' Vaner
2017-09-13Doc: Document 'empty' operatorOndrej Zajicek (work)
Thanks to Alexander Zubkov for the notification.
2017-09-12Backport some minor changes from int-newOndrej Zajicek (work)
2017-09-12Nest: VRF support for neighbor cache and olock codeOndrej Zajicek (work)
Actually much simpler than expected.
2017-09-06Basic VRF supportOndrej Zajicek (work)
Add basic VRF (virtual routing and forwarding) support. Protocols can be associated with VRFs, such protocols will be restricted to interfaces assigned to the VRF (as reported by Linux kernel) and will use sockets bound to the VRF. E.g., different multihop BGP instances can use diffent kernel routing tables to handle BGP TCP connections. The VRF support is preliminary, currently there are several limitations: - Recent Linux kernels (4.11) do not handle correctly sockets bound to interaces that are part of VRF, so most protocols other than multihop BGP do not work. This will be fixed by future kernel versions. - Neighbor cache ignores VRFs. Breaks config with the same prefix on local interfaces in different VRFs. Not much problem as single hop protocols do not work anyways. - Olock code ignores VRFs. Breaks config with multiple BGP peers with the same IP address in different VRFs. - Incoming BGP connections are not dispatched according to VRFs. Breaks config with multiple BGP peers with the same IP address in different VRFs. Perhaps we would need some kernel API to read VRF of incoming connection? Or probably use multiple listening sockets in int-new branch. - We should handle master VRF interface up/down events and perhaps disable associated protocols when VRF goes down. Or at least disable associated interfaces. - Also we should check if the master iface is really VRF iface and not some other kind of master iface. - BFD session request dispatch should be aware of VRFs. - Perhaps kernel protocol should read default kernel table ID from VRF iface so it is not necessary to configure it. - Perhaps we should have per-VRF default table.
2017-09-05KRT: Fix IPv6 ECMP handling with Linux 4.11+Ondrej Zajicek (work)
Starting from Linux 4.11, IPv6 ECMP routes are now notified using RTA_MULTIPATH, like IPv4 ones. The patch adds support for RTA_MULTIPATH parsing for IPv6 routes. This also enables to parse ECMP alien routes correctly. Thanks to Vincent Bernat for the original patch.
2017-09-04BSD: Fix alignment issueOndrej Zajicek (work)
Incorrect structure alignment breaks kernel routing table updates on FreeBSD/ARM (and perhaps other platforms). Thanks to Eugene Sevastyanov for the original patch.
2017-09-04Merge branch 'gitlab-ci'Michal 'vorner' Vaner
2017-09-04Gitlab CI supportMichal 'vorner' Vaner
Add configuration and docker definitions for tests and builds in Gitlab CI platform. Some of them currently fail, which is a known problem.
2017-08-30RAdv: Some style nitpicksOndrej Zajicek (work)
2017-08-30RAdv: Configure how long a dead prefix is advertisedMichal 'vorner' Vaner
2017-08-30RAdv: Buffer prefixes awhile after they disappearMichal 'vorner' Vaner
Keep a cache of all the relevant prefixes we send out. When a prefix appears, insert it into the cache. If it dies, keep it there for a while, marked as dead. Send out the dead prefixes with zero lifetime.
2017-08-30RAdv: Extract prefix option preparationMichal 'vorner' Vaner
Put the prefix option preparation into a separate function. We're going to reuse that bit of code.
2017-08-22Client: Fix includeOndrej Zajicek (work)
2017-08-10Nicer log outputMichal 'vorner' Vaner
non-primary is ugly, just omit it (and use primary in the other case).
2017-08-10Less confusing log messageMichal 'vorner' Vaner
A non-primary address isn't necessarily secondary, that's an independent flag.
2017-08-09Gitignore: File created by autoreconfMichal 'vorner' Vaner
2017-08-09Drop stale TODOMichal 'vorner' Vaner
A TODO file last updated 5 years ago is useless.
2017-08-09RAdv: Fix typoOndrej Zajicek (work)
2017-08-09RAdv: Style updatesMichal 'vorner' Vaner
Adapt the naming conventions to be a bit closer to the other protocols. proto_radv -> radv_proto struct radv_proto *ra -> struct radv_proto *p struct proto *p -> struct proto *P
2017-08-09radv: Fix RFC reference in commentsMichal 'vorner' Vaner
2017-06-19Filters: Do not clamp EC set values to 16 bit for EC_GENERICsOndrej Zajicek (work)
Thanks to Lennert Buytenhek <buytenh@wantstofly.org> for the patch.