]> git.ipfire.org Git - thirdparty/bird.git/log
thirdparty/bird.git
4 years agoCI: Try different locale for Centos 7 bird-apkg
Ondrej Zajicek (work) [Thu, 20 May 2021 13:02:48 +0000 (15:02 +0200)] 
CI: Try different locale for Centos 7

4 years agoCI: Package build for more platforms
Matous Holinka [Wed, 19 May 2021 17:10:09 +0000 (19:10 +0200)] 
CI: Package build for more platforms

.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.

4 years agoCI: Try utf-8 locale to workaround apkg issue
Ondrej Zajicek (work) [Sun, 25 Apr 2021 17:52:19 +0000 (19:52 +0200)] 
CI: Try utf-8 locale to workaround apkg issue

4 years agoCI: Build documentation where tools are available
Ondrej Zajicek (work) [Sun, 25 Apr 2021 09:24:46 +0000 (11:24 +0200)] 
CI: Build documentation where tools are available

4 years agoCI: Update docker images for building of documentation
Ondrej Zajicek (work) [Sun, 25 Apr 2021 01:37:54 +0000 (03:37 +0200)] 
CI: Update docker images for building of documentation

4 years agoPkg: Enable docs subpackage for Debian
Ondrej Zajicek (work) [Sun, 25 Apr 2021 01:07:25 +0000 (03:07 +0200)] 
Pkg: Enable docs subpackage for Debian

4 years agoCI: Test of apkg build
Ondrej Zajicek (work) [Thu, 22 Apr 2021 22:20:36 +0000 (00:20 +0200)] 
CI: Test of apkg build

Also temporarily disable cf-ospf-auth, as there is some problem with it.

4 years agoTools: Improve make-dev-archive
Ondrej Zajicek (work) [Thu, 22 Apr 2021 17:23:18 +0000 (19:23 +0200)] 
Tools: Improve make-dev-archive

Use git-archive to avoid unrelated and temporary files and fix some
minor issues (e.g. dependency on bash as system shell).

4 years agoubuntu: use any init-system-helpers
Jakub Ružička [Tue, 13 Apr 2021 18:29:11 +0000 (20:29 +0200)] 
ubuntu: use any init-system-helpers

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.

4 years agosuse: fix bird.spec to work on SUSE
Jakub Ružička [Fri, 9 Apr 2021 16:36:25 +0000 (18:36 +0200)] 
suse: fix bird.spec to work on SUSE

SUSE is more strict about .spec.

* use SPDX license id
* add missing %ghost file directive

4 years agodocs: disable docs subpackage to fix FTBFS
Jakub Ružička [Fri, 9 Apr 2021 14:35:10 +0000 (16:35 +0200)] 
docs: disable docs subpackage to fix FTBFS

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)

4 years agoadd apkg-powered upstream packaging for deb, rpm
Jakub Ružička [Tue, 6 Apr 2021 16:13:16 +0000 (18:13 +0200)] 
add apkg-powered upstream packaging for deb, rpm

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:
https://gitlab.nic.cz/packaging/apkg/-/merge_requests/35

4 years agoFlowspec: Documentation update
Ondrej Zajicek (work) [Tue, 18 May 2021 18:41:01 +0000 (20:41 +0200)] 
Flowspec: Documentation update

4 years agoFlowspec: Label field should use numeric operator and not bitmask operator
Ondrej Zajicek (work) [Tue, 18 May 2021 18:18:06 +0000 (20:18 +0200)] 
Flowspec: Label field should use numeric operator and not bitmask operator

4 years agoFlowspec: Do not use comma for bitmask operators
Ondrej Zajicek (work) [Tue, 18 May 2021 17:54:18 +0000 (19:54 +0200)] 
Flowspec: Do not use comma for bitmask operators

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.

4 years agoFilter: Add MPLS label route attribute
Trisha Biswas [Mon, 17 May 2021 15:50:04 +0000 (17:50 +0200)] 
Filter: Add MPLS label route attribute

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.

4 years agoFlowspec: Fix values for true/false operators
Ondrej Zajicek (work) [Fri, 14 May 2021 16:44:52 +0000 (18:44 +0200)] 
Flowspec: Fix values for true/false operators

RFC 8955 is pretty clear that 000 is false and 111 is true.

4 years agoFlowspec: Add code for conversion of flowspec parts to interval lists
Ondrej Zajicek (work) [Fri, 14 May 2021 16:33:15 +0000 (18:33 +0200)] 
Flowspec: Add code for conversion of flowspec parts to interval lists

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.

4 years agoBabel: Log the reason when refusing to run on an interface
Ondrej Zajicek (work) [Mon, 10 May 2021 18:09:31 +0000 (20:09 +0200)] 
Babel: Log the reason when refusing to run on an interface

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!

4 years agoBSD: Propagate OS-level IFF_MULTICAST to internal IF_MULTICAST flag
Toke Høiland-Jørgensen [Mon, 10 May 2021 17:49:43 +0000 (19:49 +0200)] 
BSD: Propagate OS-level IFF_MULTICAST to internal IF_MULTICAST flag

The BSD code did not propagate the OS-level IFF_MULTICAST flag to the
Bird-internal IF_MULTICAST flag, which causes problems with Wireguard
interfaces on FreeBSD. The Linux sysdep code does propagate the flag
already, so just copy over the same check and flag update.

4 years agoOSPF: Allow ifaces with host address as unnumbered PtP or PtMP ifaces
Ondrej Zajicek (work) [Mon, 10 May 2021 11:39:55 +0000 (13:39 +0200)] 
OSPF: Allow ifaces with host address as unnumbered PtP or PtMP ifaces

Ifaces with host address (/32) were forced to be stubby, but now they
can be used as PtP or PtMP. For these ifaces we need to:

 - Do not force stub mode
 - Accept packets from any IP as local
 - Accept any configured neighbor as local
 - Detect ifaces properly as unnumbered
 - Use ONLINK flag for nexthops

4 years agoOSPF: Packets on PtP networks should be always sent to AllSPFRouters
Ondrej Zajicek (work) [Sun, 9 May 2021 13:16:13 +0000 (15:16 +0200)] 
OSPF: Packets on PtP networks should be always sent to AllSPFRouters

As specified in RFC 2328 8.1: "On physical point-to-point networks,
the IP destination is always set to the address AllSPFRouters."

Note that this likely break setups with multiple neighbors on a network
configured as PtP, which worked before. These should be configured as
PtMP.

Thanks to Senthil Kumar Nagappan for the original patch and to Joakim
Tjernlund for suggestions.

4 years agoOSPF: Minor refactoring of packet sending code
Ondrej Zajicek (work) [Sun, 9 May 2021 12:51:39 +0000 (14:51 +0200)] 
OSPF: Minor refactoring of packet sending code

Common behavior for LSupd and delayed LSack moved to ospf_send_to_iface()
and other minor changes.

4 years agoCI: Fix debian-10-i386 docker file
Ondrej Zajicek (work) [Sun, 25 Apr 2021 00:34:46 +0000 (02:34 +0200)] 
CI: Fix debian-10-i386 docker file

4 years agoDoc: Include full LinuxDocTools code
Ondrej Zajicek (work) [Sat, 24 Apr 2021 23:07:14 +0000 (01:07 +0200)] 
Doc: Include full LinuxDocTools code

BIRD uses hacked LinuxDocTools for building documentation, keeping some
parts locally and using remaining parts from system-installed one. This
setup breaks when LinuxDocTools makes some internal changes and is hard
to keep consistent.

Just include full LinuxDocTools code (both hacked and unmodified parts)
to avoid consistency issues. Note that we still need some binaries from
LinuxDocTools, so it still needs to be installed to build documentation.

4 years agoCI/CD: some latest releases added. mh-newer-distros
Matous [Wed, 21 Apr 2021 11:22:23 +0000 (13:22 +0200)] 
CI/CD: some latest releases added.

/misc/docker/:
+ debian 11 (i386+amd64) added,
+ fedora 32 added,
+ fedora 33 added,
+ fedora 34 added,
+ opensuse 15.2 added,
+ opensuse 15.3 added,
+ ubuntu 20.04 added,
+ ubuntu 20.10 added,
+ ubuntu 21.04 added,
- ubuntu 19.10 removed.

/.gitlab-ci.yml:
+ stages 'image' and 'build' updated.

4 years agoInternal route tables have a reduced cleanup routine
Maria Matejka [Mon, 19 Apr 2021 13:13:20 +0000 (15:13 +0200)] 
Internal route tables have a reduced cleanup routine

This fixes an internal table cleanup bug introduced
in ff397df7edcbe7a8abca5b419729b9c64c063847.

4 years agoBSD: Fix invalid pointer derefence in logging code
Stefan Haller [Mon, 19 Apr 2021 13:06:42 +0000 (15:06 +0200)] 
BSD: Fix invalid pointer derefence in logging code

For logging purposes a stack allocated net_addr struct was passed by
value as vararg (instead of the expected pointer). This resulted in
a segfault when the specific error condition got logged.

4 years agoLib: Fix handling of buffers in timestamp formatting
Ondrej Zajicek (work) [Mon, 12 Apr 2021 15:01:31 +0000 (17:01 +0200)] 
Lib: Fix handling of buffers in timestamp formatting

The code in tm_format_real_time() mixed up two buffers and their
sizes, which may cause crash in MRT dumping code.

Thanks to Piotr Wydrych for the bugreport.

4 years agoUnix: Expand accepted ranges of iproute2 constants
Ondrej Zajicek (work) [Wed, 7 Apr 2021 14:14:20 +0000 (16:14 +0200)] 
Unix: Expand accepted ranges of iproute2 constants

We support 32bit table and realm/flow ids, we should also accept them as
constants.

Thanks to Patrick Hemmer for the bugreport.

4 years agoDoc: Fix flowspec example
Ondrej Zajicek (work) [Sat, 3 Apr 2021 18:09:32 +0000 (20:09 +0200)] 
Doc: Fix flowspec example

Thanks to Matt Corallo for the bugreport.

4 years agoAllocation of ea_list in one contiguous memory block
Maria Matejka [Tue, 30 Mar 2021 19:44:35 +0000 (21:44 +0200)] 
Allocation of ea_list in one contiguous memory block

This saves some bytes of memory for complex ea's.

4 years agoRouting table is now a resource allocated from its own pool
Maria Matejka [Tue, 30 Mar 2021 16:51:31 +0000 (18:51 +0200)] 
Routing table is now a resource allocated from its own pool

This also fixes memory leaks from import/export tables being never
cleaned up and freed.

4 years agoResources: added mb_move() to complement rmove() for memory blocks
Maria Matejka [Tue, 30 Mar 2021 14:03:33 +0000 (16:03 +0200)] 
Resources: added mb_move() to complement rmove() for memory blocks

4 years agoRouting tables list iteration should use explicit node struct position
Maria Matejka [Tue, 30 Mar 2021 13:09:53 +0000 (15:09 +0200)] 
Routing tables list iteration should use explicit node struct position

4 years agoBGP: Do not keep BAF_EXT_LEN flag internally
Ondrej Zajicek (work) [Tue, 30 Mar 2021 14:59:11 +0000 (16:59 +0200)] 
BGP: Do not keep BAF_EXT_LEN flag internally

The flag makes sense just in external representation. It is reset during
BGP export, but keeping it internally broke MRT dumps for short attributes
that used it anyways.

Thanks to Simon Marsh for the bugreport and the patch.

4 years agoDropping automatic tests for Debian 7 Wheezy.
Maria Matejka [Thu, 25 Mar 2021 19:51:23 +0000 (20:51 +0100)] 
Dropping automatic tests for Debian 7 Wheezy.

Debian 7 Wheezy has been superseded by Debian 8 Jessie on Apr 25, 2015,
with LTS support ending on May 31, 2018.

Debian 7 Wheezy's default GCC doesn't fully support C11. It should
anyway still be possible to build BIRD for Debian 7 if you backport
a C11-capable compiler there.

4 years agoSlab: head now uses bitmask for used/free nodes info instead of lists
Maria Matejka [Tue, 21 Jul 2020 22:09:15 +0000 (00:09 +0200)] 
Slab: head now uses bitmask for used/free nodes info instead of lists

From now, there are no auxiliary pointers stored in the free slab nodes.
This led to strange debugging problems if use-after-free happened in
slab-allocated structures, especially if the structure's first member is
a next pointer.

This also reduces the memory needed by 1 pointer per allocated object.
OTOH, we now rely on pages being aligned to their size's multiple, which
is quite common anyway.

4 years agoNEWS and version update v2.0.8
Ondrej Zajicek (work) [Thu, 18 Mar 2021 19:18:38 +0000 (20:18 +0100)] 
NEWS and version update

4 years agoAdd new BGP tests
Ondrej Zajicek (work) [Thu, 18 Mar 2021 14:54:44 +0000 (15:54 +0100)] 
Add new BGP tests

4 years agoBGP: Do not show statistics
Ondrej Zajicek (work) [Thu, 18 Mar 2021 14:44:04 +0000 (15:44 +0100)] 
BGP: Do not show statistics

BGP statistics code was preliminary and i wanted to replace it by
separate 'show X stats' command. The patch hides the preliminary
output in 'show protocols all' so it is not part of the released
version.

4 years agoRPKI: Improve error handling of DNS resolver
Ondrej Zajicek (work) [Wed, 17 Mar 2021 16:24:00 +0000 (17:24 +0100)] 
RPKI: Improve error handling of DNS resolver

4 years agoMinor fixes for restricted builds
Ondrej Zajicek (work) [Wed, 17 Mar 2021 14:56:12 +0000 (15:56 +0100)] 
Minor fixes for restricted builds

4 years agoPipe: Propagate debug flags from protocol to channels
Ondrej Zajicek (work) [Tue, 16 Mar 2021 19:10:00 +0000 (20:10 +0100)] 
Pipe: Propagate debug flags from protocol to channels

Pipe channels are kind-of implicit, so setting protocol debug flags
should also set pipe debug flags.

4 years agoOSPFv3: Update neighbor authentication state from Hello packets
Ondrej Zajicek (work) [Tue, 16 Mar 2021 15:34:42 +0000 (16:34 +0100)] 
OSPFv3: Update neighbor authentication state from Hello packets

In OSPFv3, only Hello and DBDes packets contain flags specifying whether
RFC 7166 authentication trailer is used. Other packets are processed
based on stored authentication state in neighbor structure. Update this
state with each received Hello to handle authentication change from
reconfigurations.

Thanks to Joakim Tjernlund and Kenth Eriksson for the bugreport.

4 years agoFilter: Update 'gw' to handle IPv6 link-local addresses
Ondrej Zajicek (work) [Mon, 15 Mar 2021 17:35:23 +0000 (18:35 +0100)] 
Filter: Update 'gw' to handle IPv6 link-local addresses

When a link-local address is set, use the existing iface for scope.

Thanks to Marcel Krüger for the bugreport.

4 years agoDoc: Document automatic RPKI reload
Ondrej Zajicek (work) [Mon, 15 Mar 2021 16:51:33 +0000 (17:51 +0100)] 
Doc: Document automatic RPKI reload

4 years agoDoc: Document channel debug options
Ondrej Zajicek (work) [Mon, 15 Mar 2021 15:16:32 +0000 (16:16 +0100)] 
Doc: Document channel debug options

4 years agoRate-limit scheduling of work-events
Ondrej Zajicek (work) [Fri, 12 Mar 2021 14:35:56 +0000 (15:35 +0100)] 
Rate-limit scheduling of work-events

In general, events are code handling some some condition, which is
scheduled when such condition happened and executed independently from
I/O loop. Work-events are a subgroup of events that are scheduled
repeatedly until some (often significant) work is done (e.g. feeding
routes to protocol). All scheduled events are executed during each
I/O loop iteration.

Separate work-events from regular events to a separate queue and
rate limit their execution to a fixed number per I/O loop iteration.
That should prevent excess latency when many work-events are
scheduled at one time (e.g. simultaneous reload of many BGP sessions).

4 years agoStatic: Implement reload hook
Ondrej Zajicek (work) [Wed, 10 Mar 2021 14:07:19 +0000 (15:07 +0100)] 
Static: Implement reload hook

4 years agoNest: No automatic ROA reload on non-reloadable channels
Ondrej Zajicek (work) [Mon, 8 Mar 2021 19:45:22 +0000 (20:45 +0100)] 
Nest: No automatic ROA reload on non-reloadable channels

4 years agoNest: Add option to control automatic RPKI reload
Ondrej Zajicek (work) [Fri, 12 Feb 2021 04:05:18 +0000 (05:05 +0100)] 
Nest: Add option to control automatic RPKI reload

Also, no automatic reload for BGP channels without import/export table.

4 years agoTests: Add missing mockup function to tests
Ondrej Zajicek (work) [Wed, 10 Feb 2021 16:29:14 +0000 (17:29 +0100)] 
Tests: Add missing mockup function to tests

4 years agoBGP: Add support for BGP hostname capability
Vincent Bernat [Wed, 10 Feb 2021 15:53:57 +0000 (16:53 +0100)] 
BGP: Add support for BGP hostname capability

This is an implementation of draft-walton-bgp-hostname-capability-02.
It is implemented since quite some time for FRR and in datacenter, this
gives a nice output to avoid using IP addresses.

It is disabled by default. The hostname is retrieved from uname(2) and
can be overriden with "hostname" option. The domain name is never set
nor displayed.

Minor changes by committer.

4 years agoNest: Automatic channel reloads based on RPKI changes
Ondrej Zajicek (work) [Wed, 10 Feb 2021 02:09:57 +0000 (03:09 +0100)] 
Nest: Automatic channel reloads based on RPKI changes

If there are roa_check() calls in channel filters, then the channel
subscribes to ROA table notifications, which are sent when ROA tables
are updated (subject to settle time) and trigger channel reload or
refeed.

4 years agoFilter: Recursive filter iteration code
Ondrej Zajicek (work) [Sun, 7 Feb 2021 18:21:42 +0000 (19:21 +0100)] 
Filter: Recursive filter iteration code

Add macros for recursive filter iteration that allows to examine
all instructions reachable from a filter.

4 years agoMRT: Fix MP-BGP next hops
Ondrej Zajicek (work) [Fri, 22 Jan 2021 03:34:15 +0000 (04:34 +0100)] 
MRT: Fix MP-BGP next hops

Flag signalling that MP-BGP mode should be used got reset after first
batch of routes, so remaining routes were processed without that, leading
to missing MP_REACH_NLRI attribute.

Thanks to Piotr Wydrych for the bugreport.

4 years agoNetlink: Ignore dead routes
Ondrej Zajicek (work) [Thu, 14 Jan 2021 00:51:09 +0000 (01:51 +0100)] 
Netlink: Ignore dead routes

With net.ipv4.conf.XXX.ignore_routes_with_linkdown sysctl, a user can
ensure the kernel does not use a route whose target interface is down.
Such route is marked with a 'dead' / RTNH_F_DEAD flag.

Ignore these routes or multipath nexthops during scan.

Thanks to Vincent Bernat for the original patch.

4 years agoBuild: Fix tags generation
Ondrej Zajicek (work) [Tue, 12 Jan 2021 14:43:54 +0000 (15:43 +0100)] 
Build: Fix tags generation

4 years agoMRT: Fix IPv6 table dumps
Ondrej Zajicek (work) [Tue, 12 Jan 2021 14:37:01 +0000 (15:37 +0100)] 
MRT: Fix IPv6 table dumps

Add fake MP_REACH_NLRI attribute with BGP next hop when encoding MRT
table dumps for IPv6 routes. That is necessary to encode next hop as
NEXT_HOP attribute is not used for MP-BGP.

Thanks to Santiago Aggio for the bugreport.

4 years agoBFD: Dispatch sessions also by interface index
Ondrej Zajicek (work) [Sun, 10 Jan 2021 14:29:02 +0000 (15:29 +0100)] 
BFD: Dispatch sessions also by interface index

Direct BFD sessions needs to be dispatched not only by IP addresses, but
also by interfaces, in order to avoid collisions between neighbors with
the same IPv6 link-local addresses.

Extend BFD session hash_ip key by interface index to handle that. Use 0
for multihop sessions.

Thanks to Sebastian Hahn for the original patch.

4 years agoRPKI: Remove port (and SSH username) from 'Cache server' output line
Ondrej Zajicek (work) [Thu, 7 Jan 2021 04:56:34 +0000 (05:56 +0100)] 
RPKI: Remove port (and SSH username) from 'Cache server' output line

It was mixed-up if hostname is IPv6 address, and reporting separate
values (like port) on separate lines fits better into key-value style
of 'show protocols all' output. Also, the patch simplifies transport
identification formatting (although it is unused now).

Thanks to Alarig Le Lay for the suggestion.

4 years agoKernel: Do not check templates
Ondrej Zajicek (work) [Thu, 7 Jan 2021 00:56:00 +0000 (01:56 +0100)] 
Kernel: Do not check templates

So one can define kernel protocol template without channels.
For other protocols, it is either irrelevant or already done.

Thanks to Clemens Schrimpe for the bugreport.

4 years agoDoc: Describe per-nexthop static route options
Ondrej Zajicek (work) [Thu, 7 Jan 2021 00:20:56 +0000 (01:20 +0100)] 
Doc: Describe per-nexthop static route options

Also remove description of (no longer supported) per-route 'bfd' option,
and add examples of IPv6 routes with link-local nexthops.

4 years agoNest: remove last_tx_filter_change
Ondrej Zajicek (work) [Wed, 6 Jan 2021 13:51:49 +0000 (14:51 +0100)] 
Nest: remove last_tx_filter_change

No longer needed after redesign of export handling.

4 years agoBGP: Deprecate 'missing lladdr' option
Ondrej Zajicek (work) [Wed, 6 Jan 2021 13:44:23 +0000 (14:44 +0100)] 
BGP: Deprecate 'missing lladdr' option

The option is not implemented since transition to 2.0 and no plan to add it.
Also remove some deprecated RTS_* valus from documentation.

Thanks to Sébastien Parisot for notification.

4 years agoKernel: Fix handling of krt_realm with ECMP routes
Ondrej Zajicek (work) [Wed, 6 Jan 2021 04:25:59 +0000 (05:25 +0100)] 
Kernel: Fix handling of krt_realm with ECMP routes

For ECMP routes, RTA_FLOW attribute must be set per-nexthop, not
per-route. Our corresponding krt_realm attribute is per-route.

Thanks to Mikhail Petrov for the bugreport.

4 years agoNest: Read Babel metric as IGP metric
James Lu [Tue, 29 Dec 2020 01:23:54 +0000 (02:23 +0100)] 
Nest: Read Babel metric as IGP metric

(Minor syntactic changes by committer)

4 years agoStatic: Fix handling of 'net' attribute in per-route filters
Ondrej Zajicek (work) [Mon, 28 Dec 2020 20:19:27 +0000 (21:19 +0100)] 
Static: Fix handling of 'net' attribute in per-route filters

We need to define 'net' field temporarily as it may be accessed by
per-route filters.

Thanks to Damian Zaremba for the bugreport.

4 years agoFilter: Fix return on top-level
Ondrej Zajicek (work) [Mon, 28 Dec 2020 14:23:28 +0000 (15:23 +0100)] 
Filter: Fix return on top-level

Broken detection of top-level case caused crash when return was called
from top-of-stack position. It should behave as reject/accept.

Thanks to Damian Zaremba for the bugreport.

4 years agoNest: Per-channel debug flags
Ondrej Zajicek (work) [Mon, 7 Dec 2020 21:19:40 +0000 (22:19 +0100)] 
Nest: Per-channel debug flags

The patch add support for per-channel debug flags, currently just
'states', 'routes', and 'filters'. Flag 'states' is used for channel
state changes, remaining two for routes passed through the channel.
The per-protocol debug flags 'routes'/'filters' still enable reporting
of routes for all channels, to keep existing behavior.

The patch causes minor changes in some log messages.

4 years agoFilter: Add 'weight' route attribute
Ondrej Zajicek (work) [Wed, 2 Dec 2020 04:02:26 +0000 (05:02 +0100)] 
Filter: Add 'weight' route attribute

Add 'weight' route attribute that allows to get and set ECMP weight of
nexthops. Similar to 'gw' attribute, it is limited to the first nexthop,
but it is useful for handling BGP multipath, where an ECMP route is
merged from multiple regular routes.

4 years agoBGP: Zero the newly allocated bucket structure
Ondrej Zajicek (work) [Wed, 25 Nov 2020 14:44:00 +0000 (15:44 +0100)] 
BGP: Zero the newly allocated bucket structure

This fixes an issue with dirty node passed to add_tail().

Thanks to Andreas Rammhold for the initial patch.

4 years agoLog: Fix locking during log reconfiguration
Ondrej Zajicek (work) [Wed, 25 Nov 2020 14:15:13 +0000 (15:15 +0100)] 
Log: Fix locking during log reconfiguration

The log subsystem should be locked earlier, as default_log_list() may
internally manipulate with the current_log_list (if it is also a default
log list).

4 years agoLog: Reinitialize the static logging structures
Ondrej Zajicek (work) [Wed, 25 Nov 2020 14:04:34 +0000 (15:04 +0100)] 
Log: Reinitialize the static logging structures

The static logging structures are reused, we need to reinitialize them
otherwise add_tail() would fail in debug build. Reinitializing these
structures should be fine as the list they belong to is being
reinitialized on entry to the very same function.

Thanks to Andreas Rammhold and Mikael Magnusson for patches.

4 years agoMinor cleanups with cfg_allocz()
Ondrej Zajicek (work) [Tue, 24 Nov 2020 03:09:11 +0000 (04:09 +0100)] 
Minor cleanups with cfg_allocz()

Also fixes some more failed asserts due to add_tail().

4 years agoFix some failed asserts due to add_tail()
Ondrej Zajicek (work) [Tue, 24 Nov 2020 02:42:23 +0000 (03:42 +0100)] 
Fix some failed asserts due to add_tail()

When config structures are copied due to template application,
we need to reset list node structure before calling add_tail().

Thanks to Mikael Magnusson for patches.

4 years agoSome minor sl_allocz() cleanups
Ondrej Zajicek (work) [Tue, 24 Nov 2020 02:21:44 +0000 (03:21 +0100)] 
Some minor sl_allocz() cleanups

4 years agolib/slab: introduce sl_allocz() function and use it in Babel
Toke Høiland-Jørgensen [Tue, 24 Nov 2020 01:32:13 +0000 (02:32 +0100)] 
lib/slab: introduce sl_allocz() function and use it in Babel

The babel protocol code was initialising objects returned from the slab
allocator by assigning to each of the struct members individually, but
wasn't touching the NODE member while doing so. This leads to warnings on
debug builds since commit:

baac7009063d ("List expensive check.")

To fix this, introduce an sl_allocz() variant of the slab allocator which
will zero out the memory before returning it, and switch all the babel call
sites to use this version. The overhead for doing this should be negligible
for small objects, and in the case of babel, the largest object being
allocated was being zeroed anyway, so we can drop the memset in
babel_read_tlv().

4 years agoStatic: Support for multiple routes with the same network
Ondrej Zajicek (work) [Thu, 19 Nov 2020 15:38:39 +0000 (16:38 +0100)] 
Static: Support for multiple routes with the same network

Add support for proper handling of multiple routes with the same network
to the static protocol. Routes are distinguished by internal index, which
is assigned automatically (sequentially for routes within each network).
Having different route preference or igp_metric attribute is optional.

4 years agoDoc: Added example of static routes with BGP large communities
Nigel Kukard [Wed, 18 Nov 2020 17:00:12 +0000 (18:00 +0100)] 
Doc: Added example of static routes with BGP large communities

4 years agoOSPFv3: Fix intra-area-prefix-LSA origination on DR
Ondrej Zajicek (work) [Wed, 18 Nov 2020 16:37:29 +0000 (17:37 +0100)] 
OSPFv3: Fix intra-area-prefix-LSA origination on DR

When a new link-LSA is originated, we need to notify intra-area-prefix-LSA
handling, like when a new link-LSA is received. Otherwise a new network
prefix added to a DR is not propagated immediately.

Thanks to Bala Sajja for the bugreport.

4 years agoDoc: Fix typo
Ondrej Zajicek (work) [Sun, 15 Nov 2020 15:28:13 +0000 (16:28 +0100)] 
Doc: Fix typo

Thanks to Hexhu for the bugreport.

4 years agoNest: Fix crash in receive limit handling in import table
Ondrej Zajicek (work) [Sun, 15 Nov 2020 15:01:19 +0000 (16:01 +0100)] 
Nest: Fix crash in receive limit handling in import table

Logging as a result of triggered receive limit in import table code
accesset rte->net, which was not filed yet.

Thanks to Pier Carlo Chiodi for the bugreport.

4 years agoBFD: Update documentation about per-session options
Ondrej Zajicek (work) [Thu, 12 Nov 2020 03:50:45 +0000 (04:50 +0100)] 
BFD: Update documentation about per-session options

4 years agoBFD: Better handling of BFD options in BGP configs
Ondrej Zajicek (work) [Thu, 12 Nov 2020 03:02:38 +0000 (04:02 +0100)] 
BFD: Better handling of BFD options in BGP configs

Merge multiple BFD option blocks in BGP configs instead of using the last
one. That is necessary for proper handling of templates when BFD options
are used both in a BGP template and in a BGP protocol derived from that
template.

4 years agoBFD: Fix superfluous reconfiguration of sessions
Ondrej Zajicek (work) [Thu, 12 Nov 2020 01:37:42 +0000 (02:37 +0100)] 
BFD: Fix superfluous reconfiguration of sessions

4 years agoBFD: Allow per-request session options
Ondrej Zajicek (work) [Sun, 8 Nov 2020 14:33:22 +0000 (15:33 +0100)] 
BFD: Allow per-request session options

BFD session options are configured per interface in BFD protocol. This
patch allows to specify them also per-request in protocols requesting
sessions (currently limited to BGP).

4 years agoRPKI: Add 'ignore max length' option
Ondrej Zajicek (work) [Sat, 10 Oct 2020 22:53:19 +0000 (00:53 +0200)] 
RPKI: Add 'ignore max length' option

Add 'ignore max length' option to RPKI protocol, which ignores received
max length in ROA records and instead uses max value (32 or 128). This
may be useful for implementing loose RPKI check for blackholes.

4 years agoDoc: Fix missing semicolons
Ondrej Zajicek (work) [Mon, 5 Oct 2020 12:52:55 +0000 (14:52 +0200)] 
Doc: Fix missing semicolons

Thanks to Marco Gartmann for the bugreport.

4 years agoDoc: Fix typo
Ondrej Zajicek (work) [Mon, 5 Oct 2020 12:45:01 +0000 (14:45 +0200)] 
Doc: Fix typo

Thanks to Sergey Kulikov for the bugreport.

4 years agoOSPF: Fixed a debug assert
Maria Matejka [Mon, 31 Aug 2020 13:41:39 +0000 (15:41 +0200)] 
OSPF: Fixed a debug assert

4 years agoOSPF: Skip out-of-state packets earlier
Ondrej Zajicek (work) [Wed, 12 Aug 2020 17:42:44 +0000 (19:42 +0200)] 
OSPF: Skip out-of-state packets earlier

Sometimes multicast OSPF packet is received when neighbor adjacency is
not established. Such packet should be ignored earlier in packet
processing as otherwise it causes strange error messages when OSPFv3
authentication is enabled.

5 years agoNest: Keep route ordering during route updates
Ondrej Zajicek (work) [Thu, 16 Jul 2020 13:02:10 +0000 (15:02 +0200)] 
Nest: Keep route ordering during route updates

Put new non-best routes to the end of list instead of the second
position. Put updated routes to their old position. Position is changed
just by best route selection.

5 years agoShow info from multiple protocols when protocol is not specified
Ondrej Zajicek (work) [Thu, 14 May 2020 01:48:17 +0000 (03:48 +0200)] 
Show info from multiple protocols when protocol is not specified

Most commands like 'show ospf neighbors' fail when protocol is not
specified and there are multiple instances of given protocol type.
This is annoying in BIRD 2, as many protocols have IPv4 and IPv6
instances. The patch changes that by showing output from all protocol
instances of appropriate type.

Note that the patch also removes terminating cli_msg() call from these
commands and moves it to the common iterating code.

5 years agoFilter: Improve handling of sets in BGP path masks
Kazuki Yamaguchi [Sun, 28 Jun 2020 13:37:01 +0000 (15:37 +0200)] 
Filter: Improve handling of sets in BGP path masks

Compare the content of PM_ASN_SET in path masks. A reconfiguration
was not properly triggering a reload of affected protocols when the
members of a set in a path mask change.

Also, update the printing code to so that it can display sets in a path
mask.

5 years agoFilter: Fix comparison of BGP path mask
Kazuki Yamaguchi [Sun, 28 Jun 2020 13:33:26 +0000 (15:33 +0200)] 
Filter: Fix comparison of BGP path mask

Add a missing return statement. Path masks with the same length were all
considered the same. Comparing two with different length would cause
out-of-bounds memory access.

5 years agoOSPF: Fix bad header length test
Ondrej Zajicek (work) [Wed, 10 Jun 2020 11:27:14 +0000 (13:27 +0200)] 
OSPF: Fix bad header length test

Thanks to Slava Aseev for the thorough bugreport.

5 years agoDoc: Add 'ptp address' to OSPF doc overview
Kenth Eriksson [Wed, 3 Jun 2020 21:05:29 +0000 (23:05 +0200)] 
Doc: Add 'ptp address' to OSPF doc overview

5 years agoTest: Fix unit test mockups
Ondrej Zajicek (work) [Wed, 3 Jun 2020 14:15:29 +0000 (16:15 +0200)] 
Test: Fix unit test mockups