summaryrefslogtreecommitdiff
path: root/proto/bgp/bgp.c
AgeCommit message (Collapse)Author
2018-06-27Nest: Neighbor cache cleanupsOndrej Zajicek (work)
Simplify neighbor cache code, fix several minor bugs, and improve handling of ONLINK flag.
2018-05-29Protocol: Introducing an enum protocol_classJan Maria Matejka
This supersedes the EAP_* constants.
2018-01-16BGP: Require explicit import and export policies for EBGP channelsOndrej Zajicek (work)
To comply with RFC 8212 requirements.
2018-01-02BGP: Fix graceful restart timerOndrej Zajicek (work)
Should use remote value, not local value.
2017-12-10Several minor fixesOndrej Zajicek (work)
2017-12-08BGP: Link check just for single-hopOndrej Zajicek (work)
2017-12-08BGP: Autoconfigure BGP next hops from preferred addressesOndrej Zajicek (work)
2017-12-07Merge commit '1e8721e2aeccfbc3f533e8b8abc07582cee77e9a' into int-newOndrej Zajicek (work)
2017-12-07Merge commit '7b2c5f3d2826e3175bf31b1c36056c9efc587a2b' into int-newOndrej Zajicek (work)
2017-12-07Timers: Revert temporary names and remove old timer.hOndrej Zajicek (work)
2017-12-07BGP: Update to new timersOndrej Zajicek (work)
2017-12-07Timers: Show sub-second times in some protocol outputsOndrej Zajicek (work)
2017-12-07Timers: Replace old timers with microsecond timersOndrej Zajicek (work)
The old timer interface is still kept, but implemented by new timers. The plan is to switch from the old inteface to the new interface, then clean it up.
2017-12-07Nest: Maintain separate IPv4, IPv6 and LLv6 preferred addressesOndrej Zajicek (work)
Also redesign preferred address selection and update protocols to use appropriate preferred address. Based on a previous work by Jan Maria Matejka.
2017-09-19BGP: Shutdown communication (RFC 8203)Ondrej Zajicek (work)
The patch implements BGP Administrative Shutdown Communication (RFC 8203) allowing BGP operators to pass messages related to BGP session administrative shutdown/restart. It handles both transmit and receive of shutdown messages. Messages are logged and may be displayed by show protocol all command. Thanks to Job Snijders for the basic patch.
2017-09-12Nest: VRF support for neighbor cache and olock codeOndrej Zajicek (work)
Actually much simpler than expected.
2017-09-06Basic VRF supportOndrej Zajicek (work)
Add basic VRF (virtual routing and forwarding) support. Protocols can be associated with VRFs, such protocols will be restricted to interfaces assigned to the VRF (as reported by Linux kernel) and will use sockets bound to the VRF. E.g., different multihop BGP instances can use diffent kernel routing tables to handle BGP TCP connections. The VRF support is preliminary, currently there are several limitations: - Recent Linux kernels (4.11) do not handle correctly sockets bound to interaces that are part of VRF, so most protocols other than multihop BGP do not work. This will be fixed by future kernel versions. - Neighbor cache ignores VRFs. Breaks config with the same prefix on local interfaces in different VRFs. Not much problem as single hop protocols do not work anyways. - Olock code ignores VRFs. Breaks config with multiple BGP peers with the same IP address in different VRFs. - Incoming BGP connections are not dispatched according to VRFs. Breaks config with multiple BGP peers with the same IP address in different VRFs. Perhaps we would need some kernel API to read VRF of incoming connection? Or probably use multiple listening sockets in int-new branch. - We should handle master VRF interface up/down events and perhaps disable associated protocols when VRF goes down. Or at least disable associated interfaces. - Also we should check if the master iface is really VRF iface and not some other kind of master iface. - BFD session request dispatch should be aware of VRFs. - Perhaps kernel protocol should read default kernel table ID from VRF iface so it is not necessary to configure it. - Perhaps we should have per-VRF default table.
2017-05-16Linpool: default allocation sizeJan Moskyto Matejka
2017-04-28Merge master into int-newOndrej Zajicek (work)
2017-04-12Static: Support for dual-AF IGP tablesOndrej Zajicek (work)
When recursive routes with hybrid next hops (e.g. IPv6 route with IPv4 next hop) are allowed, we need both IPv4 and IPv6 IGP tables.
2017-03-29BGP: Simplify igp table optionsOndrej Zajicek (work)
2017-03-29BGP: Update list of supported standardsOndrej Zajicek (work)
2017-03-26BGP: Support for routes with mixed-AF next hopsOndrej Zajicek (work)
Covers IPv4/VPNv4 routes with IPv6 next hop (RFC 5549), IPv6 routes with IPv4 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, the other for IPv6 next hops.
2017-03-22BGP: Support for MPLS labels and VPN SAFIOndrej Zajicek (work)
Basic support for SAFI 4 and 128 (MPLS labeled IP and VPN) for IPv4 and IPv6. Should work for route reflector, but does not properly handle originating routes with next hop self. Based on patches from Jan Matejka.
2017-03-14BGP: Allow to specify interface for regular sessionsOndrej Zajicek (work)
This may be useful if multple interfaces share the same network range. Thanks to Fritz Grimpen for the original patch.
2017-02-08Merge branch 'master' into int-newOndrej Zajicek (work)
2017-01-24BGP: Partial support for IPv4 routes with IPv6 next hop (RFC 5549)Ondrej Zajicek (work)
Mostly capability signalling
2017-01-03Minor cleanupsOndrej Zajicek (work)
2016-12-20BGP: Report capabilities in show protocols allOndrej Zajicek (work)
2016-12-07BGP: Add support for flowspec (RFC 5575)Ondrej Zajicek (work)
2016-12-07BGP redesignOndrej Zajicek (work)
Integrated and extensible BGP with generalized AFI handling, support for IPv4+IPv6 AFI and unicast+multicast SAFI.
2016-11-25BGP: Fix memory leak in graceful restart codeOndrej Zajicek (work)
Prefix and bucket tables are initialized when entering established state but not explicitly freed when leaving it (that is handled by protocol restart). With graceful restart, BGP may enter and leave established state multiple times without hard protocol restart causing memory leak.
2016-11-08Merge branch 'master' into int-newOndrej Zajicek (work)
2016-11-01Build: switch on -Wextra, get rid of most of the warningsJan Moskyto Matejka
There are several unresolved -Wmissing-field-initializers on older versions of GCC than 5.1, all of them false positive.
2016-05-12Merge remote-tracking branch 'origin/master' into int-newOndrej Zajicek (work)
2016-04-13BSD: Add the IPsec SA/SP database entries controlOndrej Zajicek (work)
Add code for manipulation with TCP-MD5 keys in the IPsec SA/SP database at FreeBSD systems. Now, BGP MD5 authentication (RFC 2385) keys are handled automatically on both Linux and FreeBSD. Based on patches from Pavel Tvrdik.
2016-04-08Merge branch 'master' into int-new-channelsJan Moskyto Matejka
2016-04-06IO: Avoid multiple event cycles in one loop cycle.Ondrej Zajicek (work)
Event cycle may took too much time and trigger next timer events, so avoid cycling between timer and event cycles inside the loop cycle.
2016-04-06IO: Replace RX priority heuristic with explicit markOndrej Zajicek (work)
In BIRD, RX has lower priority than TX with the exception of RX from control socket. The patch replaces heuristic based on socket type with explicit mark and uses it for both control socket and BGP session waiting to be established. This should avoid an issue when during heavy load, outgoing connection could connect (TX event), send open, but then failed to receive OPEN / establish in time, not sending notifications between and therefore got hold timer expired error from the neighbor immediately after it finally established the connection.
2016-02-11BGP: Fix bug in incoming connection handlingOndrej Zajicek (work)
When a BGP session was established by an outgoing connection with Graceful Restart behavior negotiated, a pending incoming connection in OpenSent state, and another incoming connection was received, then the outgoing connection (and whole BGP session) was closed, but the old incoming connection was just overwritten by the new one. That later caused a crash when the hold timer from the old connection fired.
2016-02-01Channels - explicit links between protocols and tablesOndrej Zajicek (work)
The patch adds support for channels, structures connecting protocols and tables and handling most interactions between them. The documentation is missing yet.
2015-07-18BGP: Extended messages supportOndrej Zajicek
Implements draft-ietf-idr-bgp-extended-messages-10, for now undocumented and with temporary private capability number.
2015-06-08BGP multipath supportOndrej Zajicek
Kernel option 'merge paths' allows to merge routes exported to kernel protocol (currently BGP and static routes) to multipath routes.
2015-03-29BGP: Enhanced route refresh (RFC 7313) supportOndrej Zajicek
Also hook feed_done is renamed to feed_end.
2015-02-22Rename BGP option 'start delay' to 'connect delay'Ondrej Zajicek
Also update log message for error-triggered startup delay.
2015-02-22Relax BGP neighbor parameterOndrej Zajicek
Permit specifying neighbor address, AS number and port independently. Add 'interface' parameter for specifying interface for link-local sessions independently. Thanks to Alexander V. Chernikov for the original patch.
2015-02-21Store protocol config size inside protocol structureOndrej Zajicek
Make proto_config_new() use this info instead of supplied size. Thanks to Alexander V. Chernikov for the patch.
2015-02-21Make BGP protocol instance search a separate functionOndrej Zajicek
Thanks to Alexander V. Chernikov for the patch.
2015-02-21Replacing GNU old-style field designator extensionPavel Tvrdik
2015-02-21Link state support in BGP.Ondrej Zajicek
Configurable fast shutdown of a BGP session when an interface loses link.