]>
git.ipfire.org Git - thirdparty/bird.git/log
Igor Putovny [Fri, 10 May 2024 13:58:02 +0000 (15:58 +0200)]
Remove unused code
Igor Putovny [Fri, 10 May 2024 10:33:56 +0000 (12:33 +0200)]
Replace goto with else
Igor Putovny [Thu, 9 May 2024 16:00:44 +0000 (18:00 +0200)]
Replace for loops with memcpy
Igor Putovny [Thu, 9 May 2024 15:57:28 +0000 (17:57 +0200)]
Replace for loops with memcpy
Igor Putovny [Thu, 9 May 2024 15:35:20 +0000 (17:35 +0200)]
Reorder parameters to stay consistent with the codebase
Igor Putovny [Thu, 9 May 2024 15:29:03 +0000 (17:29 +0200)]
Add logs and declarations, remove unused code
Igor Putovny [Tue, 7 May 2024 16:09:29 +0000 (18:09 +0200)]
Make small changes to increase readability
Igor Putovny [Tue, 7 May 2024 14:36:27 +0000 (16:36 +0200)]
Rename
Igor Putovny [Fri, 12 Apr 2024 10:59:37 +0000 (12:59 +0200)]
Rename
Igor Putovny [Thu, 11 Apr 2024 15:34:42 +0000 (17:34 +0200)]
Construct trie only after protocol feed ends
Igor Putovny [Thu, 11 Apr 2024 14:53:40 +0000 (16:53 +0200)]
Don't schedule aggregation as event but run it at the protocol feed end
Igor Putovny [Thu, 11 Apr 2024 14:33:08 +0000 (16:33 +0200)]
Use refactored first pass function
Igor Putovny [Thu, 11 Apr 2024 14:15:16 +0000 (16:15 +0200)]
Remove debugging logs
Igor Putovny [Tue, 9 Apr 2024 09:35:49 +0000 (11:35 +0200)]
Add more assertions
Igor Putovny [Tue, 9 Apr 2024 08:55:36 +0000 (10:55 +0200)]
Add modified implementation of the first pass
Igor Putovny [Wed, 27 Mar 2024 11:23:19 +0000 (12:23 +0100)]
Remove debugging logs
Igor Putovny [Wed, 27 Mar 2024 11:03:47 +0000 (12:03 +0100)]
Add variable to track node depth in the trie
Igor Putovny [Tue, 12 Mar 2024 15:33:23 +0000 (16:33 +0100)]
Add small check to the first pass of ORTC algorithm
Igor Putovny [Tue, 12 Mar 2024 11:19:17 +0000 (12:19 +0100)]
Remove code duplication
Igor Putovny [Thu, 7 Mar 2024 14:39:54 +0000 (15:39 +0100)]
Check correct address types during aggregation configuration
Igor Putovny [Thu, 7 Mar 2024 14:35:44 +0000 (15:35 +0100)]
Collect and print prefixes according to address type
Igor Putovny [Thu, 7 Mar 2024 14:32:58 +0000 (15:32 +0100)]
Create default net based on adress type
Igor Putovny [Thu, 7 Mar 2024 14:14:26 +0000 (15:14 +0100)]
Create separate functions for inserting IP4 and IPv6 prefixes into trie
Igor Putovny [Tue, 5 Mar 2024 11:31:20 +0000 (12:31 +0100)]
Use %N for printing net addresses
Igor Putovny [Tue, 5 Mar 2024 09:47:30 +0000 (10:47 +0100)]
Use idiomatic functions for manipulating net_addr, remove unnecessary use of alloca
Igor Putovny [Thu, 29 Feb 2024 14:08:50 +0000 (15:08 +0100)]
Bugfix
Program crashed when disabling aggregation protocol or shutting the daemon down.
Shutdown procedure attempted to remove the first route (which is the last that
was inserted) by different key than one by which it was inserted into the table.
They key is computed from net and src of each route. It turned out that src of
the last route was inadvertently changed.
Igor Putovny [Thu, 29 Feb 2024 13:46:07 +0000 (14:46 +0100)]
Clear bit after setting it when collecting prefixes from trie
Igor Putovny [Thu, 29 Feb 2024 13:40:21 +0000 (14:40 +0100)]
Add debugging logs
Igor Putovny [Thu, 29 Feb 2024 13:37:09 +0000 (14:37 +0100)]
Rename variables of type protocol in order to be consistent with the rest of the codebase
Igor Putovny [Thu, 22 Feb 2024 14:07:40 +0000 (15:07 +0100)]
Create and assign net to default route
Igor Putovny [Thu, 22 Feb 2024 13:56:57 +0000 (14:56 +0100)]
Change a few logs
Igor Putovny [Mon, 29 Jan 2024 12:13:06 +0000 (13:13 +0100)]
Refactor functions for comparing buckets and computing union and intersection of buckets
Igor Putovny [Fri, 5 Jan 2024 12:48:02 +0000 (13:48 +0100)]
Run correct aggregation (by nets or by attributes) according to configuration
Igor Putovny [Fri, 5 Jan 2024 12:43:53 +0000 (13:43 +0100)]
Collect prefixes in trie after aggregation and export new routes
Igor Putovny [Fri, 5 Jan 2024 12:37:35 +0000 (13:37 +0100)]
Remove const from aggregator_bucket pointers in trie nodes
Igor Putovny [Wed, 20 Dec 2023 11:22:53 +0000 (12:22 +0100)]
Refactor printing prefixes in trie
Igor Putovny [Wed, 20 Dec 2023 10:53:43 +0000 (11:53 +0100)]
Remove configuration rule enforcing aggregation on NET
Igor Putovny [Wed, 13 Dec 2023 10:16:12 +0000 (11:16 +0100)]
Bugfix
Due to wrong cast of void pointer, pointers to potential buckets
were compared and eventually sorted in wrong order, thus assigning
wrong buckets to trie nodes.
This caused some trie nodes to stay in trie even though they should
have been removed. Consequently, trie contained superfluos prefixes
after the algorithm finished.
Since pointers were never dereferenced, only compared by their numeric
values in the comparator function, program did not crash (even though
pointers could be NULL because of the incorrect cast to double pointer
and single dereference).
Igor Putovny [Wed, 6 Dec 2023 09:44:15 +0000 (10:44 +0100)]
Add small changes to test script
Igor Putovny [Wed, 6 Dec 2023 09:37:36 +0000 (10:37 +0100)]
Remove unused code
Igor Putovny [Tue, 5 Dec 2023 14:13:06 +0000 (15:13 +0100)]
Add script to prepare test case run
Igor Putovny [Tue, 5 Dec 2023 13:32:06 +0000 (14:32 +0100)]
Create default empty route for aggregation
Igor Putovny [Tue, 5 Dec 2023 13:30:13 +0000 (14:30 +0100)]
Add more assertions
Igor Putovny [Tue, 5 Dec 2023 13:25:08 +0000 (14:25 +0100)]
Make pointer to aggregator bucket const
Igor Putovny [Wed, 22 Nov 2023 12:09:48 +0000 (13:09 +0100)]
Do not discard bucket from internal nodes
Igor Putovny [Wed, 22 Nov 2023 12:01:59 +0000 (13:01 +0100)]
Do not assign bucket of any prefix to the root node
Igor Putovny [Tue, 21 Nov 2023 11:58:24 +0000 (12:58 +0100)]
Create event to run ORTC algorithm exactly once
Igor Putovny [Tue, 21 Nov 2023 11:41:14 +0000 (12:41 +0100)]
Run ORTC algorithm
Igor Putovny [Thu, 16 Nov 2023 16:14:13 +0000 (17:14 +0100)]
Add assertions and general code improvements
Igor Putovny [Thu, 16 Nov 2023 15:56:13 +0000 (16:56 +0100)]
Remove unused code
Maria Matejka [Tue, 24 Oct 2023 10:40:52 +0000 (12:40 +0200)]
Autoconf: minor reduction of redundancy
Joined BIRD_CHECK_GCC_OPTION and BIRD_ADD_GCC_OPTION.
Igor Putovny [Tue, 24 Oct 2023 11:46:28 +0000 (13:46 +0200)]
Allow sanitization compiler option
Igor Putovny [Fri, 20 Oct 2023 11:13:47 +0000 (13:13 +0200)]
Rename constant
Igor Putovny [Fri, 20 Oct 2023 11:11:49 +0000 (13:11 +0200)]
Fix how bucket for new leaf nodes is chosen
Igor Putovny [Fri, 20 Oct 2023 10:20:12 +0000 (12:20 +0200)]
Use net_addr_ip4 instead of ip4_addr for printing prefixes
Igor Putovny [Fri, 20 Oct 2023 09:59:23 +0000 (11:59 +0200)]
Remove unused code
Igor Putovny [Wed, 18 Oct 2023 10:12:27 +0000 (12:12 +0200)]
Add comments
Igor Putovny [Wed, 18 Oct 2023 10:06:27 +0000 (12:06 +0200)]
Change order of parameters in a few functions
Igor Putovny [Fri, 13 Oct 2023 13:26:03 +0000 (15:26 +0200)]
Simplify delete_trie() function
Igor Putovny [Fri, 6 Oct 2023 12:38:07 +0000 (14:38 +0200)]
Assign bucket of ancestor node to leaf node
Igor Putovny [Fri, 6 Oct 2023 12:19:04 +0000 (14:19 +0200)]
Fix incorrect implementation of the third pass
Igor Putovny [Fri, 6 Oct 2023 11:50:05 +0000 (13:50 +0200)]
Assign route bucket only to the last inserted node
Igor Putovny [Fri, 6 Oct 2023 11:40:11 +0000 (13:40 +0200)]
Fix argument order in several functions
Igor Putovny [Fri, 6 Oct 2023 10:52:08 +0000 (12:52 +0200)]
Add a few comments, print prefixes after aggregation
Igor Putovny [Thu, 21 Sep 2023 11:33:17 +0000 (13:33 +0200)]
Extend remove_node() with deleting root node
Igor Putovny [Thu, 21 Sep 2023 10:37:37 +0000 (12:37 +0200)]
Fix aggregator_bucket_unionize()
The last two while loops were incorrectly placed inside the first while loop
Igor Putovny [Wed, 20 Sep 2023 11:28:42 +0000 (13:28 +0200)]
Fix const warning, add few comments
Igor Putovny [Wed, 20 Sep 2023 11:05:49 +0000 (13:05 +0200)]
Delete trie during aggregator shutdown
Igor Putovny [Tue, 19 Sep 2023 15:00:16 +0000 (17:00 +0200)]
Refactor and fix aggregator_bucket_unionize()
Igor Putovny [Tue, 19 Sep 2023 10:06:52 +0000 (12:06 +0200)]
Fix aggregator_bucket_intersect(), add comments and fix naming
Igor Putovny [Mon, 18 Sep 2023 12:47:04 +0000 (14:47 +0200)]
Remove unused code
Igor Putovny [Mon, 18 Sep 2023 12:18:25 +0000 (14:18 +0200)]
Add new implementation of third_pass() and remove old implementation
Igor Putovny [Fri, 15 Sep 2023 09:04:37 +0000 (11:04 +0200)]
Move trie initialization to aggregator_start()
Igor Putovny [Thu, 14 Sep 2023 07:33:14 +0000 (09:33 +0200)]
Fix previous version, aggregator is now stable but untested
Igor Putovny [Mon, 11 Sep 2023 10:38:19 +0000 (12:38 +0200)]
Implement basics of prefix aggregation functionality
Maria Matejka [Wed, 12 Jul 2023 13:11:00 +0000 (15:11 +0200)]
Aggregator: Fixed hashing of adata
Maria Matejka [Fri, 23 Jun 2023 11:18:39 +0000 (13:18 +0200)]
Aggregator moved to a separate protocol
Also updated data structures and reconfigure.
Known bug: the hash doesn't take adata into account. Needs fixing!
Maria Matejka [Fri, 23 Jun 2023 09:28:19 +0000 (11:28 +0200)]
Aggregator: polishing of filter API
Igor Putovny [Wed, 21 Jun 2023 11:15:07 +0000 (13:15 +0200)]
Basic route aggregation
User can specify list of route attributes in the configuration file
and run route aggregation on the export side of the pipe protocol.
Routes are sorted and for every group of equivalent routes
new route is created and exported to the routing table.
It is also possible to specify filter which will run for every
route before aggregation.
Furthermore, it will be possible to set attributes of new routes
according to attributes of the aggregated routes.
This is a work in progress.
Maria Matejka [Fri, 23 Jun 2023 07:05:48 +0000 (09:05 +0200)]
Simple testing of reconfiguration to a slightly different one
Maria Matejka [Mon, 19 Jun 2023 15:24:30 +0000 (17:24 +0200)]
Filter: Print instructions take only one value (simplification)
Maria Matejka [Mon, 19 Jun 2023 13:49:51 +0000 (15:49 +0200)]
Filter: Shortened method declarations
Maria Matejka [Sun, 18 Jun 2023 20:50:45 +0000 (22:50 +0200)]
Filter: The for loop uses the method system for type dispatch
Maria Matejka [Sat, 17 Jun 2023 11:05:23 +0000 (13:05 +0200)]
Removing unused terminals from filter config
Maria Matejka [Fri, 16 Jun 2023 15:35:37 +0000 (17:35 +0200)]
Filter: Methods rework
Methods can now be called as x.m(y), as long as x can have its type
inferred in config time. If used as a command, it modifies the object,
if used as a value, it keeps the original object intact.
Also functions add(x,y), delete(x,y), filter(x,y) and prepend(x,y) now
spit a warning and are considered deprecated.
It's also possible to call a method on a constant, see filter/test.conf
for examples like bgp_path = +empty+.prepend(1).
Inside instruction definitions (filter/f-inst.c), a METHOD_CONSTRUCTOR()
call is added, which registers the instruction as a method for the type
of its first argument. Each type has its own method symbol table and
filter parser switches between them based on the inferred type of the
object calling the method.
Also FI_CLIST_(ADD|DELETE|FILTER) instructions have been split to allow
for this method dispatch. With type inference, it's now possible.
Maria Matejka [Sat, 17 Jun 2023 08:16:28 +0000 (10:16 +0200)]
Uninitialized filter variables of path/[el]?clist types are now explicitly empty
Maria Matejka [Fri, 16 Jun 2023 20:11:03 +0000 (22:11 +0200)]
Conf: config warnings show the file position
Maria Matejka [Thu, 15 Jun 2023 11:25:40 +0000 (13:25 +0200)]
Filter: functions can and should have typed return values
Maria Matejka [Tue, 13 Jun 2023 10:33:53 +0000 (12:33 +0200)]
GitLab: Disabling build for CentOS 7 and Ubuntu 14.04 as our build machines don't like C11
Maria Matejka [Tue, 13 Jun 2023 07:39:29 +0000 (09:39 +0200)]
Filter/Conf: Method names have their own keyword hash
To allow for future dynamic method definition, parsing method names is
done via a dedicated keyword hash/scope.
Maria Matejka [Tue, 13 Jun 2023 09:09:41 +0000 (11:09 +0200)]
Conf: Allowing conf scope to be explicitly read only
Maria Matejka [Tue, 13 Jun 2023 08:51:03 +0000 (10:51 +0200)]
Conf: Symbol manipulation gets its context explicitly
Maria Matejka [Mon, 12 Jun 2023 09:37:50 +0000 (11:37 +0200)]
Filter: any lvalue can get its methods called
Maria Matejka [Mon, 12 Jun 2023 09:20:49 +0000 (11:20 +0200)]
Filter: split out dot-notation methods to separate targets
This is just a preparationary refactoring to allow type-based method
tables.
Maria Matejka [Fri, 9 Jun 2023 10:49:19 +0000 (12:49 +0200)]
Conf: Keywords have their default symbols
This avoids unnecessary collapsed soft scopes caused by keyword symbol multiallocation.
Maria Matejka [Mon, 2 May 2022 18:29:03 +0000 (20:29 +0200)]
Conf: Symbol hashes for all scopes
This is a backport cherry-pick of commits
165156beeb2926472bbceca3c103aacc3f81a8cc
cce974e8ea992d0e6d2f649eca7880b436d91d71
from the v3.0 branch as we need symbol hashes directly inside their
scopes for more general usage than before.
The redefinable keywords must be specified in any .Y file as follows:
toksym: THE_KEYWORD ;
Maria Matejka [Fri, 9 Jun 2023 09:02:05 +0000 (11:02 +0200)]
Dropping empty-type const f_vals, they were copied anyway
Maria Matejka [Fri, 9 Jun 2023 11:49:17 +0000 (13:49 +0200)]
Conf: Adding dummy thread-number setting for easier sharing of configuration between v2 and v3
Ondrej Zajicek [Fri, 2 Jun 2023 00:34:05 +0000 (02:34 +0200)]
Babel: Minor changes to RTT formatting
Use existing %t printf code and move 'ms' in CLI output to table header.
Toke Høiland-Jørgensen [Thu, 1 Jun 2023 22:31:53 +0000 (00:31 +0200)]
Babel: Add support for the RTT extension
This adds support to the Babel protocol for the RTT extension specified
in draft-ietf-babel-rtt-extension. While this extension is not yet at the
RFC stage, it is one of the more useful extensions to Babel[0], so it
seems worth having in Bird as well.
The extension adds timestamps to Hello and IHU TLVs and uses these to
compute an RTT to each neighbour. An extra per-neighbour cost is then
computed from the RTT based on a minimum and maximum interval and cost
value specified in the configuration. The primary use case for this is
improving routing in a geographically distributed tunnel-based overlay
network.
The implementation follows the babeld implementation when picking
constants and default configuration values. It also uses the same RTT
smoothing algorithm as babeld, and follows it in adding a new 'tunnel'
interface type which enables RTT by default.
[0] https://alioth-lists.debian.net/pipermail/babel-users/2022-April/003932.html