summaryrefslogtreecommitdiff
path: root/proto
AgeCommit message (Collapse)Author
2024-07-05Wireguard: debugMikael Magnusson
2024-07-05Wireguard: Initial commitMikael Magnusson
Use 51820 (default wireguard port) as default tunnel type.
2024-07-05BGP: Tunnel Encapsulation attributeMikael Magnusson
Refer to RFC 9012, The BGP Tunnel Encapsulation Attribute.
2024-07-05TunnelEncaps: Initial commitMikael Magnusson
2024-06-26BFD: Add option to accept zero checksum for IPv6 UDP packetsAlexander Zubkov
Some vendors do not fill the checksum for IPv6 UDP packets. For interoperability with such implementations one can set UDP_NO_CHECK6_RX socket option on Linux. Thanks to Ville O for the suggestion. Minor changes by committer.
2024-05-28BFD: Fix build when BFD is disabledOndrej Zajicek
Move bfd_opts grammar inside BFD parser code to avoid dependences between nest and BFD grammars, which breaks when BFD build is disabled. Add dummy bfd_opts grammar rule, so protocols can use this nonterminal even with BFD disabled. Thanks to Yuri Honegger for the bugreport.
2024-04-16BFD: Set password per sessionKaterina Kubecova
2024-04-04OSPF: Allow loopback nexthop in OSPFv3-IPv4Ondrej Zajicek
In OSPFv3-IPv4 there is no requirement that link-local next hop announced in Link-LSA must be in interface address range. Therefore, for interfaces that do not have IPv4 address we can use some loopback IP address and announce it as a next hop. Also we should accept such address.
2024-03-25ASPA: basic data structures and Static protocol supportMaria Matejka
2024-03-25Expanded usage of stdbool.h to the whole BIRDMaria Matejka
2024-03-22Static: Fix invalid combination of nexthop optionsOndrej Zajicek
BFD requires defined local IP, but for nexthop with onlink there might not be such address. So we reject this combination of nexthop options. This prevent crash where such combination of options is used.
2024-03-21Revert "OSPF: On physical PtP links, skip next-hop resolving"Ondrej Zajicek
This reverts commit 31aa62ae6d2e111e87c08b4b27a16ead968f0689.
2024-03-21Merge commit '44e351d1522f0099687aac9fd65dcea73a04af43'Ondrej Zajicek
2024-03-19Babel: Fix build with limited set of protocolsOndrej Zajicek
2024-03-19Aggregator: Fix build with limited set of protocolsOndrej Zajicek
2024-03-11Static: Fix build with limited set of protocolsMichal Zagorski
2024-03-05Client: Add support for completion of command optionsOndrej Zajicek
We can easily extend command completion to handle also keywords for command options. Help for command options is not yet supported.
2024-03-05BFD: Add arguments to 'show bfd sessions' commandOndrej Zajicek
Add several arguments to 'show bfd sessions' command to filter the list of sessions.
2024-03-04BFD: Improve 'show bfd sessions all' commandOndrej Zajicek
2024-03-04BFD: Show session for ip / ip prefixKaterina Kubecova
2024-03-04BFD: show bfd sessions allKaterina Kubecova
2024-02-22RPKI: Add 'local address' configuration optionJob Snijders
Allow to explicitly configure the source IP address for RPKI-To-Router sessions. Predictable source addresses are useful for minimizing the holes to be poked in ACLs. Changed from 'source address' to 'local address' by committer.
2024-02-20BGP: Maintain valid route attribute flags even in local tablesOndrej Zajicek
BGP route attributes have flags (Optional, Transitive) that are validated on decode and set to valid value on export. But if such attribute is modified by filter or set internally by BGP during import, then its flags would be zero in local tables. That usually does not matter, as they are not used locally and they were fixed on export, but invalid flags leaked in BMP and MRT dumps. Keep route attribute flags set to valid values even when set by filters or modified by BGP.
2024-02-18BGP: Update SendHoldTimer BGP Error codeJob Snijders
IANA registered an "Early Allocation" BGP Error code for 'Send Hold Timer Expired' event. Update BIRD to use that error code.
2024-02-16Static: Allow to define both nexthop and interfaceOndrej Zajicek
Allow to define both nexthop and interface using iproute2-like syntax, e.g.: route 10.0.0.0/16 via 10.1.0.1 dev "eth0"; Now we can avoid to use link-local scope hack (e.g. 10.1.0.1%eth0) for cases where both nexthop and interface have to be defined. Thanks to Marcin Saklak for the suggestion.
2024-02-07BGP: Allow multiple EBGP neighbors with the same peer.Alexander Zubkov
We can distinguish BGP sessions if at least one side uses a different IP address. Extend olock mechanism to handle local IP as a part of key, with optional wildcard, so BGP sessions could local IP in the olock and not block themselves.
2024-02-06BGP: Increase max length of notification data in error logsOndrej Zajicek
Increase max length of notification data in error logs from 16 to 128. There is already enough space in the buffer. Thanks to Marco d'Itri for the suggestion.
2024-01-22Trivial code cleanupsOndrej Zajicek
2023-12-20RPKI: retry timer doesn't reset connections when more data is pendingMaria Matejka
With very busy deployments, RPKI may kill cache connection too early. Instead of that, we want it to keep loading if any data is waiting to be read and the reason for delay is just our congestion. Also, when we kill the session because of actually slow cache, we want to reload from scratch as the data we have is unreliable and nobody knows whether the state is still valid.
2023-12-13OSPF: Cleanup some warningsOndrej Zajicek
2023-12-05BGP: Send hold timerKaterina Kubecova
Implement BGP Send hold timer according to draft-ietf-idr-bgp-sendholdtimer. The Send hold timer drops the session if the neighbor is sending keepalives, but does not receive our messages, causing the TCP connection to stall.
2023-11-23BGP: Add options to require BGP capabilitiesOndrej Zajicek
Some BGP capabilities change the BGP behavior in a significant way, so if the configuration depends on it, it is better to not establish BGP session when the capability is not available. Add several BGP option to require individual BGP capabilities during session negotiation.
2023-11-23BGP: Simplify capability handlingOndrej Zajicek
2023-11-09OSPF: On physical PtP links, skip next-hop resolvingSoha Jin
Signed-off-by: Soha Jin <soha@jin.sh> Co-developed-by: Wende Tan <twd2.me@gmail.com>
2023-10-05BGP: Improve custom BGP attributesOndrej Zajicek
- Implement EA_GET for custom BGP attributes - Forbid EA_SET on existing opaque attributes - Forbid redefining existing attributes - Document possible compatibility problems
2023-10-05MPLS: Handle compatibility with old configsOndrej Zajicek
Old configs do not define MPLS domains and may use a static protocol to define static MPLS routes. When MPLS channel is the only channel of static protocol, handle it as a main channel. Also, define implicit MPLS domain if needed and none is defined.
2023-10-04BGP: Custom attribute definitions should use cfg_alloc(), not malloc()Ondrej Zajicek
Otherwise we would get memory leaks.
2023-10-04MPLS: Update to support and use 64bit source idOndrej Zajicek
2023-10-04L3VPN: Import/export target reconfigurationOndrej Zajicek
2023-10-04BGP, L3VPN: Fix MPLS channel reloadOndrej Zajicek
When a MPLS channel is reloaded, it should reload all regular MPLS-aware channels. This causes re-evaluation of routes in FEC map and possibly reannouncement of MPLS routes.
2023-10-04L3VPN: Fix bug in reconfigurationOndrej Zajicek
Fields import_target / export_target link to config structures, must be updated during reconfiguration.
2023-10-04Static: Add syntax for static MPLS labelsOndrej Zajicek
Instead of just using route attributes, static routes with static MPLS labels can be defined just by e.g.: route 10.1.1.0/24 mpls 100 via 10.1.2.1 mpls 200;
2023-10-04L3VPN: BGP/MPLS VPNs using MPLS backboneOndrej Zajicek
The L3VPN protocol implements RFC 4364 BGP/MPLS VPNs using MPLS backbone. It works similarly to pipe. It connects IP table (one per VRF) with (global) VPN table. Routes passed from VPN table to IP table are stripped of RD and filtered by import targets, routes passed in the other direction are extended with RD, MPLS labels and export targets in extended communities. A separate MPLS channel is used to announce MPLS routes for the labels.
2023-10-04BGP: Add MPLS supportOndrej Zajicek
When MPLS is active, received routes on MPLS-aware SAFIs (ipvX-mpls, vpnX-mpls) are automatically labeled according to active label policy and corresponding MPLS routes are automatically generated. Also routes sent on MPLS-aware SAFIs announce local labels when it should be done.
2023-10-04Static: Add MPLS supportOndrej Zajicek
When MPLS is active, static IP/VPN routes are automatically labeled according to active label policy and corresponding MPLS routes are automatically generated.
2023-10-02Nest: Expand rte_src.private_id to u64Ondrej Zajicek
In general, private_id is sparse and protocols may want to map some internal values directly into it. For example, L3VPN needs to map VPN route discriminators to private_id. OTOH, u32 is enough for global_id, as these identifiers are dense.
2023-09-27BGP config: Splitting Route Refresh and Enhanced Route RefreshMaria Matejka
Both toggles are on by default but if some implementation needs one or another to be switched off separately, then it's possible now.
2023-09-26Aggregator: Forbidden dangerous filter computationsMaria Matejka
2023-09-26Aggregator: Fixed hashing of adataMaria Matejka
2023-09-26Basic route aggregationIgor Putovny
Add a new protocol offering route aggregation. User can specify list of route attributes in the configuration file and run route aggregation on the export side of the pipe protocol. Routes are sorted and for every group of equivalent routes new route is created and exported to the routing table. It is also possible to specify filter which will run for every route before aggregation. Furthermore, it will be possible to set attributes of new routes according to attributes of the aggregated routes. This is a work in progress. Original work by Igor Putovny, subsequent cleanups and finalization by Maria Matejka.