Squashed 'einat-ebpf/' content from commit 3ca81b6
git-subtree-dir: einat-ebpf git-subtree-split: 3ca81b661559606ef42023e2e9a9dd4b74a3ed18
This commit is contained in:
commit
23fa869d86
9 changed files with 794 additions and 0 deletions
142
Makefile
Normal file
142
Makefile
Normal file
|
|
@ -0,0 +1,142 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Copyright (C) 2024-2025 Anya Lin <hukk1996@gmail.com>
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=einat-ebpf
|
||||
PKG_UPSTREAM_VERSION:=0.1.8
|
||||
PKG_UPSTREAM_GITHASH:=
|
||||
PKG_VERSION:=$(PKG_UPSTREAM_VERSION)$(if $(PKG_UPSTREAM_GITHASH),~$(call version_abbrev,$(PKG_UPSTREAM_GITHASH)))
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_UPSTREAM_VERSION)
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
|
||||
|
||||
ifeq ($(PKG_UPSTREAM_GITHASH),)
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/EHfive/einat-ebpf/tar.gz/refs/tags/v$(PKG_UPSTREAM_VERSION)?
|
||||
PKG_HASH:=3e47810e852dbad4cffeee1df8d3fea4018e4bda331ffc72f8e9a88f3c73d034
|
||||
|
||||
PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
|
||||
else
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/EHfive/einat-ebpf.git
|
||||
PKG_SOURCE_VERSION:=$(PKG_UPSTREAM_GITHASH)
|
||||
PKG_MIRROR_HASH:=6cc83cb1fb80896bb4c3d364d88e6009de0f05cf77373f1f18b1181057b6eff5
|
||||
|
||||
PKG_SOURCE:=$(PKG_SOURCE_SUBDIR)-$(PKG_SOURCE_VERSION).tar.gz
|
||||
endif
|
||||
|
||||
PKG_MAINTAINER:=Anya Lin <hukk1996@gmail.com>
|
||||
PKG_LICENSE:=GPL-2.0-or-later GPL-2.0-only
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
||||
PKG_BUILD_DEPENDS:=rust/host libbpf #HAS_BPF_TOOLCHAIN:bpf-headers # requires modified kernel
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_BUILD_FLAGS:=no-mips16
|
||||
|
||||
PKG_CONFIG_DEPENDS+= \
|
||||
CONFIG_EINAT_EBPF_IPV6 \
|
||||
CONFIG_EINAT_EBPF_BACKEND_LIBBPF \
|
||||
CONFIG_EINAT_EBPF_BINDGEN \
|
||||
CONFIG_EINAT_EBPF_STATIC \
|
||||
|
||||
RUST_PKG_FEATURES:=$(subst $(space),$(comma),$(strip \
|
||||
$(if $(CONFIG_EINAT_EBPF_IPV6),ipv6) \
|
||||
$(if $(CONFIG_EINAT_EBPF_BACKEND_LIBBPF),libbpf) \
|
||||
$(if $(CONFIG_EINAT_EBPF_BINDGEN),bindgen) \
|
||||
$(if $(CONFIG_EINAT_EBPF_STATIC),static) \
|
||||
))
|
||||
|
||||
#export EINAT_BPF_CFLAGS="-I/usr/include/aarch64-linux-gnu"
|
||||
|
||||
include $(INCLUDE_DIR)/bpf.mk
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(TOPDIR)/feeds/packages/lang/rust/rust-package.mk
|
||||
|
||||
# Don't ignore Cargo.lock
|
||||
Build/Compile:=$(call Build/Compile/Cargo,,--locked)
|
||||
|
||||
# The LLVM_PATH var is required so that einat's build script finds llvm-strip
|
||||
TARGET_PATH_PKG:=$(LLVM_PATH):$(TARGET_PATH_PKG)
|
||||
|
||||
# Platform-specific features
|
||||
# $(TOPDIR)/feeds/packages/lang/rust/rust-values.mk
|
||||
# RUST_ARCH_DEPENDS:=@(aarch64||arm||i386||i686||mips||mipsel||mips64||mips64el||powerpc64||riscv64||x86_64)
|
||||
EINAT_EBPF_RUST_ARCH_DEPENDS:=@(aarch64||arm||i386||i686||powerpc64||riscv64||x86_64) # Architectures other than x86_64 and aarch64 have not been tested.
|
||||
|
||||
define Package/$(PKG_NAME)
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
SUBMENU:=Routing and Redirection
|
||||
TITLE:=eBPF-based Endpoint-Independent NAT
|
||||
URL:=https://github.com/EHfive/einat-ebpf
|
||||
# You need enable KERNEL_DEBUG_INFO_BTF and disable KERNEL_DEBUG_INFO_REDUCED
|
||||
DEPENDS:=$(EINAT_EBPF_RUST_ARCH_DEPENDS) $(BPF_DEPENDS) \
|
||||
+kmod-sched-core +kmod-sched-bpf \
|
||||
+EINAT_EBPF_BACKEND_LIBBPF:libbpf \
|
||||
+@KERNEL_DEBUG_FS +@KERNEL_DEBUG_INFO_BTF
|
||||
USERID:=einat:einat
|
||||
PROVIDES:=einat
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/description
|
||||
This eBPF application implements an "Endpoint-Independent Mapping" and
|
||||
"Endpoint-Independent Filtering" NAT(network address translation) on
|
||||
TC egress and ingress hooks.
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/config
|
||||
menu "Features configuration"
|
||||
depends on PACKAGE_einat-ebpf
|
||||
|
||||
config EINAT_EBPF_IPV6
|
||||
bool "Enable IPV6 NAT66 feature"
|
||||
default n
|
||||
help
|
||||
It would increase load time of eBPF programs to
|
||||
about 4 times.
|
||||
|
||||
config EINAT_EBPF_BACKEND_LIBBPF
|
||||
bool "Enable libbpf backend"
|
||||
default y if (aarch64 || x86_64)
|
||||
default n
|
||||
help
|
||||
Add fallback BPF loading backend: "libbpf".
|
||||
|
||||
config EINAT_EBPF_BINDGEN
|
||||
bool "Enable bindgen"
|
||||
default y if !ARCH_64BIT
|
||||
default n
|
||||
help
|
||||
Bindgen for libbpf headers, required on 32-bit
|
||||
platforms.
|
||||
|
||||
config EINAT_EBPF_STATIC
|
||||
bool "Enable static compile"
|
||||
default n
|
||||
endmenu
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/conffiles
|
||||
/etc/config/einat
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/install
|
||||
$(CURDIR)/.prepare.sh $(VERSION) $(CURDIR) $(PKG_INSTALL_DIR)/bin/einat
|
||||
|
||||
$(INSTALL_DIR) $(1)/usr/bin/
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/bin/einat $(1)/usr/bin/
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/init.d/
|
||||
$(INSTALL_BIN) $(CURDIR)/files/einat.init $(1)/etc/init.d/einat
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/config/
|
||||
$(INSTALL_CONF) $(CURDIR)/files/einat.config $(1)/etc/config/einat
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/capabilities/
|
||||
$(INSTALL_CONF) $(CURDIR)/files/capabilities.json $(1)/etc/capabilities/einat.json
|
||||
endef
|
||||
|
||||
$(eval $(call RustBinPackage,$(PKG_NAME)))
|
||||
$(eval $(call BuildPackage,$(PKG_NAME)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue