summaryrefslogtreecommitdiff
path: root/nest
AgeCommit message (Collapse)Author
2023-11-26Merge commit 'a740054d' into wireguard-next-tmp7-1Mikael Magnusson
2023-11-26Merge commit '63f1c4d9' into wireguard-next-tmp7-1Mikael Magnusson
2023-11-25Merge commit 'b5e9e519' into wireguard-next-tmp7-1Mikael Magnusson
2023-11-25Merge commit 'ba01a6f2' into wireguard-next-tmp7-1Mikael Magnusson
2023-11-25Merge commit 'be09b030' into wireguard-next-tmp7-1Mikael Magnusson
2023-11-25Merge commit 'a7a9df86' into wireguard-next-tmp7-1Mikael Magnusson
2023-11-25Merge commit '9b775859' into wireguard-next-tmp7-1Mikael Magnusson
2023-11-25Merge commit 'b6385dec' into wireguard-next-tmp7-1Mikael Magnusson
2023-11-25Merge commit '81a20ca5' into wireguard-next-tmp7-1Mikael Magnusson
2023-11-25Merge commit '35726051' into wireguard-next-tmp7-1Mikael Magnusson
2023-11-25Merge commit 'fcf22586' into wireguard-next-tmp7-1Mikael Magnusson
2023-11-25Merge commit '8e9e013b' into wireguard-next-tmp7-1Mikael Magnusson
2023-11-25Merge commit '3397ca51' into wireguard-next-tmp7-1Mikael Magnusson
2023-11-25Merge commit 'bcff3ae7' into wireguard-next-tmp7-1Mikael Magnusson
2023-11-25Merge commit '9ca86ef6' into wireguard-next-tmp7-1Mikael Magnusson
2023-11-25Merge commit '333ddd4f' into wireguard-next-tmp7-1Mikael Magnusson
2023-11-25Merge commit '21213be5' into wireguard-next-tmp7-1Mikael Magnusson
2023-11-25Merge commit '977b82fb' into wireguard-next-tmp7-1Mikael Magnusson
2023-11-25Merge commit '51f2e7afaf069508685281e8c1b8bb1ceda79d8f' into ↵Mikael Magnusson
wireguard-next-tmp7-1
2023-11-25Merge commit '8e177cf35b582ec973c1abce4709c80847adb711' into ↵Mikael Magnusson
wireguard-next-tmp7-1
2023-10-25Nest: Minor fixes in MPLSOndrej Zajicek
2023-10-24Use RTA_MAX_SIZE in rta_do_cow()Ondrej Zajicek
This allows to modify MPLS label stack in filters. Fixes a bug in handling of 'gw_mpls' attribute.
2023-10-16MPLS: Fix issue with recursive MPLS routesOndrej Zajicek
Recursive MPLS routes used hostentry from the original route, which triggered different table than MPLS table, and therefore were not updated.
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-04MPLS: Update to support and use 64bit source idOndrej Zajicek
2023-10-04MPLS: Implement FEC map reconfigurationOndrej Zajicek
This allows changing label policy or label range without restart.
2023-10-04MPLS: Handle label allocation failuresOndrej Zajicek
2023-10-04MPLS: Improve handling of static label allocationsOndrej Zajicek
Use mpls_new_label() / mpls_free_label() also for static labels, to keep track of allocated labels and to enforce label ranges. Static label allocations always use static label range, regardless of configured label range.
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-04MPLS: Label range non-intersection checkOndrej Zajicek
2023-10-04MPLS: Improve label range reconfigurationOndrej Zajicek
Allow to shorten label range over unused area.
2023-10-04MPLS: Add command 'show mpls ranges'Ondrej Zajicek
Add command to show MPLS label ranges and their stats.
2023-10-04Nest: Fix missing RTS_* values in filtersOndrej Zajicek
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-04MPLS: Add support for per-VRF labeling policyOndrej Zajicek
The new labeling policy MPLS_POLICY_VRF assigns one label to all routes (from the same FEC map associated with one VRF), while replaces their next hops with a lookup to a VRF table. This is useful for L3VPN protocol.
2023-10-04MPLS subsystemOndrej Zajicek
The MPLS subsystem manages MPLS labels and handles their allocation to MPLS-aware routing protocols. These labels are then attached to IP or VPN routes representing label switched paths -- LSPs. There was already a preliminary MPLS support consisting of MPLS label net_addr, MPLS routing tables with static MPLS routes, remote labels in next hops, and kernel protocol support. This patch adds the MPLS domain as a basic structure representing local label space with dynamic label allocator and configurable label ranges. To represent LSPs, allocated local labels can be attached as route attributes to IP or VPN routes with local labels as attributes. There are several steps for handling LSP routes in routing protocols -- deciding to which forwarding equivalence class (FEC) the LSP route belongs, allocating labels for new FECs, announcing MPLS routes for new FECs, attaching labels to LSP routes. The FEC map structure implements basic code for managing FECs in routing protocols, therefore existing protocols can be made MPLS-aware by adding FEC map and delegating most work related to local label management to it.
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-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.
2023-09-12Conf: Symbol manipulation gets its context explicitlyMaria Matejka
2023-09-12Conf: Symbol hashes for all scopesMaria Matejka
This is a backport cherry-pick of commits 165156beeb2926472bbceca3c103aacc3f81a8cc cce974e8ea992d0e6d2f649eca7880b436d91d71 from the v3.0 branch as we need symbol hashes directly inside their scopes for more general usage than before.
2023-08-28Wireguard: Initial commitMikael Magnusson
Use 51820 (default wireguard port) as default tunnel type.
2023-08-28TunnelEncaps: Initial commitMikael Magnusson
2023-08-25Conf: Allow keywords to be redefined by user symbolsOndrej Zajicek
Most syntactic constructs in BIRD configuration (e.g. protocol options) are defined as keywords, which are distinct from symbols (user-defined names for protocols, variables, ...). That may cause backwards compatibility issue when a new feature is added, as it may collide with existing user names. We can allow keywords to be shadowed by symbols in almost all cases to avoid this issue. This replaces the previous mechanism, where shadowable symbols have to be explictly added to kw_syms.
2023-08-25Nest: Fix missing bar in kw_symOndrej Zajicek
Thanks to Alexander Zubkov for the notice.
2023-08-24Conf: Use nonterminal bytestring instead of BYTETEXTOndrej Zajicek
Nonterminal bytestring allows to provide expressions to be evaluated in places where BYTETEXT is used now: passwords, radv custom option. Based on the patch from Alexander Zubkov <green@qrator.net>, thanks!
2023-08-24Filter: Use more generic approach for intra-config expressionsAlexander Zubkov
Replace f_eval_int() function with a type-generic variant: cf_eval(). Implement similar fuction: cf_eval_int() via inline call to cf_eval().
2023-08-24Filter: Add bytestring typeAlexander Zubkov
- Rename BYTESTRING lexem to BYTETEXT, not to collide with 'bytestring' type name - Add bytestring type with id T_BYTESTRING (0x2c) - Add from_hex() filter function to create bytestring from hex string - Add filter test cases for bytestring type Minor changes by committer.
2023-08-23Nest: Treat VRF interfaces as inside respective VRFsOndrej Zajicek
Despite not having defined 'master interface', VRF interfaces should be treated as being inside respective VRFs. They behave as a loopback for respective VRFs. Treating the VRF interface as inside the VRF allows e.g. OSPF to pick up IP addresses defined on the VRF interface. For this, we also need to tell apart VRF interfaces and regular interfaces. Extend Netlink code to parse interface type and mark VRF interfaces with IF_VRF flag. Based on the patch from Erin Shepherd, thanks!
2023-08-22Merge branch 'bmp'Ondrej Zajicek
2023-08-21BMP: Use generic channel feed instead of direct walk over rtableOndrej Zajicek
Now we use rt_notify() and channels for both feed and notifications, in both import tables (pre-policy) and regular tables (post-policy). Remove direct walk in bmp_route_monitor_snapshot().