Enable ECMP and Link detection by default
ECMP is not enabled on BSD, where it is not supported by BIRD.
BGP: Fix IPv6 MPLS/VPN multicast SAFI
BGP: Autoconfigure BGP next hops from preferred addresses
Merge commit '1e8721e2aeccfbc3f533e8b8abc07582cee77e9a' into int-new
Merge commit '7b2c5f3d2826e3175bf31b1c36056c9efc587a2b' into int-new
Merge commit '98bb80a243b58c43453e9be69d19d0350286549c' into int-new
Timers: Revert temporary names and remove old timer.h
Timers: Fix TBF and some last remains
Babel: More changes and bugfixes
Several changes and bugfixes in Babel, namely:
- Exported route parameters stored directly in route table entry- Exported non-babel routes no longer stored in per-entry route list- Route update, selection and retraction simplified and fixed...
Babel: Fix handling of seqno requests
Old behavior has several deficiencies compared to standard behavior(no triggered updates for replies, no retransmissions, ...).
Babel: Fix handling of IPv4 retractions
Babel TLV parsing code rejected IPv4 retractions without next-hop,although next-hop is needed just for regular updates.
Babel: Remove babel_proto ptr from babel_entry
Babel: Fix hello timeout for short hello intervals
Babel: Revamp cost computation and run route selection when cost change
Also fix several minor bugs and add 'limit' option for k-out-of-jlink sensing strategy. Change default from 8-of-16 to 12-of-16.Change IHU expiry factor from 1.5 to 3.5 (as in RFC 6126).
Babel: Fix unicast seqno requests
Babel: Avoid batch seqno updates
Babel: Fix Hello and IHU expiration
Babel: Update to new timers
BGP: Update to new timers
OSPF: Update to new timers
Note that recurrent timers are currently limited to ~1 hour.
Timers: Add typecast to unit-converting macros
RIP: Update to new timers
RAdv: Update to new timers
RPKI: Update to new timers
Timers: Show sub-second times in some protocol outputs
Timers: Parse and format functions for microsecond times
Date/time output (e.g. in logs, show commands) can use %f to specifysubsecond time. By default, millisecond precision is used in output.
Timers: Replace old timers with microsecond timers
The old timer interface is still kept, but implemented by new timers. Theplan is to switch from the old inteface to the new interface, then cleanit up.
Timers: Split microsecond timers from BFD code to lib
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.
Babel: Parse flags in Hello TLV
RFC6126bis introduces a flags field for the Hello TLV, and adds a unicast flagthat is used to signify that a hello was sent as unicast. This adds parsing ofthe flags field and ignores such unicast hellos, which preserves compatibility...
Babel: Interface address irrelevant for interface pattern matching.
OSPF: Add option to disable OSPFv3-AF
OSPF: Fix minor issue in TTL check
The TTL check must be done after instance ID dispatch to avoid warningswhen a physical iface is shared by multiple instances and some use TTLsecurity and some not.
OSPF: Fix next hop calculation for PtP links in IPv4 OSPFv3-AF
In such case, next hop has to be taken from Link-LSA like in broadcastcase, not from neighbor source address like in other PtP cases.
Also add some checks, comments and code cleanup.
OSPF: Support of address families in OSPFv3
OSPFv3-AF can handle multiple topologies of diferent address families(IPv4, IPv6, both unicast and multicast) using separate instancesdistinguished by instance ID ranges.
RAdv: Change specific route options to be per-interface
And change default values of specific route options to be consistent withvalues of default router options.
RAdv: Support for more specific routes (RFC 4191)
The patch implements Default Router Preferences and More-Specific Routes(RFC 4191) for RAdv protocol, allowing to announce router preference andmore specific routes in router advertisements. Routes can be exported to...
BGP: Shutdown communication (RFC 8203)
The patch implements BGP Administrative Shutdown Communication (RFC 8203)allowing BGP operators to pass messages related to BGP sessionadministrative shutdown/restart. It handles both transmit and receive ofshutdown messages. Messages are logged and may be displayed by show...
Backport some minor changes from int-new
Nest: VRF support for neighbor cache and olock code
Actually much simpler than expected.
Basic VRF support
Add basic VRF (virtual routing and forwarding) support. Protocols can beassociated with VRFs, such protocols will be restricted to interfacesassigned to the VRF (as reported by Linux kernel) and will use socketsbound to the VRF. E.g., different multihop BGP instances can use diffent...
RAdv: Some style nitpicks
RAdv: Configure how long a dead prefix is advertised
RAdv: Buffer prefixes awhile after they disappear
Keep a cache of all the relevant prefixes we send out. When a prefixappears, insert it into the cache. If it dies, keep it there for awhile, marked as dead.
Send out the dead prefixes with zero lifetime.
RAdv: Extract prefix option preparation
Put the prefix option preparation into a separate function. We're goingto reuse that bit of code.
Merge branch 'master' into int-new
RAdv: Fix typo
RAdv: Style updates
Adapt the naming conventions to be a bit closer to the other protocols.
proto_radv -> radv_protostruct radv_proto *ra -> struct radv_proto *pstruct proto *p -> struct proto *P
radv: Fix RFC reference in comments
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.
Babel: Fix pointer arithmetic in subtlv parsing
The subtlv parsing code was doing byte-based arithmetic with non-void pointers,causing it to read beyond the end of the packet.
Signed-off-by: Toke Høiland-Jørgensen <email@example.com>
Babel: Parse sub-TLVs and skip TLVs with mandatory sub-TLV
RFC6126bis formally introduces sub-TLVs to the Babel protocol, includingmandatory sub-TLVs. This adds support for parsing sub-TLVs to the Babelprotocol and skips TLVs that contain mandatory sub-TLVs, as per the spec....
Babel: Implement IPv6 prefix compression on outgoing updates
Previously, the Babel protocol would never use prefix compression on outgoingupdates (but would parse it on incoming ones). This adds compression of IPv6addresses of outgoing updates.
The compression only works to the extent that the FIB is walked in lexicographic...
Babel: Add support for dual-stack IPv4/IPv6 operation
This adds support for dual-stack v4/v6 operation to the Babel protocol.Routing messages will be exchanged over IPv6, but IPv4 routes can becarried in the messages being exchanged. This matches how the reference...
Change parser to handle numbers as unsigned
Lexer always parsed numbers as unsigned, but parser handled them assigned and grammar contained many unnecessary checks for negativity.
Minor cleanups and fixes
Linpool: default allocation size
Merge master into int-new
Check validity of dest w.r.t. net_type
Allow to define static roa/flow routes without dest.
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.
Merge branch 'nexthop-merged' into int-new
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
Nest: Minor fixes in show route
Static: Minor overhaul
The patch fixes several bugs introduced in previous changes, simplifiesthe protocol by handing routes uniformly, introduces asynchronous routeprocessing to avoid issues with separate notifications for each next-hopin ECMP routes, and makes reconfiguration faster by avoiding quadratic...
Update OSPF and RIP protocol names and related documentation
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.
Babel post-merge fixes
Merge branch 'int-new' into nexthop-merged
BGP: Update RFC references
Several minor fixes
Static: Fix bug in static route filter expressions
During reconfiguration, old and new filter expressions in static routesare compared using i_same() function. When filter expressions containfunction calls, it is necessary that old filter expressions are the...
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)
MPLS: Label stack concatenation for recursive routes
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...
BGP: Report capabilities in show protocols all
OSPF: Fix ECMP external merging
The variable nfa is not cleaned before each loop iteration and can havea wrong value of nfa.nhs_reuse from the previous step.
Thanks to Bernardo Figueiredo for the bugreport and analysis.
OSPF: Fix net-summary origination combined with stubnet option
Stubnet nodes in OSPF FIB were removed during rt_sync(), but the pointerremained in top_hash_entry.nf, so net-summary LSA origination wasconfused, reported 'LSA ID collision' and net-summary LSAs were not...
Babel: Update to integrated branch
BGP: Add support for flowspec (RFC 5575)