ports/net/bird3/files/patch-02-kernel-trace-the-final-result
Olivier Cochard 4516e09a23 net/bird3: Add new branch 3.x (multithreaded)
Warning: Consider version 3.0.0 to be unstable.

PR:		283403
Sponsored by:	Netflix
2025-01-09 23:07:38 +01:00

53 lines
1.6 KiB
Text

From ab74652f96c301dd2d2d2a831dd1a159ae1d5e02 Mon Sep 17 00:00:00 2001
From: Maria Matejka <mq@ucw.cz>
Date: Thu, 19 Dec 2024 12:28:27 +0100
Subject: [PATCH] Kernel: when channel traces, we have to trace the final
result
Otherwise it looks like we are sending too much traffic to netlink
every other while, which is not true. Now we can disambiguate between
in-kernel updates and ignored routes.
---
sysdep/unix/krt.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/sysdep/unix/krt.c b/sysdep/unix/krt.c
index 2770b8be2..34882b88f 100644
--- sysdep/unix/krt.c
+++ sysdep/unix/krt.c
@@ -672,7 +672,7 @@ krt_preexport(struct channel *C, rte *e)
}
static void
-krt_rt_notify(struct proto *P, struct channel *ch UNUSED, const net_addr *net,
+krt_rt_notify(struct proto *P, struct channel *ch, const net_addr *net,
rte *new, const rte *old)
{
struct krt_proto *p = (struct krt_proto *) P;
@@ -688,13 +688,21 @@ krt_rt_notify(struct proto *P, struct channel *ch UNUSED, const net_addr *net,
case KPS_IDLE:
case KPS_PRUNING:
if (new && bmap_test(&p->seen_map, new->id))
- /* Already installed and seen in the kernel dump */
- return;
+ if (ch->debug & D_ROUTES)
+ {
+ /* Already installed and seen in the kernel dump */
+ log(L_TRACE "%s.%s: %N already in kernel",
+ P->name, ch->name, net);
+ return;
+ }
/* fall through */
case KPS_SCANNING:
/* Actually replace the route */
krt_replace_rte(p, net, new, old);
+ if (ch->debug & D_ROUTES)
+ log(L_TRACE "%s.%s: %N %s kernel",
+ P->name, ch->name, net, old ? "replaced in" : "added to");
break;
}
--
GitLab