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
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
56c8f2f03a
Nest: Route generations and explicit tracking route propagion through pipes
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
3a8197a9dc
Limit containment
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
1c2f66f2bd
Refeed is done from export table when appropriate
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
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
60880b539b
Extended route trace: logging Path Identifiers
2021-11-09 17:42:36 +01:00
Ondrej Zajicek (work)
9f24fef5e9
Conf: Fix crash during shutdown
...
BIRD implements shutdown by reconfiguring to fake empty configuration.
Such fake config structure is created from the last running config and
shares some data, including symbol table. This allows access to (removed)
routing tables and causes crash when 'show route' command is used during
shutdown.
Clean up symbol table, table list and links to default tables, so removed
routing tables cannot be accessed during shutdown.
2021-10-20 01:51:28 +02: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
e42eedb912
Kernel: Convert the rte-local attributes to extended attributes and flags to pflags
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
d5a32563df
Preexport: No route modification, no linpool needed
2021-10-13 19:09:04 +02:00
Maria Matejka
541881bedf
RIP fixup + dropping the tmp_attrs mechanism as obsolete
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
eb937358c0
Preference moved to RTA and set explicitly in protocols
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
ddd89ba12d
BGP: Moved the suppressed and stale flags to pflags
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
8216ec3027
There may be a symbol with NULL protocol when reconfiguring
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
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
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
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
Ondrej Zajicek (work)
067f69a56d
Filter: Add prefix trie benchmarks
...
Add trie tests intended as benchmarks that use external datasets
instead of generated prefixes. As datasets are not included, they
are commented out by default.
2021-09-25 16:06:43 +02:00
Ondrej Zajicek (work)
e709dc09e6
Filter: Improve prefix trie tests
...
Add tests explicitly matching insides and outsides of trie and update
tests to do testing of both IPv4 and IPv6 tries.
2021-09-25 16:06:43 +02:00
Ondrej Zajicek (work)
dd61278c9d
Filter: Update trie documentation
2021-09-25 16:06:43 +02:00
Ondrej Zajicek (work)
562a2b8c29
Filter: Fix trie test
...
Generated prefixes must be valid.
2021-09-25 16:06:43 +02:00
Ondrej Zajicek (work)
13225f1dbf
Filter: Faster prefix sets
...
Use 16-way (4bit) branching in prefix trie instead of basic binary
branching. The change makes IPv4 prefix sets almost 3x faster, but
with more memory consumption and much more complicated algorithm.
Together with a previous filter change, it makes IPv4 prefix sets
about ~4.3x faster and slightly smaller (on my test data).
2021-09-25 16:06:43 +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)
f761be6b30
Nest: Clean up main channel handling
...
Remove assumption that main channel is the only channel.
2021-06-17 16:56:51 +02:00