- Sep 10, 2021
-
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Ondřej Zajíček authored
Remove assumption that main channel is the only channel.
-
- Jun 11, 2021
-
-
Ondřej Zajíček authored
-
- Jun 09, 2021
-
-
Ondřej Zajíček authored
-
Ondřej Zajíček authored
Just use hello_expiry for that, keep init_expiry for initial unauthentized neighbors.
-
- Jun 06, 2021
-
-
Ondřej Zajíček authored
One of previous patches broke password list parsing code, fix that.
-
Ondřej Zajíček authored
-
Ondřej Zajíček authored
Some cleanups and bugfixes to the previous patch, including: - Fix rate limiting in index mismatch check - Fix missing BABEL_AUTH_INDEX_LEN in auth_tx_overhead computation - Fix missing auth_tx_overhead recalculation during reconfiguration - Fix pseudoheader construction in babel_auth_sign() (sport vs fport) - Fix typecasts for ptrdiffs in log messages - Make auth log messages similar to corresponding RIP/OSPF ones - Change auth log messages for events that happen during regular operation to debug messages - Switch meaning of babel_auth_check*() functions for consistency with corresponding RIP/OSPF ones - Remove requirement for min/max key length, only those required by given MAC code are enforced
-
This implements support for MAC authentication in the Babel protocol, as specified by RFC 8967. The implementation seeks to follow the RFC as close as possible, with the only deliberate deviation being the addition of support for all the HMAC algorithms already supported by Bird, as well as the Blake2b variant of the Blake algorithm. For description of applicability, assumptions and security properties, see RFC 8967 sections 1.1 and 1.2.
-
In preparation for adding authentication checks, refactor the TLV walking code so it can be reused for a separate pass of the packet for authentication checks.
-
Add min/max key length fields to the MAC algorithm description and validate configured keys before they are used.
-
Add support for specifying a password in hexadecimal format, The result is the same whether a password is specified as a quoted string or a hex-encoded byte string, this just makes it more convenient to input high-entropy byte strings as MAC keys.
-
Import the blake2-kat.h header with test vector output from the blake reference implementation, and add tests to mac_test.c to compare the output of the Bird MAC algorithm implementations with that reference output. Since the reference implementation only has test vectors for the full output size, there are no tests for the smaller-sized output variants.
-
The Babel MAC authentication RFC recommends implementing Blake2s as one of the supported algorithms. In order to achieve do this, add the blake2b and blake2s hash functions for MAC authentication. The hashing function implementations are the reference implementations from blake2.net. The Blake2 algorithms allow specifying an arbitrary output size, and the Babel MAC spec says to implement Blake2s with 128-bit output. To satisfy this, we add two different variants of each of the algorithms, one using the default size (256 bits for Blake2s, 512 bits for Blake2b), and one using half the default output size. Update to BIRD coding style done by committer.
-
Ondřej Zajíček authored
Simplify the code and fix an issue with getentropy() return value.
-
Add a wrapper function in sysdep to get random bytes, and required checks in configure.ac to select how to do it. The configure script tries, in order, getrandom(), getentropy() and reading from /dev/urandom.
-
- Jun 01, 2021
-
-
Ondřej Zajíček authored
Routes from downed protocols stay in rtable (until next rtable prune cycle ends) and may be even exported to another protocol. In BGP case, source BGP protocol is examined, although dynamic parts (including neighbor entries) are already freed. That may lead to crash under some race conditions. Ensure that freed neighbor entry is not accessed to avoid this issue.
-
- May 30, 2021
-
-
Maria Matejka authored
Babel: Seqno requests are properly decoupled from neighbors when the underlying interface disappears When an interface disappears, all the neighbors are freed as well. Seqno requests were anyway not decoupled from them, leading to strange segfaults. This fix adds a proper seqno request list inside neighbors to make sure that no pointer to neighbor is kept after free.
-
- May 26, 2021
-
-
Ondřej Zajíček authored
Some area handling code got confused by IPv4 setup in OSPFv3 mode.
-
- May 20, 2021
-
-
Ondřej Zajíček authored
-
.gitlab-ci.yml: + pkg targets for some distros added + artifacts added - some distros were commented out (due to errors). misc/docker/*: + Dockerfiles updated with the necessary packages.
-
- May 19, 2021
-
-
Ondřej Zajíček authored
-
Ondřej Zajíček authored
-
Ondřej Zajíček authored
-
Ondřej Zajíček authored
-
Ondřej Zajíček authored
Also temporarily disable cf-ospf-auth, as there is some problem with it.
-
Ondřej Zajíček authored
Use git-archive to avoid unrelated and temporary files and fix some minor issues (e.g. dependency on bash as system shell).
-
init-system-helpers (>= 1.56~) can't be satisfied on: * Ubuntu 18.04 (1.51) * Ubuntu 16.04 (1.29) * Debian 9 (1.48) Remove the specific version requirement in order to enable build on older platforms.
-
SUSE is more strict about .spec. * use SPDX license id * add missing %ghost file directive
-
Adressing following FTBFS on all older debian/ubuntu distros: Can't locate LinuxDocTools/Data/Latin1ToSgml.pm in @INC (you may need to install the LinuxDocTools::Data::Latin1ToSgml module)
-
Files in a single new distro/ dir allow apkg to build BIRD packages for various distros directly from upstream sources as well as from upstream archives. Please see distro/README.md for more detail as well as apkg docs: https://apkg.rtfd.io I've used these files to build bird-2.0.8 on all currently supported releases of following distros: * Debian * Ubuntu * Fedora * CentOS * openSUSE Please note that latest apkg with accumulated fixes for bird is needed: packaging/apkg!35
-
- May 18, 2021
-
-
Ondřej Zajíček authored
-
Ondřej Zajíček authored
-
Ondřej Zajíček authored
For numeric operators, comma is used for disjunction in expressions like "10, 20, 30..40". But for bitmask operators, comma is used for conjunction in a way that does not really make much sense. Use always explicit logical operators (&& and ||) to connect bitmask operators. Thanks to Matt Corallo for the bugreport.
-
- May 17, 2021
-
-
Add support to set or read outgoing MPLS labels using filters. Currently this supports the addition of one label per route for the first next hop. Minor changes by committer.
-
- May 14, 2021
-
-
Ondřej Zajíček authored
RFC 8955 is pretty clear that 000 is false and 111 is true.
-
Ondřej Zajíček authored
Implement function flow_explicate_part() to convert flowspec numeric expressions to a simple list of (disjoint, sorted) intervals. That could be used in filters to build f_tree-based int-sets from them.
-
- May 10, 2021
-
-
Ondřej Zajíček authored
The babel protocol code checks whether iface supports multicast, and whether it has a link-local address assigned. However, it doesn not give any feedback if any of those checks fail, it just silently ignores the interface. Fix this by explicitly logging when multicast check fails. Based on patch from Toke Høiland-Jørgensen, thanks!
-