From: Alexander Kanavin Date: Mon, 29 Dec 2025 12:45:38 +0000 (+0100) Subject: libnl: upgrade 3.11.0 -> 3.12.0 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8186b47da752006f49ee3ac5d272e2537757644f;p=thirdparty%2Fopenembedded%2Fopenembedded-core.git libnl: upgrade 3.11.0 -> 3.12.0 Remove a patch as the issue has been fixed upstream. Backport a couple patches to address ptest issues due to missing kernel modules (they're not built in standard linux-yocto): https://github.com/thom311/libnl/issues/448 Signed-off-by: Alexander Kanavin Signed-off-by: Mathieu Dubois-Briand Signed-off-by: Richard Purdie --- diff --git a/meta/recipes-support/libnl/files/0001-tests-add-and-use-_nltst_skip_eopnotsupp-helper.patch b/meta/recipes-support/libnl/files/0001-tests-add-and-use-_nltst_skip_eopnotsupp-helper.patch new file mode 100644 index 00000000000..0f7ce5ba747 --- /dev/null +++ b/meta/recipes-support/libnl/files/0001-tests-add-and-use-_nltst_skip_eopnotsupp-helper.patch @@ -0,0 +1,81 @@ +From 193bd72d1ca66f7c97fdc78782617302b7724c52 Mon Sep 17 00:00:00 2001 +From: Thomas Haller +Date: Tue, 23 Dec 2025 21:31:06 +0100 +Subject: [PATCH] tests: add and use _nltst_skip_eopnotsupp() helper + +Upstream-Status: Backport [https://github.com/thom311/libnl/commit/f680f27] +Signed-off-by: Alexander Kanavin +--- + tests/cksuite-all-netns.c | 3 +-- + tests/cksuite-route-nh.c | 4 +--- + tests/nl-test-util.c | 11 +++++++++++ + tests/nl-test-util.h | 4 ++++ + 4 files changed, 17 insertions(+), 5 deletions(-) + +diff --git a/tests/cksuite-all-netns.c b/tests/cksuite-all-netns.c +index ff6fd65..4714db2 100644 +--- a/tests/cksuite-all-netns.c ++++ b/tests/cksuite-all-netns.c +@@ -273,8 +273,7 @@ START_TEST(test_create_iface) + } + + r = rtnl_link_add(sk, link, NLM_F_CREATE); +- if (r == -NLE_OPNOTSUPP) { +- /* Hm, no kernel module? Skip the test. */ ++ if (_nltst_skip_eopnotsupp(r)) { + _nltst_assert_link_not_exists(IFNAME); + IFNAME = NULL; + return; +diff --git a/tests/cksuite-route-nh.c b/tests/cksuite-route-nh.c +index 07a7a83..8409e18 100644 +--- a/tests/cksuite-route-nh.c ++++ b/tests/cksuite-route-nh.c +@@ -1054,10 +1054,8 @@ START_TEST(test_kernel_roundtrip_encap_ila) + ck_assert_int_eq(rtnl_nh_set_oif(nh, (uint32_t)ifindex_dummy), 0); + ck_assert_int_eq(rtnl_nh_set_family(nh, AF_INET6), 0); + ret = rtnl_nh_add(sk, nh, NLM_F_CREATE); +- if (ret == -NLE_OPNOTSUPP) { +- /* ila module is not loaded - skipping */ ++ if (_nltst_skip_eopnotsupp(ret)) + return; +- } + ck_assert_int_eq(ret, 0); + + ck_assert_int_eq(rtnl_nh_alloc_cache(sk, AF_UNSPEC, &cache), 0); +diff --git a/tests/nl-test-util.c b/tests/nl-test-util.c +index 51c04c6..75bb540 100644 +--- a/tests/nl-test-util.c ++++ b/tests/nl-test-util.c +@@ -838,6 +838,17 @@ bool _nltst_skip_no_iproute2(const char *msg) + + /*****************************************************************************/ + ++bool _nltst_skip_eopnotsupp(int err) ++{ ++ if (err != -NLE_OPNOTSUPP) ++ return false; ++ ++ printf("skip test after operation failed with NLE_OPNOTSUPP. This indicates missing kernel support"); ++ return true; ++} ++ ++/*****************************************************************************/ ++ + void _nltst_add_dummy_and_up(struct nl_sock *sk, const char *ifname, + int *out_ifindex) + { +diff --git a/tests/nl-test-util.h b/tests/nl-test-util.h +index ecae885..a2c0e3b 100644 +--- a/tests/nl-test-util.h ++++ b/tests/nl-test-util.h +@@ -449,6 +449,10 @@ bool _nltst_skip_no_iproute2(const char *msg); + + /*****************************************************************************/ + ++bool _nltst_skip_eopnotsupp(int err); ++ ++/*****************************************************************************/ ++ + typedef struct { + int addr_family; + int ifindex; diff --git a/meta/recipes-support/libnl/files/0001-tests-cksuite-all-netns.c-disable-route_1.patch b/meta/recipes-support/libnl/files/0001-tests-cksuite-all-netns.c-disable-route_1.patch deleted file mode 100644 index cc5e3890a11..00000000000 --- a/meta/recipes-support/libnl/files/0001-tests-cksuite-all-netns.c-disable-route_1.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 9e45c8809fc4e0aa1dd2ec2ac3e57352049f1b92 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin -Date: Tue, 20 Aug 2024 19:01:59 +0200 -Subject: [PATCH] tests/cksuite-all-netns.c: disable route_1 - -This is a new test added in https://github.com/thom311/libnl/commit/49f7822961f5bc6b18cd2a2d3f3b8d2ab0896d3f -and while it passes on host Debian, it doesn't inside poky. - -Investigation into why is proceeding slowly, and I'm simply -not skilled enough in AF_NETLINK, so let's disable until the -core reason for the fail is arrived at. - -Upstream-Status: Inappropriate [fail reported and investigated at https://github.com/thom311/libnl/issues/399] -Signed-off-by: Alexander Kanavin ---- - tests/cksuite-all-netns.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tests/cksuite-all-netns.c b/tests/cksuite-all-netns.c -index 5b9d3a5..b2fc46a 100644 ---- a/tests/cksuite-all-netns.c -+++ b/tests/cksuite-all-netns.c -@@ -341,7 +341,7 @@ Suite *make_nl_netns_suite(void) - nltst_netns_fixture_teardown); - tcase_add_test(tc, cache_and_clone); - tcase_add_loop_test(tc, test_create_iface, 0, 17); -- tcase_add_test(tc, route_1); -+ //tcase_add_test(tc, route_1); - suite_add_tcase(suite, tc); - - return suite; diff --git a/meta/recipes-support/libnl/files/0002-tests-skip-various-tests-when-kernel-returns-EOPNOTS.patch b/meta/recipes-support/libnl/files/0002-tests-skip-various-tests-when-kernel-returns-EOPNOTS.patch new file mode 100644 index 00000000000..e00ca9baaf4 --- /dev/null +++ b/meta/recipes-support/libnl/files/0002-tests-skip-various-tests-when-kernel-returns-EOPNOTS.patch @@ -0,0 +1,120 @@ +From 09330c29d3322881d0215013962bff7549ca885c Mon Sep 17 00:00:00 2001 +From: Thomas Haller +Date: Tue, 23 Dec 2025 21:35:06 +0100 +Subject: [PATCH] tests: skip various tests when kernel returns EOPNOTSUPP + (NLE_OPNOTSUPP) + +https://github.com/thom311/libnl/issues/448 + +Upstream-Status: Backport [https://github.com/thom311/libnl/commit/1ac4b32] +Signed-off-by: Alexander Kanavin +--- + tests/cksuite-link-ip6tnl.c | 2 ++ + tests/cksuite-route-nexthop.c | 6 +++++- + tests/cksuite-route-nh.c | 21 ++++++++++++++++++--- + 3 files changed, 25 insertions(+), 4 deletions(-) + +diff --git a/tests/cksuite-link-ip6tnl.c b/tests/cksuite-link-ip6tnl.c +index ea785b8..c5dc353 100644 +--- a/tests/cksuite-link-ip6tnl.c ++++ b/tests/cksuite-link-ip6tnl.c +@@ -97,6 +97,8 @@ START_TEST(test_kernel_roundtrip_all) + * This tests the netlink-message construction. + */ + r = rtnl_link_add(sk, link, NLM_F_CREATE); ++ if (_nltst_skip_eopnotsupp(r)) ++ return; + ck_assert_int_eq(r, 0); + + /* Now, query it and check whether all the attributes passed. +diff --git a/tests/cksuite-route-nexthop.c b/tests/cksuite-route-nexthop.c +index 34fc1d3..971a580 100644 +--- a/tests/cksuite-route-nexthop.c ++++ b/tests/cksuite-route-nexthop.c +@@ -416,6 +416,7 @@ START_TEST(test_kernel_route_roundtrip_nh_mpls_encap_v4) + struct rtnl_nh_encap *encap2; + struct rtnl_nexthop *nh = NULL; + int ifindex_dummy; ++ int r; + + if (_nltst_skip_no_netns()) + return; +@@ -447,7 +448,10 @@ START_TEST(test_kernel_route_roundtrip_nh_mpls_encap_v4) + ck_assert_int_eq(rtnl_route_nh_set_encap(nh, encap2), 0); + rtnl_route_add_nexthop(route, nh); + +- ck_assert_int_eq(rtnl_route_add(sk, route, NLM_F_CREATE), 0); ++ r = rtnl_route_add(sk, route, NLM_F_CREATE); ++ if (_nltst_skip_eopnotsupp(r)) ++ return; ++ ck_assert_int_eq(r, 0); + + /* Retrieve the route back by its prefix and validate MPLS encap on nexthop */ + ck_assert_int_eq(nltst_route_get_by_dst(sk, dst, &got), 0); +diff --git a/tests/cksuite-route-nh.c b/tests/cksuite-route-nh.c +index 8409e18..500768b 100644 +--- a/tests/cksuite-route-nh.c ++++ b/tests/cksuite-route-nh.c +@@ -91,6 +91,7 @@ START_TEST(test_kernel_roundtrip_encap_mpls) + _nl_auto_nl_addr struct nl_addr *labels = NULL; + struct rtnl_nh_encap *encap = NULL; + int ifindex_dummy; ++ int r; + + if (_nltst_skip_no_netns()) + return; +@@ -127,7 +128,11 @@ START_TEST(test_kernel_roundtrip_encap_mpls) + ck_assert_int_eq(rtnl_nh_add(sk, nh, NLM_F_CREATE), -NLE_INVAL); + + ck_assert_int_eq(rtnl_nh_set_family(nh, AF_INET), 0); +- ck_assert_int_eq(rtnl_nh_add(sk, nh, NLM_F_CREATE), 0); ++ ++ r = rtnl_nh_add(sk, nh, NLM_F_CREATE); ++ if (_nltst_skip_eopnotsupp(r)) ++ return; ++ ck_assert_int_eq(r, 0); + + /* Query and verify */ + ck_assert_int_eq(rtnl_nh_alloc_cache(sk, AF_UNSPEC, &cache), 0); +@@ -944,6 +949,7 @@ START_TEST(test_kernel_roundtrip_encap_ip6) + _nl_auto_rtnl_nh_encap struct rtnl_nh_encap *encap = NULL; + uint16_t flags; + int ifindex_dummy; ++ int r; + + if (_nltst_skip_no_netns()) + return; +@@ -980,7 +986,11 @@ START_TEST(test_kernel_roundtrip_encap_ip6) + /* Set required attributes and add */ + ck_assert_int_eq(rtnl_nh_set_oif(nh, (uint32_t)ifindex_dummy), 0); + ck_assert_int_eq(rtnl_nh_set_family(nh, AF_INET6), 0); +- ck_assert_int_eq(rtnl_nh_add(sk, nh, NLM_F_CREATE), 0); ++ ++ r = rtnl_nh_add(sk, nh, NLM_F_CREATE); ++ if (_nltst_skip_eopnotsupp(r)) ++ return; ++ ck_assert_int_eq(r, 0); + + /* Query and verify */ + ck_assert_int_eq(rtnl_nh_alloc_cache(sk, AF_UNSPEC, &cache), 0); +@@ -1097,6 +1107,7 @@ START_TEST(test_kernel_roundtrip_encap_ip) + _nl_auto_rtnl_nh_encap struct rtnl_nh_encap *encap = NULL; + int ifindex_dummy; + uint64_t id = 0; ++ int r; + + if (_nltst_skip_no_netns()) + return; +@@ -1132,7 +1143,11 @@ START_TEST(test_kernel_roundtrip_encap_ip) + /* Set required attributes and add */ + ck_assert_int_eq(rtnl_nh_set_oif(nh, (uint32_t)ifindex_dummy), 0); + ck_assert_int_eq(rtnl_nh_set_family(nh, AF_INET), 0); +- ck_assert_int_eq(rtnl_nh_add(sk, nh, NLM_F_CREATE), 0); ++ ++ r = rtnl_nh_add(sk, nh, NLM_F_CREATE); ++ if (_nltst_skip_eopnotsupp(r)) ++ return; ++ ck_assert_int_eq(r, 0); + + /* Query and verify */ + ck_assert_int_eq(rtnl_nh_alloc_cache(sk, AF_UNSPEC, &cache), 0); diff --git a/meta/recipes-support/libnl/libnl_3.11.0.bb b/meta/recipes-support/libnl/libnl_3.12.0.bb similarity index 90% rename from meta/recipes-support/libnl/libnl_3.11.0.bb rename to meta/recipes-support/libnl/libnl_3.12.0.bb index 26c87dbb1c3..f28687e695d 100644 --- a/meta/recipes-support/libnl/libnl_3.11.0.bb +++ b/meta/recipes-support/libnl/libnl_3.12.0.bb @@ -16,10 +16,11 @@ DEPENDS = "flex-native bison-native" SRC_URI = "${GITHUB_BASE_URI}/download/${BPN}${@d.getVar('PV').replace('.','_')}/${BP}.tar.gz \ file://run-ptest \ - file://0001-tests-cksuite-all-netns.c-disable-route_1.patch \ + file://0002-tests-skip-various-tests-when-kernel-returns-EOPNOTS.patch \ + file://0001-tests-add-and-use-_nltst_skip_eopnotsupp-helper.patch \ " -SRC_URI[sha256sum] = "2a56e1edefa3e68a7c00879496736fdbf62fc94ed3232c0baba127ecfa76874d" +SRC_URI[sha256sum] = "fc51ca7196f1a3f5fdf6ffd3864b50f4f9c02333be28be4eeca057e103c0dd18" GITHUB_BASE_URI = "https://github.com/thom311/${BPN}/releases" UPSTREAM_CHECK_REGEX = "releases/tag/libnl(?P.+)"