Nest: Maintain separate IPv4, IPv6 and LLv6 preferred addresses
Also redesign preferred address selection and update protocols to useappropriate preferred address.
Based on a previous work by Jan Maria Matejka.
Linpool: default allocation size
Merge master into int-new
BGP: Add support for SAFI 129 (VPN multicast)
Which, in contrast to SAFI 128, does not use MPLS labels.
Static: Support for dual-AF IGP tables
When recursive routes with hybrid next hops (e.g. IPv6 route with IPv4 nexthop) are allowed, we need both IPv4 and IPv6 IGP tables.
BGP: Simplify igp table options
BGP: Update list of supported standards
BGP: Support for routes with mixed-AF next hops
Covers IPv4/VPNv4 routes with IPv6 next hop (RFC 5549), IPv6 routes withIPv4 next hop (RFC 4798) and VPNv6 routes with IPv4 next hop (RFC 4659).Unfortunately it also makes next hop hooks more messy.
Each BGP channel now could have two IGP tables, one for IPv4 next hops,...
BGP: Bugfix in VPN NLRI encoding
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
BGP: Allow to specify interface for regular sessions
This may be useful if multple interfaces share the same network range.
Thanks to Fritz Grimpen for the original patch.
BGP: Fix bug in ADD_PATH
When a BGP session with ADD_PATH is restarted and the neighbor do notannounce ADD_PATH capability during reconnect, the accept_ra_types isstill set to RA_ANY.
Thanks to Lennert Buytenhek for the bugreport
Nexthop: Fixed hostentry
BGP: Allow exchanging LOCAL_PREF with eBGP peers
Adds option 'allow bgp_local_pref' to override the usual restriction ofLOCAL_PREF on eBGP sessions.
Thanks to Lennert Buytenhek for the patch.
Merge branch 'int-new' into nexthop-merged
BGP: Update RFC references
Several minor fixes
Merge branch 'master' into int-new
BGP: Minor cleanups
BGP: Partial support for IPv4 routes with IPv6 next hop (RFC 5549)
Mostly capability signalling
BGP: Support for AS confederations (RFC 5065)
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...
BGP: Report capabilities in show protocols all
BGP: Add support for flowspec (RFC 5575)
Integrated and extensible BGP with generalized AFI handling,support for IPv4+IPv6 AFI and unicast+multicast SAFI.
BGP: Fix memory leak in graceful restart code
Prefix and bucket tables are initialized when entering established statebut not explicitly freed when leaving it (that is handled by protocolrestart). With graceful restart, BGP may enter and leave established...
BGP: Cluster list item should be prepended
Commit 3c09af41... changed behavior of int_set_add() from prepend toappend, which makes more sense for community list, but prepend must beused for cluster list. Add int_set_prepend() and use it in cluster list...
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 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.
IANA assigned a different number to large BGP communities - changed.
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.
BGP: Fix extended messages
Change attribute length limit to handle extended (64 kB) messages.
Do not mix updates and withdraws (RFC 7606).
BGP: Skip empty path segments in received AS_PATH
Although RFC 4271 does not forbid empty path segments, they are uselessand some implementations consider them invalid. It is clarified in RFC 7606,specifying that AS_PATH with empty segment is considered malformed.
Merge remote-tracking branch 'origin/master' into int-new
Merge branch 'int-new' into int-new-merged
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...
BSD: Add the IPsec SA/SP database entries control
Add code for manipulation with TCP-MD5 keys in the IPsec SA/SP databaseat FreeBSD systems. Now, BGP MD5 authentication (RFC 2385) keys arehandled automatically on both Linux and FreeBSD.
Based on patches from Pavel Tvrdik.
Merge branch 'master' into int-new-channels
IO: Avoid multiple event cycles in one loop cycle.
Event cycle may took too much time and trigger next timer events, soavoid cycling between timer and event cycles inside the loop cycle.
IO: Replace RX priority heuristic with explicit mark
In BIRD, RX has lower priority than TX with the exception of RX fromcontrol socket. The patch replaces heuristic based on socket type withexplicit mark and uses it for both control socket and BGP session waiting...
BGP: Fix bug in incoming connection handling
When a BGP session was established by an outgoing connection withGraceful Restart behavior negotiated, a pending incoming connection inOpenSent state, and another incoming connection was received, then theoutgoing connection (and whole BGP session) was closed, but the old...
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.
BGP: Update capability number from IANA for extended messages
BGP: Extended messages support
Implements draft-ietf-idr-bgp-extended-messages-10, for nowundocumented and with temporary private capability number.
BGP multipath support
Kernel option 'merge paths' allows to merge routes exported to kernelprotocol (currently BGP and static routes) to multipath routes.
unsigned [int] -> uint
BGP: Fixes serious bug in TX handling
Under some circumstances and heavy load, TX could be postponeduntil the session fails with hold timer expired.
Thanks to Javor Kliachev for making the bug reproductible.
BGP: AS-wide unique router ID (RFC 6286) support
RFC 6286 relaxed rules for router IDs, allowing EBGP sessions betweenrouters with the same ID (but different ASN).
BGP: Enhanced route refresh (RFC 7313) support
Also hook feed_done is renamed to feed_end.
Fixes serious bug in BGP add-path
Temporary rta is reused in BGP, while rta_lookup() breaks it.
Thanks to Alexander Chernikov for analysing the problem.
Rename BGP option 'start delay' to 'connect delay'
Also update log message for error-triggered startup delay.
Relax BGP neighbor parameter
Permit specifying neighbor address, AS number and port independently.Add 'interface' parameter for specifying interface for link-localsessions independently.
Thanks to Alexander V. Chernikov for the original patch.
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.
Make BGP protocol instance search a separate function
Replacing GNU old-style field designator extension
Fixes potential alignment bug in BGP.
Thanks to Andrew (seti.kr.ua) for the bug report.
Link state support in BGP.
Configurable fast shutdown of a BGP session when an interface loses link.
Integrated IP functions.
Implements token bucket filter for rate limiting.
Allows to configure different remote port for BGP sessions.
Thanks to João Taveira Araújo for the original patch.
String constants could be used for string option values.
Thanks to Frederik Kriewitz for the patch.
IPv4/IPv6 integrated socket code.
Fixes BGP crash when update with some attributes and empty NLRI is received.
Thanks to Charlie Allom for the bugreport.
Fixes a bug in (mainly) IPv6 BGP.
Stack variable may be used unitialized and that would lead to spuriousrta_free(), which may cause crash. The bug was introduced in 1.4.1 frommerging add-path branch.
Thanks to Peter Andreev for reporting it and Alexander V. Chernikov for...
Fixes a bug in graceful restart.
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
Enables multihop mode for IBGP by default.
This is more consistent with common usage and also with the behavior ofother implementations (Cisco, Juniper).
Also changes the default for gw mode to be based solely ondirect/multihop.
filter/filter.c nest/proto.c nest/rt-table.c proto/bgp/bgp.h proto/bgp/config.Y
Merge commit 'origin/bfd'
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 a bug related to mixed up neighbor events in BGP.
Neighbor events related to received route next hops got mixed up withsticky neighbor node for an IP of the BGP peer. If a neighbor for a nexthop disappears, BGP session is shut down.
Implements RFC 6608 Subcodes for BGP FSM Error.
Fixes stuck connection during BGP session shutdown.
If TX buffers were full during BGP session shutdownthen a protocol waited indefinitely to be able tosend notification packet to close the session.
Fixes a problem with BGP neighbors, link-local addresses and locking.
Thanks to Fritz Grimpen for the bugfix.
Fixes a crash when mrtdump is enabled and interface goes away.
Thanks to Peter Christensen for the bugfix.
Fixes a bug in IPv6 BGP next hop processing.
BGP next hop attributes with empty link-local IPv6 addresses were nothandled properly.
Thanks to Sergey Popovich for the bugfix.
Implements 'next hop keep' option for BGP.
This option allows to keep the received next hop even in cases whenthe route is sent to an interface with a different subnet.
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.
Changes 'rejected' to 'filtered' in one of the last patches.
AS# in bgp.agreggator was a signed integer - fixed.
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.
Fixes BGP subcode during global shutdown.
Merge branch 'rt-accepted'
nest/config.Y nest/rt-table.c proto/bgp/bgp.c