mirror of
https://git.freebsd.org/ports.git
synced 2025-04-28 01:26:39 -04:00
53 lines
1.6 KiB
Text
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
|
|
|