[openwrt/openwrt] iproute2: fix GCC14 compilation
LEDE Commits
lede-commits at lists.infradead.org
Tue Dec 31 04:17:37 PST 2024
robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/e0eca57b6e9298c2ea8aebf9cfea86271b77ebd0
commit e0eca57b6e9298c2ea8aebf9cfea86271b77ebd0
Author: Rosen Penev <rosenp at gmail.com>
AuthorDate: Mon Dec 23 14:00:02 2024 -0800
iproute2: fix GCC14 compilation
Missing limits.h. Upstream backport.
Add extra backports. Replace Alpine Linux patch with upstream one. Same
with patch 400.
Signed-off-by: Rosen Penev <rosenp at gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17426
Signed-off-by: Robert Marko <robimarko at gmail.com>
---
package/network/utils/iproute2/Makefile | 2 +-
...libnetlink-fix-build-with-musl-and-gcc-14.patch | 28 ----
.../utils/iproute2/patches/013-endian.h.patch | 22 +++
.../utils/iproute2/patches/014-basename.patch | 29 ++++
.../utils/iproute2/patches/015-limits.h.patch | 84 ++++++++++
.../utils/iproute2/patches/016-limits.h.patch | 26 +++
.../utils/iproute2/patches/017-linux-limits.patch | 178 +++++++++++++++++++++
.../utils/iproute2/patches/018-linux-limits.patch | 37 +++++
.../400-rdma-include-libgen.h-for-basename.patch | 10 --
9 files changed, 377 insertions(+), 39 deletions(-)
diff --git a/package/network/utils/iproute2/Makefile b/package/network/utils/iproute2/Makefile
index 73710ae4ef..ca6793d49b 100644
--- a/package/network/utils/iproute2/Makefile
+++ b/package/network/utils/iproute2/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=iproute2
PKG_VERSION:=6.12.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2
diff --git a/package/network/utils/iproute2/patches/012-libnetlink-fix-build-with-musl-and-gcc-14.patch b/package/network/utils/iproute2/patches/012-libnetlink-fix-build-with-musl-and-gcc-14.patch
deleted file mode 100644
index 749176a8de..0000000000
--- a/package/network/utils/iproute2/patches/012-libnetlink-fix-build-with-musl-and-gcc-14.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Natanael Copa <ncopa at alpinelinux.org>
-Date: Thu, 8 Aug 2024 09:19:01 +0200
-Subject: libnetlink: fix build with musl and gcc 14
-
-Fixes compilation error with musl libc and gcc 14:
-
-../include/libnetlink.h: In function 'rta_getattr_be64':
-../include/libnetlink.h:280:16: error: implicit declaration of function 'htobe64' [-Wimplicit-function-declaration]
- 280 | return htobe64(rta_getattr_u64(rta));
- | ^~~~~~~
-
-Reference: https://man7.org/linux/man-pages/man3/endian.3.html
-Signed-off-by: Natanael Copa <ncopa at alpinelinux.org>
----
- include/libnetlink.h | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/include/libnetlink.h
-+++ b/include/libnetlink.h
-@@ -2,6 +2,7 @@
- #ifndef __LIBNETLINK_H__
- #define __LIBNETLINK_H__ 1
-
-+#include <endian.h>
- #include <stdio.h>
- #include <string.h>
- #include <asm/types.h>
diff --git a/package/network/utils/iproute2/patches/013-endian.h.patch b/package/network/utils/iproute2/patches/013-endian.h.patch
new file mode 100644
index 0000000000..a81c3b5eec
--- /dev/null
+++ b/package/network/utils/iproute2/patches/013-endian.h.patch
@@ -0,0 +1,22 @@
+From c8b3ecc22ed0edaf0259eaf7d1a5c04f300ad6e4 Mon Sep 17 00:00:00 2001
+From: Stephen Hemminger <stephen at networkplumber.org>
+Date: Thu, 12 Dec 2024 11:24:18 -0800
+Subject: [PATCH] libnetlink: add missing endian.h
+
+Need endian.h to get htobe64 with musl.
+
+Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
+---
+ include/libnetlink.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/include/libnetlink.h
++++ b/include/libnetlink.h
+@@ -4,6 +4,7 @@
+
+ #include <stdio.h>
+ #include <string.h>
++#include <endian.h>
+ #include <asm/types.h>
+ #include <linux/netlink.h>
+ #include <linux/rtnetlink.h>
diff --git a/package/network/utils/iproute2/patches/014-basename.patch b/package/network/utils/iproute2/patches/014-basename.patch
new file mode 100644
index 0000000000..f98238ec65
--- /dev/null
+++ b/package/network/utils/iproute2/patches/014-basename.patch
@@ -0,0 +1,29 @@
+From fa3949b792e275f75d7d6200dc2036ef7fff8816 Mon Sep 17 00:00:00 2001
+From: Stephen Hemminger <stephen at networkplumber.org>
+Date: Thu, 12 Dec 2024 11:21:56 -0800
+Subject: [PATCH] rdma: add missing header for basename
+
+The function basename prototype is in libgen.h
+Fixes build on musl
+
+Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
+---
+ rdma/rdma.h | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/rdma/rdma.h
++++ b/rdma/rdma.h
+@@ -10,11 +10,12 @@
+ #include <string.h>
+ #include <errno.h>
+ #include <getopt.h>
++#include <time.h>
++#include <libgen.h>
+ #include <netinet/in.h>
+ #include <libmnl/libmnl.h>
+ #include <rdma/rdma_netlink.h>
+ #include <rdma/rdma_user_cm.h>
+-#include <time.h>
+ #include <net/if_arp.h>
+
+ #include "list.h"
diff --git a/package/network/utils/iproute2/patches/015-limits.h.patch b/package/network/utils/iproute2/patches/015-limits.h.patch
new file mode 100644
index 0000000000..e212b88ebd
--- /dev/null
+++ b/package/network/utils/iproute2/patches/015-limits.h.patch
@@ -0,0 +1,84 @@
+From 7e23da91fca6e5dedeb32a7d308cf20982e897c3 Mon Sep 17 00:00:00 2001
+From: Stephen Hemminger <stephen at networkplumber.org>
+Date: Tue, 10 Dec 2024 13:38:08 -0800
+Subject: [PATCH] ip: rearrange and prune header files
+
+The recent report of issues with missing limits.h impacting musl
+suggested looking at what files are and are not included in ip code.
+
+The standard practice is to put standard headers first, then system,
+then local headers. Used iwyu to get suggestions about missing
+and extraneous headers.
+
+Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
+---
+ ip/iplink.c | 13 +++++--------
+ ip/ipnetns.c | 19 +++++++++----------
+ 2 files changed, 14 insertions(+), 18 deletions(-)
+
+--- a/ip/iplink.c
++++ b/ip/iplink.c
+@@ -11,17 +11,14 @@
+ #include <fcntl.h>
+ #include <dlfcn.h>
+ #include <errno.h>
++#include <string.h>
++#include <strings.h>
++#include <limits.h>
++
+ #include <sys/socket.h>
++#include <arpa/inet.h>
+ #include <linux/if.h>
+-#include <linux/if_packet.h>
+ #include <linux/if_ether.h>
+-#include <linux/sockios.h>
+-#include <netinet/in.h>
+-#include <arpa/inet.h>
+-#include <string.h>
+-#include <sys/ioctl.h>
+-#include <stdbool.h>
+-#include <linux/mpls.h>
+
+ #include "rt_names.h"
+ #include "utils.h"
+--- a/ip/ipnetns.c
++++ b/ip/ipnetns.c
+@@ -1,21 +1,21 @@
+ /* SPDX-License-Identifier: GPL-2.0 */
+ #define _ATFILE_SOURCE
+-#include <sys/file.h>
+-#include <sys/types.h>
+-#include <sys/stat.h>
+-#include <sys/wait.h>
+-#include <sys/inotify.h>
+-#include <sys/mount.h>
+-#include <sys/syscall.h>
++
+ #include <stdio.h>
++#include <stdint.h>
+ #include <string.h>
+-#include <sched.h>
+ #include <fcntl.h>
+ #include <dirent.h>
+ #include <errno.h>
+ #include <unistd.h>
+ #include <ctype.h>
+-#include <linux/limits.h>
++#include <limits.h>
++
++#include <sys/file.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <sys/inotify.h>
++#include <sys/mount.h>
+
+ #include <linux/net_namespace.h>
+
+@@ -23,7 +23,6 @@
+ #include "list.h"
+ #include "ip_common.h"
+ #include "namespace.h"
+-#include "json_print.h"
+
+ static int usage(void)
+ {
diff --git a/package/network/utils/iproute2/patches/016-limits.h.patch b/package/network/utils/iproute2/patches/016-limits.h.patch
new file mode 100644
index 0000000000..c20404f6fd
--- /dev/null
+++ b/package/network/utils/iproute2/patches/016-limits.h.patch
@@ -0,0 +1,26 @@
+From f982f30e166a02e09097de05129449031ba51f76 Mon Sep 17 00:00:00 2001
+From: Stephen Hemminger <stephen at networkplumber.org>
+Date: Thu, 12 Dec 2024 11:29:44 -0800
+Subject: [PATCH] cg_map: use limits.h
+
+Prefer limits.h from system headers over linux/limits.h
+Fixes build with musl.
+
+Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
+---
+ lib/cg_map.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/lib/cg_map.c
++++ b/lib/cg_map.c
+@@ -9,8 +9,9 @@
+ #include <string.h>
+ #include <stdio.h>
+ #include <stdbool.h>
++#include <limits.h>
++
+ #include <linux/types.h>
+-#include <linux/limits.h>
+ #include <ftw.h>
+
+ #include "cg_map.h"
diff --git a/package/network/utils/iproute2/patches/017-linux-limits.patch b/package/network/utils/iproute2/patches/017-linux-limits.patch
new file mode 100644
index 0000000000..0c5d138402
--- /dev/null
+++ b/package/network/utils/iproute2/patches/017-linux-limits.patch
@@ -0,0 +1,178 @@
+From ac547ad027e3d4e283202ecb487cf54707234491 Mon Sep 17 00:00:00 2001
+From: Stephen Hemminger <stephen at networkplumber.org>
+Date: Thu, 12 Dec 2024 14:15:59 -0800
+Subject: [PATCH] flower: replace XATTR_SIZE_MAX
+
+The flower tc parser was using XATTR_SIZE_MAX from linux/limits.h,
+but this constant is intended to before extended filesystem attributes
+not for TC. Replace it with a local define.
+
+This fixes issue on systems with musl and XATTR_SIZE_MAX is not
+defined in limits.h there.
+
+Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
+---
+ tc/f_flower.c | 37 ++++++++++++++++++++-----------------
+ 1 file changed, 20 insertions(+), 17 deletions(-)
+
+--- a/tc/f_flower.c
++++ b/tc/f_flower.c
+@@ -10,7 +10,7 @@
+ #include <unistd.h>
+ #include <string.h>
+ #include <net/if.h>
+-#include <linux/limits.h>
++
+ #include <linux/if_arp.h>
+ #include <linux/if_ether.h>
+ #include <linux/ip.h>
+@@ -22,6 +22,9 @@
+ #include "tc_util.h"
+ #include "rt_names.h"
+
++/* maximum length of options string */
++#define FLOWER_OPTS_MAX 4096
++
+ #ifndef IPPROTO_L2TP
+ #define IPPROTO_L2TP 115
+ #endif
+@@ -1252,7 +1255,7 @@ static int flower_check_enc_opt_key(char
+
+ static int flower_parse_enc_opts_geneve(char *str, struct nlmsghdr *n)
+ {
+- char key[XATTR_SIZE_MAX], mask[XATTR_SIZE_MAX];
++ char key[FLOWER_OPTS_MAX], mask[FLOWER_OPTS_MAX];
+ int data_len, key_len, mask_len, err;
+ char *token, *slash;
+ struct rtattr *nest;
+@@ -1265,7 +1268,7 @@ static int flower_parse_enc_opts_geneve(
+ if (slash)
+ *slash = '\0';
+
+- if ((key_len + strlen(token) > XATTR_SIZE_MAX) ||
++ if ((key_len + strlen(token) > FLOWER_OPTS_MAX) ||
+ flower_check_enc_opt_key(token))
+ return -1;
+
+@@ -1275,7 +1278,7 @@ static int flower_parse_enc_opts_geneve(
+
+ if (!slash) {
+ /* Pad out mask when not provided */
+- if (mask_len + strlen(token) > XATTR_SIZE_MAX)
++ if (mask_len + strlen(token) > FLOWER_OPTS_MAX)
+ return -1;
+
+ data_len = strlen(rindex(token, ':'));
+@@ -1288,7 +1291,7 @@ static int flower_parse_enc_opts_geneve(
+ continue;
+ }
+
+- if (mask_len + strlen(slash + 1) > XATTR_SIZE_MAX)
++ if (mask_len + strlen(slash + 1) > FLOWER_OPTS_MAX)
+ return -1;
+
+ strcpy(&mask[mask_len], slash + 1);
+@@ -1318,7 +1321,7 @@ static int flower_parse_enc_opts_geneve(
+
+ static int flower_parse_enc_opts_vxlan(char *str, struct nlmsghdr *n)
+ {
+- char key[XATTR_SIZE_MAX], mask[XATTR_SIZE_MAX];
++ char key[FLOWER_OPTS_MAX], mask[FLOWER_OPTS_MAX];
+ struct rtattr *nest;
+ char *slash;
+ int err;
+@@ -1326,14 +1329,14 @@ static int flower_parse_enc_opts_vxlan(c
+ slash = strchr(str, '/');
+ if (slash) {
+ *slash++ = '\0';
+- if (strlen(slash) > XATTR_SIZE_MAX)
++ if (strlen(slash) > FLOWER_OPTS_MAX)
+ return -1;
+ strcpy(mask, slash);
+ } else {
+ strcpy(mask, "0xffffffff");
+ }
+
+- if (strlen(str) > XATTR_SIZE_MAX)
++ if (strlen(str) > FLOWER_OPTS_MAX)
+ return -1;
+ strcpy(key, str);
+
+@@ -1355,7 +1358,7 @@ static int flower_parse_enc_opts_vxlan(c
+
+ static int flower_parse_enc_opts_erspan(char *str, struct nlmsghdr *n)
+ {
+- char key[XATTR_SIZE_MAX], mask[XATTR_SIZE_MAX];
++ char key[FLOWER_OPTS_MAX], mask[FLOWER_OPTS_MAX];
+ struct rtattr *nest;
+ char *slash;
+ int err;
+@@ -1364,7 +1367,7 @@ static int flower_parse_enc_opts_erspan(
+ slash = strchr(str, '/');
+ if (slash) {
+ *slash++ = '\0';
+- if (strlen(slash) > XATTR_SIZE_MAX)
++ if (strlen(slash) > FLOWER_OPTS_MAX)
+ return -1;
+ strcpy(mask, slash);
+ } else {
+@@ -1376,7 +1379,7 @@ static int flower_parse_enc_opts_erspan(
+ strcpy(mask + index, ":0xffffffff:0xff:0xff");
+ }
+
+- if (strlen(str) > XATTR_SIZE_MAX)
++ if (strlen(str) > FLOWER_OPTS_MAX)
+ return -1;
+ strcpy(key, str);
+
+@@ -1398,7 +1401,7 @@ static int flower_parse_enc_opts_erspan(
+
+ static int flower_parse_enc_opts_gtp(char *str, struct nlmsghdr *n)
+ {
+- char key[XATTR_SIZE_MAX], mask[XATTR_SIZE_MAX];
++ char key[FLOWER_OPTS_MAX], mask[FLOWER_OPTS_MAX];
+ struct rtattr *nest;
+ char *slash;
+ int err;
+@@ -1406,13 +1409,13 @@ static int flower_parse_enc_opts_gtp(cha
+ slash = strchr(str, '/');
+ if (slash) {
+ *slash++ = '\0';
+- if (strlen(slash) > XATTR_SIZE_MAX)
++ if (strlen(slash) > FLOWER_OPTS_MAX)
+ return -1;
+ strcpy(mask, slash);
+ } else
+ strcpy(mask, "ff:ff");
+
+- if (strlen(str) > XATTR_SIZE_MAX)
++ if (strlen(str) > FLOWER_OPTS_MAX)
+ return -1;
+ strcpy(key, str);
+
+@@ -1433,7 +1436,7 @@ static int flower_parse_enc_opts_gtp(cha
+
+ static int flower_parse_enc_opts_pfcp(char *str, struct nlmsghdr *n)
+ {
+- char key[XATTR_SIZE_MAX], mask[XATTR_SIZE_MAX];
++ char key[FLOWER_OPTS_MAX], mask[FLOWER_OPTS_MAX];
+ struct rtattr *nest;
+ char *slash;
+ int err;
+@@ -1442,14 +1445,14 @@ static int flower_parse_enc_opts_pfcp(ch
+ slash = strchr(str, '/');
+ if (slash) {
+ *slash++ = '\0';
+- if (strlen(slash) > XATTR_SIZE_MAX)
++ if (strlen(slash) > FLOWER_OPTS_MAX)
+ return -1;
+ strcpy(mask, slash);
+ } else {
+ strcpy(mask, "ff:ffffffffffffffff");
+ }
+
+- if (strlen(str) > XATTR_SIZE_MAX)
++ if (strlen(str) > FLOWER_OPTS_MAX)
+ return -1;
+ strcpy(key, str);
+
diff --git a/package/network/utils/iproute2/patches/018-linux-limits.patch b/package/network/utils/iproute2/patches/018-linux-limits.patch
new file mode 100644
index 0000000000..8c2669acd9
--- /dev/null
+++ b/package/network/utils/iproute2/patches/018-linux-limits.patch
@@ -0,0 +1,37 @@
+From 458dce5d0431f0589aca1bc841904b5d1db3bbce Mon Sep 17 00:00:00 2001
+From: Stephen Hemminger <stephen at networkplumber.org>
+Date: Thu, 12 Dec 2024 14:18:35 -0800
+Subject: [PATCH] uapi: remove no longer used linux/limits.h
+
+Code is now using limits.h instead.
+
+Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
+---
+ include/uapi/linux/limits.h | 21 ---------------------
+ 1 file changed, 21 deletions(-)
+ delete mode 100644 include/uapi/linux/limits.h
+
+--- a/include/uapi/linux/limits.h
++++ /dev/null
+@@ -1,21 +0,0 @@
+-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+-#ifndef _LINUX_LIMITS_H
+-#define _LINUX_LIMITS_H
+-
+-#define NR_OPEN 1024
+-
+-#define NGROUPS_MAX 65536 /* supplemental group IDs are available */
+-#define ARG_MAX 131072 /* # bytes of args + environ for exec() */
+-#define LINK_MAX 127 /* # links a file may have */
+-#define MAX_CANON 255 /* size of the canonical input queue */
+-#define MAX_INPUT 255 /* size of the type-ahead buffer */
+-#define NAME_MAX 255 /* # chars in a file name */
+-#define PATH_MAX 4096 /* # chars in a path name including nul */
+-#define PIPE_BUF 4096 /* # bytes in atomic write to a pipe */
+-#define XATTR_NAME_MAX 255 /* # chars in an extended attribute name */
+-#define XATTR_SIZE_MAX 65536 /* size of an extended attribute value (64k) */
+-#define XATTR_LIST_MAX 65536 /* size of extended attribute namelist (64k) */
+-
+-#define RTSIG_MAX 32
+-
+-#endif
diff --git a/package/network/utils/iproute2/patches/400-rdma-include-libgen.h-for-basename.patch b/package/network/utils/iproute2/patches/400-rdma-include-libgen.h-for-basename.patch
deleted file mode 100644
index 530d2bcffc..0000000000
--- a/package/network/utils/iproute2/patches/400-rdma-include-libgen.h-for-basename.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/rdma/rdma.h
-+++ b/rdma/rdma.h
-@@ -16,6 +16,7 @@
- #include <rdma/rdma_user_cm.h>
- #include <time.h>
- #include <net/if_arp.h>
-+#include <libgen.h>
-
- #include "list.h"
- #include "utils.h"
More information about the lede-commits
mailing list