]> git.ipfire.org Git - thirdparty/bird.git/log
thirdparty/bird.git
3 years agoMerge branch 'ballygarvan' into HEAD
Maria Matejka [Tue, 2 Aug 2022 15:58:14 +0000 (17:58 +0200)] 
Merge branch 'ballygarvan' into HEAD

Replacing the old 3.0-alpha0 cork mechanism with another one inside the
routing table. This version should be simpler and also quite clear what
it does, why and when.

3 years agoRevert "Split route table event into separate events"
Maria Matejka [Tue, 2 Aug 2022 15:55:50 +0000 (17:55 +0200)] 
Revert "Split route table event into separate events"

This reverts commit 445eeaf3df126af2c7b61e71c4f08a583eb4fa60.

3 years agoRevert "Table cork: Stop creating updates when there are too many pending."
Maria Matejka [Tue, 2 Aug 2022 15:55:47 +0000 (17:55 +0200)] 
Revert "Table cork: Stop creating updates when there are too many pending."

This reverts commit 3b20722a1fc777c27ab2e0451d0ea3fee7fa81a2.

3 years agoAlso next hop update routines are corking themselves when congestion is detected
Maria Matejka [Tue, 2 Aug 2022 15:51:58 +0000 (17:51 +0200)] 
Also next hop update routines are corking themselves when congestion is detected

3 years agoBGP: respecting table cork
Maria Matejka [Tue, 2 Aug 2022 10:54:11 +0000 (12:54 +0200)] 
BGP: respecting table cork

3 years agoRoute table cork: Indicate whether the export queues are congested.
Maria Matejka [Thu, 28 Jul 2022 11:50:59 +0000 (13:50 +0200)] 
Route table cork: Indicate whether the export queues are congested.

These routines detect the export congestion (as defined by configurable
thresholds) and propagate the state to readers. There are no readers for
now, they will be added in following commits.

3 years agoIntroducing basic RCU primitives for lock-less shared data structures
Maria Matejka [Fri, 12 Nov 2021 21:58:40 +0000 (22:58 +0100)] 
Introducing basic RCU primitives for lock-less shared data structures

3 years agoFixed main birdloop init in unit tests
Maria Matejka [Mon, 1 Aug 2022 13:17:41 +0000 (15:17 +0200)] 
Fixed main birdloop init in unit tests

Some unit tests weren't initializing the birdloop, trying to write the
birdloop ping into stdin. Fixed this and also forced stdin close on
startup of every test just to be sure that CI and local build behave the
same in this. (CI was failing on this while local build not.)

3 years agoSending an event must also ping the target IO loop
Maria Matejka [Thu, 28 Jul 2022 17:52:19 +0000 (19:52 +0200)] 
Sending an event must also ping the target IO loop

3 years agoMoved the thread starting code to IO loop code
Maria Matejka [Thu, 28 Jul 2022 17:49:03 +0000 (19:49 +0200)] 
Moved the thread starting code to IO loop code

3 years agoMerge commit '03bf6b90' into thread-next
Maria Matejka [Thu, 28 Jul 2022 17:22:58 +0000 (19:22 +0200)] 
Merge commit '03bf6b90' into thread-next

3 years agoRevert "Adding a generic cork mechanism for events"
Maria Matejka [Thu, 28 Jul 2022 17:22:48 +0000 (19:22 +0200)] 
Revert "Adding a generic cork mechanism for events"

This reverts commit 6e841b3153565632b6753f6b1fe74850c37f2808.

3 years agoEvent lists rewritten to a single linked list
Maria Matejka [Fri, 24 Jun 2022 17:53:34 +0000 (19:53 +0200)] 
Event lists rewritten to a single linked list

In multithreaded environment, we need to pass messages between workers.
This is done by queuing events to their respective queues. The
double-linked list is not really useful for that as it needs locking
everywhere.

This commit rewrites the event subsystem to use a single-linked list
where events are enqueued by a single atomic instruction and the queue
is processed after atomically moving the whole queue aside.

3 years agoMerge commit '94eb0858' into thread-next
Maria Matejka [Mon, 18 Jul 2022 10:33:00 +0000 (12:33 +0200)] 
Merge commit '94eb0858' into thread-next

3 years agoMerge commit 'a4451535' into thread-next
Maria Matejka [Mon, 18 Jul 2022 09:11:46 +0000 (11:11 +0200)] 
Merge commit 'a4451535' into thread-next

3 years agoFixed an annoying warning in ea_get_storage()
Maria Matejka [Mon, 18 Jul 2022 08:56:20 +0000 (10:56 +0200)] 
Fixed an annoying warning in ea_get_storage()

3 years agoFixing build issues caused by a nonportable Makefile rule
Maria Matejka [Mon, 18 Jul 2022 08:26:55 +0000 (10:26 +0200)] 
Fixing build issues caused by a nonportable Makefile rule

3 years agoMerge commit 'a845651b' into thread-next
Maria Matejka [Mon, 18 Jul 2022 08:19:59 +0000 (10:19 +0200)] 
Merge commit 'a845651b' into thread-next

3 years agoMerge commit 'c70b3198' into thread-next [lots of conflicts]
Maria Matejka [Fri, 15 Jul 2022 12:57:02 +0000 (14:57 +0200)] 
Merge commit 'c70b3198' into thread-next [lots of conflicts]

There were more conflicts that I'd like to see, most notably in route
export. If a bisect identifies this commit with something related, it
may be simply true that this commit introduces that bug. Let's hope it
doesn't happen.

3 years agoFixed invalid routes handling
Maria Matejka [Thu, 14 Jul 2022 09:09:23 +0000 (11:09 +0200)] 
Fixed invalid routes handling

The invalid routes were filtered out before they could ever get
exported, yet some of the routines need them available, e.g. for
display or import reload.

Now the invalid routes are properly exported and dropped in channel
export routines instead.

3 years agoMerge branch 'backport' into thread-next
Maria Matejka [Wed, 13 Jul 2022 12:46:36 +0000 (14:46 +0200)] 
Merge branch 'backport' into thread-next

3 years agoMerge commit '2e5bfeb73ac25e236a24b6c1a88d0f2221ca303f' into thread-next
Maria Matejka [Wed, 13 Jul 2022 12:14:37 +0000 (14:14 +0200)] 
Merge commit '2e5bfeb73ac25e236a24b6c1a88d0f2221ca303f' into thread-next

3 years agoMerge commit 'd429bc5c841a8e9d4c81786973edfa56d20a407e' into thread-next
Maria Matejka [Wed, 13 Jul 2022 10:54:20 +0000 (12:54 +0200)] 
Merge commit 'd429bc5c841a8e9d4c81786973edfa56d20a407e' into thread-next

3 years agoMerge commit '7e9cede1fd1878fb4c00e793bccd0ca6c18ad452' into thread-next
Maria Matejka [Wed, 13 Jul 2022 10:02:34 +0000 (12:02 +0200)] 
Merge commit '7e9cede1fd1878fb4c00e793bccd0ca6c18ad452' into thread-next

3 years agoFixed bug in repeated show route command
Maria Matejka [Wed, 13 Jul 2022 09:19:00 +0000 (11:19 +0200)] 
Fixed bug in repeated show route command

Introduced by 13ef5e53dd4a98c80261139b4c9ce4b1074cac40, the CLI was not
properly cleaned up when the command finished, causing BIRD to not parse
any other command after "show route".

3 years agoMerge commit 'f18968f5' into thread-next
Maria Matejka [Tue, 12 Jul 2022 13:05:04 +0000 (15:05 +0200)] 
Merge commit 'f18968f5' into thread-next

3 years agoMerge commit '1df20989' into thread-next
Maria Matejka [Tue, 12 Jul 2022 12:46:17 +0000 (14:46 +0200)] 
Merge commit '1df20989' into thread-next

3 years agoRevert "Special table hooks rectified."
Maria Matejka [Tue, 12 Jul 2022 12:46:06 +0000 (14:46 +0200)] 
Revert "Special table hooks rectified."

This reverts commit 44f26c49f966ca842ff9af55468de0b98c44b73e.

3 years agoRemoving the rte_modify API
Maria Matejka [Tue, 12 Jul 2022 10:40:18 +0000 (12:40 +0200)] 
Removing the rte_modify API

For BGP LLGR purposes, there was an API allowing a protocol to directly
modify their stale routes in table before flushing them. This API was
called by the table prune routine which violates the future locking
requirements.

Instead of this, BGP now requests a special route export and reimports
these routes into the table, allowing for asynchronous execution without
locking the table on export.

3 years agoRoute refresh in tables uses a stale counter.
Maria Matejka [Tue, 12 Jul 2022 08:36:10 +0000 (10:36 +0200)] 
Route refresh in tables uses a stale counter.

Until now, we were marking routes as REF_STALE and REF_DISCARD to
cleanup old routes after route refresh. This needed a synchronous route
table walk at both beginning and the end of route refresh routine,
marking the routes by the flags.

We avoid these walks by using a stale counter. Every route contains:
  u8 stale_cycle;
Every import hook contains:
  u8 stale_set;
  u8 stale_valid;
  u8 stale_pruned;
  u8 stale_pruning;

In base_state, stale_set == stale_valid == stale_pruned == stale_pruning
and all routes' stale_cycle also have the same value.

The route refresh looks like follows:
+ ----------- + --------- + ----------- + ------------- + ------------ +
|             | stale_set | stale_valid | stale_pruning | stale_pruned |
| Base        |     x     |      x      |        x      |       x      |
| Begin       |    x+1    |      x      |        x      |       x      |
  ... now routes are being inserted with stale_cycle == (x+1)
| End         |    x+1    |     x+1     |        x      |       x      |
  ... now table pruning routine is scheduled
| Prune begin |    x+1    |     x+1     |       x+1     |       x      |
  ... now routes with stale_cycle not between stale_set and stale_valid
      are deleted
| Prune end   |    x+1    |     x+1     |       x+1     |      x+1     |
+ ----------- + --------- + ----------- + ------------- + ------------ +

The pruning routine is asynchronous and may have high latency in
high-load environments. Therefore, multiple route refresh requests may
happen before the pruning routine starts, leading to this situation:

| Prune begin |    x+k    |     x+k     |    x -> x+k   |       x      |
  ... or even
| Prune begin |   x+k+1   |     x+k     |    x -> x+k   |       x      |
  ... if the prune event starts while another route refresh is running.

In such a case, the pruning routine still deletes routes not fitting
between stale_set and and stale_valid, effectively pruning the remnants
of all unpruned route refreshes from before:

| Prune end   |    x+k    |     x+k     |       x+k     |      x+k     |

In extremely rare cases, there may happen too many route refreshes
before any route prune routine finishes. If the difference between
stale_valid and stale_pruned becomes more than 128 when requesting for
another route refresh, the routine walks the table synchronously and
resets all the stale values to a base state, while logging a warning.

3 years agoThere are now no internal tables at all.
Maria Matejka [Mon, 11 Jul 2022 15:08:59 +0000 (17:08 +0200)] 
There are now no internal tables at all.

3 years agoDropped the internal kernel protocol table for learnt routes.
Maria Matejka [Mon, 11 Jul 2022 15:04:52 +0000 (17:04 +0200)] 
Dropped the internal kernel protocol table for learnt routes.

The learnt routes are now pushed all into the connected table, not only
the best one. This shouldn't do any damage in well managed setups, yet
it should be noted that it is a change of behavior.

If anybody misses a feature which they implemented by misusing this
internal learn table, let us know, we'll consider implementing it in a
better way.

3 years agoExport tables merged with BGP prefix hash
Maria Matejka [Mon, 20 Jun 2022 17:10:49 +0000 (19:10 +0200)] 
Export tables merged with BGP prefix hash

Until now, if export table was enabled, Nest was storing exactly the
route before rt_notify() was called on it. This was quite sloppy and
spooky and it also wasn't reflecting the changes BGP does before
sending. And as BGP is storing the routes to be sent anyway, we are
simply keeping the already-sent routes in there to better rule out
unneeded reexports.

Some of the route attributes (IGP metric, preference) make no sense in
BGP, therefore these will be probably replaced by something sensible.
Also the nexthop shown in the short output is the BGP nexthop.

3 years agoHash: iterable now per partes by an iterator
Maria Matejka [Wed, 29 Jun 2022 11:22:40 +0000 (13:22 +0200)] 
Hash: iterable now per partes by an iterator

It's now possible to pause iteration through hash. This requires
struct hash_iterator to be allocated somewhere handy.

The iteration itself is surrounded by HASH_WALK_ITER and
HASH_WALK_ITER_END. Call HASH_WALK_ITER_PUT to ask for pausing; it may
still do some more iterations until it comes to a suitable pausing
point. The iterator must be initalized to an empty structure. No cleanup
is needed if iteration is abandoned inbetween.

3 years agoDo not try to check flowspec validity for piped routes
Maria Matejka [Wed, 29 Jun 2022 10:51:07 +0000 (12:51 +0200)] 
Do not try to check flowspec validity for piped routes

3 years agoFixed bad import table attributes freeing
Maria Matejka [Tue, 28 Jun 2022 10:57:18 +0000 (12:57 +0200)] 
Fixed bad import table attributes freeing

3 years agoAttribute lists split to storage headers and data to save BGP memory
Maria Matejka [Tue, 28 Jun 2022 08:51:00 +0000 (10:51 +0200)] 
Attribute lists split to storage headers and data to save BGP memory

3 years agoShow route uses the export request also for one-net queries
Maria Matejka [Mon, 27 Jun 2022 17:53:06 +0000 (19:53 +0200)] 
Show route uses the export request also for one-net queries

3 years agoAdded forgotten route source locking in flowspec validation
Maria Matejka [Mon, 11 Jul 2022 11:04:01 +0000 (13:04 +0200)] 
Added forgotten route source locking in flowspec validation

3 years agoMerge remote-tracking branch 'origin/master' into backport
Maria Matejka [Mon, 11 Jul 2022 09:08:10 +0000 (11:08 +0200)] 
Merge remote-tracking branch 'origin/master' into backport

3 years agoMerge commit 'beb5f78a' into backport
Maria Matejka [Mon, 11 Jul 2022 08:41:17 +0000 (10:41 +0200)] 
Merge commit 'beb5f78a' into backport

3 years agoMerge version 2.0.10 into backport
Maria Matejka [Sun, 10 Jul 2022 12:19:24 +0000 (14:19 +0200)] 
Merge version 2.0.10 into backport

3 years agoFilter: Implement for loops
Ondrej Zajicek (work) [Mon, 14 Mar 2022 19:36:20 +0000 (20:36 +0100)] 
Filter: Implement for loops

For loops allow to iterate over elements in compound data like BGP paths
or community lists. The syntax is:

  for [ <type> ] <variable> in <expr> do <command-body>

3 years agoFilter: Implement mixed declarations of local variables
Ondrej Zajicek (work) [Thu, 10 Mar 2022 00:02:45 +0000 (01:02 +0100)] 
Filter: Implement mixed declarations of local variables

Allow variable declarations mixed with code, also in nested blocks with
proper scoping, and with variable initializers. E.g:

function fn(int a)
{
  int b;
  int c = 10;

  if a > 20 then
  {
    b = 30;
    int d = c * 2;
    print a, b, c, d;
  }

  string s = "Hello";
}

3 years agoFilter: Improve handling of stack frames in filter bytecode
Ondrej Zajicek (work) [Wed, 9 Mar 2022 01:32:29 +0000 (02:32 +0100)] 
Filter: Improve handling of stack frames in filter bytecode

When f_line is done, we have to pop the stack frame. The old code just
removed nominal number of args/vars. Change it to use stored ventry value
modified by number of returned values. This allows to allocate variables
on a stack frame during execution of f_lines instead of just at start.

But we need to know the number of returned values for a f_line. It is 1
for term, 0 for cmd. Store that to f_line during linearization.

3 years agoFilter: Simplify handling of command sequences
Ondrej Zajicek (work) [Tue, 8 Mar 2022 23:31:39 +0000 (00:31 +0100)] 
Filter: Simplify handling of command sequences

Command sequences in curly braces used a separate nonterminal in grammar.
Handle them as a regular command.

3 years agoFilter: Fix bug in variable shadowing
Ondrej Zajicek (work) [Sun, 6 Mar 2022 21:57:33 +0000 (22:57 +0100)] 
Filter: Fix bug in variable shadowing

When a new variable used the same name as an existing symbol in an outer
scope, then offset number was defined based on a scope of the existing
symbol ($3) instead of a scope of the new symbol (sym_). That can lead
to two variables sharing the same memory slot.

3 years agoFilter: Implement soft scopes
Ondrej Zajicek (work) [Sun, 6 Mar 2022 15:37:30 +0000 (16:37 +0100)] 
Filter: Implement soft scopes

Soft scopes are anonymous scopes that most likely do not contain any
symbol, so allocating regular scope is postponed when it is really
needed.

3 years agoFilter: Implement direct recursion
Ondrej Zajicek (work) [Sun, 6 Mar 2022 01:18:01 +0000 (02:18 +0100)] 
Filter: Implement direct recursion

Direct recursion almost worked, just crashed on function signature check.
Split function parsing such that function signature is saved before
function body is processed. Recursive calls are marked so they can be
avoided during f_same() and similar code walking.

Also, include tower of hanoi solver as a test case.

3 years agoFilter: Apply constant promotion for FI_EQ / FI_NEQ
Ondrej Zajicek (work) [Fri, 4 Mar 2022 16:51:50 +0000 (17:51 +0100)] 
Filter: Apply constant promotion for FI_EQ / FI_NEQ

Equality comparison is defined on all values, even of different
types, but we still want to do constant promotion if possible.

3 years agoFilter: Add literal for empty set
Alexander Zubkov [Fri, 4 Mar 2022 13:07:58 +0000 (14:07 +0100)] 
Filter: Add literal for empty set

Add literal for empty set [], which works both for tree-based sets
and prefix sets by using existing constant promotion mechanism.

Minor changes by committer.

3 years agoNest: Cleanups in as_path_filter()
Ondrej Zajicek (work) [Fri, 4 Mar 2022 01:01:34 +0000 (02:01 +0100)] 
Nest: Cleanups in as_path_filter()

Use struct f_val as a common argument for as_path_filter(), as suggested
by Alexander Zubkov. That allows to use NULL sets as valid arguments.

3 years agoFilter: Ensure that all expressions declared return type
Ondrej Zajicek (work) [Thu, 3 Mar 2022 19:34:44 +0000 (20:34 +0100)] 
Filter: Ensure that all expressions declared return type

All instructions with a return value (i.e. expressions, ones with
non-zero outval, third argument in INST()) should declare their return
type. Check that automatically by M4 macros.

Set outval of FI_RETURN to 0. The instruction adds one value to stack,
but syntactically it is a statement, not an expression.

Add fake return type declaration to FI_CALL, otherwise the automatic
check would fail builds.

3 years agoFilter: Improve description of type system
Ondrej Zajicek (work) [Thu, 3 Mar 2022 14:11:05 +0000 (15:11 +0100)] 
Filter: Improve description of type system

3 years agoFilter: Implement type checks for function calls
Ondrej Zajicek (work) [Thu, 3 Mar 2022 02:38:12 +0000 (03:38 +0100)] 
Filter: Implement type checks for function calls

Keep list of function parameters in f_line and use it to verify
types of arguments for function calls. Only static type checks
are implemented.

3 years agoFilter: Clean up function call instruction
Ondrej Zajicek (work) [Tue, 1 Mar 2022 01:04:35 +0000 (02:04 +0100)] 
Filter: Clean up function call instruction

Pass instructions of function call arguments as vararg arguments to
FI_CALL instruction constructor and move necessary magic from parser
code to interpreter / instruction code.

3 years agoPreexport callback now takes the channel instead of protocol as argument next-preexport
Maria Matejka [Mon, 27 Jun 2022 17:04:22 +0000 (19:04 +0200)] 
Preexport callback now takes the channel instead of protocol as argument

Passing protocol to preexport was in fact a historical relic from the
old times when channels weren't a thing. Refactoring that to match
current extensibility needs.

3 years agoMoved nexthop + hostentry display to other eattrs
Maria Matejka [Mon, 27 Jun 2022 11:39:28 +0000 (13:39 +0200)] 
Moved nexthop + hostentry display to other eattrs

3 years agoRoute attribute display now normalizes ea_lists.
Maria Matejka [Mon, 27 Jun 2022 10:44:11 +0000 (12:44 +0200)] 
Route attribute display now normalizes ea_lists.

This is needed to display every attribute only once with overlay
attribute lists recently introduced.

3 years agoFixed new route comparison
Maria Matejka [Mon, 27 Jun 2022 10:32:15 +0000 (12:32 +0200)] 
Fixed new route comparison

3 years agoFixed displaying BGP and RIP attributes after recent reworks
Maria Matejka [Mon, 27 Jun 2022 10:14:05 +0000 (12:14 +0200)] 
Fixed displaying BGP and RIP attributes after recent reworks

3 years agoFixed minor bugs in handling some route attributes
Maria Matejka [Mon, 27 Jun 2022 09:04:57 +0000 (11:04 +0200)] 
Fixed minor bugs in handling some route attributes

3 years agoFixed undefined attribute handling
Maria Matejka [Sun, 26 Jun 2022 12:48:55 +0000 (14:48 +0200)] 
Fixed undefined attribute handling

3 years agoThe show-route CLI command now uses the route export API
Maria Matejka [Fri, 24 Jun 2022 13:27:26 +0000 (15:27 +0200)] 
The show-route CLI command now uses the route export API

In the multithreaded environment, it is not supposed that anybody
traverses the routing table as the CLI show-route was doing. Now the
routing table traversal is gone and CLI won't hold the table locked
while computing filters.

3 years agoFixed forgotten preference handling in filters
Maria Matejka [Sun, 26 Jun 2022 12:11:08 +0000 (14:11 +0200)] 
Fixed forgotten preference handling in filters

3 years agoAllowed optimized exporting of a subprefix tree
Maria Matejka [Wed, 22 Jun 2022 10:45:42 +0000 (12:45 +0200)] 
Allowed optimized exporting of a subprefix tree

Added an option for export filter to allow for prefiltering based on the
prefix. Routes outside the given prefix are completely ignored. Config
is simple:

export in <net> <filter>;

3 years agoTable export generalized to allow for exporting from non-tables
Maria Matejka [Mon, 20 Jun 2022 19:29:10 +0000 (21:29 +0200)] 
Table export generalized to allow for exporting from non-tables

3 years agoImport tables are stored as an attribute layer inside the main tables.
Maria Matejka [Thu, 16 Jun 2022 21:24:56 +0000 (23:24 +0200)] 
Import tables are stored as an attribute layer inside the main tables.

The separate import tables were too memory-greedy, there is no need for
them being stored as full-sized tables.

3 years agoRoute attribute storage keeps the previous layers
Maria Matejka [Thu, 16 Jun 2022 21:24:53 +0000 (23:24 +0200)] 
Route attribute storage keeps the previous layers

3 years agoShowing the nexthop resolution target in import tables
Maria Matejka [Thu, 16 Jun 2022 10:39:08 +0000 (12:39 +0200)] 
Showing the nexthop resolution target in import tables

3 years agoNEWS and version update v2.0.10
Ondrej Zajicek [Thu, 16 Jun 2022 00:58:37 +0000 (02:58 +0200)] 
NEWS and version update

3 years agoMerge commit '938742decc6e1d6d3a0375dd012b75172e747bbc' into haugesund
Maria Matejka [Wed, 8 Jun 2022 13:31:28 +0000 (15:31 +0200)] 
Merge commit '938742decc6e1d6d3a0375dd012b75172e747bbc' into haugesund

3 years agoMerge commit '950775f6fa3d569a9d7cd05e33538d35e895d688' into haugesund
Maria Matejka [Wed, 8 Jun 2022 09:47:49 +0000 (11:47 +0200)] 
Merge commit '950775f6fa3d569a9d7cd05e33538d35e895d688' into haugesund

There were quite a lot of conflicts in flowspec validation code which
ultimately led to some code being a bit rewritten, not only adapted from
this or that branch, yet it is still in a limit of a merge.

3 years agoFixing FlowSpec validation for v3 internal API
Maria Matejka [Tue, 7 Jun 2022 10:18:23 +0000 (12:18 +0200)] 
Fixing FlowSpec validation for v3 internal API

Validation is called internally from route table at the same place where
nexthop resolution is done. Also accounting for rte->sender semantics
change (not a channel but the import hook instead).

3 years agoIPv4 flowspec literals should reject IPv6 prefices in a well-behaved way
Maria Matejka [Tue, 7 Jun 2022 08:35:48 +0000 (10:35 +0200)] 
IPv4 flowspec literals should reject IPv6 prefices in a well-behaved way

When writing flow4 { dst 2001:db8::dead:beef/128; }, BIRD crashed on an
not-well-debuggable segfault as it tried to copy the whole 128-bit
prefix into an IPv4-sized memory.

3 years agoBabel: Do not try to remove multicast seqno request objects from neighbour list
Ondrej Zajicek [Sun, 5 Jun 2022 02:03:43 +0000 (04:03 +0200)] 
Babel: Do not try to remove multicast seqno request objects from neighbour list

The Babel seqno request code keeps track of which seqno requests are
outstanding for a neighbour by putting them onto a per-neighbour list. When
reusing a seqno request, it will try to remove this node, but if the seqno
request in question was a multicast request with no neighbour attached this
will result in a crash because it tries to remove a list node that wasn't
added to any list.

Fix this by making the list remove conditional. Also fix neighbor removal
which were changing seqno requests to multicast ones instead of removing
them.

Fixes: ebd5751cdeb4 ("Babel: Seqno requests are properly decoupled from
neighbors when the underlying interface disappears").

Based on the patch from Toke Høiland-Jørgensen <toke@toke.dk>,
bug reported by Stefan Haller <stefan.haller@stha.de>, thanks.

3 years agoIO: Improve resolution of latency debugging messages
Ondrej Zajicek [Sat, 4 Jun 2022 15:54:08 +0000 (17:54 +0200)] 
IO: Improve resolution of latency debugging messages

3 years agoNest: Improve GC strategy for rtables
Ondrej Zajicek [Sat, 4 Jun 2022 15:34:57 +0000 (17:34 +0200)] 
Nest: Improve GC strategy for rtables

Use timer (configurable as 'gc period') to schedule routing table
GC/pruning to ensure that prune is done on time but not too often.

Randomize GC timers to avoid concentration of GC events from different
tables in one loop cycle.

Fix a bug that caused minimum inter-GC interval be 5 us instead of 5 s.

Make default 'gc period' adaptive based on number of routing tables,
from 10 s for small setups to 600 s for large ones.

In marge multi-table RS setup, the patch improved time of flushing
a downed peer from 20-30 min to <2 min and removed 40s latencies.

3 years agoMerge commit '4fe9881d625f10e44109a649e369a413bd98de71' into haugesund
Maria Matejka [Tue, 31 May 2022 10:51:34 +0000 (12:51 +0200)] 
Merge commit '4fe9881d625f10e44109a649e369a413bd98de71' into haugesund

3 years agoMerge commit 'f15f2fcee7eeb5a100bd204a0e67018e25953420' into haugesund
Maria Matejka [Mon, 30 May 2022 15:36:36 +0000 (17:36 +0200)] 
Merge commit 'f15f2fcee7eeb5a100bd204a0e67018e25953420' into haugesund

3 years agoMerge commit 'f2e725a76882ba6b75c3ce4fb3c760bd83462410' into haugesund
Maria Matejka [Mon, 30 May 2022 15:27:03 +0000 (17:27 +0200)] 
Merge commit 'f2e725a76882ba6b75c3ce4fb3c760bd83462410' into haugesund

3 years agoMerge commit '1c30b689ddd032ef8000fb7836348a48ba3184ff' into haugesund
Maria Matejka [Mon, 30 May 2022 15:26:25 +0000 (17:26 +0200)] 
Merge commit '1c30b689ddd032ef8000fb7836348a48ba3184ff' into haugesund

3 years agoMerge commit '702c04fbef222e802ca4dfac645dc75ede522db6' into haugesund
Maria Matejka [Mon, 30 May 2022 15:18:46 +0000 (17:18 +0200)] 
Merge commit '702c04fbef222e802ca4dfac645dc75ede522db6' into haugesund

3 years agoMerge commit '337c04c45e1472d6d9b531a3c55f1f2d30ebf308' into haugesund
Maria Matejka [Mon, 30 May 2022 15:18:03 +0000 (17:18 +0200)] 
Merge commit '337c04c45e1472d6d9b531a3c55f1f2d30ebf308' into haugesund

3 years agoMerge commit 'd8661a4397e4576ac404661b192dd99d928e7890' into haugesund
Maria Matejka [Mon, 30 May 2022 15:11:30 +0000 (17:11 +0200)] 
Merge commit 'd8661a4397e4576ac404661b192dd99d928e7890' into haugesund

3 years agoMerge commit '17f91f9e6e70f7e3f29502e854823c0d48571eaa' into haugesund
Maria Matejka [Mon, 30 May 2022 14:59:24 +0000 (16:59 +0200)] 
Merge commit '17f91f9e6e70f7e3f29502e854823c0d48571eaa' into haugesund

3 years agoMerge commit '165156beeb2926472bbceca3c103aacc3f81a8cc' into haugesund
Maria Matejka [Mon, 30 May 2022 14:53:18 +0000 (16:53 +0200)] 
Merge commit '165156beeb2926472bbceca3c103aacc3f81a8cc' into haugesund

3 years agoMerge commit 'cf07d8ad79273a3bbf0617c17e438602e4b64ece' into haugesund
Maria Matejka [Mon, 30 May 2022 14:52:38 +0000 (16:52 +0200)] 
Merge commit 'cf07d8ad79273a3bbf0617c17e438602e4b64ece' into haugesund

3 years agoMerge commit '1d309c4ce6e95b68c64a8f007f6dd2f1830a5707' into haugesund
Maria Matejka [Mon, 30 May 2022 14:48:17 +0000 (16:48 +0200)] 
Merge commit '1d309c4ce6e95b68c64a8f007f6dd2f1830a5707' into haugesund

3 years agoMerge commit 'ef4313e1667a8745c8d8813ac78342ec7c035895' into haugesund
Maria Matejka [Mon, 30 May 2022 14:47:30 +0000 (16:47 +0200)] 
Merge commit 'ef4313e1667a8745c8d8813ac78342ec7c035895' into haugesund

3 years agoMerge commit 'f2f3163f6c3fba7f9ef03640d7b2f6323873d2cc' into haugesund
Maria Matejka [Mon, 30 May 2022 14:41:15 +0000 (16:41 +0200)] 
Merge commit 'f2f3163f6c3fba7f9ef03640d7b2f6323873d2cc' into haugesund

3 years agoMerge commit 'de86040b2cf4ec9bfbb64f0e208a19d4d7e51adc' into haugesund
Maria Matejka [Mon, 30 May 2022 14:21:48 +0000 (16:21 +0200)] 
Merge commit 'de86040b2cf4ec9bfbb64f0e208a19d4d7e51adc' into haugesund

3 years agoMerge commit '3fb70b26faca6788aa0bdf1d558414f9f777c6cd' into haugesund
Maria Matejka [Mon, 30 May 2022 14:21:02 +0000 (16:21 +0200)] 
Merge commit '3fb70b26faca6788aa0bdf1d558414f9f777c6cd' into haugesund

3 years agoMerge commit 'ef6a903e6f44b467f9606018446095521ad01ef1' into haugesund
Maria Matejka [Mon, 30 May 2022 14:20:35 +0000 (16:20 +0200)] 
Merge commit 'ef6a903e6f44b467f9606018446095521ad01ef1' into haugesund

3 years agoMerge commit '0e1e632f70b74cf111f08175ab3634db2f962579' into haugesund
Maria Matejka [Mon, 30 May 2022 13:43:45 +0000 (15:43 +0200)] 
Merge commit '0e1e632f70b74cf111f08175ab3634db2f962579' into haugesund

3 years agoMerge commit '0d0f6554a5c233bf2bf830ae319191c4b1808d49' into haugesund
Maria Matejka [Mon, 30 May 2022 13:43:13 +0000 (15:43 +0200)] 
Merge commit '0d0f6554a5c233bf2bf830ae319191c4b1808d49' into haugesund

3 years agoMerge commit '80272d4b64a38ee6f04a1c4e8566cac3a2293176' into haugesund
Maria Matejka [Mon, 30 May 2022 13:39:32 +0000 (15:39 +0200)] 
Merge commit '80272d4b64a38ee6f04a1c4e8566cac3a2293176' into haugesund

3 years agoMerge commit 'cd9550b24487ac7327b0234fd825f4214fdf7b16' into haugesund
Maria Matejka [Mon, 30 May 2022 13:38:24 +0000 (15:38 +0200)] 
Merge commit 'cd9550b24487ac7327b0234fd825f4214fdf7b16' into haugesund

3 years agoMerge commit '652be92a21f5575e5f74f6abe98eb4200b86776c' into haugesund
Maria Matejka [Mon, 30 May 2022 13:36:54 +0000 (15:36 +0200)] 
Merge commit '652be92a21f5575e5f74f6abe98eb4200b86776c' into haugesund

3 years agoMerge commit '98fd158e28d89f10ee7a41b4f6a14fbd0021ef35' into haugesund
Maria Matejka [Mon, 30 May 2022 13:35:29 +0000 (15:35 +0200)] 
Merge commit '98fd158e28d89f10ee7a41b4f6a14fbd0021ef35' into haugesund