Follow-up work on integration
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
Nest: Reimplement fib_route() and add some consts
Integrated address print lengths
Minor changes by Ondrej Santiago Zajicek
ROA code switchoff
Stop perusing f_prefix for non-prefix-set uses
Multiple changes by Ondrej Santiago Zajicek
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
Merge branch 'master' into rip-new
Follow-up commit on integrated BIRD
Use net_addr for interface address prefixes, support net_addr inconfiguration parser.
Nest: Fixes bug in missing cleanup during table removal
When a table is removed during reconfiguration, a reference was notcleared in the old configuration, which breaks undo.
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....
Major RIP redesign
The new RIP implementation fixes plenty of old bugs and also adds supportfor many new features: ECMP support, link state support, BFD support,configurable split horizon and more. Most options are now per-interface.
Nest: Fixes one of previous commit
Static: Support for BFD controlled static routes
Nest: Fixes symbols in router id
Thanks to Peter Hudec for noticing the problem.
Direct: Fixes behavior for the same routes on different interfaces
Thanks to Andrew (seti.kr.ua) for the bug report.
BGP multipath support
Kernel option 'merge paths' allows to merge routes exported to kernelprotocol (currently BGP and static routes) to multipath routes.
Fixes subtle bug in temporary attribute handling
In some cases, export filter accessed attributes of a different route.
Moving of mulipath merging code from OSPF to nest
Fixes bug in pipe feeding when filtered routes are kept in table
unsigned [int] -> uint
unsgined char -> byte
Fixes unnamed protocols from templates
Simplify flushing process
Related to changes from previous patch.
Fix minor issue in pipe route propagation
In some circumstances during reconfiguration, routes propagated by pipesto other tables may hang there even after the primary routes are removed.
There is already a workaround for this issue in the code which removes...
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,...
Add bitfield route attribute type
BGP: Enhanced route refresh (RFC 7313) support
Also hook feed_done is renamed to feed_end.
Possibility to define unnamed protocols from template added.
Implement latency tracking, internal event log and watchdog
Store protocol config size inside protocol structure
Make proto_config_new() use this info instead of supplied size.
Thanks to Alexander V. Chernikov for the patch.
Replacing GNU old-style field designator extension
Allows user data attached to f_trie_node structure.
Thanks to Alexander Chernikov for the patch.
Fixes a bug in locking code.
When multiple protocols have a lock for the same IP address, it crashesunder some circumstances.
Thanks to Matthias Schiffer for the bugreport.
Merge remote-tracking branch 'origin/soft-int'
Fixes error message in 'show route' cmd.
Message 'Network not in table' was not reported if a network node withoutany routes was found in a routing table.
Changes order of iface/addr/neigh event hooks.
Now the order is:
Up -> iface, addr, neighDown -> neigh, addr, iface
It fixes the case when an iface appears, related static routes areactivated and exported to OSPF before the iface notification andtherefore forwarding addresses are not encoded in generated external...
Refactoring of OSPF messages.
Merge remote-tracking branch 'origin/master' into soft-int
Implements show route noexport option.
Shows routes that would be exported to the protocol but are rejected bythe export filter.
Implements token bucket filter for rate limiting.
Fixes some warnings.
Temporary integrated OSPF commit.
String constants could be used for string option values.
Thanks to Frederik Kriewitz for the patch.
Fixes a problem with undoing of deconfiguring of protocol.
Thanks to Sergey Popovich for the original patch.
Fixes 'show route export' w.r.t. protocols with different RA_* types.
Fixes limit verification during reconfiguration.
Fixes some asserts.
Check validity of interface definitions.
Thanks to Aleksey Berezin for the bugreport.
Fixes some minor issues in graceful restart.
Documentation (and minor fixes) for BGP graceful restart.
BGP graceful restart support.
Also significant core protocol state changes needed for that,global graceful restart recovery state and kernel proto supportfor recovery.
Merge branch 'add-path'
Fixes problem with source address selection in BGP and BFD.
Fixes some bugs and uses generic hash implementation.
Merge branch 'master' into add-path
Last state change should track protocol state change.
And not core state change, which is not much relevant(e.g. refeed in BGP).
Minor changes to default router ID calculation.
filter/filter.c nest/proto.c nest/rt-table.c proto/bgp/bgp.h proto/bgp/config.Y
Merge commit 'origin/bfd'
Adds rate limiting to some log messages.
Adds a missing file.
I forgot to add that to the previous commit.
BFD protocol, ready for release.
Supports OSPF and BGP and also statically configured sessions.
Implements 'allow local as' option.
Similar to allowas-in option on other routers.
Fixes some BFD bugs and makes logging thread-safe.
Implements C.len operator for clist and eclist types.
Some fixes in filter code.
Thanks to Sergey Popovich for original patches.
Recheck export/import/receive limits during reconfiguration.
Fixes build issues without BGP.
Thanks to Sergey Popovich for the patch.
Fixes missing unregister of kernel table handling code.
And some minor fixes.
BFD work in progress.
Now it compiles and mostly works.
Fixes a bug related to multiple IPs and direct protocol.
Multiple IPs in the same IP prefix confuse the directprotocol and could cause withdrawal of a valid prefix.
Thanks to Dan Rimal for a bugreport.
Extends delete/filter operators to work no bgp_paths.
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 bug in protocol flushing and rtable pruning.
When route was propagated to another rtable through a pipe and then thepipe was reconfigured softly in such a way that any subsequent routeupdates are filtered, then the source protocol shutdown didn't clean up...
Implements 'bgppath ~ int set' filter op.
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 kernel routes multiple routing tables.
Temporary dummy routes created by a kernel protocol during routing tablescan get mixed with real routes propagated from another kernel protocolthrough a pipe.
Allows IP of loopback to be used in automatic router ID selection.
Default rounting table for 'show route export/preexport/protocol' is the one related to a respective protocol.
I still believe that 0 == NULL, however this patch will make Santiago happy. :-)
Route limits can be disabled - this makes sense for protocol templates
Implements router advertisements activated by received routes.
The RAdv protocol could be configured to change its behavior based onavailability of routes, e.g., do not announce router lifetime when adefault route is not available.
Separate import and receive limits.
They have different behavior w.r.t. filtered routes that are kept.
Implements interface masks for choosing router id.
Router ID could be automatically determined based of subset ofifaces/addresses specified by 'router id from' option. The patch alsodoes some minor changes related to router ID reconfiguration.
Thanks to Alexander V. Chernikov for most of the work.
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...
Fixes route tracing w.r.t. kept filtered routes.
Changes 'rejected' to 'filtered' in one of the last patches.
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 with neighbor cache and overlapping IP prefixes.
When there are overlapping IP prefixes and one disappears,neighbors associated with it was removed even if thereis another covering IP prefix.
Implements ADD-PATH extension for BGP.
Allows to send and receive multiple routes for one network by one BGPsession. Also contains necessary core changes to support this (routingtables accepting several routes for one network from one protocol).It needs some more cleanup before merging to the master branch.