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.
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'
Merge branch 'int-new' into nexthop-merged
Several minor fixes
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.
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
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.
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: 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.
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.
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
Merge remote-tracking branch 'origin/rte-update' into int-new
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.
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.
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
Add forgotten semicolon
Hidden AF_INET* inside sysdep/
Follow-up work on integration
Better fix of missing AF_INET6? definition in lib/socket.h
Moved the code to sysdep.
Modify FIB_WALK() and FIB_ITERATE() to work with new FIB code
Returned user data pointers have offset relative to fib_node.
Contains some patches from Jan Moskyto Matejka
KRT: Integration of IPv4/IPv6 in sysdep/linux
ROA code switchoff
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
Nest: Fix bug in device proto
If an interface address notification is received during device protocolshutdown/restart, BIRD crashed.
Thanks to Wei Huang for the bugreport.
Follow-up commit on integrated BIRD
Use net_addr for interface address prefixes, support net_addr inconfiguration parser.
Netlink: Allow more than 256 routing tables.
Since 2.6.19, the netlink API defines RTA_TABLE routing attribute toallow 32-bit routing table IDs. Using this attribute to index routingtables at Linux, instead of 8-bit rtm_table field.
Conf: Fixes bug in symbol lookup during reconfiguration
Symbol lookup by cf_find_symbol() not only did the lookup but also addednew void symbols allocated from cfg_mem linpool, which gets broken whenlookups are done outside of config parsing, which may lead to crashes...
Initial commit on integrated BIRD
New data types net_addr and variants (in lib/net.h) describingnetwork addresses (prefix/pxlen). Modifications of FIB structuresto handle these data types and changing everything to use thesedata types instead of prefix/pxlen pairs where possible....
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.
BGP multipath support
Kernel option 'merge paths' allows to merge routes exported to kernelprotocol (currently BGP and static routes) to multipath routes.
KRT: Fixes some minor bugs in kernel protocol
unsigned [int] -> uint
KRT: Add support for plenty of kernel route metrics
Linux kernel route metrics (RTA_METRICS netlink route attribute) arerepresented and accessible as new route attributes:
krt_mtu, krt_window, krt_rtt, krt_rttvar, krt_sstresh, krt_cwnd, krt_advmss,krt_reordering, krt_hoplimit, krt_initcwnd, krt_rto_min, krt_initrwnd,...
KRT: Fixes route reload
Did not really worked
KRT: Fixes learning of preferred kernel routes.
When a new route was imported from kernel and chosen as preferred, thenthe old best route was propagated as a withdraw to the kernel protocol.Under some circumstances such withdraw propagated to the BSD kernel could...
Fixes port range socket option
BGP: Enhanced route refresh (RFC 7313) support
Also hook feed_done is renamed to feed_end.
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
Store protocol config size inside protocol structure
Make proto_config_new() use this info instead of supplied size.
Add const to a param msg at functions log_msg, log_rl, die, bug and debug
Replacing GNU old-style field designator extension
Fininshing integrated OSPF.
Integrated IP functions.