Merge commit '7b2c5f3d2826e3175bf31b1c36056c9efc587a2b' into int-new
Timers: Revert temporary names and remove old timer.h
Timers: Fix TBF and some last remains
Sysdep: Remove old timer code
Timers: Add typecast to unit-converting macros
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
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...
Minor cleanups and fixes
Minor autoconf cleanup and documentation update
Merge branch 'master' into int-new
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...
Minor code cleanups
Merge tag 'v1.6.2' into int-new
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.
Kernel socket missing err_hook fix
Thanks to Tim Weippert for bugreport.
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.
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
Merge branch 'int-new' into int-new-merged
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()
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.
Merge branch 'master' into int-new-channels
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...
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.
io.c: fix reads from uninitialized memory
Hidden AF_INET* inside sysdep/
Better fix of missing AF_INET6? definition in lib/socket.h
Moved the code to sysdep.
Removed BITS_PER_IP_ADDRESS, MAX_PREFIX_LENGTH, BIRD_AF
Explicit setting of AF_INET(6|) in IP socket creation. BFD set to listenon v6, without setting the V6ONLY flag to catch both v4 and v6 traffic.
Squashing and minor changes by Ondrej Santiago Zajicek
IO: Fix the previous bugfix
I should check it after making some trivial changes. The original patchfrom Alexander has it right.
IO: Handle fd values too big for select()
If the number of sockets is too much for select(), we should at leasthandle it with proper error messages and reject new sockets instead ofbreaking the event loop.
Thanks to Alexander V. Chernikov for the patch.
Fixes port range socket option
Fixes bug in debug dumps
Using 'dump sockets' in IPv6 mode caused crash due to mismatched format string.
Thanks to Pavel Tvrdik for noticing it.
Implement latency tracking, internal event log and watchdog
Use IP_PORTRANGE_HIGH for BFD where available
Integrated IP functions.
Fixes some warnings.
Ensures that msg_controllen includes last padding.
Although RFC 3542 allows both cases, Theo de Raadt thinkshe knows better, and msg_controllen without last paddingfails on OpenBSD.
Thanks to Job Snijders for the bugreport.
IPv4/IPv6 integrated socket code.
Many changes in I/O and OSPF sockets and packet handling.
I/O: - 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...
Merge commit 'origin/bfd'
Fixes problem with RIP on multiple ifaces on BSD.
RIP sockets for multiple ifaces collided, because we cannot bind toa specific iface on BSD. Workarounded by SO_REUSEPORT.
Thanks to Eugene M. Zheganin for the bugreport.
BFD protocol, ready for release.
Supports OSPF and BGP and also statically configured sessions.
Fixes some BFD bugs and makes logging thread-safe.
BFD work in progress.
Now it compiles and mostly works.
Initial BFD commit, work in progress.
Fixes header file name.
Thanks to Fritz Grimpen for the patch.
Some fixes for TTL security.
Implements TTL security for OSPF and RIP.
Interfaces for OSPF and RIP could be configured to use (and request)TTL 255 for traffic to direct neighbors.
Thanks to Simon Dickhoven for the original patch for RIPng.
Better packet priority and traffic class handling.
Implements support for IPv6 traffic class, sets higher priority for OSPFand RIP outgoing packets by default and allows to configure ToS/DS/TClassIP header field and the local priority of outgoing packets.
Implements undo command and optional timeout for configuration
Several new configure command variants:
configure undo - undo last reconfigurationconfigure timeout - configure with scheduled undo if not confirmed in timeoutconfigure confirm - confirm last configuration...
Rename sk_new() to avoid name collision with OpenSSL.
Cleanup in sysdep KRT code, part 2.
Remove support for historic Linux kernels,merge krt-iface, krt-set and krt-scan stub headers.
Some minor fixes.
Better support for link-local addresses in IO code.
The generalized TTL security mechanism (RFC 5082) support.
Added header file.
Implements Router Advertisement protocol.
Ignore warning when BGP peer is unreachable.
Implements proper multihop BGP.
Also does some incompatible changes to config file syntax,like removing 'via IP' from multihop option.
Implements command that shows memory usage.
Fixes bug on Linux 2.4.x - kernel sync does not work until restart of kernel protocol.
Which was, actually, a bug in timers - on older kernel, monotonic timeris missing and the other implementation started with now == 0, whichcollides with usage 0 as a special value in timer->expires field.
Handle EPIPE as a common connection close event.
Fixes build on newer Linux systems.
Fixes IPv6 build on older systems.
Fixes missing header.
Use SO_BINDTODEVICE also in Linux/IPv6.
Minor fixes to previous patches.
Merge branch 'socket2' into new
Adds check for no protocol and some minor CLI fixes.
- Adds check to deny config file with no specified protocol to prevent loading of empty config file.- Moves CLI init before config parse to receive immediate error message when cannot open control socket....
Merge branch 'new' into socket2
Many changes in (mainly) kernel syncers.
- BSD kernel syncer is now self-conscious and can learn alien routes- important bugfix in BSD kernel syncer (crash after protocol restart)- many minor changes and bugfixes in kernel syncers and neighbor cache- direct protocol does not generate host and link local routes...
Fix configure to enable warnings and fix most of them.
Fixes a crash caused by missing error hook on BGP listening socket.
Error happened when too many BGP connections arrived in one moment(ECONNABORTED).
Temporary OSPF commit - socket changes.
Makes date/time formats configurable.
BSD compatibility fix.
Implements MRTdump feature.
Use IPv6 checksums in OSPFv3.