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
Delete ipv6 option from configure
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
Netlink and BSD: Integrating IPv4 and IPv6
Merge branch 'master' into int-new
Netlink: attribute validation before parsing
Wanted netlink attributes are defined in a table, specifyingtheir size and neediness. Removing the long conditions that did thevalidation before.
Also parsing IPv4 and IPv6 versions regardless on the IPV6 macro.
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.
Fix compiling with --enable-debug option
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.
Netlink: Fixes uninitialized variable
Thanks to Pavel Tvrdik for the bugfix
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
unsgined char -> byte
Fix in the last commit
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...
KRT: Support for RTM_CHANGE on BSD
NEWS and version update
Fixes port range socket option
Understand IFF_MULTICAST flag on ifaces in Linux
Unfortunately, some interfaces support multicast but do not havethis flag set, so we use it only as a positive hint.
Thanks to Clint Armstrong for noticing the problem.
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
Use AF_UNSPEC for RTM_GETLINK
This value is specified in documentation.
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.
NEWS and version update.
Implements token bucket filter for rate limiting.
Refresh kernel protocol when interface disappears.
When an interface goes down, (Linux) kernel removes routes pointing tothat ifacem but does not send withdraws for them. We rescan thekernel table to ensure synchronization.
Thanks to Alexander Demenshin for the bugreport.
Fixes some warnings.
Fixes a bug in BSD kernel interfacing code.
The bug was introduced in 05476c4d04a24bdb26fa64e05ab31bc36118f34e.
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.
String constants could be used for string option values.
Thanks to Frederik Kriewitz for the patch.
IPv4/IPv6 integrated socket code.
Fixes build on some old systems.
Merge branch 'bgp-grace'
BGP graceful restart support.
Also significant core protocol state changes needed for that,global graceful restart recovery state and kernel proto supportfor recovery.
Fixes longstanding issue with interfaces staying in IF_TMP_DOWN.
Thanks to Pierluigi Rolando and others for the bugreport.
Workaround thread-unsafeness of cli_echo().
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 branch 'master' into add-path
Use ISO 8601 timeformats by default.
Changes primary addr selection on BSD to respect SIOCGIFADDR ioctl() result.
Thanks to Alexander V. Chernikov for the original patch.
Removes workaround related to import of kernel device routes.
Thanks to Benjamin Cama for notification.
filter/filter.c nest/proto.c nest/rt-table.c proto/bgp/bgp.h proto/bgp/config.Y
Minor fix in log_commit() w.r.t. changes in BFD branch.
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.
Fixes an issue when opposite address is mistaken for broadcast on ptp ifaces on BSDs.
Thanks to Lex van Roon for the bugreport and to Alexander V. Chernikovfor examining it and locating the problem.
BFD protocol, ready for release.
Supports OSPF and BGP and also statically configured sessions.
Forces KRT rescan on syncer startup with multi syncer config.
Thanks to Sergey Popovich for the patch.
Flag -f "run in foreground" added as requested by a package maintainter.
Fixes some BFD bugs and makes logging thread-safe.
Implements PID file support.
Thanks to Thierry Fournier for the original patch.
Fixes missing unregister of kernel table handling code.
And some minor fixes.
Thanks to Sergey Popovich for the patch.
Allows other than IA_PEER addresses on PtP ifaces on BSD.
Also fixes a potential problem with link-local dest_addrsfor IA_PEER addresses.
Thanks to Alexander V. Chernikov for the suggestion.
BFD work in progress.
Now it compiles and mostly works.
Fixes a bug in kernel extended attribute processing.
The bug caused that krt_prefsrc attribute was not processed when a routereceived from a kernel protocol was exported to another kernel protocol.
Thanks to Sergey Popovich for a bugreport.
Initial BFD commit, work in progress.
Allows to define constants of all filter types.
Implements eval command and minor CLI cleanups.
Implemented eval command can be used to evaluate expressions.
The patch also documents echo command and allows to use log classesinstead of integer as a mask for echo.
Fixes header file name.
Thanks to Fritz Grimpen for the patch.
Some fixes for TTL security.
Implements multiple routing table support for FreeBSD and OpenBSD.
Inspired by the patch from Alexander V. Chernikov.
Makes krt.c much more readable.
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.
Fixes problems with routing table scans on some platforms.
Negative bit shifts are definitely undefined oprations.
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...
Allows rejected routes to be kept and examined.
When 'import keep rejected' protocol option is activated, routesrejected by the import filter are kept in the routing table, but theyare hidden and not propagated to other protocols. It is possible toexamine them using 'show route rejected'.
Fixes a bug in primary IP selection.