Maria Matejka
178ae9ba9e
Netindex: consistency checks and deletion of whole hash
2024-06-24 09:42:03 +02:00
Maria Matejka
102cea56f2
Hostentry: made src ea_list atomic to help with consistency
2024-06-24 09:42:03 +02:00
Maria Matejka
a9208e602d
Export: Next feed step-up is now internal
...
There is no much reason to do anything else than the netindex technique.
2024-06-24 09:42:03 +02:00
Maria Matejka
5cbebfc940
Real almost-lockless feeds and more pull-like exports
...
Introducing a new omnipotent internal API to just pass route updates
from whatever point wherever we want.
From now on, all the exports should be processed by RT_WALK_EXPORTS
macro, and you can also issue a separate feed-only request to just get a
feed and finish.
The exporters can now also stop and the readers must expect that to
happen and recover. Main tables don't stop, though.
2024-06-24 09:42:03 +02:00
Maria Matejka
39f69064ec
SKIP_BACK_DECLARE: easier embedded-to-parent typecasting
2024-06-24 09:42:03 +02:00
Maria Matejka
66e98f69f8
Lockless feed of a single net
2024-06-24 09:42:03 +02:00
Maria Matejka
21c1df625a
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-06-24 09:42:03 +02:00
Maria Matejka
e39a76d6f6
Avoiding RCU synchronization deadlock when locking in critical section
...
Explicitly marking domains eligible for RCU synchronization. It's then
forbidden to lock these domains in RCU critical section to avoid
possible deadlock.
2024-06-24 09:42:03 +02:00
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
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
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
683b59bba0
CLang compilation fix
2024-06-24 09:42:03 +02: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
ea0f2c6194
Fixed attributes normalization with underlays in place
2024-01-28 13:16:25 +01:00
Maria Matejka
25e20485ae
Fixed route table attribute caching
2024-01-26 14:42:55 +01:00
Maria Matejka
365ea12ea1
MPLS Subsystem Proper Locking
...
Added also some debug lines if debug is on.
2024-01-26 14:42:44 +01:00
Maria Matejka
e711a991d4
MPLS: FEC Map moved from protocol to MPLS channel
2024-01-08 13:03:25 +01:00
Maria Matejka
548dbb2252
Replacing table FIB by netindex and simple pointer block
...
Using the netindex data structure to simplify route storage inside route
tables. This should also help with future unlocking of route import.
2024-01-08 09:34:32 +01:00
Maria Matejka
25906bc5e9
Merge commit 'ef814fb2d6415206fce280c37466ea889291b043' into HEAD
2023-12-08 12:13:58 +01:00
Maria Matejka
ef814fb2d6
Merge commit 'bb094fb6' into mq-aggregator-for-v3
2023-12-08 12:09:17 +01:00
Maria Matejka
bb094fb6c7
Refactoring also net_roa_check
...
Having 4 functions doing almost the same is more mess than three macros.
2023-12-08 12:08:28 +01:00
Maria Matejka
8c19f8a209
Merge commit 'db1eb46664d4c76d56dc55a63ce7abe853fc6862' into HEAD
2023-12-08 11:33:43 +01:00
Maria Matejka
db1eb46664
Merge commit '54ddf90f6370f06efc71c3ffd6e02d031a86866f' into mq-aggregator-for-v3
2023-12-08 09:08:38 +01:00
Maria Matejka
54ddf90f63
Conf: debug tables
...
For now just a dummy config but it is needed for forward
compatibility with v3.
2023-12-07 14:38:05 +01:00
Maria Matejka
9a91ea52db
Refactoring of net_route
2023-12-07 14:11:16 +01:00
Maria Matejka
3b48dc9bce
Table: Adding route refresh begin and end debug messages
2023-12-07 14:11:16 +01:00
Maria Matejka
0bcbff42ca
Table: nicer route validation errors
2023-12-04 10:39:32 +01:00
Maria Matejka
080e580834
Route table objects use the new locked object macro stack
2023-11-20 12:09:31 +01:00
Maria Matejka
4f2212ccf2
Merge branch 'mq-aggregator-for-v3' into thread-next
2023-11-09 16:34:04 +01:00
Maria Matejka
6067ad6c07
Merge commit '9b775859' into mq-aggregator-for-v3
2023-11-09 16:00:44 +01:00