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.
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'
NEWS and version update
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.
Merge remote-tracking branch 'origin/master' into int-new
Miscellaneous minor fixes
Prog Doc: Complete several missing parameters
netlink: update struct msghdr
The netlink code assumes an order for the members of struct msghdr.This breaks recvmsg and sendmsg with musl libc on mips64. Fix this byusing designated initializers instead.
Signed-off-by: Stijn Tintel <email@example.com>
Merge branch 'int-new' into int-new-merged
Merge remote-tracking branch 'origin/rte-update' into int-new
Portability: Fixed C extension error generated by CLang.
sysdep/linux/netlink.c:921:10: error: fields must have a constant size:'variable length array in structure' extension will never be supported char buf[128 + KRT_METRICS_MAX*8 + nh_bufsize(a->nexthops)];...
Build system reworked to one global Makefile with includes and no nesting
Also removed the lib-dir merging with sysdep. Updated #include'saccordingly.
Fixed make doc on recent Debian together with moving generated doc intoobjdir.
Moved Makefile.in into root dir...
Initialize variable ifr in sk_setup()
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 heavymodifications and bugfixes.
Thanks to Toke Hoiland-Jorgensen for the original patch.
BSD: Add the IPsec SA/SP database entries control
Add code for manipulation with TCP-MD5 keys in the IPsec SA/SP databaseat FreeBSD systems. Now, BGP MD5 authentication (RFC 2385) keys arehandled automatically on both Linux and FreeBSD.
Based on patches from Pavel Tvrdik.
Route update: move table lookup from protocols into rte_update2().
Many protocols do almost the same when creating a rte_update requestbefore calling rte_update2(). This commit should simplify the protocolside of the route-creation routine.
Merge branch 'master' into int-new-channels
Main: Add local option
Add option that changes default paths for config file and control socketto the current working directory.
Channelize: rt_notify arg conversion table -> channel
IO: Avoid multiple event cycles in one loop cycle.
Event cycle may took too much time and trigger next timer events, soavoid cycling between timer and event cycles inside the loop cycle.
IO: Replace RX priority heuristic with explicit mark
In BIRD, RX has lower priority than TX with the exception of RX fromcontrol socket. The patch replaces heuristic based on socket type withexplicit mark and uses it for both control socket and BGP session waiting...
KRT: Fix route learn scan when route changed
When a kernel route changed, function krt_learn_scan() noticed that andreplaced the route in internal kernel FIB, but after that, functionkrt_learn_prune() failed to propagate the new route to the nest, because...
IO/Poll: fix mistaken variable merge
The events variable is used in the short loop decision. The reasons arenot much clear, keeping this to keep the former behaviour.
Unix: Substituted select -> poll also in congestion checker
It does strange things when even one fd larger than FD_SETSIZE ispassed to select().
Poll: Prevent the improbable case of EAGAIN after POLLIN
Unix: Rework of select-loop to poll-loop
This should lift the limit of FD_SETSIZE and allow more than 1024 fd's.FD_SETSIZE limit doesn't matter now when creating new sockets.
Unix: Fix bug in syslog name handling
Pointer to current_log_name has to be changed even if the name is thesame, because the old one will be invalid/freed after reconfiguration.
BSD: compilation error fix
Channels - explicit links between protocols and tables
The patch adds support for channels, structures connecting protocols andtables and handling most interactions between them. The documentation ismissing yet.
io.c: fix reads from uninitialized memory
BSD: fix no-return warning
BSD: Explicitly dropping routes with mismatched AF's.
Add forgotten semicolon
BSD integration fixes
Hidden AF_INET* inside sysdep/