diff options
Diffstat (limited to 'net/bird3/files/patch-02-kernel-trace-the-final-result')
-rw-r--r-- | net/bird3/files/patch-02-kernel-trace-the-final-result | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/net/bird3/files/patch-02-kernel-trace-the-final-result b/net/bird3/files/patch-02-kernel-trace-the-final-result new file mode 100644 index 000000000000..a3c97320f30e --- /dev/null +++ b/net/bird3/files/patch-02-kernel-trace-the-final-result @@ -0,0 +1,53 @@ +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 + |