From: Maria Matejka Date: Sun, 28 Jan 2024 13:42:36 +0000 (+0100) Subject: Merge commit 'v2.13.1-189-g105e50f6' into thread-next X-Git-Tag: v3.0.0~294 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7045a715cf8339bcccf99363cdc6844c22313e06;p=thirdparty%2Fbird.git Merge commit 'v2.13.1-189-g105e50f6' into thread-next --- 7045a715cf8339bcccf99363cdc6844c22313e06 diff --cc sysdep/unix/krt.Y index 92fc19203,90297d3ff..7b58c6574 --- a/sysdep/unix/krt.Y +++ b/sysdep/unix/krt.Y @@@ -29,9 -29,10 +29,10 @@@ kif_set_preferred(ip_addr ip CF_DECLS -CF_KEYWORDS(KERNEL, PERSIST, SCAN, TIME, LEARN, DEVICE, ROUTES, GRACEFUL, RESTART, KRT_SOURCE, KRT_METRIC, MERGE, PATHS) +CF_KEYWORDS(KERNEL, PERSIST, SCAN, TIME, LEARN, DEVICE, ROUTES, GRACEFUL, RESTART, MERGE, PATHS) CF_KEYWORDS(INTERFACE, PREFERRED) + %type kern_learn %type kern_mp_limit %type kern_channel diff --cc sysdep/unix/krt.c index 54be8b059,3a4b24dce..623182412 --- a/sysdep/unix/krt.c +++ b/sysdep/unix/krt.c @@@ -446,15 -639,14 +446,19 @@@ krt_got_route(struct krt_proto *p, rte #ifdef KRT_ALLOW_LEARN switch (src) { - case KRT_SRC_KERNEL: - krt_trace_in(p, e, "ignored"); - return; - case KRT_SRC_REDIRECT: - goto delete; + krt_trace_in(p, e, "deleting"); + krt_replace_rte(p, e->net, NULL, e); + return; + case KRT_SRC_KERNEL: + if (KRT_CF->learn != KRT_LEARN_ALL) - goto ignore; ++ { ++ krt_trace_in(p, e, "ignored"); ++ return; ++ } + /* fallthrough */ + case KRT_SRC_ALIEN: if (KRT_CF->learn) krt_learn_scan(p, e);