]> git.ipfire.org Git - thirdparty/bird.git/log
thirdparty/bird.git
5 years agoResource system: Locking mq-mm
Maria Matejka [Mon, 27 Apr 2020 14:14:02 +0000 (16:14 +0200)] 
Resource system: Locking

5 years agoMarking resource functions with non-NULL compiler flags
Maria Matejka [Mon, 27 Apr 2020 14:14:17 +0000 (16:14 +0200)] 
Marking resource functions with non-NULL compiler flags

5 years agoSimple change in UDP message sending to shutup Valgrind
Maria Matejka [Sun, 26 Apr 2020 21:22:18 +0000 (23:22 +0200)] 
Simple change in UDP message sending to shutup Valgrind

5 years agoRoute attributes async free
Maria Matejka [Fri, 24 Apr 2020 22:13:04 +0000 (00:13 +0200)] 
Route attributes async free

5 years agoGarbage collector for parallel execution
Maria Matejka [Wed, 22 Apr 2020 21:09:19 +0000 (23:09 +0200)] 
Garbage collector for parallel execution

5 years agoFix thread local storage support in GCC older than 4.9.
Maria Matejka [Wed, 22 Apr 2020 15:14:26 +0000 (17:14 +0200)] 
Fix thread local storage support in GCC older than 4.9.

Let's hope this will be history soon.

5 years agoEnforce support for thread local variables and POSIX threads
Maria Matejka [Wed, 22 Apr 2020 14:42:20 +0000 (16:42 +0200)] 
Enforce support for thread local variables and POSIX threads

5 years agoSplit route data structure to storage (ro) / manipulation (rw) structures.
Maria Matejka [Fri, 10 Apr 2020 22:35:52 +0000 (00:35 +0200)] 
Split route data structure to storage (ro) / manipulation (rw) structures.

This should help a lot with keeping the route machinery and allocations
clean. This commit also changes behaviour of rte_update() with cached
rta. Newly, calling rte_update() keeps the number of rta references.

5 years agoPreexport: No route modification, no linpool needed
Maria Matejka [Sun, 12 Apr 2020 19:54:20 +0000 (21:54 +0200)] 
Preexport: No route modification, no linpool needed

5 years agoRoute: moved rte_src pointer from rta to rte
Maria Matejka [Fri, 10 Apr 2020 15:08:29 +0000 (17:08 +0200)] 
Route: moved rte_src pointer from rta to rte

It is an auxiliary key in the routing table, not a route attribute.

5 years agoRoute export: Inlined do_rt_notify() as the split was arbitrary.
Maria Matejka [Tue, 7 Apr 2020 22:09:22 +0000 (00:09 +0200)] 
Route export: Inlined do_rt_notify() as the split was arbitrary.

5 years agoExport: More elegant export dispatcher.
Maria Matejka [Thu, 2 Apr 2020 15:43:44 +0000 (17:43 +0200)] 
Export: More elegant export dispatcher.

The previous version was a little bit spooky.

5 years agoRoute export: Common export function.
Maria Matejka [Tue, 10 Mar 2020 15:13:41 +0000 (16:13 +0100)] 
Route export: Common export function.

Also:
* Feeding request by net.
* Passing only net_addr in export structure.
* Cleanup of krt_replace_rte() call.

5 years agoRoute export: rejected by filter bitmap
Maria Matejka [Mon, 9 Mar 2020 14:31:10 +0000 (15:31 +0100)] 
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.

5 years agoRoute export: dropped tail-execution of do_rt_notify()
Maria Matejka [Fri, 6 Mar 2020 14:41:51 +0000 (15:41 +0100)] 
Route export: dropped tail-execution of do_rt_notify()

5 years agoRoute export: passing the export state in a dedicated structure
Maria Matejka [Thu, 27 Feb 2020 08:44:08 +0000 (09:44 +0100)] 
Route export: passing the export state in a dedicated structure

5 years agoInternal API change: passing all the rt_notify() data as a single structure.
Maria Matejka [Tue, 25 Feb 2020 21:13:32 +0000 (22:13 +0100)] 
Internal API change: passing all the rt_notify() data as a single structure.

5 years agoKRT: Using obligatory export table when non-trivial filters are applied.
Maria Matejka [Tue, 25 Feb 2020 11:07:50 +0000 (12:07 +0100)] 
KRT: Using obligatory export table when non-trivial filters are applied.

When the kernel filter is anything more sophisticated than FILTER_ACCEPT
or FILTER_REJECT, we should ensure that the old route being sent to the
kernel protocol is really what was sent there before. This fixes the old
misbehavior when an unfiltered old route was used.

5 years agoCleaning up also the rte_same hook which is never set
Maria Matejka [Mon, 17 Feb 2020 11:55:11 +0000 (12:55 +0100)] 
Cleaning up also the rte_same hook which is never set

5 years agoDropping rte-local dumper entries
Maria Matejka [Mon, 17 Feb 2020 11:42:14 +0000 (12:42 +0100)] 
Dropping rte-local dumper entries

5 years agoDropping the tmp_attrs mechanism as obsolete
Maria Matejka [Mon, 17 Feb 2020 11:40:09 +0000 (12:40 +0100)] 
Dropping the tmp_attrs mechanism as obsolete

There are no protocol-specific fields in rte now.

5 years agoKernel: Convert the rte-local attributes to extended attributes and flags to pflags
Maria Matejka [Thu, 13 Feb 2020 15:59:53 +0000 (16:59 +0100)] 
Kernel: Convert the rte-local attributes to extended attributes and flags to pflags

5 years agoDropping the RTS_DUMMY temporary route storage.
Maria Matejka [Mon, 17 Feb 2020 10:18:32 +0000 (11:18 +0100)] 
Dropping the RTS_DUMMY temporary route storage.

Kernel route sync is done by other ways now and this code is not used
currently.

5 years agoBabel: Convert the rte-local attributes to extended attributes
Maria Matejka [Thu, 13 Feb 2020 12:22:15 +0000 (13:22 +0100)] 
Babel: Convert the rte-local attributes to extended attributes

5 years agoOSPF: Convert the rte-local attributes to extended attributes
Maria Matejka [Tue, 11 Feb 2020 20:24:15 +0000 (21:24 +0100)] 
OSPF: Convert the rte-local attributes to extended attributes

5 years agoRIP: Convert the rte-local attributes to extended attributes
Maria Matejka [Tue, 11 Feb 2020 12:25:57 +0000 (13:25 +0100)] 
RIP: Convert the rte-local attributes to extended attributes

5 years agoAllow a generic pointer in route extended attributes
Maria Matejka [Tue, 11 Feb 2020 12:25:04 +0000 (13:25 +0100)] 
Allow a generic pointer in route extended attributes

5 years agoBGP: Moved the suppressed and stale flags to pflags
Maria Matejka [Mon, 10 Feb 2020 14:01:36 +0000 (15:01 +0100)] 
BGP: Moved the suppressed and stale flags to pflags

5 years agoPreference moved to RTA and set explicitly in protocols
Maria Matejka [Mon, 10 Feb 2020 07:41:05 +0000 (08:41 +0100)] 
Preference moved to RTA and set explicitly in protocols

5 years agoRoute import API redefinition.
Maria Matejka [Tue, 28 Jan 2020 10:42:46 +0000 (11:42 +0100)] 
Route import API redefinition.

Hidden rte_get_temp() into rte_update().
Split rte_update() / rte_withdraw().

5 years agoSlab: Init node in slab head to NULLs.
Maria Matejka [Mon, 19 Aug 2019 12:43:14 +0000 (14:43 +0200)] 
Slab: Init node in slab head to NULLs.

5 years agoTimer: Adding missing initializer.
Maria Matejka [Sat, 17 Aug 2019 14:09:29 +0000 (16:09 +0200)] 
Timer: Adding missing initializer.

5 years agoLexer: strtoul shall never set endptr to NULL; it should be an error
Maria Matejka [Sat, 17 Aug 2019 13:03:09 +0000 (15:03 +0200)] 
Lexer: strtoul shall never set endptr to NULL; it should be an error

5 years agoUnix socket: Path length check directly before copying the path.
Maria Matejka [Sat, 17 Aug 2019 12:57:41 +0000 (14:57 +0200)] 
Unix socket: Path length check directly before copying the path.

This is not needed as the string is always short enough, anyway
it may be needed in future and one strlen during BIRD start is
cheap enough.

5 years agoLists: Replaced replace_node() by update_node() which is the only use of that function.
Maria Matejka [Mon, 19 Aug 2019 12:36:51 +0000 (14:36 +0200)] 
Lists: Replaced replace_node() by update_node() which is the only use of that function.

5 years agoLists: fix a stupid sanitizer bug
Maria Matejka [Sat, 17 Aug 2019 12:03:47 +0000 (14:03 +0200)] 
Lists: fix a stupid sanitizer bug

5 years agoUninitialized list nodes fixes
Maria Matejka [Sat, 17 Aug 2019 12:18:41 +0000 (14:18 +0200)] 
Uninitialized list nodes fixes

5 years agoNest: Added const to ea_show just to declare that this shouldn't really change anything
Maria Matejka [Sat, 17 Aug 2019 11:36:36 +0000 (13:36 +0200)] 
Nest: Added const to ea_show just to declare that this shouldn't really change anything

5 years agoOSPF: Zero-initialization of a temporary neighbor
Maria Matejka [Sat, 17 Aug 2019 08:28:55 +0000 (10:28 +0200)] 
OSPF: Zero-initialization of a temporary neighbor

5 years agoNest: Several assumptions to tame the static analyzer
Maria Matejka [Sat, 17 Aug 2019 08:20:46 +0000 (10:20 +0200)] 
Nest: Several assumptions to tame the static analyzer

5 years agoNest: Assumption in rt-show for not-so-intuitive invariant.
Maria Matejka [Sat, 17 Aug 2019 06:59:06 +0000 (08:59 +0200)] 
Nest: Assumption in rt-show for not-so-intuitive invariant.

5 years agoStatic scanner and expensive debugging setup fix
Maria Matejka [Sat, 17 Aug 2019 06:54:08 +0000 (08:54 +0200)] 
Static scanner and expensive debugging setup fix

5 years agoRPKI: fixed rare va_list leak
Maria Matejka [Fri, 16 Aug 2019 19:22:56 +0000 (21:22 +0200)] 
RPKI: fixed rare va_list leak

5 years agoStatic check: Don't report dead code
Maria Matejka [Fri, 16 Aug 2019 19:15:49 +0000 (21:15 +0200)] 
Static check: Don't report dead code

5 years agoOSPF: Adding a note about a static analyzer result.
Maria Matejka [Fri, 16 Aug 2019 12:04:53 +0000 (14:04 +0200)] 
OSPF: Adding a note about a static analyzer result.

5 years agoOSPF: variable-length array of size 0 replaced by alloca()'d pointer
Maria Matejka [Fri, 16 Aug 2019 10:47:13 +0000 (12:47 +0200)] 
OSPF: variable-length array of size 0 replaced by alloca()'d pointer

NULL pointer is safer than a random pointer onto stack if this function
gets changed and eventually broken.

5 years agoList expensive check.
Maria Matejka [Wed, 14 Aug 2019 14:23:58 +0000 (16:23 +0200)] 
List expensive check.

5 years agoExpensive check declaration
Maria Matejka [Wed, 14 Aug 2019 14:22:39 +0000 (16:22 +0200)] 
Expensive check declaration

Intended to be run at every operation with complex data structures
to check their consistency and validity.

5 years agoIPv6 address parser: fail on incomplete addresses
Maria Matejka [Wed, 14 Aug 2019 10:29:04 +0000 (12:29 +0200)] 
IPv6 address parser: fail on incomplete addresses

5 years agoFilter: Don't alloc varargs array if its length would be zero
Maria Matejka [Wed, 14 Aug 2019 09:49:20 +0000 (11:49 +0200)] 
Filter: Don't alloc varargs array if its length would be zero

5 years agoFilter: Removed forgotten dead code
Maria Matejka [Wed, 14 Aug 2019 09:31:03 +0000 (11:31 +0200)] 
Filter: Removed forgotten dead code

5 years agoFilter: Additional consistency checks
Maria Matejka [Mon, 27 Apr 2020 20:33:10 +0000 (22:33 +0200)] 
Filter: Additional consistency checks

5 years agoMore assertion categories
Maria Matejka [Thu, 1 Aug 2019 12:25:01 +0000 (14:25 +0200)] 
More assertion categories

5 years agoNot calling memcpy with n=0.
Maria Matejka [Wed, 14 Aug 2019 08:28:23 +0000 (10:28 +0200)] 
Not calling memcpy with n=0.

5 years agoFilter: fixed omitted overflow check in EC constructor
Maria Matejka [Wed, 14 Aug 2019 09:06:49 +0000 (11:06 +0200)] 
Filter: fixed omitted overflow check in EC constructor

5 years agoMakefile rule for static analyzer
Maria Matejka [Wed, 14 Aug 2019 08:14:15 +0000 (10:14 +0200)] 
Makefile rule for static analyzer

5 years agoTests: Activate BGP test
Ondrej Zajicek (work) [Wed, 22 Apr 2020 14:03:37 +0000 (16:03 +0200)] 
Tests: Activate BGP test

5 years agoBGP: Fix handling of 16bit-only ASN translation
Nasato Goto [Wed, 15 Apr 2020 01:46:53 +0000 (03:46 +0200)] 
BGP: Fix handling of 16bit-only ASN translation

The bug generated invalid AGGREGATOR attribute during translation of
32bit ASN to 16bit-only BGP peer. The patch fixes that.

5 years agoConfiguration strings are constant.
Maria Matejka [Wed, 8 Apr 2020 20:25:15 +0000 (22:25 +0200)] 
Configuration strings are constant.

This is merely a const propagation. There was no problem in there.

5 years agoDoc: Update prefix set comment
Ondrej Zajicek (work) [Sat, 28 Mar 2020 16:17:51 +0000 (17:17 +0100)] 
Doc: Update prefix set comment

5 years agoFletcher16 test fixed to work at bigendian architectures.
Maria Matejka [Sat, 4 Apr 2020 23:12:06 +0000 (01:12 +0200)] 
Fletcher16 test fixed to work at bigendian architectures.

To be honest, it was wrong in concept, anyway it accidentally worked.

5 years agoFilter: Remove mixed address tests and fix formatting
Ondrej Zajicek (work) [Thu, 26 Mar 2020 03:53:23 +0000 (04:53 +0100)] 
Filter: Remove mixed address tests and fix formatting

5 years agoFilter: Optimize IPv4 prefix sets
Ondrej Zajicek (work) [Thu, 26 Mar 2020 02:57:48 +0000 (03:57 +0100)] 
Filter: Optimize IPv4 prefix sets

Use separate IPv4 and IPv6 implementation of prefix sets. Just this
change makes IPv4 prefix sets 60% smaller and 50% faster.

5 years agoRIP: Improvements to demand circuit mode
Ondrej Zajicek (work) [Sat, 14 Mar 2020 16:04:49 +0000 (17:04 +0100)] 
RIP: Improvements to demand circuit mode

Restart iface after changing demand circuit mode during reconfiguration.
Fix next_regular interval reset during reconfiguration. Send flushing
response when iface goes down.

5 years agoPerf: changed route update pattern to be more like common protocols
Maria Matejka [Mon, 27 Jan 2020 16:42:11 +0000 (17:42 +0100)] 
Perf: changed route update pattern to be more like common protocols

5 years agoNetlink: Handle interfaces with missing broadcast addresses
Ondrej Zajicek (work) [Thu, 5 Mar 2020 22:51:28 +0000 (23:51 +0100)] 
Netlink: Handle interfaces with missing broadcast addresses

5 years agoTests: Enforce cleanup before running a test
Ondrej Zajicek (work) [Thu, 5 Mar 2020 21:01:30 +0000 (22:01 +0100)] 
Tests: Enforce cleanup before running a test

5 years agoTests: Activate OSPF tests
Ondrej Zajicek (work) [Thu, 5 Mar 2020 16:39:52 +0000 (17:39 +0100)] 
Tests: Activate OSPF tests

5 years agoFlowspec: Fix tests
Ondrej Zajicek (work) [Tue, 3 Mar 2020 18:04:05 +0000 (19:04 +0100)] 
Flowspec: Fix tests

Missing dst no longer generates error.

5 years agoBGP: Handle flowspec rules without dst part
Ondrej Zajicek (work) [Tue, 3 Mar 2020 16:45:16 +0000 (17:45 +0100)] 
BGP: Handle flowspec rules without dst part

The RFC 5575 does not explicitly reject flowspec rules without dst part,
it just requires dst part in validation procedure for feasibility, which
we do not implement anyway. Thus flow without dst prefix is syntactically
valid, but unfeasible (if feasibilty testing is done).

Thanks to Alex D. for the bugreport.

5 years agoBGP: Support for MD5SIG together with remote range
Ondrej Zajicek (work) [Thu, 27 Feb 2020 15:16:48 +0000 (16:16 +0100)] 
BGP: Support for MD5SIG together with remote range

When dynamic BGP with remote range is configured, MD5SIG needs to use
newer socket option (TCP_MD5SIG_EXT) to specify remote addres range for
listening socket.

Thanks to Adam Kułagowski for the suggestion.

5 years agoRIP: Demand circuit support (RFC 2091)
Ondrej Zajicek (work) [Fri, 21 Feb 2020 01:35:50 +0000 (02:35 +0100)] 
RIP: Demand circuit support (RFC 2091)

5 years agoRIP: Fix crash when interface is removed
Ondrej Zajicek (work) [Fri, 14 Feb 2020 21:37:07 +0000 (22:37 +0100)] 
RIP: Fix crash when interface is removed

Recent changes in neighbor code caused RIP to access neighbor field which
is NULL during interface/neighbor removal and caused crash when debug
messages are enabled. Use correct field to get iface from neighbor.

5 years agoConf: Better error message when reading iproute2 config
Maria Matejka [Tue, 4 Feb 2020 09:34:46 +0000 (10:34 +0100)] 
Conf: Better error message when reading iproute2 config

Reported by: Martin Weinelt <martin@darmstadt.freifunk.net>

5 years agoRPKI: Allow build without libSSH
Maria Matejka [Tue, 4 Feb 2020 09:15:35 +0000 (10:15 +0100)] 
RPKI: Allow build without libSSH

5 years agoAdded missing extern
Maria Matejka [Tue, 4 Feb 2020 09:11:16 +0000 (10:11 +0100)] 
Added missing extern

Thanks to Robert Scheck <bird@robert-scheck.de> who reported it
and Toke Høiland-Jørgensen <toke@toke.dk> who suggested this patch.

5 years agoBFD: Option to specify which class of BFD sessions are accepted
Ondrej Zajicek (work) [Tue, 28 Jan 2020 17:07:25 +0000 (18:07 +0100)] 
BFD: Option to specify which class of BFD sessions are accepted

Allows to configure IPv4/IPv6-only or direct/multihop-only BFD protocol
instances.

5 years agoOSPF: Fix bad initialization of tx_hdrlen field
Ondrej Zajicek (work) [Thu, 9 Jan 2020 01:59:59 +0000 (02:59 +0100)] 
OSPF: Fix bad initialization of tx_hdrlen field

Function ifa_tx_hdrlen() uses fields autype and passwords, so it must be
called after these are set.

Thanks to Kenth Eriksson for the bugreport.

5 years agoKRT: Improve syncer code to avoid using temporary data in rtable
Ondrej Zajicek (work) [Tue, 7 Jan 2020 17:35:03 +0000 (18:35 +0100)] 
KRT: Improve syncer code to avoid using temporary data in rtable

The old code stored route verdicts and temporary routes directly in
rtable. The new code do not store received routes (it immediately
compares them with exported routes and resolves conflicts) and uses
internal bitmap to keep track of which routes were received and which
needs to be reinstalled.

By not putting 'invalid' temporary routes to rtable, we keep rtable
in consistent state, therefore scan no longer needs to be atomic
operation and could be splitted to multiple events.

5 years agoFilter: Fix typecheck for AND/OR.
Ondrej Zajicek (work) [Tue, 7 Jan 2020 00:24:30 +0000 (01:24 +0100)] 
Filter: Fix typecheck for AND/OR.

Do not apply dynamic type check for second argument of AND/OR, as it is
not evaluated immediately like regular argument would be.

Thanks to Mikael for the bugreport.

5 years agoKRT: Remove KRF_SYNC_ERROR flag
Ondrej Zajicek (work) [Thu, 19 Dec 2019 15:34:35 +0000 (16:34 +0100)] 
KRT: Remove KRF_SYNC_ERROR flag

This info is now stored in an internal bmap. Unfortunately, net.flags
is still needed for temporary kernel data.

5 years agoKRT: Fix removal of KRF_INSTALLED
Ondrej Zajicek (work) [Tue, 17 Dec 2019 15:30:29 +0000 (16:30 +0100)] 
KRT: Fix removal of KRF_INSTALLED

Use route id from net->routes to check export_map. Route received from
sysdep KRT code does not have proper id.

5 years agoTest: Improve filter_test
Ondrej Zajicek (work) [Mon, 16 Dec 2019 23:01:53 +0000 (00:01 +0100)] 
Test: Improve filter_test

Initial parsing of test.conf must be done directly in filter_test main,
while reconfiguration is handled as a regular test. Also fix several
minor issues in test code.

5 years agoDoc: Fix documentation of BGP gateway option
Ondrej Zajicek (work) [Mon, 16 Dec 2019 17:05:56 +0000 (18:05 +0100)] 
Doc: Fix documentation of BGP gateway option

Thanks to Nico Schottelius for the bugreport.

5 years agoKRT: Remove KRF_INSTALLED flag
Ondrej Zajicek (work) [Mon, 16 Dec 2019 01:40:28 +0000 (02:40 +0100)] 
KRT: Remove KRF_INSTALLED flag

The same information is stored in export_map of kernel protocol.

5 years agoFilter: fix filter comparison test
Maria Matejka [Thu, 12 Dec 2019 14:42:29 +0000 (15:42 +0100)] 
Filter: fix filter comparison test

5 years agoFilter: Fix function comparison
Ondrej Zajicek (work) [Tue, 10 Dec 2019 17:53:16 +0000 (18:53 +0100)] 
Filter: Fix function comparison

Check the SYM_FLAG_SAME in new symbols. The old code checked that
in old symbols (f2).

5 years agoNest: Fix bitmap cleanup
Ondrej Zajicek (work) [Tue, 10 Dec 2019 17:18:02 +0000 (18:18 +0100)] 
Nest: Fix bitmap cleanup

Channel currently does not have independent pool and uses protocol pool,
which is freed when protocol changes state to down, while channel is
still in flushing. Move some some cleanup code to channel_do_flush()
so it is done before freeing of protocol pool.

5 years agoFilter: Add support for src/dst accessors for Flowspec and SADR
Ondrej Zajicek (work) [Mon, 9 Dec 2019 03:23:01 +0000 (04:23 +0100)] 
Filter: Add support for src/dst accessors for Flowspec and SADR

5 years agoBGP: Add some statistics
Ondrej Zajicek (work) [Tue, 3 Dec 2019 17:05:41 +0000 (18:05 +0100)] 
BGP: Add some statistics

Add some statistic counters to BGP consistent with BGP MIB (RFC 4273),
including persistent 'FSM established transitions'.

5 years agoCI: Add more build tests
Matous Holinka [Tue, 26 Nov 2019 18:33:01 +0000 (19:33 +0100)] 
CI: Add more build tests

Add more Docker images with distributions (CentOS 8, Debian 10,
Fedora 27-31, OpenSUSE 15.0 & 15.1, and Ubuntu 18.04 & 19.04).
Fix some issues with older ones.

5 years agoCI: Cleanup of job templates
Ondrej Zajicek (work) [Sun, 10 Nov 2019 23:24:07 +0000 (00:24 +0100)] 
CI: Cleanup of job templates

Env templates were used for separate IPv4/IPv6 build, that is no longer
needed.

5 years agoCI: Update new netlab location
Ondrej Zajicek (work) [Sun, 10 Nov 2019 21:58:23 +0000 (22:58 +0100)] 
CI: Update new netlab location

5 years agoCI: Minor update
Ondrej Zajicek (work) [Sun, 10 Nov 2019 02:43:30 +0000 (03:43 +0100)] 
CI: Minor update

5 years agoApply relevant changes from branch mh-test-gitlab
Ondrej Zajicek (work) [Sun, 10 Nov 2019 02:02:58 +0000 (03:02 +0100)] 
Apply relevant changes from branch mh-test-gitlab

5 years agoGitlab test
Ondrej Zajicek (work) [Thu, 31 Oct 2019 23:13:59 +0000 (00:13 +0100)] 
Gitlab test

5 years agoNest: Use bitmaps to keep track of exported routes
Ondrej Zajicek (work) [Mon, 9 Sep 2019 00:55:32 +0000 (02:55 +0200)] 
Nest: Use bitmaps to keep track of exported routes

Use a hierarchical bitmap in a routing table to assign ids to routes, and
then use bitmaps (indexed by route id) in channels to keep track whether
routes were exported. This avoids unreliable and inefficient re-evaluation
of filters for old routes in order to determine whether they were exported.

5 years agoLib: Basic and hierarchical bitmaps
Ondrej Zajicek (work) [Mon, 9 Sep 2019 00:43:39 +0000 (02:43 +0200)] 
Lib: Basic and hierarchical bitmaps

Basic bitmap is obvious. Hierarchical bitmap is structure of several
bitmaps, where higher levels are conjunctions of intervals on level
below, allowing for efficient lookup of first unset bit.

5 years agoCLI: Fix continuation lines after final one
Ondrej Zajicek (work) [Tue, 26 Nov 2019 15:43:09 +0000 (16:43 +0100)] 
CLI: Fix continuation lines after final one

Continuation lines may use short form (with space instead of message
number), but this should not be done when previous line is final.

Thanks to Kenth Eriksson for the bugreport and analysis.

5 years agoBGP: Fix processing of IPv6 Flowspec
Ondrej Zajicek (work) [Mon, 18 Nov 2019 16:44:34 +0000 (17:44 +0100)] 
BGP: Fix processing of IPv6 Flowspec

During NLRI parsing of IPv6 Flowspec, dst prefix was not properly
extracted from NLRI, therefore a received flow was stored in a different
position in flowspec routing table, and was not reachable by command
'show route <flow>'.

Add proper prefix part accessors to flowspec code and use them from BGP
NLRI parsing code.

Thanks to Alex D. for the bugreport.