]> git.ipfire.org Git - thirdparty/bird.git/log
thirdparty/bird.git
20 months agoMerge branch 'mq-aggregator-for-v3' into thread-next
Maria Matejka [Thu, 9 Nov 2023 14:20:13 +0000 (15:20 +0100)] 
Merge branch 'mq-aggregator-for-v3' into thread-next

20 months agoMerge commit 'bcff3ae7' into mq-aggregator-for-v3
Maria Matejka [Thu, 9 Nov 2023 10:06:07 +0000 (11:06 +0100)] 
Merge commit 'bcff3ae7' into mq-aggregator-for-v3

20 months agoMerge branch 'mq-aggregator-for-v3' into thread-next
Maria Matejka [Thu, 9 Nov 2023 10:04:57 +0000 (11:04 +0100)] 
Merge branch 'mq-aggregator-for-v3' into thread-next

20 months agoMerge commit '9ca86ef6' into mq-aggregator-for-v3
Maria Matejka [Thu, 9 Nov 2023 09:52:53 +0000 (10:52 +0100)] 
Merge commit '9ca86ef6' into mq-aggregator-for-v3

20 months agoMerge branch 'mq-aggregator-for-v3' into thread-next
Maria Matejka [Wed, 8 Nov 2023 21:24:33 +0000 (22:24 +0100)] 
Merge branch 'mq-aggregator-for-v3' into thread-next

20 months agoMerge commit '9d456d53' into mq-aggregator-for-v3
Maria Matejka [Wed, 8 Nov 2023 21:14:58 +0000 (22:14 +0100)] 
Merge commit '9d456d53' into mq-aggregator-for-v3

20 months agoMerge branch 'mq-aggregator-for-v3' into thread-next
Maria Matejka [Wed, 8 Nov 2023 21:14:19 +0000 (22:14 +0100)] 
Merge branch 'mq-aggregator-for-v3' into thread-next

20 months agoMerge commit '15c86ed0' into mq-aggregator-for-v3
Maria Matejka [Wed, 8 Nov 2023 20:56:58 +0000 (21:56 +0100)] 
Merge commit '15c86ed0' into mq-aggregator-for-v3

20 months agoMerge branch 'mq-aggregator-for-v3' into thread-next
Maria Matejka [Wed, 8 Nov 2023 20:51:46 +0000 (21:51 +0100)] 
Merge branch 'mq-aggregator-for-v3' into thread-next

20 months agoMerge remote-tracking branch 'origin/partial-reload' into thread-next
Maria Matejka [Wed, 8 Nov 2023 16:37:42 +0000 (17:37 +0100)] 
Merge remote-tracking branch 'origin/partial-reload' into thread-next

20 months agoMPLS: Fix issue with recursive MPLS routes
Ondrej Zajicek [Mon, 16 Oct 2023 13:21:36 +0000 (15:21 +0200)] 
MPLS: Fix issue with recursive MPLS routes

Recursive MPLS routes used hostentry from the original route, which
triggered different table than MPLS table, and therefore were not
updated.

21 months agokrt.c: fixup lots of routes learn & unlearn
Katerina Kubecova [Mon, 6 Nov 2023 08:38:13 +0000 (09:38 +0100)] 
krt.c: fixup lots of routes learn & unlearn

21 months agoMerge branch 'thread-next' into HEAD partial-reload
Maria Matejka [Thu, 2 Nov 2023 13:43:15 +0000 (14:43 +0100)] 
Merge branch 'thread-next' into HEAD

21 months agoAutomatic ROA reloads on channel import
Katerina Kubecova [Thu, 2 Nov 2023 13:33:00 +0000 (14:33 +0100)] 
Automatic ROA reloads on channel import

This includes updating OSPF, Pipe and RIP to enable partial route reload
directly from the protocols' internal tables.

21 months agoFIB walk macros now allow continue from the loop
Katerina Kubecova [Thu, 2 Nov 2023 13:28:50 +0000 (14:28 +0100)] 
FIB walk macros now allow continue from the loop

21 months agoPrefiltering routes by net and custom hook for partial reloads
Maria Matejka [Wed, 4 Oct 2023 09:03:29 +0000 (11:03 +0200)] 
Prefiltering routes by net and custom hook for partial reloads

21 months agoChannel feeding request respects the subnet tries
Maria Matejka [Wed, 4 Oct 2023 08:39:46 +0000 (10:39 +0200)] 
Channel feeding request respects the subnet tries

21 months agoChannel feeding request has a done-hook
Maria Matejka [Wed, 4 Oct 2023 08:02:43 +0000 (10:02 +0200)] 
Channel feeding request has a done-hook

21 months agoMerge commit '333ddd4f' into mq-aggregator-for-v3
Maria Matejka [Wed, 1 Nov 2023 17:34:06 +0000 (18:34 +0100)] 
Merge commit '333ddd4f' into mq-aggregator-for-v3

21 months agoDumping route sources along with protocols and routes
Maria Matejka [Wed, 1 Nov 2023 17:25:40 +0000 (18:25 +0100)] 
Dumping route sources along with protocols and routes

21 months agoDebug file fix
Maria Matejka [Wed, 1 Nov 2023 17:25:15 +0000 (18:25 +0100)] 
Debug file fix

It got mistakenly closed while applying the log configuration.

21 months agoNexthop dump fix for unreachables
Maria Matejka [Wed, 1 Nov 2023 17:24:32 +0000 (18:24 +0100)] 
Nexthop dump fix for unreachables

21 months agoFixes to root pool and meta loop to allow resource dumps
Maria Matejka [Wed, 1 Nov 2023 17:23:43 +0000 (18:23 +0100)] 
Fixes to root pool and meta loop to allow resource dumps

21 months agoMerge branch 'mq-aggregator-for-v3' into HEAD
Maria Matejka [Wed, 1 Nov 2023 17:19:55 +0000 (18:19 +0100)] 
Merge branch 'mq-aggregator-for-v3' into HEAD

21 months agoMerge commit 'e55696a4' into mq-aggregator-for-v3
Maria Matejka [Wed, 1 Nov 2023 17:08:34 +0000 (18:08 +0100)] 
Merge commit 'e55696a4' into mq-aggregator-for-v3

21 months agoMerge branch 'mq-aggregator-for-v3' into thread-next
Maria Matejka [Wed, 1 Nov 2023 17:08:49 +0000 (18:08 +0100)] 
Merge branch 'mq-aggregator-for-v3' into thread-next

21 months agoMerge commit '21213be5' into mq-aggregator-for-v3
Maria Matejka [Wed, 1 Nov 2023 16:49:12 +0000 (17:49 +0100)] 
Merge commit '21213be5' into mq-aggregator-for-v3

21 months agoMerge branch 'mq-aggregator-for-v3' into thread-next
Maria Matejka [Wed, 1 Nov 2023 16:48:00 +0000 (17:48 +0100)] 
Merge branch 'mq-aggregator-for-v3' into thread-next

21 months agoMerge commit '8ad9c4bb' into mq-aggregator-for-v3
Maria Matejka [Wed, 1 Nov 2023 16:46:52 +0000 (17:46 +0100)] 
Merge commit '8ad9c4bb' into mq-aggregator-for-v3

21 months agoMerge branch 'mq-aggregator-for-v3' into thread-next
Maria Matejka [Wed, 1 Nov 2023 16:44:37 +0000 (17:44 +0100)] 
Merge branch 'mq-aggregator-for-v3' into thread-next

21 months agoAggregator: fixed route source unlocking on shutdown and withdraw
Maria Matejka [Wed, 1 Nov 2023 13:30:46 +0000 (14:30 +0100)] 
Aggregator: fixed route source unlocking on shutdown and withdraw

21 months agoMerge branch 'mq-aggregator-for-v3' into HEAD
Maria Matejka [Wed, 1 Nov 2023 09:58:44 +0000 (10:58 +0100)] 
Merge branch 'mq-aggregator-for-v3' into HEAD

21 months agoMerge branch 'mq-aggregator-for-v3' into HEAD
Maria Matejka [Wed, 1 Nov 2023 09:57:57 +0000 (10:57 +0100)] 
Merge branch 'mq-aggregator-for-v3' into HEAD

21 months agoAggregator: Fixed bugs in filter usage
Maria Matejka [Wed, 1 Nov 2023 09:57:43 +0000 (10:57 +0100)] 
Aggregator: Fixed bugs in filter usage

21 months agoMerge commit 'a4adb09f5a5c3806488fb121eafc0e6c969135e7' into HEAD
Maria Matejka [Wed, 1 Nov 2023 09:15:32 +0000 (10:15 +0100)] 
Merge commit 'a4adb09f5a5c3806488fb121eafc0e6c969135e7' into HEAD

21 months agoAggregator: Expressed most of the attribute logic in filter language
Maria Matejka [Tue, 31 Oct 2023 10:37:54 +0000 (11:37 +0100)] 
Aggregator: Expressed most of the attribute logic in filter language

21 months agoMerge commit 'ba91f4c831f057b81104d1453f99b012c01f9c9e' into thread-next
Maria Matejka [Tue, 31 Oct 2023 15:54:58 +0000 (16:54 +0100)] 
Merge commit 'ba91f4c831f057b81104d1453f99b012c01f9c9e' into thread-next

21 months agoMerge commit 'df5a08e7c717ff421a52b4144d741f0a9749159f' into thread-next
Maria Matejka [Tue, 31 Oct 2023 15:48:48 +0000 (16:48 +0100)] 
Merge commit 'df5a08e7c717ff421a52b4144d741f0a9749159f' into thread-next

21 months agoBasic route aggregation
Igor Putovny [Wed, 21 Jun 2023 11:15:07 +0000 (13:15 +0200)] 
Basic route aggregation

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.

This is a split-commit of the neighboring aggregator branch
with a bit improved lvalue handling, to have easier merge into v3.

21 months agoFilters: allowing to return any number of values
Maria Matejka [Tue, 31 Oct 2023 11:03:49 +0000 (12:03 +0100)] 
Filters: allowing to return any number of values

21 months agoFilter: value hashing
Maria Matejka [Tue, 31 Oct 2023 10:52:30 +0000 (11:52 +0100)] 
Filter: value hashing

Added a code for computing hash of filter values.

This is a split-commit of the neighboring aggregator branch
with improved lvalue and attribute handling.

21 months agoMerge commit '407eb388b7082b52921e93476c8ff1a98fe3b873' into thread-next
Maria Matejka [Tue, 31 Oct 2023 09:28:01 +0000 (10:28 +0100)] 
Merge commit '407eb388b7082b52921e93476c8ff1a98fe3b873' into thread-next

21 months agoMerge commit 'f0187d713c36e841fe8bab350e84f5257a74981a' into thread-next
Maria Matejka [Tue, 31 Oct 2023 09:20:22 +0000 (10:20 +0100)] 
Merge commit 'f0187d713c36e841fe8bab350e84f5257a74981a' into thread-next

21 months agoMerge commit 'de70474fed139f9acb4ed3f8e925d12de4edcdd0' into thread-next
Maria Matejka [Tue, 31 Oct 2023 08:58:42 +0000 (09:58 +0100)] 
Merge commit 'de70474fed139f9acb4ed3f8e925d12de4edcdd0' into thread-next

21 months agoFilter: predefined variables for specific blocks
Maria Matejka [Mon, 30 Oct 2023 09:44:45 +0000 (10:44 +0100)] 
Filter: predefined variables for specific blocks

This is a split-commit of the neighboring aggregator branch
with a bit improved lvalue handling, to have easier merge into v3.

21 months agoFilter: adding explicit route-block type
Maria Matejka [Mon, 30 Oct 2023 08:49:20 +0000 (09:49 +0100)] 
Filter: adding explicit route-block type

This is a split-commit of the neighboring aggregator branch
with a bit improved lvalue handling, to have easier merge into v3.

21 months agoFilter: adding explicit route type
Maria Matejka [Sun, 29 Oct 2023 18:53:09 +0000 (19:53 +0100)] 
Filter: adding explicit route type

This is a split-commit of the neighboring aggregator branch
with a bit improved lvalue handling, to have easier merge into v3.

21 months agoRenamed nest/rt.h back to nest/route.h
Maria Matejka [Sun, 29 Oct 2023 15:25:01 +0000 (16:25 +0100)] 
Renamed nest/rt.h back to nest/route.h

Some [redacted] (yes, myself) had a really bad idea
to rename nest/route.h to nest/rt.h while refactoring
some data structures out of it.

This led to unnecessarily complex problems with
merging updates from v2. Reverting this change
to make my life a bit easier.

At least it needed only one find-sed command:

    find -name '*.[chlY]' -type f -exec sed -i 's#nest/rt.h#nest/route.h#' '{}' +

21 months agoMerge commit '0a729b50' into thread-next
Maria Matejka [Sun, 29 Oct 2023 14:42:46 +0000 (15:42 +0100)] 
Merge commit '0a729b50' into thread-next

This merge was particularly difficult. I finally resorted to delete the
symbol scope active flag altogether and replace its usage by other
means.

Also I had to update custom route attribute registration to fit
both the scope updates in v2 and the data model in v3.

21 months agoMerge commit 'bb8e2824' into thread-next
Maria Matejka [Sat, 28 Oct 2023 22:56:06 +0000 (00:56 +0200)] 
Merge commit 'bb8e2824' into thread-next

21 months agoMerge commit '9ffea830' into thread-next
Maria Matejka [Sat, 28 Oct 2023 22:51:34 +0000 (00:51 +0200)] 
Merge commit '9ffea830' into thread-next

21 months agoMerge commit 'a3dc2645' into thread-next
Maria Matejka [Sat, 28 Oct 2023 22:50:38 +0000 (00:50 +0200)] 
Merge commit 'a3dc2645' into thread-next

21 months agoMerge commit 'cc1099a0' into thread-next
Maria Matejka [Sat, 28 Oct 2023 22:14:52 +0000 (00:14 +0200)] 
Merge commit 'cc1099a0' into thread-next

Updated f_implicit_roa_check() to use type methods and moved to filter/f-util.c

21 months agoMerge commit 'c0231b09' into thread-next
Maria Matejka [Sat, 28 Oct 2023 22:02:04 +0000 (00:02 +0200)] 
Merge commit 'c0231b09' into thread-next

21 months agoMerge commit 'fdd39c81' into thread-next
Maria Matejka [Sat, 28 Oct 2023 22:00:07 +0000 (00:00 +0200)] 
Merge commit 'fdd39c81' into thread-next

21 months agoMerge commit 'fc9d471b' into thread-next
Maria Matejka [Sat, 28 Oct 2023 21:42:21 +0000 (23:42 +0200)] 
Merge commit 'fc9d471b' into thread-next

Conflicts:
conf/cf-lex.l
conf/conf.h
filter/config.Y
filter/data.c
filter/data.h

21 months agoMerge commit '6b95353e' into thread-next
Maria Matejka [Fri, 27 Oct 2023 16:30:37 +0000 (18:30 +0200)] 
Merge commit '6b95353e' into thread-next

21 months agoMerge commit '51f2e7af' into thread-next
Maria Matejka [Fri, 27 Oct 2023 16:29:31 +0000 (18:29 +0200)] 
Merge commit '51f2e7af' into thread-next

Conflicts:
conf/cf-lex.l
conf/conf.h
conf/confbase.Y
filter/config.Y
nest/config.Y
nest/proto.c
nest/rt-table.c
proto/bgp/bgp.c
sysdep/unix/main.c

21 months agoMerge commit '5951dfbd' into thread-next
Maria Matejka [Fri, 27 Oct 2023 13:56:06 +0000 (15:56 +0200)] 
Merge commit '5951dfbd' into thread-next

21 months agoMerge commit '58efa944' into thread-next
Maria Matejka [Wed, 25 Oct 2023 12:41:11 +0000 (14:41 +0200)] 
Merge commit '58efa944' into thread-next

Conflicts:
conf/cf-lex.l
conf/conf.h
conf/confbase.Y
conf/gen_keywords.m4
conf/gen_parser.m4
filter/config.Y
nest/config.Y
proto/bgp/config.Y
proto/static/config.Y

Keywords and attributes are split to separate namespaces, to avoid
collisions between regular keyword use and attribute overlay.

21 months agoMerge commit 'a5a6de58' into thread-next
Maria Matejka [Tue, 24 Oct 2023 08:39:52 +0000 (10:39 +0200)] 
Merge commit 'a5a6de58' into thread-next

Conflicts:
      filter/config.Y
      filter/data.h
      filter/data.c

21 months agoMerge commit '86598183' into thread-next
Maria Matejka [Tue, 24 Oct 2023 07:34:43 +0000 (09:34 +0200)] 
Merge commit '86598183' into thread-next

21 months agoMerge commit 'aa70e14c' into thread-next
Maria Matejka [Tue, 24 Oct 2023 07:34:06 +0000 (09:34 +0200)] 
Merge commit 'aa70e14c' into thread-next

21 months agoMerge commit 'f5140d10' into thread-next
Maria Matejka [Fri, 13 Oct 2023 13:18:07 +0000 (15:18 +0200)] 
Merge commit 'f5140d10' into thread-next

Smashed as "ours" as local changes are completely incompatible.
Relevant fixes will be merged from later commits if possible.

21 months agoMerge commit 'cce48c6c' into thread-next
Maria Matejka [Fri, 13 Oct 2023 12:02:21 +0000 (14:02 +0200)] 
Merge commit 'cce48c6c' into thread-next

21 months agoMerge commit '32427c9c' into thread-next
Maria Matejka [Fri, 13 Oct 2023 11:49:09 +0000 (13:49 +0200)] 
Merge commit '32427c9c' into thread-next

21 months agoMerge commit 'f411a19b' into thread-next
Maria Matejka [Fri, 13 Oct 2023 11:46:04 +0000 (13:46 +0200)] 
Merge commit 'f411a19b' into thread-next

21 months agoCI: Temporarily disabling test-ibgp-loop-big as it tends to hang
Maria Matejka [Fri, 13 Oct 2023 11:38:15 +0000 (13:38 +0200)] 
CI: Temporarily disabling test-ibgp-loop-big as it tends to hang

21 months agoMerge commit '0dbcc927' into thread-next
Maria Matejka [Fri, 13 Oct 2023 11:36:47 +0000 (13:36 +0200)] 
Merge commit '0dbcc927' into thread-next

21 months agoMerge commit 'fc354788' into thread-next
Maria Matejka [Fri, 13 Oct 2023 09:32:53 +0000 (11:32 +0200)] 
Merge commit 'fc354788' into thread-next

21 months agoRIP: actually remove the interface structures on shutdown
Maria Matejka [Fri, 13 Oct 2023 09:23:21 +0000 (11:23 +0200)] 
RIP: actually remove the interface structures on shutdown

This avoids a spurious route update fail when protocol shutdown collides
with an incoming RIP packet.

21 months agoMerge commit 'e3c0eca9' into thread-next
Maria Matejka [Fri, 13 Oct 2023 09:04:39 +0000 (11:04 +0200)] 
Merge commit 'e3c0eca9' into thread-next

21 months agoProtocol: better granularity of pool management
Maria Matejka [Fri, 13 Oct 2023 08:22:09 +0000 (10:22 +0200)] 
Protocol: better granularity of pool management

There are now 3 different pools with specific lifetime. All of these are
available since protocol start, anyway they get freed in different
moments.

First, pool_up gets freed immediately after announcing PS_STOP, to e.g.
stop all timers and events regularly updating the routing table when the
imports are already flushing.

Then, pool_inloop gets freed just before the protocol loop is finally
stopped, after all channels, imports and exports and other hooks are
cleaned up.

And finally, the pool itself is freed the last. Unless you explicitly
need the early free, use this pool.

21 months agoMerge commit '5121101136cb80151a9361c63dc4822afeb44eef' into thread-next
Maria Matejka [Thu, 12 Oct 2023 12:12:33 +0000 (14:12 +0200)] 
Merge commit '5121101136cb80151a9361c63dc4822afeb44eef' into thread-next

21 months agoChannel: using a separate pool for export data
Maria Matejka [Thu, 12 Oct 2023 08:07:57 +0000 (10:07 +0200)] 
Channel: using a separate pool for export data

21 months agoMerge commit 'e2f08c382a2adbbbd94c5cd7d996ce9175e0fb9c' into HEAD
Maria Matejka [Thu, 12 Oct 2023 09:38:16 +0000 (11:38 +0200)] 
Merge commit 'e2f08c382a2adbbbd94c5cd7d996ce9175e0fb9c' into HEAD

21 months agoMerge commit '4972590e' into thread-next
Maria Matejka [Thu, 12 Oct 2023 07:29:51 +0000 (09:29 +0200)] 
Merge commit '4972590e' into thread-next

21 months agoBGP/BMP: fixed build with no bmp at all
Maria Matejka [Thu, 12 Oct 2023 08:57:55 +0000 (10:57 +0200)] 
BGP/BMP: fixed build with no bmp at all

21 months agoBGP: dropped bgp_fix_attr_flags() (useless remnant from previous versions)
Maria Matejka [Thu, 12 Oct 2023 07:29:09 +0000 (09:29 +0200)] 
BGP: dropped bgp_fix_attr_flags() (useless remnant from previous versions)

21 months agoMerge commit 'b20b6a9ad204f2648ed3d62720435bb21dfb947c' into thread-next
Maria Matejka [Wed, 11 Oct 2023 20:26:41 +0000 (22:26 +0200)] 
Merge commit 'b20b6a9ad204f2648ed3d62720435bb21dfb947c' into thread-next

21 months agoBGP/BMP: Moved temporary allocation checks to the freeing functions
Maria Matejka [Wed, 11 Oct 2023 20:23:34 +0000 (22:23 +0200)] 
BGP/BMP: Moved temporary allocation checks to the freeing functions

21 months agoMerge branch 'mq-bmp-to-merge-to-v3' into thread-next
Maria Matejka [Wed, 11 Oct 2023 20:06:18 +0000 (22:06 +0200)] 
Merge branch 'mq-bmp-to-merge-to-v3' into thread-next

21 months agoMerge commit '2d988f71a5c3caf3b56426a45d4d234c4fd4fce7' into thread-next
Maria Matejka [Wed, 11 Oct 2023 12:16:39 +0000 (14:16 +0200)] 
Merge commit '2d988f71a5c3caf3b56426a45d4d234c4fd4fce7' into thread-next

21 months agoMerge commit '6e908775' into thread-next
Maria Matejka [Wed, 11 Oct 2023 11:28:30 +0000 (13:28 +0200)] 
Merge commit '6e908775' into thread-next

21 months agoMerge branch 'mq-bmp-to-merge-to-v3' into HEAD
Maria Matejka [Tue, 10 Oct 2023 13:04:26 +0000 (15:04 +0200)] 
Merge branch 'mq-bmp-to-merge-to-v3' into HEAD

21 months agoNest: Use generic rte_announce() also for import tables
Ondrej Zajicek [Mon, 21 Aug 2023 02:17:21 +0000 (04:17 +0200)] 
Nest: Use generic rte_announce() also for import tables

Remove special rte_announce_in(), so we can use generic rte_announce()
for bot feed and notifications.

21 months agoConf: Improve handling of keywords
Ondrej Zajicek [Thu, 27 Apr 2023 16:20:49 +0000 (18:20 +0200)] 
Conf: Improve handling of keywords

For whatever reason, parser allocated a symbol for every parsed keyword
in each scope. That wasted time and memory. The effect is worsened with
recent changes allowing local scopes, so keywords often promote soft
scopes (with no symbols) to real scopes.

Do not allocate a symbol for a keyword. Take care of keywords that could
be promoted to symbols (kw_sym) and do it explicitly.

21 months agoConf: Fix symbol lookup
Ondrej Zajicek [Thu, 27 Apr 2023 15:09:00 +0000 (17:09 +0200)] 
Conf: Fix symbol lookup

The symbol table used just symbol name as a key, and used a trick with
active flag to find symbols in active scopes with one hash table lookup.

The disadvantage is that it can degenerate to O(n) for negative queries
in situations where are many symbols with the same name in different
scopes.

Thanks to Yanko Kaneti for the bugreport.

22 months agoL3VPN: BGP/MPLS VPNs using MPLS backbone
Ondrej Zajicek [Mon, 3 Oct 2022 18:06:13 +0000 (20:06 +0200)] 
L3VPN: BGP/MPLS VPNs using MPLS backbone

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.

22 months agoMPLS: Add support for per-VRF labeling policy
Ondrej Zajicek [Sat, 1 Oct 2022 20:38:49 +0000 (22:38 +0200)] 
MPLS: Add support for per-VRF labeling policy

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.

22 months agoBGP: Add MPLS support
Ondrej Zajicek [Thu, 15 Sep 2022 00:30:15 +0000 (02:30 +0200)] 
BGP: Add MPLS support

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.

22 months agoStatic: Add MPLS support
Ondrej Zajicek [Thu, 15 Sep 2022 00:29:12 +0000 (02:29 +0200)] 
Static: Add MPLS support

When MPLS is active, static IP/VPN routes are automatically labeled
according to active label policy and corresponding MPLS routes are
automatically generated.

22 months agoMPLS subsystem
Ondrej Zajicek [Wed, 14 Sep 2022 23:38:18 +0000 (01:38 +0200)] 
MPLS subsystem

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.

22 months agoLib: Indirect bitmap for MPLS label allocator
Ondrej Zajicek (work) [Sat, 22 May 2021 10:31:47 +0000 (12:31 +0200)] 
Lib: Indirect bitmap for MPLS label allocator

22 months agoMerge commit '93509af4' into HEAD
Maria Matejka [Tue, 3 Oct 2023 09:26:46 +0000 (11:26 +0200)] 
Merge commit '93509af4' into HEAD

22 months agoTable preexport net-filter refactoring
katerina.kubecova [Tue, 3 Oct 2023 09:08:28 +0000 (11:08 +0200)] 
Table preexport net-filter refactoring

Also added a possibility for filtering by trie.

22 months agoROA notifications store the affected nets into trie
katerina.kubecova [Tue, 3 Oct 2023 09:07:46 +0000 (11:07 +0200)] 
ROA notifications store the affected nets into trie

22 months agoChannel: Refeeding by an auxiliary request if needed.
Maria Matejka [Fri, 29 Sep 2023 14:24:50 +0000 (16:24 +0200)] 
Channel: Refeeding by an auxiliary request if needed.

If the protocol supports route refresh on export, we keep the stop-start
method of route refeed. This applies for BGP with ERR or with export
table on, for OSPF, Babel, RIP or Pipe.

For BGP without ERR or for future selective ROA reloads, we're adding an
auxiliary export request, doing the refeed while the main export request
is running, somehow resembling the original method of BIRD 2 refeed.

There is also a refeed request queue to keep track of different refeed
requests.

22 months agoNest: Expand rte_src.private_id to u64
Ondrej Zajicek [Mon, 2 Oct 2023 13:09:30 +0000 (15:09 +0200)] 
Nest: Expand rte_src.private_id to u64

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.

22 months agoBGP config: Splitting Route Refresh and Enhanced Route Refresh
Maria Matejka [Wed, 27 Sep 2023 10:51:55 +0000 (12:51 +0200)] 
BGP config: Splitting Route Refresh and Enhanced Route Refresh

Both toggles are on by default but if some implementation needs one or
another to be switched off separately, then it's possible now.