Maria Matejka
44f26c49f9
Special table hooks rectified.
...
* internal tables are now more standalone, having their own import and
export hooks
* route refresh/reload uses stale counter instead of stale flag,
allowing to drop walking the table at the beginning
* route modify (by BGP LLGR) is now done by a special refeed hook,
reimporting the modified routes directly without filters
2021-11-22 19:05:43 +01:00
Maria Matejka
f81702b7e4
Table import and export are now explicit hooks.
...
Channels have now included rt_import_req and rt_export_req to hook into
the table instead of just one list node. This will (in future) allow for:
* channel import and export bound to different tables
* more efficient pipe code (dropping most of the channel code)
* conversion of 'show route' to a special kind of export
* temporary static routes from CLI
The import / export states are also updated to the new algorithms.
2021-11-22 18:33:53 +01:00
Maria Matejka
3a8197a9dc
Limit containment
2021-11-09 19:20:41 +01:00
Maria Matejka
46739f007a
RPKI: Do nothing when protocol is stopping
2021-11-09 19:20:41 +01:00
Maria Matejka
13ebe77176
RPKI shouldn't process more packets when being stopped
2021-11-09 19:20:41 +01:00
Maria Matejka
6d87cf4be7
Kernel routes are flushed on shutdown by kernel scan, not by table scan
2021-11-09 19:20:41 +01:00
Maria Matejka
0767a0c288
Secondary and merged exports get a whole feed instead of traversing the table structures directly
2021-11-09 19:20:41 +01:00
Maria Matejka
8f3942a97e
Route export: rejected by filter bitmap
...
If a route has been rejected by filter, store that information
to avoid repeated export filter runs on rejected routes.
2021-11-09 19:20:41 +01:00
Maria Matejka
c56752e436
Protocol stats split to import and export
2021-11-09 19:20:41 +01:00
Maria Matejka
56c8f2f03a
Nest: Route generations and explicit tracking route propagion through pipes
2021-11-09 19:20:41 +01:00
Maria Matejka
1c2f66f2bd
Refeed is done from export table when appropriate
2021-11-09 19:20:41 +01:00
Maria Matejka
575da88f7a
Recursive route nexthop updates now announced with valid new_best/old_best information
2021-11-09 19:20:41 +01:00
Maria Matejka
1e76f6e954
Suppressed MRT unused static function warning
2021-11-09 19:20:41 +01:00
Maria Matejka
69d1ffde4c
Split route data structure to storage (ro) / manipulation (rw) structures.
...
Routes are now allocated only when they are just to be inserted to the
table. Updating a route needs a locally allocated route structure.
Ownership of the attributes is also now not transfered from protocols to
tables and vice versa but just borrowed which should be easier to handle
in a multithreaded environment.
2021-11-09 19:20:41 +01:00
Maria Matejka
60880b539b
Extended route trace: logging Path Identifiers
2021-11-09 17:42:36 +01:00
Maria Matejka
0b295d695a
Dropping the unused rte_same hook
2021-10-13 19:09:05 +02:00
Maria Matejka
89ff49f8f0
Dropping rte-local dumper entries
2021-10-13 19:09:05 +02:00
Maria Matejka
541881bedf
RIP fixup + dropping the tmp_attrs mechanism as obsolete
2021-10-13 19:09:04 +02:00
Maria Matejka
ddd89ba12d
BGP: Moved the suppressed and stale flags to pflags
2021-10-13 19:09:04 +02:00
Maria Matejka
e42eedb912
Kernel: Convert the rte-local attributes to extended attributes and flags to pflags
2021-10-13 19:09:04 +02:00
Maria Matejka
3660f19dd5
Dropping the RTS_DUMMY temporary route storage.
...
Kernel route sync is done by other ways now and this code is not used
currently.
2021-10-13 19:09:04 +02:00
Maria Matejka
c507fb41bb
Babel: Convert the rte-local attributes to extended attributes
2021-10-13 19:09:04 +02:00
Maria Matejka
5f0cb61d82
OSPF: Convert the rte-local attributes to extended attributes
2021-10-13 19:09:04 +02:00
Maria Matejka
a0e4c66404
RIP: convert the rte-local attributes to extended attributes
2021-10-13 19:09:04 +02:00
Maria Matejka
6e13df70fd
Extended route attributes may include also pointers
2021-10-13 19:09:04 +02:00
Maria Matejka
d471d5fc7c
IGP metric getter refactoring to protocol callback
...
Direct protocol hooks for IGP metric inside nest/rt-table.c make the
protocol API unnecessarily complex. Instead, we use a proper callback.
2021-10-13 19:09:04 +02:00
Maria Matejka
5cff1d5f02
Route: moved rte_src pointer from rta to rte
...
It is an auxiliary key in the routing table, not a route attribute.
2021-10-13 19:09:04 +02:00
Maria Matejka
eb937358c0
Preference moved to RTA and set explicitly in protocols
2021-10-13 19:09:04 +02:00
Maria Matejka
d5a32563df
Preexport: No route modification, no linpool needed
2021-10-13 19:09:04 +02:00
Maria Matejka
cee0cd148c
Export table: Delay freeing of old stored route.
...
This is needed to provide the protocols the full old route after filters
when export table is enabled.
2021-10-13 19:09:04 +02:00
Maria Matejka
8216ec3027
There may be a symbol with NULL protocol when reconfiguring
2021-10-13 19:09:04 +02:00
Maria Matejka
8ac20511e1
Show route may be accidentally called on shutdown also when not all default tables are present
2021-10-13 19:09:04 +02:00
Maria Matejka
a54f75f454
fixup! Multipage allocation
2021-10-13 19:08:35 +02:00
Maria Matejka
6cd3771378
Multipage allocation
...
We can also quite simply allocate bigger blocks. Anyway, we need these
blocks to be aligned to their size which needs one mmap() two times
bigger and then two munmap()s returning the unaligned parts.
The user can specify -B <N> on startup when <N> is the exponent of 2,
setting the block size to 2^N. On most systems, N is 12, anyway if you
know that your configuration is going to eat gigabytes of RAM, you are
almost forced to raise your block size as you may easily get into memory
fragmentation issues or you have to raise your maximum mapping count,
e.g. "sysctl vm.max_map_count=(number)".
2021-10-13 19:01:22 +02:00
Maria Matejka
3a31c3aad6
CLI socket accept() may also fail and should produce some message, not a coredump.
2021-10-13 19:00:36 +02:00
Maria Matejka
d322ee3d54
OSPF: explicitly stop the periodic tick on shutdown to avoid recalculation races
2021-10-13 19:00:36 +02:00
Maria Matejka
e5a8eec6d7
Linpools may use pages instead of xmalloc
2021-10-13 19:00:36 +02:00
Maria Matejka
bea582cbb5
fixup! Bound allocated pages to resource pools with page caches to avoid unnecessary syscalls
2021-10-13 18:59:45 +02:00
Maria Matejka
7f0e598208
Bound allocated pages to resource pools with page caches to avoid unnecessary syscalls
2021-09-10 18:13:50 +02:00
Maria Matejka
2c13759136
Reducing filter stack size to allow for lesser thread stack size
2021-09-10 18:11:28 +02:00
Maria Matejka
ceef6de459
OSPF: Setting a list node NULL before use
2021-09-10 17:38:22 +02:00
Maria Matejka
923a6644b2
Fixed memory poisoning in slab
2021-09-10 17:38:22 +02:00
Maria Matejka
227e2d5541
Debug output uses local buffer to avoid clashes between threads.
2021-09-10 17:37:46 +02:00
Maria Matejka
eb20251655
Filter: Additional consistency checks
2021-09-10 17:37:46 +02:00
Ondrej Zajicek (work)
47d92d8f9d
Nest: Clean up main channel handling
...
Remove assumption that main channel is the only channel.
2021-09-10 17:32:05 +02:00
Ondrej Zajicek (work)
3f19100f5a
CI: Allow Babel tests
2021-06-11 01:31:10 +02:00
Ondrej Zajicek (work)
596f2e32e3
Nest: Allow both 'password' and 'key' keywords for authentication keys
2021-06-09 19:54:01 +02:00
Ondrej Zajicek (work)
6d26f85395
Babel: Simplify auth expiration
...
Just use hello_expiry for that, keep init_expiry for initial
unauthentized neighbors.
2021-06-09 19:31:55 +02:00
Ondrej Zajicek (work)
8eea396baf
Nest: Fix password list parsing code
...
One of previous patches broke password list parsing code, fix that.
2021-06-06 19:10:33 +02:00
Ondrej Zajicek (work)
ee9516dbe8
Lib: Fix static assert macro
2021-06-06 17:23:45 +02:00