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
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:
145
package/network/utils/xdp-tools/Makefile
Normal file
145
package/network/utils/xdp-tools/Makefile
Normal file
@@ -0,0 +1,145 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=xdp-tools
|
||||
PKG_RELEASE:=1
|
||||
PKG_VERSION:=1.4.3
|
||||
PKG_HASH:=6e727e2c7c079dec86575c5d0e7aac7ecd582aabe04b3b176d7ef50e653b60c0
|
||||
|
||||
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" \
|
||||
BPFTOOL=""
|
||||
|
||||
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))
|
||||
@@ -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
|
||||
@@ -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;
|
||||
|
||||
@@ -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>
|
||||
@@ -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}
|
||||
|
||||
@@ -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),)
|
||||
Reference in New Issue
Block a user