Prog Doc: Complete several missing parameters
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.
Direct: Implement check link for direct protocol
When enabled, direct protocol generates routes only if the underlyinglink state is up.
Nest: Reset export route counter during graceful restart
Counter exp_routes is increased during initial route feed after GRrecovery, so it has to start with zero, otherwise BIRD will end withdouble value in exp_routes.
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...
BGP: Add documentaion for extended messages
Filter: Implement last_nonaggregated operator on bgp_path
Merge branch 'master' into rip-new
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...
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.
Fixes BGP subcode during global shutdown.
Allows to redefine master table.
Implements wildcard matching in config file include.
Also fixes some minor bugs in include.
Thanks Kelly Cochran for suggestion and draft patch.
Merge branch 'rt-accepted'
nest/config.Y nest/rt-table.c proto/bgp/bgp.c
Finalize RA_ACCEPTED handling.