0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-12-23 18:21:54 +00:00
Commit Graph

1351 Commits

Author SHA1 Message Date
Maria Matejka
2ca9e6fdeb RCU Unwinder refactored from route table to a separate structure 2024-06-24 09:42:03 +02:00
Maria Matejka
020c34136f Table feeds are now lockless
This commit makes the route chains in the tables atomic. This allows not
only standard exports but also feeds and bulk exports to be processed
without ever locking the table.

Design note: the overall data structures are quite brittle. We're using
RCU read-locks to keep track about readers, and we're indicating ongoing
work on the data structures by prepending a REF_OBSOLETE sentinel node
to make every reader go waiting.

All the operations are intended to stay inside nest/rt-table.c and it
may be even best to further refactor the code to hide the routing table
internal structure inside there. Nobody shall definitely write any
routines manipulating live routes in tables from outside.
2024-06-24 09:42:03 +02:00
Maria Matejka
629e29febf Fixed flush condition when stale cycle valid/set indicators wrap around 2024-06-24 09:42:03 +02:00
Maria Matejka
37e8cffc0a Lockless hostentry resolution
Now the hostentry doesn't need to lock table, instead it tracks the
hostentry version and retries if the hostentry changed while updating.
2024-06-24 09:42:03 +02:00
Maria Matejka
c872b8f826 Cached route attributes now have explicitly marked layers
Also the rta_* functions renamed to ea_* functions
2024-06-24 09:42:03 +02:00
Maria Matejka
a66be7641e Fixed all implicit seq_cst warnings caused by the previous commit 2024-06-24 09:42:03 +02:00
Maria Matejka
53e3bf9063 Fixed announcement inconsistency between feeds and regular exports 2024-06-24 09:42:03 +02:00
Maria Matejka
51ebbda95c Fixed best route announcements after NHU
When more routes in one net changed at once, the best route
announcements were inconsistent which confused exporters.
2024-06-24 09:42:03 +02:00
Maria Matejka
35ff820a3b Route flag REF_OBSOLETE
Marking routes obsolete when being removed from table, just to be sure.
2024-06-24 09:42:03 +02:00
Maria Matejka
929df85f1e Removed the obsolete birdloop flagger
This was useful when events were locking. As now sending events is lockless,
we can drop this obsolete routine for good.
2024-06-24 09:42:03 +02:00
Maria Matejka
feb16991ee Simplified table deletion (one less step) 2024-06-24 09:42:03 +02:00
Maria Matejka
7c4db11b9f Hostentry usecount converted to lfuc 2024-06-24 09:42:03 +02:00
Maria Matejka
a3b125e223 Lockfree usecount: deferring unlocks to the metaloop
This allows us for easy temporary locks without additional burden of explicit cleanup.
2024-06-24 09:42:03 +02:00
Maria Matejka
08f67979ce Route table export journal converted to the generic structure 2024-06-24 09:42:03 +02:00
Maria Matejka
cb6e7123c4 Replacing the NHU table loop flag with a proper event 2024-06-24 09:42:03 +02:00
Maria Matejka
90127cb2d2 Flowspec links don't peruse the all-hooks list for lookup 2024-06-24 09:42:03 +02:00
Maria Matejka
22f58ac316 Refactoring: back-merged export data structures
Table-specific structures inheriting commons are too crazy.
2024-06-24 09:42:03 +02:00
Maria Matejka
dea78a5c51 Export table dump temporarily switched off 2024-06-24 09:42:03 +02:00
Maria Matejka
561116f6fb Added and explicit target table to the ROA subscription object 2024-06-24 09:42:03 +02:00
Maria Matejka
35fe916155 Refactoring of struct rt_pending_export
Now it stores const rte * instead of struct rte_storage * to allow for
different storage backends.
2024-06-24 09:42:03 +02:00
Maria Matejka
95748b6c55 Static: Unlock IGP tables on cleanup to avoid problems with hostentry unlocking 2024-06-24 09:42:03 +02:00
Maria Matejka
aee44d1ef0 Fixed in-table route refresh counter to not randomly add 256 2024-06-24 09:42:03 +02:00
Maria Matejka
8408d5c4e1 Fixed hostcache notifier pool
This pool has to be the service pool to allow the seq bitmaps to grow
from the exporter and feeder routines
2024-06-24 09:42:03 +02:00
Maria Matejka
cdadd2b53d Fixed reporting about exported routes 2024-06-24 09:42:03 +02:00
Maria Matejka
4a2dc1dc8b Undefined behavior fix 2024-06-24 09:42:03 +02:00
Maria Matejka
683b59bba0 CLang compilation fix 2024-06-24 09:42:03 +02:00
Ondrej Zajicek
0883ce66bf Merge commit '1b064355f752b9bfe4644f775697bbd9b711f762' into thread-next 2024-04-01 18:20:18 +02:00
Ondrej Zajicek
4036da3732 Nest: Fix bitfield attributes
Fix missing route lookup, causing crash when accessing route attribute.

Also fix additional space in bitfield formatting.
2024-03-28 19:46:24 +01:00
Ondrej Zajicek
c195c7a0d5 Merge commit '224a152c53f304881f8616a1c9255b467062a069' into thread-next 2024-03-28 16:22:23 +01:00
Ondrej Zajicek
62c9f12dfc Merge commit '574d7eb241a60622b0573ab1460cb23d968ba1cc' into thread-next 2024-03-28 15:00:40 +01:00
Ondrej Zajicek
468f1d6547 Nest: Improve printing of hostentries with MPLS labels
MPLS labels in hostentry should be printed with 'mpls' keyword instead of
'labels' to be consistent with the rest of the 'show route' output.
2024-03-27 23:26:25 +01:00
Ondrej Zajicek
eadebc287b Nest: Fix printing of hostentry table
When hostentry is printed, it should show the table in which the nexthop
is resolved, not the dependend one.
2024-03-27 23:16:51 +01:00
Ondrej Zajicek
1b064355f7 Client: Add support for completion of command options
We can easily extend command completion to handle also keywords for
command options. Help for command options is not yet supported.
2024-03-05 19:04:10 +01:00
Ondrej Zajicek
114be2af28 Filter: Add route attribute gw_mpls_stack
Add route attribute gw_mpls_stack to make MPLS stack of route nexthop
accessible from filters. Its type is T_CLIST, which is really not correct
(as it is a list, while T_CLIST is a set). Therefore, we keep this
attribute *undocumented* and it will be *changed* without further notice.

Based on a patch from Trisha Biswas <tbiswas@fastly.com>, thanks!
2024-03-05 16:47:08 +01:00
Ondrej Zajicek
224a152c53 Filter: Add support for string route attribute 2024-02-14 14:29:19 +01:00
Alexander Zubkov
574d7eb241 BGP: Allow multiple EBGP neighbors with the same peer.
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-07 19:11:10 +01:00
Maria Matejka
3b217f2984 Fixed L3VPN after merge to v3.
Semantics of rt_get_source() has changed between v2 and v3. Also other
minor fixes were needed to make it run.
2024-01-30 23:14:10 +01:00
Maria Matejka
06030d8bf0 Hostentry eattrs are now properly zeroed 2024-01-30 23:14:10 +01:00
Maria Matejka
95adf7b0fa Fixed regression in route feeding.
We were, once again, forgetting to mark empty-net journal entries as
processed, as was fixed in 32bb548c11.

Introduced in 548dbb2252.
Caught by cf-ebgp-graceful.
2024-01-30 21:31:13 +01:00
Maria Matejka
29e7cd4a7c Showing MPLS labels in hostentry display 2024-01-29 22:12:38 +01:00
Maria Matejka
1b0d3f5c8c Merge commit 'v2.14-83-g1709843f' into thread-next 2024-01-28 14:56:01 +01:00
Maria Matejka
1709843f15 Merge commit 'v2.14-30-g41d6002f' into mq-merge-step-2 2024-01-28 14:55:50 +01:00
Maria Matejka
41d6002f59 Merge commit 'a740054db50b8532680bd1673a5d4519af889c0f' into mq-merge-step-1 2024-01-28 14:55:49 +01:00
Maria Matejka
94a95a6944 Merge commit 'v2.14-28-g87fcb810' into mq-merge-step-2 2024-01-28 14:54:06 +01:00
Maria Matejka
87fcb810af Merge commit '06301a991d80597a2a0a9e449d0cdf4bc1eda6d1' into mq-merge-step-1 2024-01-28 14:54:05 +01:00
Maria Matejka
bd56a41b3a Merge commit '5973031460372a4d695c44a9f398d516b0e5bac1' into mq-merge-step-1 2024-01-28 14:45:04 +01:00
Maria Matejka
8d2ec536d9 Merge commit 'v2.13.1-183-g2b05844c' into thread-next 2024-01-28 14:28:17 +01:00
Maria Matejka
2b05844cfb Merge commit 'v2.13.1-139-gc9d1ebbd' into mq-merge-step-2 2024-01-28 14:28:09 +01:00
Maria Matejka
c9d1ebbd42 Merge commit 'ba01a6f2e66d03eb5d9426fdf4973f30e09c5710' into mq-merge-step-1 2024-01-28 14:28:07 +01:00
Maria Matejka
ea0f2c6194 Fixed attributes normalization with underlays in place 2024-01-28 13:16:25 +01:00