Implement onlink flag for nexthops
Add proper support for per-nexthop onlink flag in routes to handle nexthop addresses that are not covered by interface IP ranges. Supported bykernel and static protocols.
Thanks to Vincent Bernat for the idea.
Nest: Update of show route cmd
Some code cleanup, multiple bugfixes, allows to specify also channelfor 'show route export'. Interesting how such apparenty simple thinglike show route cmd has plenty of ugly corner cases.
Nest: Fix route lookup
Client: multitable version of show route
BGP: Support for MPLS labels and VPN SAFI
Basic support for SAFI 4 and 128 (MPLS labeled IP and VPN) for IPv4 andIPv6. Should work for route reflector, but does not properly handleoriginating routes with next hop self.
Based on patches from Jan Matejka.
Nexthop: Fixed recursive route mpls label merging
Nest: Minor fixes in show route
Nexthop: Fixed hostentry
Nest: names for nhu_state values
It took too much time to analyze what's the meaning of nhu_state valuesso I spent less than the same amount of time documenting it.
Merge branch 'int-new' into nexthop-merged
Several minor fixes
MPLS: Label stack concatenation for recursive routes
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
Removing (struct rta)->cast. Never used.
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...
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.
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.
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.
BGP: Support for large communities
Add support for large communities (draft-ietf-idr-large-community),96bit alternative to RFC 1997 communities.
Thanks to Matt Griswold for the original patch.
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
Merge remote-tracking branch 'origin/master' into int-new
Miscellaneous minor fixes
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...
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.
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
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...
Updated RTA hashes to 32-bit values.
... and reworked the hashes a bit. Also added mem_hash functionwhich just computes a hash of given memory block.
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.
Delete old ROA code
Rewrite roa_check() for integrated BIRD
Thanks to Ondrej Zajicek for his support with writing this code.
Add ROA_* constants values to grammar of configuration
Add ROA_UNKNOWN, ROA_VALID and ROA_INVALID
Move ID allocator to a separate file and use it also in OSPF
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.
Nest: Reimplement fib_route() and add some consts
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
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....
Merge branch 'master' into rip-new
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.
Moving of mulipath merging code from OSPF to nest
unsigned [int] -> uint
unsgined char -> byte
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
Implements show route noexport option.
Shows routes that would be exported to the protocol but are rejected bythe export filter.
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
Some fixes in filter code.
Thanks to Sergey Popovich for original patches.
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 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.
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.
Finalize RA_ACCEPTED handling.
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.
Route Origin Authorization basics.
- ROA tables, which are used as a basic part for RPKI. - Commands for examining and modifying ROA tables. - Filter operators based on ROA tables consistent with RFC 6483.
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.
BGP Extended communities.
Prints full community lists during 'show route all'.
Adds support for several Linux kernel route attributes.
Core multipath support.
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.
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.
Shows source (Router ID) for OSPF routes and adds such attribute.
A sad thing is that we does not have a 'router_id' filter type,so it must be given as decimal number in filters.
Implement proper LSA ID generation.
The pipe cleanup.
Changes pipes to transfer all routes between routing table, not just optimal routes.
Change import/preimport to export/preexport to be consistent with filters.
'show route protocol <p>' added to CLI.
A lot of changes: - metric is 3 byte long now - summary lsa originating - more OSPF areas possible - virtual links - better E1/E2 routes handling - some bug fixes..
I have to do: - md5 auth (last mandatory item from rfc2328) - !!!!DEBUG!!!!! (mainly virtual link system has probably a lot of bugs)...
RTS_OSPF_BONDARY is nonsense, RTS_OSPF_IA must have smaller id than RTS_OSPF_EXT
Added RTD_NONE /* Just for internal use */
Removed rta_find() since nobody uses it and it's more convenientto use ea_find() directly.
I've changed the init callback type to a typedef to work around a bugin kernel-doc I'm too lazy to hunt now.
Route attributes for OSPF.
Better rt dumping.
To find out a type of route (external, inter/intra area)