package: sync libs with openwrt-24.10

This commit is contained in:
coolsnowwolf 2025-10-04 22:28:09 +08:00
parent 80467ccd0f
commit 81818f9b19
12 changed files with 133 additions and 74 deletions

View File

@ -12,9 +12,9 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/libnl-tiny.git PKG_SOURCE_URL=$(PROJECT_GIT)/project/libnl-tiny.git
PKG_SOURCE_DATE:=2023-07-01 PKG_SOURCE_DATE:=2025-03-19
PKG_SOURCE_VERSION:=d433990c00e804593f253cc709b8fe901492b530 PKG_SOURCE_VERSION:=c0df580adbd4d555ecc1962dbe88e91d75b67a4e
PKG_MIRROR_HASH:=fffb2782c7ed2ebabc7d57e5513f52ac53d1828014bc9a8ea131f50eab093086 PKG_MIRROR_HASH:=e0a723e791549866e2d7e1f2aec2392343186645a2c7eae97e73e9fa72171d96
CMAKE_INSTALL:=1 CMAKE_INSTALL:=1
PKG_LICENSE:=LGPL-2.1 PKG_LICENSE:=LGPL-2.1
@ -27,7 +27,7 @@ define Package/libnl-tiny
SECTION:=libs SECTION:=libs
CATEGORY:=Libraries CATEGORY:=Libraries
TITLE:=netlink socket library TITLE:=netlink socket library
ABI_VERSION:=$(PKG_SOURCE_DATE) ABI_VERSION:=1
endef endef
define Package/libnl-tiny/description define Package/libnl-tiny/description
@ -37,13 +37,13 @@ endef
define Build/InstallDev define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig $(1)/usr/include/libnl-tiny $(INSTALL_DIR) $(1)/usr/lib/pkgconfig $(1)/usr/include/libnl-tiny
$(CP) $(PKG_INSTALL_DIR)/usr/include/libnl-tiny/* $(1)/usr/include/libnl-tiny $(CP) $(PKG_INSTALL_DIR)/usr/include/libnl-tiny/* $(1)/usr/include/libnl-tiny
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libnl-tiny.so $(1)/usr/lib/ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libnl-tiny.so* $(1)/usr/lib/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/libnl-tiny.pc $(1)/usr/lib/pkgconfig $(INSTALL_DATA) $(PKG_BUILD_DIR)/libnl-tiny.pc $(1)/usr/lib/pkgconfig
endef endef
define Package/libnl-tiny/install define Package/libnl-tiny/install
$(INSTALL_DIR) $(1)/usr/lib $(INSTALL_DIR) $(1)/usr/lib
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libnl-tiny.so $(1)/usr/lib/ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libnl-tiny.so.* $(1)/usr/lib/
endef endef
$(eval $(call BuildPackage,libnl-tiny)) $(eval $(call BuildPackage,libnl-tiny))

View File

@ -6,12 +6,12 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=libnl PKG_NAME:=libnl
PKG_VERSION:=3.7.0 PKG_VERSION:=3.11.0
PKG_RELEASE:=1 PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/thom311/libnl/releases/download/libnl$(subst .,_,$(PKG_VERSION)) PKG_SOURCE_URL:=https://github.com/thom311/libnl/releases/download/libnl$(subst .,_,$(PKG_VERSION))
PKG_HASH:=9fe43ccbeeea72c653bdcf8c93332583135cda46a79507bfd0a483bb57f65939 PKG_HASH:=2a56e1edefa3e68a7c00879496736fdbf62fc94ed3232c0baba127ecfa76874d
PKG_LICENSE:=LGPL-2.1 PKG_LICENSE:=LGPL-2.1
PKG_LICENSE_FILES:=COPYING PKG_LICENSE_FILES:=COPYING
@ -20,6 +20,8 @@ PKG_CPE_ID:=cpe:/a:libnl_project:libnl
PKG_INSTALL:=1 PKG_INSTALL:=1
PKG_FIXUP:=autoreconf PKG_FIXUP:=autoreconf
PKG_BUILD_FLAGS:=gc-sections
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
define Package/libnl/default define Package/libnl/default
@ -53,10 +55,16 @@ $(call Package/libnl/default)
DEPENDS:=+libnl-route DEPENDS:=+libnl-route
endef endef
define Package/libnl-cli
$(call Package/libnl/default)
TITLE:=CLI Netlink Library
DEPENDS:=+libnl-genl +libnl-nf
endef
define Package/libnl define Package/libnl
$(call Package/libnl/default) $(call Package/libnl/default)
TITLE:=Full Netlink Library TITLE:=Full Netlink Library
DEPENDS:=+libnl-genl +libnl-route +libnl-nf DEPENDS:=+libnl-genl +libnl-route +libnl-nf +libnl-cli
endef endef
define Package/libnl-core/description define Package/libnl-core/description
@ -75,12 +83,16 @@ define Package/libnl-nf/description
Netfilter Netlink Library Functions Netfilter Netlink Library Functions
endef endef
define Package/libnl-cli/description
CLI Netlink Library Functions
endef
define Package/libnl/description define Package/libnl/description
Socket handling, connection management, sending and receiving of data, Socket handling, connection management, sending and receiving of data,
message construction and parsing, object caching system, etc. message construction and parsing, object caching system, etc.
endef endef
TARGET_CFLAGS += -ffunction-sections -fdata-sections $(FPIC) TARGET_CFLAGS += $(FPIC)
CONFIGURE_ARGS += \ CONFIGURE_ARGS += \
--disable-debug --disable-debug
@ -96,6 +108,7 @@ define Build/InstallDev
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libnl-genl-3.so $(1)/usr/lib/libnl-genl.so $(CP) $(PKG_INSTALL_DIR)/usr/lib/libnl-genl-3.so $(1)/usr/lib/libnl-genl.so
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libnl-nf-3.so $(1)/usr/lib/libnl-nf.so $(CP) $(PKG_INSTALL_DIR)/usr/lib/libnl-nf-3.so $(1)/usr/lib/libnl-nf.so
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libnl-route-3.so $(1)/usr/lib/libnl-route.so $(CP) $(PKG_INSTALL_DIR)/usr/lib/libnl-route-3.so $(1)/usr/lib/libnl-route.so
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libnl-cli-3.so $(1)/usr/lib/libnl-cli.so
endef endef
define Package/libnl-core/install define Package/libnl-core/install
@ -118,6 +131,11 @@ define Package/libnl-nf/install
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libnl-nf-3.so.* $(1)/usr/lib/ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libnl-nf-3.so.* $(1)/usr/lib/
endef endef
define Package/libnl-cli/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libnl-cli-3.so.* $(1)/usr/lib/
endef
define Package/libnl/install define Package/libnl/install
: :
endef endef
@ -126,4 +144,5 @@ $(eval $(call BuildPackage,libnl-core))
$(eval $(call BuildPackage,libnl-genl)) $(eval $(call BuildPackage,libnl-genl))
$(eval $(call BuildPackage,libnl-route)) $(eval $(call BuildPackage,libnl-route))
$(eval $(call BuildPackage,libnl-nf)) $(eval $(call BuildPackage,libnl-nf))
$(eval $(call BuildPackage,libnl-cli))
$(eval $(call BuildPackage,libnl)) $(eval $(call BuildPackage,libnl))

View File

@ -5,9 +5,9 @@ PKG_RELEASE=1
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/uclient.git PKG_SOURCE_URL=$(PROJECT_GIT)/project/uclient.git
PKG_MIRROR_HASH:=7c443cac02a734dd312c65618f4de17248d188317f30a9fac192c1503b3d5c05 PKG_MIRROR_HASH:=339b58bd6d6f4b56bb5b0d41c9b47fdad6a7211a2a2eb264a62de3e07fcedfad
PKG_SOURCE_DATE:=2021-05-14 PKG_SOURCE_DATE:=2024-10-22
PKG_SOURCE_VERSION:=6a6011df3429ffa5958d12b1327eeda4fd9daa47 PKG_SOURCE_VERSION:=88ae8f208dd313f69e268234f7db55956aef1cb9
CMAKE_INSTALL:=1 CMAKE_INSTALL:=1
PKG_BUILD_DEPENDS:=ustream-ssl PKG_BUILD_DEPENDS:=ustream-ssl
@ -16,6 +16,7 @@ PKG_LICENSE:=ISC
PKG_LICENSE_FILES:= PKG_LICENSE_FILES:=
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name> PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
PKG_CONFIG_DEPENDS := CONFIG_PACKAGE_ucode-mod-uclient
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk include $(INCLUDE_DIR)/cmake.mk
@ -37,6 +38,16 @@ define Package/uclient-fetch
DEPENDS:=+libuclient DEPENDS:=+libuclient
endef endef
define Package/ucode-mod-uclient
SECTION:=utils
CATEGORY:=Utilities
TITLE:=ucode uclient module
DEPENDS:=+libucode +libuclient
endef
CMAKE_OPTIONS += \
-DBUILD_UCODE=$(if $(CONFIG_PACKAGE_ucode-mod-uclient),ON,OFF)
define Package/libuclient/install define Package/libuclient/install
$(INSTALL_DIR) $(1)/usr/lib $(INSTALL_DIR) $(1)/usr/lib
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libuclient.so $(1)/usr/lib/ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libuclient.so $(1)/usr/lib/
@ -47,5 +58,11 @@ define Package/uclient-fetch/install
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/uclient-fetch $(1)/bin/ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/uclient-fetch $(1)/bin/
endef endef
define Package/ucode-mod-uclient/install
$(INSTALL_DIR) $(1)/usr/lib/ucode
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/ucode/*.so $(1)/usr/lib/ucode
endef
$(eval $(call BuildPackage,libuclient)) $(eval $(call BuildPackage,libuclient))
$(eval $(call BuildPackage,uclient-fetch)) $(eval $(call BuildPackage,uclient-fetch))
$(eval $(call BuildPackage,ucode-mod-uclient))

View File

@ -11,9 +11,9 @@ PKG_NAME:=udebug
CMAKE_INSTALL:=1 CMAKE_INSTALL:=1
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/udebug.git PKG_SOURCE_URL=$(PROJECT_GIT)/project/udebug.git
PKG_MIRROR_HASH:=553a58a14b59dc7b22755557acbc74f0655a431442a4faca56d28cdb1ef14fb4 PKG_MIRROR_HASH:=6a056e6ed77bf0a7af74fcbac9cdd10bbc51868eea054da8a2d18ef1e3c4abca
PKG_SOURCE_DATE:=2023-12-06 PKG_SOURCE_DATE:=2025-08-24
PKG_SOURCE_VERSION:=6d3f51f9fda706f0cf4732c762e4dbe8c21e12cf PKG_SOURCE_VERSION:=edeb4d6dc690acb476a47e6b11633b5632b08437
PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_SOURCE_DATE)) PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_SOURCE_DATE))
PKG_LICENSE:=GPL-2.0 PKG_LICENSE:=GPL-2.0
@ -51,7 +51,7 @@ define Package/udebug-cli
SECTION:=utils SECTION:=utils
CATEGORY:=Utilities CATEGORY:=Utilities
TITLE:=OpenWrt debug service CLI TITLE:=OpenWrt debug service CLI
DEPENDS:=+udebugd +ucode-mod-udebug DEPENDS:=+udebugd +ucode-mod-udebug +ucode-mod-uloop +ucode-mod-ubus
endef endef
define Package/libudebug/install define Package/libudebug/install

View File

@ -5,9 +5,9 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/ustream-ssl.git PKG_SOURCE_URL=$(PROJECT_GIT)/project/ustream-ssl.git
PKG_SOURCE_DATE:=2022-12-08 PKG_SOURCE_DATE:=2024-07-28
PKG_SOURCE_VERSION:=9217ab46536353c7c792951b57163063f5ec7a3b PKG_SOURCE_VERSION:=99bd3d2b167ccdffb6de072d02c380cb37b23e33
PKG_MIRROR_HASH:=cd4dc6a6c18290348b1f8b1c01df3320e4954dc46d714c797bef066f7a91248d PKG_MIRROR_HASH:=9165ce1b05e7bf5ab2cd8450da30c980f1996c9d3a97c4ed2a573b282467b839
CMAKE_INSTALL:=1 CMAKE_INSTALL:=1
PKG_LICENSE:=ISC PKG_LICENSE:=ISC

View File

@ -8,16 +8,19 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=wolfssl PKG_NAME:=wolfssl
PKG_VERSION:=5.5.4-stable PKG_VERSION:=5.7.6
PKG_RELEASE:=$(AUTORELEASE) PKG_REAL_VERSION:=$(PKG_VERSION)-stable
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE:=$(PKG_NAME)-$(PKG_REAL_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/wolfSSL/wolfssl/archive/v$(PKG_VERSION) PKG_SOURCE_URL:=https://github.com/wolfSSL/wolfssl/archive/v$(PKG_REAL_VERSION)
PKG_HASH:=b7ee150e49def77c765bc02aac92ddeb0bebefd4cb12aa263d8f95e405221fb8 PKG_HASH:=52b1e439e30d1ed8162a16308a8525a862183b67aa30373b11166ecbab000d63
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_REAL_VERSION)
PKG_FIXUP:=libtool libtool-abiver PKG_FIXUP:=libtool libtool-abiver
PKG_INSTALL:=1 PKG_INSTALL:=1
PKG_USE_MIPS16:=0 PKG_BUILD_FLAGS:=no-mips16 lto
PKG_BUILD_PARALLEL:=1 PKG_BUILD_PARALLEL:=1
PKG_LICENSE:=GPL-2.0-or-later PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=LICENSING COPYING PKG_LICENSE_FILES:=LICENSING COPYING
@ -40,7 +43,7 @@ PKG_CONFIG_DEPENDS:=\
CONFIG_WOLFSSL_HAS_TLSV13 \ CONFIG_WOLFSSL_HAS_TLSV13 \
CONFIG_WOLFSSL_HAS_WPAS CONFIG_WOLFSSL_HAS_WPAS
PKG_ABI_VERSION:=$(patsubst %-stable,%,$(PKG_VERSION)).$(call version_abbrev,$(call confvar,$(PKG_CONFIG_DEPENDS))) PKG_ABI_VERSION:=$(PKG_VERSION).$(call version_abbrev,$(call confvar,$(PKG_CONFIG_DEPENDS)))
PKG_CONFIG_DEPENDS+=\ PKG_CONFIG_DEPENDS+=\
CONFIG_PACKAGE_libwolfssl-benchmark \ CONFIG_PACKAGE_libwolfssl-benchmark \
@ -51,6 +54,8 @@ PKG_CONFIG_DEPENDS+=\
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
DISABLE_NLS:=
define Package/libwolfssl/Default define Package/libwolfssl/Default
SECTION:=libs SECTION:=libs
SUBMENU:=SSL SUBMENU:=SSL
@ -100,8 +105,8 @@ This variant uses AES CPU instructions (Intel AESNI or ARMv8 Crypto Extension)
endef endef
define Package/libwolfsslcpu-crypto/config define Package/libwolfsslcpu-crypto/config
if TARGET_armvirt && PACKAGE_libwolfsslcpu-crypto = y if TARGET_armsr && PACKAGE_libwolfsslcpu-crypto = y
comment "You are about to build libwolfsslcpu-crypto into an armvirt_64 image." comment "You are about to build libwolfsslcpu-crypto into an armsr_64 image."
comment "Ensure all of your installation targets support the Crypto Extension. " comment "Ensure all of your installation targets support the Crypto Extension. "
comment "Look for the 'aes' feature in /proc/cpuinfo. This library does not do " comment "Look for the 'aes' feature in /proc/cpuinfo. This library does not do "
comment "run-time detection and will crash if the CPU does not support it. " comment "run-time detection and will crash if the CPU does not support it. "
@ -118,12 +123,9 @@ endef
TARGET_CFLAGS += \ TARGET_CFLAGS += \
$(FPIC) \ $(FPIC) \
-fomit-frame-pointer \ -fomit-frame-pointer \
-flto \
-DFP_MAX_BITS=8192 \ -DFP_MAX_BITS=8192 \
$(if $(CONFIG_WOLFSSL_ALT_NAMES),-DWOLFSSL_ALT_NAMES) $(if $(CONFIG_WOLFSSL_ALT_NAMES),-DWOLFSSL_ALT_NAMES)
TARGET_LDFLAGS += -flto
# --enable-stunnel needed for OpenSSL API compatibility bits # --enable-stunnel needed for OpenSSL API compatibility bits
CONFIGURE_ARGS += \ CONFIGURE_ARGS += \
--enable-reproducible-build \ --enable-reproducible-build \

View File

@ -1,10 +1,10 @@
--- a/wolfssl/wolfcrypt/settings.h --- a/wolfssl/wolfcrypt/settings.h
+++ b/wolfssl/wolfcrypt/settings.h +++ b/wolfssl/wolfcrypt/settings.h
@@ -2496,7 +2496,7 @@ extern void uITRON4_free(void *p) ; @@ -3722,7 +3722,7 @@ extern void uITRON4_free(void *p) ;
#endif
/* warning for not using harden build options (default with ./configure) */ /* warning for not using harden build options (default with ./configure) */
-#ifndef WC_NO_HARDEN /* do not warn if big integer support is disabled */
-#if !defined(WC_NO_HARDEN) && !defined(NO_BIG_INT)
+#if 0 +#if 0
#if (defined(USE_FAST_MATH) && !defined(TFM_TIMING_RESISTANT)) || \ #if (defined(USE_FAST_MATH) && !defined(TFM_TIMING_RESISTANT)) || \
(defined(HAVE_ECC) && !defined(ECC_TIMING_RESISTANT)) || \ (defined(HAVE_ECC) && !defined(ECC_TIMING_RESISTANT)) || \

View File

@ -1,13 +1,13 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=ubox PKG_NAME:=ubox
PKG_RELEASE:=$(AUTORELEASE) PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/ubox.git PKG_SOURCE_URL=$(PROJECT_GIT)/project/ubox.git
PKG_SOURCE_DATE:=2022-08-13 PKG_SOURCE_DATE:=2024-04-26
PKG_SOURCE_VERSION:=4c7b720b9c63b826fb9404e454ae54f2ef5649d5 PKG_SOURCE_VERSION:=85f1053019caf4cd333795760950235ee4529ba7
PKG_MIRROR_HASH:=35178148034dfef36c5fda2bc8217617920bc1a3b86f72efbe87e85048a6a2a8 PKG_MIRROR_HASH:=0fea1a29aefc4b5932d739b0c942c182aef7a1ac44f467de80183b21dd739332
CMAKE_INSTALL:=1 CMAKE_INSTALL:=1
PKG_LICENSE:=GPL-2.0 PKG_LICENSE:=GPL-2.0
@ -44,9 +44,10 @@ endef
define Package/logd define Package/logd
SECTION:=base SECTION:=base
CATEGORY:=Base system CATEGORY:=Base system
DEPENDS:=+libubox +libubus +libblobmsg-json DEPENDS:=+libubox +libubus +libblobmsg-json +libudebug
TITLE:=OpenWrt system log implementation TITLE:=OpenWrt system log implementation
USERID:=logd=514:logd=514 USERID:=logd=514:logd=514
ALTERNATIVES:=200:/sbin/logread:/usr/libexec/logread-ubox
endef endef
define Package/getrandom/install define Package/getrandom/install
@ -63,10 +64,12 @@ define Package/ubox/install
endef endef
define Package/logd/install define Package/logd/install
$(INSTALL_DIR) $(1)/sbin $(1)/etc/init.d/ $(INSTALL_DIR) $(1)/sbin $(1)/usr/libexec/ $(1)/etc/init.d/ $(1)/usr/share/acl.d
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/{logd,logread} $(1)/sbin/ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/logd $(1)/sbin/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/logread $(1)/usr/libexec/logread-ubox
$(INSTALL_BIN) ./files/log.init $(1)/etc/init.d/log $(INSTALL_BIN) ./files/log.init $(1)/etc/init.d/log
$(INSTALL_DATA) ./files/logd.json $(1)/usr/share/acl.d
endef endef
$(eval $(call BuildPackage,ubox)) $(eval $(call BuildPackage,ubox))

View File

@ -52,8 +52,12 @@ start_service_file()
} }
[ -z "${log_file}" ] && return [ -z "${log_file}" ] && return
local mountpoint="$(procd_get_mountpoints "${log_file}")"
[ "$_BOOT" = "1" ] && [ "$_BOOT" = "1" ] &&
[ "$(procd_get_mountpoints "${log_file}")" ] && return 0 [ "$mountpoint" ] &&
! grep -q ".* $mountpoint " /proc/mounts &&
return 0
mkdir -p "$(dirname "${log_file}")" mkdir -p "$(dirname "${log_file}")"

View File

@ -0,0 +1,4 @@
{
"user": "logd",
"publish": [ "log" ]
}

View File

@ -17,7 +17,6 @@
#define err_return(err, ...) do { set_error(err, __VA_ARGS__); return NULL; } while(0) #define err_return(err, ...) do { set_error(err, __VA_ARGS__); return NULL; } while(0)
#define TRUE ucv_boolean_new(true) #define TRUE ucv_boolean_new(true)
static uc_resource_type_t *module_type, *map_type, *map_iter_type, *program_type;
static uc_value_t *registry; static uc_value_t *registry;
static uc_vm_t *debug_vm; static uc_vm_t *debug_vm;
@ -184,21 +183,38 @@ uc_bpf_open_module(uc_vm_t *vm, size_t nargs)
err_return(errno, NULL); err_return(errno, NULL);
} }
return uc_resource_new(module_type, obj); return ucv_resource_create(vm, "bpf.module", obj);
} }
static uc_value_t * static uc_value_t *
uc_bpf_map_create(int fd, unsigned int key_size, unsigned int val_size, bool close) uc_bpf_map_create(uc_vm_t *vm, uc_value_t *mod, int fd, unsigned int key_size,
unsigned int val_size, bool close)
{ {
struct uc_bpf_map *uc_map; struct uc_bpf_map *uc_map;
uc_value_t *res;
uc_map = xalloc(sizeof(*uc_map)); res = ucv_resource_create_ex(vm, "bpf.map", (void **)&uc_map, 1, sizeof(*uc_map));
ucv_resource_value_set(res, 0, ucv_get(mod));
uc_map->fd.fd = fd; uc_map->fd.fd = fd;
uc_map->key_size = key_size; uc_map->key_size = key_size;
uc_map->val_size = val_size; uc_map->val_size = val_size;
uc_map->fd.close = close; uc_map->fd.close = close;
return uc_resource_new(map_type, uc_map); return res;
}
static uc_value_t *
uc_bpf_prog_create(uc_vm_t *vm, uc_value_t *mod, int fd, bool close)
{
struct uc_bpf_fd *uc_fd;
uc_value_t *res;
res = ucv_resource_create_ex(vm, "bpf.program", (void **)&uc_fd, 1, sizeof(*uc_fd));
ucv_resource_value_set(res, 0, ucv_get(mod));
uc_fd->fd = fd;
uc_fd->close = close;
return res;
} }
static uc_value_t * static uc_value_t *
@ -223,14 +239,13 @@ uc_bpf_open_map(uc_vm_t *vm, size_t nargs)
err_return(errno, NULL); err_return(errno, NULL);
} }
return uc_bpf_map_create(fd, info.key_size, info.value_size, true); return uc_bpf_map_create(vm, NULL, fd, info.key_size, info.value_size, true);
} }
static uc_value_t * static uc_value_t *
uc_bpf_open_program(uc_vm_t *vm, size_t nargs) uc_bpf_open_program(uc_vm_t *vm, size_t nargs)
{ {
uc_value_t *path = uc_fn_arg(0); uc_value_t *path = uc_fn_arg(0);
struct uc_bpf_fd *f;
int fd; int fd;
if (ucv_type(path) != UC_STRING) if (ucv_type(path) != UC_STRING)
@ -240,11 +255,7 @@ uc_bpf_open_program(uc_vm_t *vm, size_t nargs)
if (fd < 0) if (fd < 0)
err_return(errno, NULL); err_return(errno, NULL);
f = xalloc(sizeof(*f)); return uc_bpf_prog_create(vm, NULL, fd, true);
f->fd = fd;
f->close = true;
return uc_resource_new(program_type, f);
} }
static uc_value_t * static uc_value_t *
@ -284,7 +295,7 @@ uc_bpf_module_get_map(uc_vm_t *vm, size_t nargs)
if (fd < 0) if (fd < 0)
err_return(EINVAL, NULL); err_return(EINVAL, NULL);
return uc_bpf_map_create(fd, bpf_map__key_size(map), bpf_map__value_size(map), false); return uc_bpf_map_create(vm, _uc_fn_this_res(vm), fd, bpf_map__key_size(map), bpf_map__value_size(map), false);
} }
static uc_value_t * static uc_value_t *
@ -311,7 +322,6 @@ uc_bpf_module_get_program(uc_vm_t *vm, size_t nargs)
struct bpf_object *obj = uc_fn_thisval("bpf.module"); struct bpf_object *obj = uc_fn_thisval("bpf.module");
struct bpf_program *prog; struct bpf_program *prog;
uc_value_t *name = uc_fn_arg(0); uc_value_t *name = uc_fn_arg(0);
struct uc_bpf_fd *f;
int fd; int fd;
if (!obj || !name || ucv_type(name) != UC_STRING) if (!obj || !name || ucv_type(name) != UC_STRING)
@ -325,10 +335,7 @@ uc_bpf_module_get_program(uc_vm_t *vm, size_t nargs)
if (fd < 0) if (fd < 0)
err_return(EINVAL, NULL); err_return(EINVAL, NULL);
f = xalloc(sizeof(*f)); return uc_bpf_prog_create(vm, _uc_fn_this_res(vm), fd, false);
f->fd = fd;
return uc_resource_new(program_type, f);
} }
static void * static void *
@ -493,16 +500,18 @@ uc_bpf_map_iterator(uc_vm_t *vm, size_t nargs)
{ {
struct uc_bpf_map *map = uc_fn_thisval("bpf.map"); struct uc_bpf_map *map = uc_fn_thisval("bpf.map");
struct uc_bpf_map_iter *iter; struct uc_bpf_map_iter *iter;
uc_value_t *res;
if (!map) if (!map)
err_return(EINVAL, NULL); err_return(EINVAL, NULL);
iter = xalloc(sizeof(*iter) + map->key_size); res = ucv_resource_create_ex(vm, "bpf.map_iter", (void **)&iter, 1, sizeof(*iter) + map->key_size);
ucv_resource_value_set(res, 0, ucv_get(_uc_fn_this_res(vm)));
iter->fd = map->fd.fd; iter->fd = map->fd.fd;
iter->key_size = map->key_size; iter->key_size = map->key_size;
iter->has_next = !bpf_map_get_next_key(iter->fd, NULL, &iter->key); iter->has_next = !bpf_map_get_next_key(iter->fd, NULL, &iter->key);
return uc_resource_new(map_iter_type, iter); return res;
} }
static uc_value_t * static uc_value_t *
@ -611,7 +620,7 @@ uc_bpf_map_pin(uc_vm_t *vm, size_t nargs)
static uc_value_t * static uc_value_t *
uc_bpf_set_tc_hook(uc_value_t *ifname, uc_value_t *type, uc_value_t *prio, uc_bpf_set_tc_hook(uc_value_t *ifname, uc_value_t *type, uc_value_t *prio,
int fd) uc_value_t *classid, int fd)
{ {
DECLARE_LIBBPF_OPTS(bpf_tc_hook, hook); DECLARE_LIBBPF_OPTS(bpf_tc_hook, hook);
DECLARE_LIBBPF_OPTS(bpf_tc_opts, attach_tc, DECLARE_LIBBPF_OPTS(bpf_tc_opts, attach_tc,
@ -648,6 +657,7 @@ uc_bpf_set_tc_hook(uc_value_t *ifname, uc_value_t *type, uc_value_t *prio,
goto out; goto out;
attach_tc.prog_fd = fd; attach_tc.prog_fd = fd;
attach_tc.classid = ucv_int64_get(classid);
if (bpf_tc_attach(&hook, &attach_tc) < 0) if (bpf_tc_attach(&hook, &attach_tc) < 0)
goto error; goto error;
@ -667,11 +677,12 @@ uc_bpf_program_tc_attach(uc_vm_t *vm, size_t nargs)
uc_value_t *ifname = uc_fn_arg(0); uc_value_t *ifname = uc_fn_arg(0);
uc_value_t *type = uc_fn_arg(1); uc_value_t *type = uc_fn_arg(1);
uc_value_t *prio = uc_fn_arg(2); uc_value_t *prio = uc_fn_arg(2);
uc_value_t *classid = uc_fn_arg(3);
if (!f) if (!f)
err_return(EINVAL, NULL); err_return(EINVAL, NULL);
return uc_bpf_set_tc_hook(ifname, type, prio, f->fd); return uc_bpf_set_tc_hook(ifname, type, prio, classid, f->fd);
} }
static uc_value_t * static uc_value_t *
@ -681,7 +692,7 @@ uc_bpf_tc_detach(uc_vm_t *vm, size_t nargs)
uc_value_t *type = uc_fn_arg(1); uc_value_t *type = uc_fn_arg(1);
uc_value_t *prio = uc_fn_arg(2); uc_value_t *prio = uc_fn_arg(2);
return uc_bpf_set_tc_hook(ifname, type, prio, -1); return uc_bpf_set_tc_hook(ifname, type, prio, NULL, -1);
} }
static int static int
@ -777,7 +788,6 @@ static void uc_bpf_fd_free(void *ptr)
if (f->close) if (f->close)
close(f->fd); close(f->fd);
free(f);
} }
static const uc_function_list_t map_iter_fns[] = { static const uc_function_list_t map_iter_fns[] = {
@ -807,8 +817,8 @@ void uc_module_init(uc_vm_t *vm, uc_value_t *scope)
registry = ucv_array_new(vm); registry = ucv_array_new(vm);
uc_vm_registry_set(vm, "bpf.registry", registry); uc_vm_registry_set(vm, "bpf.registry", registry);
module_type = uc_type_declare(vm, "bpf.module", module_fns, module_free); uc_type_declare(vm, "bpf.module", module_fns, module_free);
map_type = uc_type_declare(vm, "bpf.map", map_fns, uc_bpf_fd_free); uc_type_declare(vm, "bpf.map", map_fns, uc_bpf_fd_free);
map_iter_type = uc_type_declare(vm, "bpf.map_iter", map_iter_fns, free); uc_type_declare(vm, "bpf.map_iter", map_iter_fns, NULL);
program_type = uc_type_declare(vm, "bpf.program", prog_fns, uc_bpf_fd_free); uc_type_declare(vm, "bpf.program", prog_fns, uc_bpf_fd_free);
} }

View File

@ -12,9 +12,9 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=https://github.com/jow-/ucode.git PKG_SOURCE_URL=https://github.com/jow-/ucode.git
PKG_SOURCE_DATE:=2025-03-24 PKG_SOURCE_DATE:=2025-08-26
PKG_SOURCE_VERSION:=b27d70c977ab4381f4094a0b1208e2a13fc5123f PKG_SOURCE_VERSION:=5f712ffd3f31f13ed4812cfb37c21dbef7a75e2b
PKG_MIRROR_HASH:=c2285ab8e473a12a1795864323af15779ef42a72dfe8a77c740cf99c316a2ac7 PKG_MIRROR_HASH:=156b8c3bff39161f01f17272dd16288373c0e90b6cc6ea65eeeb90293ef040c1
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io> PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
PKG_LICENSE:=ISC PKG_LICENSE:=ISC