NEWS and version update
KRT: Fix direct routes for BSD
Old way to set direct routes is to use local IP as gateway, but that doesnot work properly on newer FreeBSDs. Now we use sockaddr_dl containinginterface index as gateway.
Fix build without limited protocol set
Netlink: Fix memory leak
Use git describe for BIRD version
Based on patch from Pavel Tvrdik
Netlink: Use linpool instead of static buffer
Fix some minor issues
Revive FIB and kernel MPLS code
KRT: Fix bug in multipath handling
Doc: Documentation update
Switchoff for MPLS in kernel.
Lib: Check size of nets
Enable ECMP and Link detection by default
ECMP is not enabled on BSD, where it is not supported by BIRD.
Merge commit '7b2c5f3d2826e3175bf31b1c36056c9efc587a2b' into int-new
Merge commit '98bb80a243b58c43453e9be69d19d0350286549c' into int-new
BSD: Fix in the last commit
Timers: Revert temporary names and remove old timer.h
Timers: Fix TBF and some last remains
Sysdep: Remove old timer code
Nest: Update to new timers
Timers: Add typecast to unit-converting macros
Kernel: Update to new timers
Timers: Parse and format functions for microsecond times
Date/time output (e.g. in logs, show commands) can use %f to specifysubsecond time. By default, millisecond precision is used in output.
Timers: Replace old timers with microsecond timers
The old timer interface is still kept, but implemented by new timers. Theplan is to switch from the old inteface to the new interface, then cleanit up.
Timers: Integrate microsecond timers to the main loop
Timers: Split microsecond timers from BFD code to lib
BSD: Minor fix of penultimate commit
KRT: Minor fix of last commit
Nest: Maintain separate IPv4, IPv6 and LLv6 preferred addresses
Also redesign preferred address selection and update protocols to useappropriate preferred address.
Based on a previous work by Jan Maria Matejka.
Basic VRF support
Add basic VRF (virtual routing and forwarding) support. Protocols can beassociated with VRFs, such protocols will be restricted to interfacesassigned to the VRF (as reported by Linux kernel) and will use socketsbound to the VRF. E.g., different multihop BGP instances can use diffent...
KRT: Fix IPv6 ECMP handling with Linux 4.11+
Starting from Linux 4.11, IPv6 ECMP routes are now notified usingRTA_MULTIPATH, like IPv4 ones. The patch adds support for RTA_MULTIPATHparsing for IPv6 routes. This also enables to parse ECMP alien routescorrectly....
BSD: Fix alignment issue
Incorrect structure alignment breaks kernel routing table updates onFreeBSD/ARM (and perhaps other platforms).
Thanks to Eugene Sevastyanov for the original patch.
Implement onlink flag for nexthops
Add proper support for per-nexthop onlink flag in routes to handle nexthop addresses that are not covered by interface IP ranges. Supported bykernel and static protocols.
Thanks to Vincent Bernat for the idea.
Minor cleanups and fixes
Merge branch 'master' into int-new
Fix some forgotten warnings
Merge remote-tracking branch 'origin/int-new' into int-new
Linpool: default allocation size
Remove autoconf macros for time_t and alignment
Replaced by constant compile-time expressions. CPU_STRUCT_ALIGN is notreally correct, but is consistent with the old behavior.
Minor autoconf cleanup and documentation update
Some more autoconf cleanups
Replace integer type width detection with C99 fixed-width types.Also remove some unused or obsolete code.
Thanks to Ruben Kerkhof for the patchset.
Device: Fix option 'primary'
BSD: Fix address scan on OpenBSD
Adding also our copy of struct rtvia.
Include local lwtunnel.h unless found in system
Netlink: Change default kernel metric to 32
This avoids collisions with non-BIRD routes in kernel tables.
Netlink: Better handling of an error case
Netlink: Fix device route delete
Netlink: Fix bug in RTA_PRIORITY handling
Some autoconf cleanups
The patch allows to use autoreconf, replaces some long obsoleteconstructs and does some other minor cleanups. Also, the fileconfigure.in is renamed to configure.ac, as the old name has beendeprecated for a long time.
Merge branch 'int-new' into nexthop-merged
Several minor fixes
Fix IP_HDRINCL usage on FreeBSD 11
FreeBSD 11 changed endianity of ip_len field from host order to networkorder. Also DragonFly BSD allegedly expects network order here.
Thanks to Olivier Cochard-Labbé for the patch.
Netlink: MPLS routes in kernel
Anyway, Bird is now capable to insert both MPLS routes and MPLS encaproutes into kernel.
It was (among others) needed to define platform-specific AF_MPLS to 28as this constant has been assigned in the linux kernel.
No support for BSD now, it may be added in the future.
Removing (struct rta)->cast. Never used.
Merged multipath and single-path data structures.
Dropped struct mpnh and mpnh_*()Now struct nexthop exists, nexthop_*(), and also included struct nexthopinto struct rta.
Also converted RTD_DEVICE and RTD_ROUTER to RTD_UNICAST. If it is neededto distinguish between these two cases, RTD_DEVICE is equivalent to...
Netlink: fix occasional netlink hangs on busy machines
Merge branch 'int-new-rpki-squashed' (early part) into int-new
Integrated and extensible BGP with generalized AFI handling,support for IPv4+IPv6 AFI and unicast+multicast SAFI.
LibSSH may be switched off together with RPKI
SSH: Commented quirk based on undocumented behavior of LibSSH
RPKI protocol with one cache server per protocol
The RPKI protocol (RFC 6810) using the RTRLib(http://rpki.realmv6.org/) that is integrated insidethe BIRD's code.
Implemeted transports are: - unprotected transport over TCP - secure transport over SSHv2...
Unit Testing for BIRD
- Unit Testing Framework (BirdTest) - Integration of BirdTest into the BIRD build system - Tests for several BIRD modules
Based on squashed Pavel Tvrdik's int-test branch, updated for current int-new branch.
Minor code cleanups
Merge tag 'v1.6.2' into int-new
BSD: Fix build on OpenBSD broken by previous commit
Build: switch on -Wextra, get rid of most of the warnings
There are several unresolved -Wmissing-field-initializers on olderversions of GCC than 5.1, all of them false positive.
Log: Fix broken syslog name
BIRD passed string from configuration to openlog(), which kept itinternally. After reconfiguration the old string was freed, thereforeopenlog had invalid copy.
Thanks to Chris Caputo for the original patch.
Kernel socket missing err_hook fix
Thanks to Tim Weippert for bugreport.
KRT: Add krt_scope attribute
Add a new route attribute, krt_scope, to expose the Linux kernel routescope. Constants from /etc/iproute2/rt_scopes (prefixed by "ips_") areexpected to be used with the attribute. Both import and export aresupported.
Also, the patch fixes device route export to the kernel, by setting link...
Main: Improve BIRD help messages
rt-table: Fix kernel protocol export filter memory bug
Kernel protocol calls rt_export_merged(), which used @rte_update_pool fortemporary allocations, supposing it is called from other functions fromrt-table.c that handles locking and flushing of the linpool. Therefore,...
KRT: Add kernel metric protocol option
Kernel routes with different metrics do not clash with each other,therefore using dedicated metric value is a reliable way to avoidoverwriting routes from other sources (e.g. kernel device routes).
Although kernel route metric could already be set as a route attribute by...
KRT: Support for IPv6 ECMP
Linux represents IPv6 ECMP routes as a sequence of unipath routes withthe same prefix. We have to translate between our representation (oneroute with multipath next hop) and the Linux representation in bothdirections.
Proper learning of alien IPv6 ECMP routes still not supported....
KRT: Fix trivial error
KRT: Forbid path merging on BSD
We support ECMP routes only on Linux. Exported routes are checked inkrt_capable(), but a route generated during path merging avoids thischeck.
Netlink: Fix build with older headers missing IFA_FLAGS
Netlink: Ignore tentative addresses
Ignore tentative IPv6 addresses and wait until finish of DuplicateAddress Detection (We got notification when an address is no longertentative) to avoid problems when protocols try to use interfaceswith tentative link-local addresses....
Log: Fix error handling of debug file open
Logging is not yet initialized, we have to use fprintf() here.
Thanks to Pavel Tvrdik for noticing and debugging it.
cppcheck: fix va_end() functions
Fix declaration of shared global variables async_*
In a header file write it with extern keyword. And in one of the *.cfile declare it without extern keyword.
Unix IO: Tried to fix strange behavior after POLLHUP or POLLERR.
After-master-merge simple fixes.
BSD lib/setkey.h and lib/sysio.h #include fixes.OpenBSD's flex needs -o param without space.V6ONLY for SK_IP fix.
BSD: Fix setkey in int-new branch
IO: Minor changes in socket AF handing
AF can be specified implicitly by saddr or daddr, flags SKF_V4ONLY andSKF_V6ONLY are to be removed.