0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-09-16 18:35:19 +00:00
Commit Graph

4058 Commits

Author SHA1 Message Date
Jakub Ružička
31ef5645e9 Distro: Add apkg packaging test
The test was written by Maria Matejka, thanks!

Run this using

    apkg test
2023-08-22 14:59:22 +02:00
Jakub Ružička
215f7161c4 Distro: Add apkg compat level
This will allow compatibility on future apkg config updates.
2023-08-22 14:59:22 +02:00
Jakub Ružička
5fb871def4 Debian: Fix for arm64 cross build
Mirrors debian patch.
2023-08-22 14:59:22 +02:00
Jakub Ružička
5fe00df693 Debian: Use {{ now }} in changelog 2023-08-22 14:59:22 +02:00
Jakub Ružička
2b4ab79de1 Debian: Bump compat level to 11
Current is 13, remaining blockers:

- Debian 9 @ 11 (EOL)
- Ubuntu 18.04 @ 12 (EOL 2023-04-02)
2023-08-22 14:59:22 +02:00
Jakub Ružička
b983b59165 Debian: Sync packaging with Debian 2023-08-22 14:59:22 +02:00
Jakub Ružička
b0c3c286a5 Debian: Add birdcl manpage
Mirrors Debian package change.
2023-08-22 14:59:22 +02:00
Jakub Ružička
ad514e6033 RPM: Add missing BuildRequires: autoconf 2023-08-22 14:59:22 +02:00
Alexander Zubkov
fea04d7c34 Use more proper pointers to constant bytestrings 2023-08-22 14:44:18 +02:00
Ondrej Zajicek
9bf2048476 BGP: Update RFC reference
RFC 5549 was obsoleted by RFC 8950.
2023-08-22 14:20:59 +02:00
Alexander Zubkov
ecbae010bf Fixed a typo in documentation
The problem was the "/" symbol in the prefix mask that finished the formatting definition prematurely.
2023-06-30 13:17:05 +02:00
Alexander Zubkov
ccfa48a24a RAdv: Use new syntax for custom options
And use WALK_LIST macro
2023-06-26 15:35:22 +02:00
Alexander Zubkov
9c81250c04 RAdv: Add custom options
Currently one can use only a predefined set of advertised options in RAdv
protocol, which are supported by BIRD configuration. It would be convenient
to be able to specify other possible options at least manually as a blob
so one should not wait until it is supported in the code, released, etc.

This idea is inspired by presentation by Ondřej Caletka at CSNOG, in which
he noticed the lack of either PREF64 option or possibility to add custom
options in various software.

The patch makes it possible to define such options with the syntax:

  other type <num> <bytestring>
2023-06-23 17:26:03 +02:00
Alexander Zubkov
65d6a52594 Add hex:XYZ syntax for short hex strings
Hexadecimal bytestring literals have minimal length to not collide
with IP addresses or regular (hexadecimal) number literals.

Allow to use shorter literals with explicit hex: prefix.
2023-06-23 16:47:37 +02:00
Maria Matejka
5f2ecb2298 Merge tag 'v2.13.1' 2023-06-22 17:25:18 +02:00
Maria Matejka
52bae235b7 NEWS and version update 2023-06-22 16:14:12 +02:00
Maria Matejka
1499a335f6 Filter: Fixed segfault when a case option had an empty block
Thanks to Kobayashi_Bairuo <noc@tohunet.com> for reporting.
2023-06-22 16:12:17 +02:00
Ondrej Zajicek
ac7341a181 BGP: Fix role check when no capability option is present
When an OPEN message without capability options was parsed, the remote
role field was not initialized with the proper (non-zero) default value,
so it was interpreted as if 'provider' was announced.

Thanks to Mikhail Grishin for the bugreport.
2023-06-22 16:12:17 +02:00
Luiz Amaral
f8bcb037b5 Netlink: Allow RTA_VIA even without MPLS support
It is necessary for IPv4 over IPv6 nexthop support on FreeBSD,
and RTA_VIA is not really related to MPLS.

It breaks build for some very old systems like Debian 8 and CentOS 7,
but we generally do not support older kernels than 4.14 LTS anyway.
2023-06-15 16:07:36 +02:00
Ondrej Zajicek
90f4176045 CI: Remove obsolete CI targets
Remove build-debian-8, build-ubuntu-14_04, build-centos-7, pkg-debian-9,
and pkg-centos-7 targets.

Debian 8, Ubuntu 14.04, and CentOS 7 have unsupported kernels, Debian 9
has okay kernel, but is EOL.
2023-06-15 16:07:36 +02:00
Ondrej Zajicek
69372dc9aa Babel: Minor changes to RTT formatting
Use existing %t printf code and move 'ms' in CLI output to table header.
2023-06-02 02:34:05 +02:00
Toke Høiland-Jørgensen
f08abcb8dd 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
2023-06-02 00:31:53 +02:00
Toke Høiland-Jørgensen
d8cf3cad51 IO: Add current_time_now() function for immediate timestamp
Add a current_time_now() function which gets an immediate monotonic
timestamp instead of using the cached value from the event loop. This is
useful for callers that need precise times, such as the Babel RTT
measurement code.

Minor changes by committer.
2023-06-02 00:26:41 +02:00
Ondrej Zajicek
f8ba82804f BGP: Fix role check when no capability option is present
When an OPEN message without capability options was parsed, the remote
role field was not initialized with the proper (non-zero) default value,
so it was interpreted as if 'provider' was announced.

Thanks to Mikhail Grishin for the bugreport.
2023-05-19 01:02:57 +02:00
Ondrej Zajicek
b0e97617d9 Lib: Improve IP/net hashing
Backport some changes from branch oz-parametric-hashes. Replace naive
hash function for IPv6 addresses, fix hashing of VPNx (where upper half
of RD was ignored), fix hashing of MPLS labels (where identity was used).
2023-05-18 16:02:02 +02:00
Ondrej Zajicek
3cf91fb9eb Nest: Add tests and benchmark for FIB
Basic fib_get() / fib_find() test for random prefixes, FIB_WALK() test,
and benchmark for fib_find(). Also generalize and reuse some code from
trie tests.
2023-05-16 13:25:48 +02:00
Ondrej Zajicek
a8a64ca0fe Conf: Improve handling of keywords
For whatever reason, parser allocated a symbol for every parsed keyword
in each scope. That wasted time and memory. The effect is worsened with
recent changes allowing local scopes, so keywords often promote soft
scopes (with no symbols) to real scopes.

Do not allocate a symbol for a keyword. Take care of keywords that could
be promoted to symbols (kw_sym) and do it explicitly.
2023-04-27 18:41:01 +02:00
Ondrej Zajicek
9b471e72d7 Conf: Fix symbol lookup
The symbol table used just symbol name as a key, and used a trick with
active flag to find symbols in active scopes with one hash table lookup.

The disadvantage is that it can degenerate to O(n) for negative queries
in situations where are many symbols with the same name in different
scopes.

Thanks to Yanko Kaneti for the bugreport.
2023-04-27 17:09:00 +02:00
Ondrej Zajicek
ca0f239c72 NEWS and version update 2023-04-21 20:26:47 +02:00
Ondrej Zajicek
1a1e13cc2f Filter: Disable some trie formatting tests
Trie formatting works slightly different with 4-way tries than with
16-way ones, so these tests generated false error. Block them for now.
2023-04-21 19:31:16 +02:00
Ondrej Zajicek
52450bc96d Merge branch 'bmp' 2023-04-21 04:47:55 +02:00
Ondrej Zajicek
f3b599afe5 BMP: Add some basic documentation 2023-04-21 04:42:13 +02:00
Luiz Amaral
d61505b039 BSD: IPv4 over IPv6 nexthop support on FreeBSD
The support for IPv4 routes with IPv6 nexthops was implemented in FreeBSD
13.1, this patch allows to import and export such routes from/to kernel.

Minor change from committer.
2023-04-21 02:03:31 +02:00
Maria Matejka
335409248e Linpool: Fix lp_restore()
When lp_save() is called on an empty linpool, then some allocation is
done, then lp_restore() is called, the linpool is restored but the used
chunks are inaccessible. Fix it.
2023-04-20 19:33:00 +02:00
Ondrej Zajicek
976dec048a BMP: Silence some log messages
Hooks called from BGP to BMP should not log warning when BMP is not
connected, that is not an error (and we do not want to flood logs with
a ton of messages).

Blocked sk_send() should not log warning, that is expected situation.
Error during sk_send() is handled in error hook anyway.
2023-04-20 17:14:45 +02:00
Ondrej Zajicek
2c7d2141ac BMP: Fix connection management
Replace broken TCP connection management with a simple state machine.
Handle failed attempts properly with a timeout, detect and handle TCP
connection close and try to reconnect after that. Remove useless
'station_connected' flag.

Keep open messages saved even after the BMP session establishment,
so they can be used after BMP session flaps.

Use proper log messages for session events.
2023-04-20 16:28:07 +02:00
Ondrej Zajicek
010df43519 BMP: Fix reconfiguration
It is not supported, but at least it must update internal config
pointer to not keep old one.
2023-04-18 18:57:54 +02:00
Ondrej Zajicek
02164814b4 BMP: Allow build without BMP and disable BMP build by default
It has still several important issues to be enabled by default.
2023-04-18 17:21:13 +02:00
Ondrej Zajicek
fbeef4b74d BMP: Move initialization to bmp_start()
That fixes BMP socket allocation from an invalid pool.
2023-04-18 15:13:24 +02:00
Ondrej Zajicek
04e3a76c94 BMP: Fix missing template
It is mandatory for protocol.
2023-04-18 15:09:21 +02:00
Ondrej Zajicek (work)
3925e65938 BMP: Add some missing bmp_buffer_free() calls
They were inadvertently removed during recent code refactoring.

Thanks to Dawid Macek for the bugreport and patch.
2023-04-16 20:06:02 +02:00
Ondrej Zajicek (work)
4d56b70dc5 BMP: Remove duplicate functions for update encoding
Use existing BGP functions also for BMP update encoding.
2023-04-16 20:06:00 +02:00
Ondrej Zajicek (work)
568fd66613 BMP: Integrate bmp_conn to bmp_proto
There is only one socket per BMP instance, no need to have separate
struct (like in BGP).
2023-04-16 20:05:17 +02:00
Ondrej Zajicek (work)
4adebdf198 BMP: Minor cleanups
Remove redundant 'disable' option, simplify IP address serialization,
and remove useless macros.
2023-04-16 20:05:17 +02:00
Ondrej Zajicek (work)
a995ed4386 BMP: Do not use global instance ptr internally
Use local variable to refence relevant instance instead of using global
instance ptr. Also, use 'p' variable instead of 'bmp' so we can use
common macros like TRACE().
2023-04-16 20:05:17 +02:00
Ondrej Zajicek (work)
ad16e35177 BMP: Remove superfluous error handling
Most error handling code was was for cases that cannot happen,
or they would be code bugs (and should use ASSERT()). Keep error
handling for just for I/O errors, like in rest of BIRD.
2023-04-16 20:05:17 +02:00
Pawel Maslanka
a848dad40a BMP protocol support
Initial implementation of a basic subset of the BMP (BGP Monitoring
Protocol, RFC 7854) from Akamai team. Submitted for further review
and improvement.
2023-04-16 20:05:15 +02:00
Trisha Biswas
9e44ace392 BGP: Add 'allow bgp_med' option for EBGP sessions
This option allows to treat bgp_med as regular transitive attribute
on EBGP sessions (without hacks in filters).

Minor changes from committer.
2023-04-14 04:28:37 +02:00
Jakub Ružička
dc139fb643 Increase tests timeout
Tests may take longer than 5 s to complete on slow/virtual machines.
2023-04-13 20:06:55 +02:00
Ondrej Zajicek
f881b98d9b BGP: Fix bgp_med handling
Missing translation from BGP attribute ID to eattr ID in bgp_unset_attr()
broke automatic removal of bgp_med during export to EBGP peers.

Thanks to Edward Sun for the bugreport.
2023-04-04 05:20:49 +02:00