0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-12-22 09:41:54 +00:00
Commit Graph

1475 Commits

Author SHA1 Message Date
Maria Matejka
8349536278 BFD: Fix session reconfiguration locking order
The sessions have to be updated asynchronously to avoid
cross-locking between protocols.

Testsuite: cf-ibgp-bfd-switch, cf-ibgp-multi-bfd-auth
Fixes: #139

Thanks to Daniel Suchy <danny@danysek.cz> for reporting:
https://trubka.network.cz/pipermail/bird-users/2024-December/017984.html
2024-12-21 19:12:54 +01:00
Maria Matejka
6779e5da69 BGP: fix locking order error on dynamic protocol spawn
We missed that the protocol spawner violates the prescribed
locking order. When the rtable level is locked, no new protocol can be
started, thus we need to:

* create the protocol from a clean mainloop context
* in protocol start hook, take the socket

Testsuite: cf-bgp-autopeer
Fixes: #136

Thanks to Job Snijders <job@fastly.com> for reporting:
https://trubka.network.cz/pipermail/bird-users/2024-December/017980.html
2024-12-20 11:40:10 +01:00
Maria Matejka
0a2f92ad20 Table: not feeding twice, once is enough
If there is no feed pending, the requested one should be
activated immediately, otherwise it is activated only after
the full run, effectively running first a full feed and
then the requested one.
2024-12-19 11:54:05 +01:00
Maria Matejka
b6caccfd45 Kernel: Fix crash for merge paths on if no route is in BIRD
There was a missing check for a NULL return value.
Also fixed an indenting error.

Thanks to Radu Anghel for reporting it:
https://bird.network.cz/pipermail/bird-users/2024-December/017977.html
2024-12-19 11:38:27 +01:00
Maria Matejka
c6b778794e Table exporter journal dumping and memsize
The show-memory command wasn't showing the consumed memory
properly because it ignored the journal size. Now it does.
2024-12-16 12:31:26 +01:00
Maria Matejka
d373d48377 Table cork compromise
The original values were way too low but what was set
later was too high and caused memory buildup upon startup.
2024-12-16 09:34:08 +01:00
Maria Matejka
d69d804679 Table prune inhibited during reconfiguration
When many changes are done during reconfiguration, the table may
start pruning old routes before everything is settled down, slowing
down not only the reconfiguration, but also the shutdown process.
2024-12-15 22:21:34 +01:00
Katerina Kubecova
ef63946d2e Allow allocating cold pages inside RCU critical section
We have quite large critical sections and we need to allocate inside
them. This is something to revise properly later on, yet for now,
instead of slowly but surely growing the virtual memory address space,
it's better to optimize the cold page cache pickup and count situations
where this happened inside the critical section.
2024-12-13 20:15:37 +01:00
Maria Matejka
af89c43413 Fixed a subtle memory leak in protocol restart routine 2024-12-13 19:10:55 +01:00
Maria Matejka
93621ed9f4 Merge commit '707cad61' into thread-next 2024-12-13 19:10:28 +01:00
Maria Matejka
731593685b Merge commit 'd85fa48e' into thread-next
The resource dumping routines needed to be updated in v3 to use the new
API introduced in v2.

Conflicts:
	filter/f-util.c
	filter/filter.c
	lib/birdlib.h
	lib/event.c
	lib/mempool.c
	lib/resource.c
	lib/resource.h
	lib/slab.c
	lib/timer.c
	nest/config.Y
	nest/iface.c
	nest/iface.h
	nest/locks.c
	nest/neighbor.c
	nest/proto.c
	nest/route.h
	nest/rt-attr.c
	nest/rt-table.c
	proto/bfd/bfd.c
	proto/bmp/bmp.c
	sysdep/unix/io.c
	sysdep/unix/krt.c
	sysdep/unix/main.c
	sysdep/unix/unix.h
2024-12-13 15:58:10 +01:00
Katerina Kubecova
4af3ee1f2f EAttr normalization rewritten to use bucket sort
The EAttr ID space is dense so we can just walk once, sweep the whole
input and go home.

There is a little bit of memory inefficiency in allocating always the
largest possible block, yet it isn't too bad.

There are also unit tests for this.
2024-12-12 21:02:34 +01:00
Maria Matejka
6e940c259d CLI: show threads all crash fixed
When socket dropped before finished, it failed to cleanup.
2024-12-12 15:00:26 +01:00
Maria Matejka
73ace6acad Proto show: show creation and last autorestart time 2024-12-11 10:05:05 +01:00
Maria Matejka
fa0bda2278 Merge commit '145830bd' into thread-next 2024-12-10 23:55:42 +01:00
Maria Matejka
cde582977f BMP: Never touching the BGP directly
Dropped hopefully last remnants of BMP directly accessing BGP structures.
2024-12-10 23:41:48 +01:00
Maria Matejka
dc692ae06a Nest: proto/channel state table naming convention cleanup 2024-12-10 23:41:48 +01:00
Maria Matejka
bc15f0b9c7 Nest: fixed a race-condition between import and export
There was a leaking stack pointer to the global memory.
Fixed by making that temporary structure thread local static.
2024-12-10 10:59:30 +01:00
Maria Matejka
2ab3f22e4a CLI: show memory also displays cold pages
Minor changes by committer.
2024-12-03 04:07:53 +01:00
Maria Matejka
da8a23277e CLI: Dumping internal data structures to files, not to debug output
All the 'dump something' CLI commands now have a new mandatory
argument -- name of the file where to dump the data. This allows
for more flexible dumping even for production deployments where
the debug output is by default off.

Also the dump commands are now restricted (they weren't before)
to assure that only the appropriate users can run these time consuming
commands.
2024-12-02 06:54:54 +01:00
Maria Matejka
145830bdc8 CLI: adding cli_vprintf() 2024-12-02 04:27:30 +01:00
Maria Matejka
cd63810e4e Merge commit '997d2f57' into thread-merge-2.16 2024-11-29 11:43:49 +01:00
Maria Matejka
1b0ffdf80e Merge commit '82d57fb7' into thread-merge-2.16 2024-11-29 11:26:18 +01:00
Maria Matejka
c1ad3e58c0 Merge commit '38195ac6' into thread-merge-2.16 2024-11-29 10:49:53 +01:00
Maria Matejka
14bc1fc4c1 Merge commit '1002c35b' into thread-merge-2.16 2024-11-29 10:25:59 +01:00
Maria Matejka
baf963973d Merge commit '80ca0ed2' into thread-merge-2.16
Fixed a nasty merge conflict with bgp_origin serving double duty
as both an attribute and enum name.
2024-11-29 10:20:08 +01:00
Maria Matejka
eba3a26537 Merge commit '08ff0af8' into thread-merge-2.16 2024-11-28 12:07:30 +01:00
Maria Matejka
281e41026e Merge commit 'f3b6661d' into thread-merge-2.16 2024-11-28 12:00:45 +01:00
Maria Matejka
1ce352ebf5 Merge commit 'a95fff37' into thread-merge-2.16 2024-11-28 10:57:37 +01:00
Maria Matejka
ce2ecbdcb6 Merge commit 'e29f134a' into thread-merge-2.16 2024-11-28 09:04:31 +01:00
Maria Matejka
402d07bccd Merge commit '280daed5' into thread-merge-2.16 2024-11-28 09:02:59 +01:00
Maria Matejka
b8f7200ee9 Merge commit 'bc10975a' into thread-merge-2.16 2024-11-28 08:56:27 +01:00
Maria Matejka
d73d861f0c Merge commit '08571b20' into thread-merge-2.16 2024-11-28 08:22:06 +01:00
Maria Matejka
997d2f578e ASPA: Unified the ASPA_INVALID into one result
The _EMPTY and _CONFED variants are easy to spot bare-eyed from the AS path.
2024-11-26 20:33:28 +01:00
Katerina Kubecova
99fa1f01a4 rt-show.c: fixed OBSREF_SET after cf_error(), changed message when 'show route export' called on static protocol 2024-11-25 17:06:24 +01:00
Maria Matejka
3f4332f0bd Protocol restart timer reworked.
The restart timer was racy and didn't allow for immediate restarts
from limits. Now the protocols stores the last restart time and in case
of too frequent autorestarts caused by exceeded limits, the protocol
gets disabled with an error message.

Also now there is a configuration knob for this.
2024-11-25 17:06:24 +01:00
Maria Matejka
2956faf5a6 Protocol and BGP state information cleanup and fixes
There were some nasty problems with deferred protocol state updates and
race conditions on BGP startup, shutdown, and also with referencing the
cached states.

Now it looks fixed.
2024-11-24 22:51:08 +01:00
Katerina Kubecova
77dee46e98 BMP: updated to v3 API 2024-11-21 10:29:10 +01:00
Maria Matejka
74800729c0 Proto: The active flag converted to actual fifth protocol state
What was PS_DOWN before, is now PS_DOWN and PS_FLUSH.
2024-11-18 22:21:12 +01:00
Katerina Kubecova
7889f0c25b Neighbor locking: forgotten neighbors to unlink are actually a bug.
These may cause runaway pointers.
2024-11-18 10:09:36 +01:00
Katerina Kubecova
ca5ed6997c nest/cli: fixup - empty printing in birdc does not freeze 2024-11-15 10:04:51 +01:00
Katerina Kubecova
dc69284f61 MRT: buildable and running again for BIRD 3
Tests for MRT are scarce and not automated for now, so it may behave
weirdly in corner cases.
2024-11-14 11:41:37 +01:00
Maria Matejka
eb6918e4db Neighbor cache: fixed neighbor referencing 2024-11-14 11:41:37 +01:00
Katerina Kubecova
b97d924e52 Proto: adding lockless state table and journal
To allow reading of protocol states from other protocols or completely
different routines, we have to export these states to data structures
not requiring to lock the protocol loops.

On one hand, this doesn't give the reader the actual state "right now",
on the other hand, getting that is impossible in a properly
multithreaded environment and you will always get the information with
some (little but noteworthy) delay.

This implementation handles only the basic state information of the
protocols, common for all the protocols. Adding protocol-specific state
information should be done by implementing the protocol hook init_state().

Channel information is stored but not announced, as we don't need the
announcements for now.
2024-11-14 11:41:37 +01:00
Katerina Kubecova
224fbe5980 ASPA: Automatic channel reload 2024-11-09 16:51:06 +01:00
Katerina Kubecova
330c71bd0a More attribute types: pointers, strings, btime
For the upcoming rework of protocol state information propagation,
we need some more eattr types to be defined.

These types are probably not defined completely and before using
them for route attributes, you should check that they don't lack
some crucial methods.
2024-11-09 09:55:40 +01:00
Piotr Wydrych
82d57fb7ad CLI: Add timeformat command
Adds ability to override time format of show commands for current CLI session
so that it does not depend on configuration and may ease parsing when CLI is
called from tools.

Minor changes by committer.
2024-11-07 15:08:51 +01:00
Ondrej Zajicek
9eca3e1a2e Nest: Cleanup timeformat grammar 2024-11-07 15:08:51 +01:00
Maria Matejka
38195ac628 ASPA: fixed the check algorithm to actually do what is in the RFC
The original algorithm assumed principles not consistent with the RFC
and could have lead to false invalids.

Also added filter tests showing also how the ASPA literals are used in
the static protocol.
2024-11-07 15:08:14 +01:00
Ondrej Zajicek
1002c35bf9 Filter: Replace T_ENUM_NETTYPE with T_ENUM_NET_TYPE
To be consistent with other enum type names.
2024-10-18 16:49:19 +02:00