1
0
mirror of https://gitlab.labs.nic.cz/labs/bird.git synced 2024-05-11 16:54:54 +00:00
Commit Graph

1341 Commits

Author SHA1 Message Date
Maria Matejka
0fff47aeea SKIP_BACK_DECLARE: easier embedded-to-parent typecasting 2024-05-06 23:13:26 +02:00
Maria Matejka
5b713566b8 Lockless feed of a single net 2024-05-06 23:13:26 +02:00
Maria Matejka
7fd70908e5 Using ea_lookup_tmp() for temporarily keeping attribute references
To avoid needs for keeping local temporary references for attributes,
now one can use ea_lookup_tmp() to ensure that the attributes are
valid and stored until the task ends. After that, the attributes are
automatically unref'd and also deallocated if needed.
2024-04-23 18:51:05 +02:00
Maria Matejka
83992ccb99 Fixed flush condition when stale cycle valid/set indicators wrap around 2024-04-22 19:27:57 +02:00
Maria Matejka
2e67bfbced Fixed in-table route refresh counter to not randomly add 256 2024-04-20 18:15:15 +02:00
Maria Matejka
2b4c82f991 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-04-20 18:15:15 +02:00
Maria Matejka
9c351a80f3 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-04-20 18:15:15 +02:00
Maria Matejka
1a4fbb137a Fixed announcement inconsistency between feeds and regular exports 2024-04-20 18:11:49 +02:00
Maria Matejka
0e6aec7ac3 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-04-10 17:18:11 +02:00
Maria Matejka
9c0181f129 Fixed reporting about exported routes 2024-04-10 17:18:11 +02:00
Maria Matejka
16c87d402e 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-04-10 17:18:11 +02:00
Maria Matejka
e9a26f8409 Cached route attributes now have explicitly marked layers
Also the rta_* functions renamed to ea_* functions
2024-04-10 17:18:11 +02:00
Maria Matejka
a8d7bbc874 Fixed all implicit seq_cst warnings caused by the previous commit 2024-04-10 17:18:11 +02:00
Maria Matejka
9fe98dd167 New BGP export table
This table uses lfjour to signalize changes both to TX packet generator
and to possibly external readers; to be enabled in following commits.

Prefix structures are now pointing to the tables' netindex
instead of copying net_addr. With proper referencing of netindex,
this allows us to allocate struct bgp_prefix from a slab.

Also export buckets now don't copy route attributes locally,
they use global attribute cache instead. This allows also export
buckets to have fixed length and therefore get allocated from a slab.

Finally, merged bgp_pending_tx back to bgp_channel. The split looked
like a good idea then. It isn't, the pending TX is an integral part of
BGP channel with no real reason for splitting.
2024-04-10 17:18:11 +02:00
Maria Matejka
60ddaa0a62 Protocol filter reload is now done by 'reload filters'
This prepares for the separate 'reload bgp' command triggering BGP Route Refresh
2024-04-06 18:28:43 +02:00
Maria Matejka
bb35c4f9dc Route flag REF_OBSOLETE
Marking routes obsolete when being removed from table, just to be sure.
2024-04-06 18:28:43 +02:00
Maria Matejka
27f2fd4aa9 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-04-06 18:28:43 +02:00
Maria Matejka
8527bb6bf3 Simplified table deletion (one less step) 2024-04-06 18:28:43 +02:00
Maria Matejka
cacf743dcb Hostentry usecount converted to lfuc 2024-04-06 18:28:43 +02:00
Maria Matejka
622d406087 Lockfree usecount: deferring unlocks to the metaloop
This allows us for easy temporary locks without additional burden of explicit cleanup.
2024-04-06 18:28:43 +02:00
Maria Matejka
b114aa0073 Static: Unlock IGP tables on cleanup to avoid problems with hostentry unlocking 2024-04-06 18:28:43 +02:00
Maria Matejka
0dd6ec566d Route table export journal converted to the generic structure 2024-04-06 18:28:43 +02:00
Maria Matejka
d1c337f235 Replacing the NHU table loop flag with a proper event 2024-04-06 18:28:43 +02:00
Maria Matejka
6bc1490f30 Undefined behavior fix 2024-04-03 13:58:41 +02:00
Maria Matejka
84c8f24241 CLang compilation fix 2024-04-03 13:58:41 +02:00
Maria Matejka
ec5d9d49ab Flowspec links don't peruse the all-hooks list for lookup 2024-04-03 13:58:41 +02:00
Maria Matejka
d516cea44a Refactoring: back-merged export data structures
Table-specific structures inheriting commons are too crazy.
2024-03-27 14:28:37 +01:00
Maria Matejka
721f09a78d Export table dump temporarily switched off 2024-03-27 14:28:37 +01:00
Maria Matejka
facc9197c9 Added and explicit target table to the ROA subscription object 2024-02-08 14:34:54 +01:00
Maria Matejka
83b92a355d Refactoring of struct rt_pending_export
Now it stores const rte * instead of struct rte_storage * to allow for
different storage backends.
2024-02-08 09:20:40 +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
Maria Matejka
f9d3112d01 Interfaces: fixed locking when address is deleted implicitly 2024-01-27 19:01:34 +01:00
Maria Matejka
57b5eb5cbd Merge commit 'v2.13.1-162-g5bf25678' into thread-next 2024-01-27 19:01:06 +01:00
Maria Matejka
5bf2567853 Merge commit 'v2.13.1-125-g90b9e871' into mq-merge-step-2 2024-01-26 23:29:17 +01:00
Maria Matejka
90b9e871b9 Merge commit 'be09b030ed40c76ee0727dd3980df77094fdc907' into mq-merge-step-1 2024-01-26 23:29:14 +01:00
Maria Matejka
8fb1f098d1 Fixes for CLang 2024-01-26 14:50:56 +01:00
Maria Matejka
25e20485ae Fixed route table attribute caching 2024-01-26 14:42:55 +01:00