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.
Static: Protocol rework wrt. struct nexthop changes; MPLS label support
Nexthop: Support for label stack in nest
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...
Basic flow specification support (RFC 5575)
Add flow4/flow6 network and rt-table type and operations, config grammarand static protocol support.
Squashed flowspec branch from Pavel Tvrdik.
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.
Check table type at `show route for ...'
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...
Merge branch 'master' into int-new
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.
Fixed memory bloating on kernel merge paths together with export filter.
Some memory was being allocated from bad linpool, not from the given oneas they should.
Thanks to Madhu and Justin Cattle for reporting this.
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,...
Nest: Keep multipath next hops sorted
Prepare for longer interface names - clean up of the code.
Merge remote-tracking branch 'origin/master' into int-new
Miscellaneous minor fixes
Prog Doc: Complete several missing parameters
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.
Channelize: rt_notify arg conversion table -> channel
Fix closing flushed channel
Fix reading from freed memory. Free at: channel_set_state(c, CS_DOWN) Read at: WALK_LIST2_DELSAFE(c, n, x, tab->channels, table_node)
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.
Rewrite roa_check() for integrated BIRD
Thanks to Ondrej Zajicek for his support with writing this code.
Fix check in net_route() in debug mode
Add NET ROA4/6 structures
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.
Integrated address print lengths
Minor changes by Ondrej Santiago Zajicek
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
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...
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.
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.
Fixes bug in pipe feeding when filtered routes are kept in table
unsigned [int] -> uint
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...
Allows user data attached to f_trie_node structure.
Thanks to Alexander Chernikov for the patch.
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.
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 'show route export' w.r.t. protocols with different RA_* types.
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 'master' into add-path
filter/filter.c nest/proto.c nest/rt-table.c proto/bgp/bgp.h proto/bgp/config.Y
Adds rate limiting to some log messages.
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...
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.
Default rounting table for 'show route export/preexport/protocol' is the one related to a respective protocol.
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.
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'.
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.
Allows to redefine master table.
Merge branch 'rt-accepted'
nest/config.Y nest/rt-table.c proto/bgp/bgp.c
Finalize RA_ACCEPTED handling.
Fixes a bug in RA_ACCEPTED handling.
Some fixes in route export limits.
Some minor fixes.
Implements generalized export limits.
And also fixes some minor bugs in limits.
Fixes in generalized import limits.
Implements generalized import hooks.
Thanks to Alexander V. Chernikov for the original patch.
Implement RA_ACCEPTED mode of route propagation.
Merge branch 'soon'
Fixes responsiveness for protocol shutdown.
When a protocol went down, all its routes were flushed in one step, thatmay block BIRD for too much time. The patch fixes that by limitingmaximum number of routes flushed in one step.
Better support for multitable protocols.
The nest-protocol interaction is changed to better handle multitableprotocols. Multitable protocols now declare that by 'multitable' field,which tells nest that a protocol handles things related to proto-rtableinteraction (table locking, announce hook adding, reconfiguration of...
Implements deterministic MED handling.
Thanks to Alexander V. Chernikov for many suggestions.
Signal problems with route installation to kernel tables.
Fixes a bug with setting preference during show route cmd.
If show route cmd was used with a filter that changed preference,BIRD crashed.
Compilation was failing without OSPF or RIP protocol - FIXED.
Fixes a nasty bug in OSPF.
Sending malformed network prefixes in LSAs causes OSPF to crashjust after the LSA is propagated to the other routers.
Core multipath support.
Fixes a one byte buffer overflow.
Do not allow interdependent recursive routes.
Adds igp_metric attribute.
Implements IGP metric comparison for BGP routes.
Use link-local addresses in recursive next hops for IPv6 BGP.
Hostcache should use trie to filter relevant route changes.
For hostentry cache, replace FIB with a hash table using (IP, dep table) as a key.
Fixes a buffer overflow in TX code of IPv6 BGP.
Implements hostcache and recursive next hops.
Hostcache is a structure for monitoring changes in a routing table thatis used for routes with dynamic/recursive next hops. This is needed forproper iBGP next hop handling.
Implements command that shows memory usage.
Restrict export of device routes to the kernel protocol.
In usual configuration, such export is already restrictedwith the aid of the direct protocol but there are someraces that can circumvent it. This makes it harder tobreak kernel device routes. Also adds an option to...
Update lastmod in 'ignored' case only for RIP routes.
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.
Removes phantom protocol from the pipe design.
It seems that by adding one pipe-specific exception to routeannouncement code and by adding one argument to rt_notify() callback icould completely eliminate the need for the phantom protocol instanceand therefore make the code more straightforward. It will also fix some...
Fixes protocol statistics for pipes.
Fixes a tricky bug in the pipe protocol.
When uncofiguring the pipe and the peer table, the peer table wasunlocked when pipe protocol state changed to down/flushing and not todown/hungry. This leads to the removal of the peer table beforethe routes from the pipe were flushed....
Adds asterisk to the primary route in 'show route' cmd.
And also fixes a minor bug.