Maria Matejka
445eeaf3df
Split route table event into separate events
...
The former rt_event is dropped in favour of separate table events.
This allows for selective corking of NHU and prune.
2021-11-22 19:05:43 +01:00
Maria Matejka
c84ed60371
Moved BFD IO loop out of BFD as we want to use it as socket-io coroutine
2021-11-22 19:05:43 +01:00
Maria Matejka
a2af807357
Debug messages with timestamps.
...
On most of current hardware, getting monotonic clock is fast enough to
get it and write for each debug message.
2021-11-22 19:05:43 +01:00
Maria Matejka
8d706aedba
Fixing expensive list checks. Debug only commit.
2021-11-22 19:05:43 +01:00
Maria Matejka
df3264f51f
Lock position checking allows for safe lock unions
2021-11-22 19:05:43 +01:00
Maria Matejka
b5ca6a79d3
GDB: SKIP_BACK and linked list tools
2021-11-22 19:05:43 +01:00
Maria Matejka
1289c1c5ee
Coroutines: A simple and lightweight parallel execution framework.
2021-11-22 19:05:43 +01:00
Maria Matejka
2d7e42cc59
Type checking in SKIP_BACK macro
2021-11-22 19:05:43 +01:00
Maria Matejka
1db83a507a
Locking subsystem: Just a global BIRD lock to begin with.
2021-11-22 19:05:43 +01:00
Maria Matejka
feb17ced23
Dropping the POSIX thread-local variables in favor of much easier-to-use C11 thread-local variables
2021-11-22 19:05:43 +01:00
Maria Matejka
b5061659d3
POSIX threads and thread-local storage is needed for concurrent execution
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
Ondrej Zajicek (work)
062e69bf52
Trie: Implement trie walking code
...
Trie walking allows enumeration of prefixes in a trie in the usual
lexicographic order. Optionally, trie enumeration can be restricted
to a chosen subnet (and its descendants).
2021-11-19 18:04:32 +01:00
Ondrej Zajicek (work)
71c18d9f53
Trie: Simplify network matching code
...
Introduce ipX_prefix_equal() and use it to simplify network matching code.
2021-11-13 21:11:18 +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
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