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 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))