mirror of
				https://github.com/Ysurac/openmptcprouter-feeds.git
				synced 2025-03-09 15:40:03 +00:00 
			
		
		
		
	Update iproute2
This commit is contained in:
		
							parent
							
								
									d1f504de31
								
							
						
					
					
						commit
						3daacde7bc
					
				
					 12 changed files with 381 additions and 222 deletions
				
			
		| 
						 | 
				
			
			@ -8,12 +8,12 @@
 | 
			
		|||
include $(TOPDIR)/rules.mk
 | 
			
		||||
 | 
			
		||||
PKG_NAME:=iproute2
 | 
			
		||||
PKG_VERSION:=6.11.0
 | 
			
		||||
PKG_RELEASE:=1
 | 
			
		||||
PKG_VERSION:=6.12.0
 | 
			
		||||
PKG_RELEASE:=2
 | 
			
		||||
 | 
			
		||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 | 
			
		||||
PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2
 | 
			
		||||
PKG_HASH:=1f795398a04aeaacd06a8f6ace2cfd913c33fa5953ca99daae83bb5c534611c3
 | 
			
		||||
PKG_HASH:=bbd141ef7b5d0127cc2152843ba61f274dc32814fa3e0f13e7d07a080bef53d9
 | 
			
		||||
PKG_BUILD_PARALLEL:=1
 | 
			
		||||
PKG_BUILD_DEPENDS:=iptables
 | 
			
		||||
PKG_LICENSE:=GPL-2.0
 | 
			
		||||
| 
						 | 
				
			
			@ -77,14 +77,7 @@ $(call Package/iproute2/Default)
 | 
			
		|||
  VARIANT:=tcfull
 | 
			
		||||
  PROVIDES:=tc
 | 
			
		||||
  ALTERNATIVES:=400:/sbin/tc:/usr/libexec/tc-full
 | 
			
		||||
  DEPENDS:=+kmod-sched-core +(PACKAGE_devlink||PACKAGE_rdma):libmnl +libbpf +libxtables +tc-mod-iptables
 | 
			
		||||
endef
 | 
			
		||||
 | 
			
		||||
define Package/tc-mod-iptables
 | 
			
		||||
$(call Package/iproute2/Default)
 | 
			
		||||
  TITLE:=Traffic control module - iptables action
 | 
			
		||||
  VARIANT:=tcfull
 | 
			
		||||
  DEPENDS:=+libxtables +libbpf
 | 
			
		||||
  DEPENDS:=+kmod-sched-core +(PACKAGE_devlink||PACKAGE_rdma):libmnl +libbpf +libxtables
 | 
			
		||||
endef
 | 
			
		||||
 | 
			
		||||
define Package/genl
 | 
			
		||||
| 
						 | 
				
			
			@ -102,7 +95,7 @@ endef
 | 
			
		|||
define Package/ss
 | 
			
		||||
$(call Package/iproute2/Default)
 | 
			
		||||
  TITLE:=Socket statistics utility
 | 
			
		||||
  DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl +kmod-netlink-diag
 | 
			
		||||
  DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl +libbpf +kmod-netlink-diag
 | 
			
		||||
endef
 | 
			
		||||
 | 
			
		||||
define Package/nstat
 | 
			
		||||
| 
						 | 
				
			
			@ -232,11 +225,6 @@ define Package/tc-full/install
 | 
			
		|||
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/tc/tc $(1)/usr/libexec/tc-full
 | 
			
		||||
endef
 | 
			
		||||
 | 
			
		||||
define Package/tc-mod-iptables/install
 | 
			
		||||
	$(INSTALL_DIR) $(1)/usr/lib/tc
 | 
			
		||||
	$(CP) $(PKG_BUILD_DIR)/tc/m_xt.so $(1)/usr/lib/tc
 | 
			
		||||
endef
 | 
			
		||||
 | 
			
		||||
define Package/genl/install
 | 
			
		||||
	$(INSTALL_DIR) $(1)/usr/sbin
 | 
			
		||||
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/genl/genl $(1)/usr/sbin/
 | 
			
		||||
| 
						 | 
				
			
			@ -269,9 +257,6 @@ endef
 | 
			
		|||
 | 
			
		||||
$(eval $(call BuildPackage,ip-tiny))
 | 
			
		||||
$(eval $(call BuildPackage,ip-full))
 | 
			
		||||
# build tc-mod-iptables before its dependents, to avoid
 | 
			
		||||
# spurious rebuilds when building multiple variants.
 | 
			
		||||
$(eval $(call BuildPackage,tc-mod-iptables))
 | 
			
		||||
$(eval $(call BuildPackage,tc-tiny))
 | 
			
		||||
$(eval $(call BuildPackage,tc-bpf))
 | 
			
		||||
$(eval $(call BuildPackage,tc-full))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,68 +0,0 @@
 | 
			
		|||
From 6a77abab92516e65f07f8657fc4e384c4541ce0e Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Dario Binacchi <dario.binacchi@amarulasolutions.com>
 | 
			
		||||
Date: Sun, 22 Sep 2024 16:50:10 +0200
 | 
			
		||||
Subject: bridge: mst: fix a musl build issue
 | 
			
		||||
 | 
			
		||||
This patch fixes a compilation error raised by the bump to version 6.11.0
 | 
			
		||||
in Buildroot using musl as the C library for the cross-compilation
 | 
			
		||||
toolchain.
 | 
			
		||||
 | 
			
		||||
After setting the CFLGAS
 | 
			
		||||
 | 
			
		||||
ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)
 | 
			
		||||
IPROUTE2_CFLAGS += -D__UAPI_DEF_IN6_ADDR=0 -D__UAPI_DEF_SOCKADDR_IN6=0 \
 | 
			
		||||
			-D__UAPI_DEF_IPV6_MREQ=0
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
to fix the following errors:
 | 
			
		||||
 | 
			
		||||
In file included from ../../../host/mips64-buildroot-linux-musl/sysroot/usr/include/arpa/inet.h:9,
 | 
			
		||||
                 from ../include/libnetlink.h:14,
 | 
			
		||||
                 from mst.c:10:
 | 
			
		||||
../../../host/mips64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:23:8: error: redefinition of 'struct in6_addr'
 | 
			
		||||
   23 | struct in6_addr {
 | 
			
		||||
      |        ^~~~~~~~
 | 
			
		||||
In file included from ../include/uapi/linux/if_bridge.h:19,
 | 
			
		||||
                 from mst.c:7:
 | 
			
		||||
../include/uapi/linux/in6.h:33:8: note: originally defined here
 | 
			
		||||
   33 | struct in6_addr {
 | 
			
		||||
      |        ^~~~~~~~
 | 
			
		||||
../../../host/mips64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:34:8: error: redefinition of 'struct sockaddr_in6'
 | 
			
		||||
   34 | struct sockaddr_in6 {
 | 
			
		||||
      |        ^~~~~~~~~~~~
 | 
			
		||||
../include/uapi/linux/in6.h:50:8: note: originally defined here
 | 
			
		||||
   50 | struct sockaddr_in6 {
 | 
			
		||||
      |        ^~~~~~~~~~~~
 | 
			
		||||
../../../host/mips64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:42:8: error: redefinition of 'struct ipv6_mreq'
 | 
			
		||||
   42 | struct ipv6_mreq {
 | 
			
		||||
      |        ^~~~~~~~~
 | 
			
		||||
../include/uapi/linux/in6.h:60:8: note: originally defined here
 | 
			
		||||
   60 | struct ipv6_mreq {
 | 
			
		||||
 | 
			
		||||
I got this further errors
 | 
			
		||||
 | 
			
		||||
../include/uapi/linux/in6.h:72:25: error: field 'flr_dst' has incomplete type
 | 
			
		||||
   72 |         struct in6_addr flr_dst;
 | 
			
		||||
      |                         ^~~~~~~
 | 
			
		||||
../include/uapi/linux/if_bridge.h:711:41: error: field 'ip6' has incomplete type
 | 
			
		||||
  711 |                         struct in6_addr ip6;
 | 
			
		||||
      |                                         ^~~
 | 
			
		||||
 | 
			
		||||
fixed by including the netinet/in.h header.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
 | 
			
		||||
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
 | 
			
		||||
---
 | 
			
		||||
 bridge/mst.c | 1 +
 | 
			
		||||
 1 file changed, 1 insertion(+)
 | 
			
		||||
 | 
			
		||||
--- a/bridge/mst.c
 | 
			
		||||
+++ b/bridge/mst.c
 | 
			
		||||
@@ -4,6 +4,7 @@
 | 
			
		||||
  */
 | 
			
		||||
 
 | 
			
		||||
 #include <stdio.h>
 | 
			
		||||
+#include <netinet/in.h>
 | 
			
		||||
 #include <linux/if_bridge.h>
 | 
			
		||||
 #include <net/if.h>
 | 
			
		||||
 
 | 
			
		||||
| 
						 | 
				
			
			@ -1,51 +0,0 @@
 | 
			
		|||
From 043ef90e2fa94397eb5c85330889ca4146a6d58a Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Dario Binacchi <dario.binacchi@amarulasolutions.com>
 | 
			
		||||
Date: Sun, 22 Sep 2024 16:50:11 +0200
 | 
			
		||||
Subject: bridge: mst: fix a further musl build issue
 | 
			
		||||
 | 
			
		||||
This patch fixes the following build errors:
 | 
			
		||||
 | 
			
		||||
In file included from mst.c:11:
 | 
			
		||||
../include/json_print.h:80:30: warning: 'struct timeval' declared inside parameter list will not be visible outside of this definition or declaration
 | 
			
		||||
   80 | _PRINT_FUNC(tv, const struct timeval *)
 | 
			
		||||
      |                              ^~~~~~~
 | 
			
		||||
../include/json_print.h:50:37: note: in definition of macro '_PRINT_FUNC'
 | 
			
		||||
   50 |                                     type value);                        \
 | 
			
		||||
      |                                     ^~~~
 | 
			
		||||
../include/json_print.h:80:30: warning: 'struct timeval' declared inside parameter list will not be visible outside of this definition or declaration
 | 
			
		||||
   80 | _PRINT_FUNC(tv, const struct timeval *)
 | 
			
		||||
      |                              ^~~~~~~
 | 
			
		||||
../include/json_print.h:55:45: note: in definition of macro '_PRINT_FUNC'
 | 
			
		||||
   55 |                                             type value)                 \
 | 
			
		||||
      |                                             ^~~~
 | 
			
		||||
../include/json_print.h: In function 'print_tv':
 | 
			
		||||
../include/json_print.h:58:48: error: passing argument 5 of 'print_color_tv' from incompatible pointer type [-Wincompatible-pointer-types]
 | 
			
		||||
   58 |                                                value);                  \
 | 
			
		||||
      |                                                ^~~~~
 | 
			
		||||
      |                                                |
 | 
			
		||||
      |                                                const struct timeval *
 | 
			
		||||
../include/json_print.h:80:1: note: in expansion of macro '_PRINT_FUNC'
 | 
			
		||||
   80 | _PRINT_FUNC(tv, const struct timeval *)
 | 
			
		||||
      | ^~~~~~~~~~~
 | 
			
		||||
../include/json_print.h:50:42: note: expected 'const struct timeval *' but argument is of type 'const struct timeval *'
 | 
			
		||||
   50 |                                     type value);                        \
 | 
			
		||||
      |                                          ^
 | 
			
		||||
../include/json_print.h:80:1: note: in expansion of macro '_PRINT_FUNC'
 | 
			
		||||
   80 | _PRINT_FUNC(tv, const struct timeval *)
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
 | 
			
		||||
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
 | 
			
		||||
---
 | 
			
		||||
 bridge/mst.c | 1 +
 | 
			
		||||
 1 file changed, 1 insertion(+)
 | 
			
		||||
 | 
			
		||||
--- a/bridge/mst.c
 | 
			
		||||
+++ b/bridge/mst.c
 | 
			
		||||
@@ -4,6 +4,7 @@
 | 
			
		||||
  */
 | 
			
		||||
 
 | 
			
		||||
 #include <stdio.h>
 | 
			
		||||
+#include <sys/time.h>
 | 
			
		||||
 #include <netinet/in.h>
 | 
			
		||||
 #include <linux/if_bridge.h>
 | 
			
		||||
 #include <net/if.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -1,28 +0,0 @@
 | 
			
		|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Natanael Copa <ncopa@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@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>
 | 
			
		||||
							
								
								
									
										22
									
								
								iproute2/patches/013-endian.h.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								iproute2/patches/013-endian.h.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
From c8b3ecc22ed0edaf0259eaf7d1a5c04f300ad6e4 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Stephen Hemminger <stephen@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@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>
 | 
			
		||||
							
								
								
									
										29
									
								
								iproute2/patches/014-basename.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								iproute2/patches/014-basename.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,29 @@
 | 
			
		|||
From fa3949b792e275f75d7d6200dc2036ef7fff8816 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Stephen Hemminger <stephen@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@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"
 | 
			
		||||
							
								
								
									
										84
									
								
								iproute2/patches/015-limits.h.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								iproute2/patches/015-limits.h.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,84 @@
 | 
			
		|||
From 7e23da91fca6e5dedeb32a7d308cf20982e897c3 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Stephen Hemminger <stephen@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@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)
 | 
			
		||||
 {
 | 
			
		||||
							
								
								
									
										26
									
								
								iproute2/patches/016-limits.h.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								iproute2/patches/016-limits.h.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
From f982f30e166a02e09097de05129449031ba51f76 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Stephen Hemminger <stephen@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@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"
 | 
			
		||||
							
								
								
									
										178
									
								
								iproute2/patches/017-linux-limits.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										178
									
								
								iproute2/patches/017-linux-limits.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,178 @@
 | 
			
		|||
From ac547ad027e3d4e283202ecb487cf54707234491 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Stephen Hemminger <stephen@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@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);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										37
									
								
								iproute2/patches/018-linux-limits.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								iproute2/patches/018-linux-limits.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,37 @@
 | 
			
		|||
From 458dce5d0431f0589aca1bc841904b5d1db3bbce Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Stephen Hemminger <stephen@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@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
 | 
			
		||||
| 
						 | 
				
			
			@ -1,45 +0,0 @@
 | 
			
		|||
--- a/tc/Makefile
 | 
			
		||||
+++ b/tc/Makefile
 | 
			
		||||
@@ -114,7 +114,7 @@ LDLIBS += -L. -lm
 | 
			
		||||
 
 | 
			
		||||
 ifeq ($(SHARED_LIBS),y)
 | 
			
		||||
 LDLIBS += -ldl
 | 
			
		||||
-LDFLAGS += -Wl,-export-dynamic
 | 
			
		||||
+LDFLAGS += -Wl,--dynamic-list=dynsyms.list
 | 
			
		||||
 endif
 | 
			
		||||
 
 | 
			
		||||
 TCLIB := tc_core.o
 | 
			
		||||
@@ -144,7 +144,7 @@ MODDESTDIR := $(DESTDIR)$(LIBDIR)/tc
 | 
			
		||||
 all: tc $(TCSO)
 | 
			
		||||
 
 | 
			
		||||
 tc: $(TCOBJ) $(LIBNETLINK) libtc.a
 | 
			
		||||
-	$(QUIET_LINK)$(CC) $^ $(LDFLAGS) $(LDLIBS) -o $@
 | 
			
		||||
+	$(QUIET_LINK)$(CC) $(filter-out dynsyms.list, $^) $(LDFLAGS) $(LDLIBS) -o $@
 | 
			
		||||
 
 | 
			
		||||
 libtc.a: $(TCLIB)
 | 
			
		||||
 	$(QUIET_AR)$(AR) rcs $@ $^
 | 
			
		||||
@@ -166,6 +166,7 @@ install: all
 | 
			
		||||
 clean:
 | 
			
		||||
 	rm -f $(TCOBJ) $(TCLIB) libtc.a tc *.so emp_ematch.tab.h; \
 | 
			
		||||
 	rm -f emp_ematch.tab.*
 | 
			
		||||
+	rm -f dynsyms.list
 | 
			
		||||
 
 | 
			
		||||
 q_atm.so: q_atm.c
 | 
			
		||||
 	$(QUIET_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fpic -o q_atm.so q_atm.c -latm
 | 
			
		||||
@@ -205,4 +206,16 @@ static-syms.h: $(wildcard *.c)
 | 
			
		||||
 		sed -n '/'$$s'[^ ]* =/{s:.* \([^ ]*'$$s'[^ ]*\) .*:extern char \1[] __attribute__((weak)); if (!strcmp(sym, "\1")) return \1;:;p}' $$files ; \
 | 
			
		||||
 	done > $@
 | 
			
		||||
 
 | 
			
		||||
+else
 | 
			
		||||
+
 | 
			
		||||
+tc: dynsyms.list
 | 
			
		||||
+m_xt.so: dynsyms.list
 | 
			
		||||
+dynsyms.list: $(wildcard *.c)
 | 
			
		||||
+	files="$(filter-out $(patsubst %.so,%.c,$(TCSO)), $^)" ; \
 | 
			
		||||
+	echo "{" > $@ ; \
 | 
			
		||||
+	for s in `grep -B 3 '\<dlsym' $$files | sed -n '/snprintf/{s:.*"\([^"]*\)".*:\1:;s:%s::;p}'` ; do \
 | 
			
		||||
+		sed -n '/'$$s'[^ ]* =/{s:.* \([^ ]*'$$s'[^ ]*\) .*:\1;:;p}' $$files ; \
 | 
			
		||||
+	done >> $@ ; \
 | 
			
		||||
+	echo "show_stats; print_nl; print_tm; parse_rtattr; parse_rtattr_flags; get_u32; matches; addattr_l; addattr_nest; addattr_nest_end; };" >> $@
 | 
			
		||||
+
 | 
			
		||||
 endif
 | 
			
		||||
| 
						 | 
				
			
			@ -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"
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue