Initial commit
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
Build Toolchains / Build Toolchains for each target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
Coverity scan build / Coverity x86/64 build (push) Has been cancelled

This commit is contained in:
domenico
2025-06-24 12:51:15 +02:00
commit 27c9d80f51
10493 changed files with 1885777 additions and 0 deletions

View File

@@ -0,0 +1,144 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=xdp-tools
PKG_RELEASE:=1
PKG_VERSION:=1.4.2
PKG_HASH:=49c2b96b2be878449a797a74ca515a63e13418cb8ea904df08f8ef9cb2ac5570
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/xdp-project/xdp-tools/tar.gz/v$(PKG_VERSION)?
PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_VERSION))
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_BUILD_DEPENDS:=bpf-headers
PKG_FLAGS:=nonshared
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/bpf.mk
include $(INCLUDE_DIR)/nls.mk
PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
define Package/libxdp
SECTION:=libs
CATEGORY:=Libraries
TITLE:=libxdp - Library for use with XDP
LICENSE:=LGPL-2.1 OR BSD-2-Clause
ABI_VERSION:=$(PKG_ABI_VERSION)
URL:=https://github.com/xdp-project/xdp-tools/
DEPENDS:=+libbpf $(BPF_DEPENDS)
endef
define Package/libxdp/description
libxdp - library for attaching XDP programs and using AF_XDP sockets
endef
define Package/xdp-tools/Default
SECTION:=net
CATEGORY:=Network
LICENSE:=GPL-2.0-only
URL:=https://github.com/xdp-project/xdp-tools/
DEPENDS:=+libxdp
endef
define Package/xdp-filter
$(call Package/xdp-tools/Default)
TITLE:=xdp-filter - a simple XDP-powered packet filter
endef
define Package/xdp-filter/description
xdp-filter is a packet filtering utility powered by XDP. It is deliberately
simple and so does not have the same matching capabilities as, e.g.,
netfilter. Instead, thanks to XDP, it can achieve very high drop rates:
tens of millions of packets per second on a single CPU core.
endef
define Package/xdp-loader
$(call Package/xdp-tools/Default)
TITLE:=xdp-loader - an XDP program loader
endef
define Package/xdp-loader/description
xdp-loader is a simple loader for XDP programs with support for attaching
multiple programs to the same interface. To achieve this it exposes the same
load and unload semantics exposed by the libxdp library.
endef
define Package/xdpdump
$(call Package/xdp-tools/Default)
TITLE:=xdpdump - tool for capturing packets at the XDP layer
DEPENDS+=+libpcap
endef
define Package/xdpdump/description
xdpdump - a simple tcpdump like tool for capturing packets at the XDP layer
endef
TARGET_LDFLAGS += $(INTL_LDFLAGS)
CONFIGURE_VARS += \
FORCE_SYSTEM_LIBBPF=1 \
CC="$(TARGET_CC)" \
CFLAGS="$(TARGET_CFLAGS)" \
LDFLAGS="$(TARGET_LDFLAGS)" \
CLANG="$(CLANG)" \
BPF_TARGET="$(BPF_ARCH)-linux-gnu" \
LLC="$(LLVM_LLC)" \
BPF_LDFLAGS="-march=$(BPF_TARGET) -mcpu=v3"
ifneq ($(findstring s,$(OPENWRT_VERBOSE)),)
MAKE_FLAGS+=V=1
endif
MAKE_VARS += \
PREFIX=/usr \
RUNDIR=/tmp/run
define Build/Configure
$(call Build/Configure/Default)
echo "BPF_CFLAGS += $(BPF_CFLAGS) -Wno-error -fno-stack-protector" >> $(PKG_BUILD_DIR)/config.mk
endef
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/xdp
$(CP) $(PKG_INSTALL_DIR)/usr/include/xdp/*.h $(1)/usr/include/xdp/
$(INSTALL_DIR) $(1)/usr/lib/bpf
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libxdp.{a,so*} $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/bpf/*.o $(1)/usr/lib/bpf
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libxdp.pc \
$(1)/usr/lib/pkgconfig/
$(SED) 's,/usr/include,$$$${prefix}/include,g' \
$(1)/usr/lib/pkgconfig/libxdp.pc
$(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' \
$(1)/usr/lib/pkgconfig/libxdp.pc
endef
define Package/xdp-filter/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/xdp-filter $(1)/usr/sbin
endef
define Package/xdp-loader/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/xdp-loader $(1)/usr/sbin
endef
define Package/xdpdump/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/xdpdump $(1)/usr/sbin
endef
define Package/libxdp/install
$(INSTALL_DIR) $(1)/usr/lib/bpf
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libxdp.so.* $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/bpf/*.o $(1)/usr/lib/bpf
endef
$(eval $(call BuildPackage,libxdp))
$(eval $(call BuildPackage,xdp-filter))
$(eval $(call BuildPackage,xdp-loader))
$(eval $(call BuildPackage,xdpdump))

View File

@@ -0,0 +1,29 @@
--- a/configure
+++ b/configure
@@ -191,7 +191,7 @@ int main(int argc, char **argv) {
return 0;
}
EOF
- libpcap_err=$($CC -o $TMPDIR/libpcaptest $TMPDIR/libpcaptest.c $LIBPCAP_CFLAGS $LIBPCAP_LDLIBS 2>&1)
+ libpcap_err=$($CC -o $TMPDIR/libpcaptest $TMPDIR/libpcaptest.c $LIBPCAP_CFLAGS $LIBPCAP_LDLIBS $LDFLAGS 2>&1)
if [ "$?" -eq "0" ]; then
echo "HAVE_PCAP:=y" >>$CONFIG
[ -n "$LIBPCAP_CFLAGS" ] && echo 'CFLAGS += ' $LIBPCAP_CFLAGS >> $CONFIG
@@ -267,7 +267,7 @@ int main(int argc, char **argv) {
return 0;
}
EOF
- compile_cmd="$CC -o $TMPDIR/libbpftest $TMPDIR/libbpftest.c -Werror $LIBBPF_CFLAGS $LIBBPF_LDLIBS"
+ compile_cmd="$CC -o $TMPDIR/libbpftest $TMPDIR/libbpftest.c -Werror $LIBBPF_CFLAGS $LIBBPF_LDLIBS $LDFLAGS"
libbpf_err=$($compile_cmd 2>&1)
if [ "$?" -eq "0" ]; then
echo "HAVE_FEATURES+=${config_var}" >>"$CONFIG"
@@ -345,7 +345,7 @@ int main(int argc, char **argv) {
}
EOF
- libbpf_err=$($CC -o $TMPDIR/libbpftest $TMPDIR/libbpftest.c -Werror $LIBBPF_CFLAGS $LIBBPF_LDLIBS 2>&1)
+ libbpf_err=$($CC -o $TMPDIR/libbpftest $TMPDIR/libbpftest.c -Werror $LIBBPF_CFLAGS $LIBBPF_LDLIBS $LDFLAGS 2>&1)
if [ "$?" -eq "0" ]; then
echo "SYSTEM_LIBBPF:=y" >>$CONFIG
echo "LIBBPF_VERSION=$LIBBPF_VERSION" >>$CONFIG

View File

@@ -0,0 +1,49 @@
From 1f160c287c14b4300c4248752e20da5981c9763e Mon Sep 17 00:00:00 2001
From: Christian Marangi <ansuelsmth@gmail.com>
Date: Wed, 18 Jan 2023 19:00:54 +0100
Subject: [PATCH] libxdp: Use __noinline__ reserved attribute for XDP
dispatcher
The use of noinline is wrong as noline is not a reserved attribute and
with gcc12 this became an error. Use the reserved __noinline__ attribute
to fix compilation error.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
[a.heider: adapt lib/libxdp/protocol.org too]
Signed-off-by: Andre Heider <a.heider@gmail.com>
---
lib/libxdp/protocol.org | 2 +-
lib/libxdp/xdp-dispatcher.c.in | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
--- a/lib/libxdp/protocol.org
+++ b/lib/libxdp/protocol.org
@@ -59,7 +59,7 @@ static volatile const struct xdp_dispatc
/* The volatile return value prevents the compiler from assuming it knows the
* return value and optimising based on that.
*/
-__attribute__ ((noinline))
+__attribute__ ((__noinline__))
int prog0(struct xdp_md *ctx) {
volatile int ret = XDP_DISPATCHER_RETVAL;
--- a/lib/libxdp/xdp-dispatcher.c.in
+++ b/lib/libxdp/xdp-dispatcher.c.in
@@ -29,7 +29,7 @@ static volatile const struct xdp_dispatc
* return value and optimising based on that.
*/
forloop(`i', `0', NUM_PROGS,
-`__attribute__ ((noinline))
+`__attribute__ ((__noinline__))
int format(`prog%d', i)(struct xdp_md *ctx) {
volatile int ret = XDP_DISPATCHER_RETVAL;
@@ -39,7 +39,7 @@ int format(`prog%d', i)(struct xdp_md *c
}
')
-__attribute__ ((noinline))
+__attribute__ ((__noinline__))
int compat_test(struct xdp_md *ctx) {
volatile int ret = XDP_DISPATCHER_RETVAL;

View File

@@ -0,0 +1,31 @@
From bc2a11227b5bed29d33926d5ff7e707228db9e87 Mon Sep 17 00:00:00 2001
From: Christian Marangi <ansuelsmth@gmail.com>
Date: Wed, 18 Jan 2023 20:07:58 +0100
Subject: [PATCH] headers: xdp: drop vlan_hdr as already defined
Drop vlan_hdr as already defined by bpf headers.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
headers/xdp/parsing_helpers.h | 10 ----------
1 file changed, 10 deletions(-)
--- a/headers/xdp/parsing_helpers.h
+++ b/headers/xdp/parsing_helpers.h
@@ -33,16 +33,6 @@ struct hdr_cursor {
};
/*
- * struct vlan_hdr - vlan header
- * @h_vlan_TCI: priority and VLAN ID
- * @h_vlan_encapsulated_proto: packet type ID or len
- */
-struct vlan_hdr {
- __be16 h_vlan_TCI;
- __be16 h_vlan_encapsulated_proto;
-};
-
-/*
* Struct icmphdr_common represents the common part of the icmphdr and icmp6hdr
* structures.
*/

View File

@@ -0,0 +1,34 @@
From 0388d7447de027e0d2369d6b8a9c58ea0f8f027c Mon Sep 17 00:00:00 2001
From: Christian Marangi <ansuelsmth@gmail.com>
Date: Wed, 18 Jan 2023 20:37:12 +0100
Subject: [PATCH] xdp-dump: add missing perf_event include for bpf and xdp
Add missing perf_event include needed for struct perf_event_header for
bpf and xdp.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
xdp-dump/xdpdump_bpf.c | 1 +
xdp-dump/xdpdump_xdp.c | 1 +
2 files changed, 2 insertions(+)
--- a/xdp-dump/xdpdump_bpf.c
+++ b/xdp-dump/xdpdump_bpf.c
@@ -4,6 +4,7 @@
* Include files
*****************************************************************************/
#include <stdbool.h>
+#include <linux/perf_event.h>
#include <linux/bpf.h>
#include <bpf/bpf_helpers.h>
#include <bpf/bpf_trace_helpers.h>
--- a/xdp-dump/xdpdump_xdp.c
+++ b/xdp-dump/xdpdump_xdp.c
@@ -4,6 +4,7 @@
* Include files
*****************************************************************************/
#include <stdbool.h>
+#include <linux/perf_event.h>
#include <linux/bpf.h>
#include <bpf/bpf_helpers.h>
#include <bpf/bpf_trace_helpers.h>

View File

@@ -0,0 +1,30 @@
From cb1ef3322671a67e2050a3eee18b49cdb4ed4bed Mon Sep 17 00:00:00 2001
From: Andre Heider <a.heider@gmail.com>
Date: Wed, 18 Jan 2023 20:54:41 +0100
Subject: [PATCH] libxdp: fix compilation on multiarch systems
Multiarch systems require an additional include path, which is covered
by ARCH_INCLUDES here. Just as lib/util, add it to BPF_CFLAGS.
Fixes compilation on debian:
In file included from xdp-dispatcher.c:3:
In file included from ../../headers/linux/bpf.h:11:
/usr/include/linux/types.h:5:10: fatal error: 'asm/types.h' file not found
Signed-off-by: Andre Heider <a.heider@gmail.com>
---
lib/libxdp/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/lib/libxdp/Makefile
+++ b/lib/libxdp/Makefile
@@ -28,7 +28,7 @@ PC_FILE := $(OBJDIR)/libxdp.pc
TEMPLATED_SOURCES := xdp-dispatcher.c
CFLAGS += -I$(HEADER_DIR)
-BPF_CFLAGS += -I$(HEADER_DIR)
+BPF_CFLAGS += -I$(HEADER_DIR) $(ARCH_INCLUDES)
ifndef BUILD_STATIC_ONLY

View File

@@ -0,0 +1,49 @@
From e2d8eae9477f6ba41ab75ad77202f235e34c04f7 Mon Sep 17 00:00:00 2001
From: Andre Heider <a.heider@gmail.com>
Date: Wed, 18 Jan 2023 22:30:23 +0100
Subject: [PATCH] lib: allow overwriting -W* flags via BPF_CFLAGS
The bpf header file situation is a mess, and the default warning
compiler flags may not be suitable everywhere, especially with -Werror
in the mix.
Move BPF_CFLAGS further down, so these can be overwritten by builders.
Signed-off-by: Andre Heider <a.heider@gmail.com>
---
lib/common.mk | 2 +-
lib/libxdp/Makefile | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
--- a/lib/common.mk
+++ b/lib/common.mk
@@ -111,12 +111,12 @@ $(XDP_OBJ): %.o: %.c $(KERN_USER_H) $(EX
$(QUIET_CLANG)$(CLANG) -S \
-target $(BPF_TARGET) \
-D __BPF_TRACING__ \
- $(BPF_CFLAGS) \
-Wall \
-Wno-unused-value \
-Wno-pointer-sign \
-Wno-compare-distinct-pointer-types \
-Werror \
+ $(BPF_CFLAGS) \
-O2 -emit-llvm -c -g -o ${@:.o=.ll} $<
$(QUIET_LLC)$(LLC) -march=$(BPF_TARGET) -filetype=obj -o $@ ${@:.o=.ll}
--- a/lib/libxdp/Makefile
+++ b/lib/libxdp/Makefile
@@ -138,12 +138,12 @@ $(XDP_OBJS): %.o: %.c $(BPF_HEADERS) $(L
$(QUIET_CLANG)$(CLANG) -S \
-target $(BPF_TARGET) \
-D __BPF_TRACING__ \
- $(BPF_CFLAGS) \
-Wall \
-Wno-unused-value \
-Wno-pointer-sign \
-Wno-compare-distinct-pointer-types \
-Werror \
+ $(BPF_CFLAGS) \
-O2 -emit-llvm -c -g -o ${@:.o=.ll} $<
$(QUIET_LLC)$(LLC) -march=$(BPF_TARGET) -filetype=obj -o $@ ${@:.o=.ll}

View File

@@ -0,0 +1,55 @@
From 7b00d4a90af1d7bff50833ffe1216cf59592353a Mon Sep 17 00:00:00 2001
From: Andre Heider <a.heider@gmail.com>
Date: Wed, 18 Jan 2023 22:42:28 +0100
Subject: [PATCH] Add BPF_LDFLAGS to allow overwriting llc's -march argument
The argument to clang's -target isn't necessarily the same as to
llc's -march.
Analogue to BPF_CFLAGS, introduce BPF_LDFLAGS to allow e.g.:
BPF_TARGET="mipsel-linux-gnu" BPF_LDFLAGS="-march=bpfel -mcpu=v3"
Signed-off-by: Andre Heider <a.heider@gmail.com>
---
configure | 2 ++
lib/common.mk | 2 +-
lib/libxdp/Makefile | 2 +-
3 files changed, 4 insertions(+), 2 deletions(-)
--- a/configure
+++ b/configure
@@ -17,10 +17,12 @@ check_opts()
: ${DYNAMIC_LIBXDP:=0}
: ${MAX_DISPATCHER_ACTIONS:=10}
: ${BPF_TARGET:=bpf}
+ : ${BPF_LDFLAGS:=-march=$(BPF_TARGET)}
echo "PRODUCTION:=${PRODUCTION}" >>$CONFIG
echo "DYNAMIC_LIBXDP:=${DYNAMIC_LIBXDP}" >>$CONFIG
echo "MAX_DISPATCHER_ACTIONS:=${MAX_DISPATCHER_ACTIONS}" >>$CONFIG
echo "BPF_TARGET:=${BPF_TARGET}" >>$CONFIG
+ echo "BPF_LDFLAGS:=${BPF_LDFLAGS}" >>$CONFIG
}
find_tool()
--- a/lib/common.mk
+++ b/lib/common.mk
@@ -118,7 +118,7 @@ $(XDP_OBJ): %.o: %.c $(KERN_USER_H) $(EX
-Werror \
$(BPF_CFLAGS) \
-O2 -emit-llvm -c -g -o ${@:.o=.ll} $<
- $(QUIET_LLC)$(LLC) -march=$(BPF_TARGET) -filetype=obj -o $@ ${@:.o=.ll}
+ $(QUIET_LLC)$(LLC) $(BPF_LDFLAGS) -filetype=obj -o $@ ${@:.o=.ll}
$(BPF_SKEL_H): %.skel.h: %.bpf.o
$(QUIET_GEN)$(BPFTOOL) gen skeleton $< name ${@:.skel.h=} > $@
--- a/lib/libxdp/Makefile
+++ b/lib/libxdp/Makefile
@@ -145,7 +145,7 @@ $(XDP_OBJS): %.o: %.c $(BPF_HEADERS) $(L
-Werror \
$(BPF_CFLAGS) \
-O2 -emit-llvm -c -g -o ${@:.o=.ll} $<
- $(QUIET_LLC)$(LLC) -march=$(BPF_TARGET) -filetype=obj -o $@ ${@:.o=.ll}
+ $(QUIET_LLC)$(LLC) $(BPF_LDFLAGS) -filetype=obj -o $@ ${@:.o=.ll}
.PHONY: man
ifeq ($(EMACS),)