]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core.git/commitdiff
libnl: upgrade 3.11.0 -> 3.12.0
authorAlexander Kanavin <alex@linutronix.de>
Mon, 29 Dec 2025 12:45:38 +0000 (13:45 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 31 Dec 2025 12:21:52 +0000 (12:21 +0000)
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 <alex@linutronix.de>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-support/libnl/files/0001-tests-add-and-use-_nltst_skip_eopnotsupp-helper.patch [new file with mode: 0644]
meta/recipes-support/libnl/files/0001-tests-cksuite-all-netns.c-disable-route_1.patch [deleted file]
meta/recipes-support/libnl/files/0002-tests-skip-various-tests-when-kernel-returns-EOPNOTS.patch [new file with mode: 0644]
meta/recipes-support/libnl/libnl_3.12.0.bb [moved from meta/recipes-support/libnl/libnl_3.11.0.bb with 90% similarity]

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 (file)
index 0000000..0f7ce5b
--- /dev/null
@@ -0,0 +1,81 @@
+From 193bd72d1ca66f7c97fdc78782617302b7724c52 Mon Sep 17 00:00:00 2001
+From: Thomas Haller <thom311@gmail.com>
+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 <alex@linutronix.de>
+---
+ 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 (file)
index cc5e389..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-From 9e45c8809fc4e0aa1dd2ec2ac3e57352049f1b92 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex@linutronix.de>
-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 <alex@linutronix.de>
----
- 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 (file)
index 0000000..e00ca9b
--- /dev/null
@@ -0,0 +1,120 @@
+From 09330c29d3322881d0215013962bff7549ca885c Mon Sep 17 00:00:00 2001
+From: Thomas Haller <thom311@gmail.com>
+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 <alex@linutronix.de>
+---
+ 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);
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 26c87dbb1c3e285e418f655e4dc0d8bf70b7205b..f28687e695d0cff6a298eada147a0f7361c86463 100644 (file)
@@ -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<pver>.+)"