From 81818f9b199eb7ebd3dc9a16f3403ff8f51a6b90 Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Sat, 4 Oct 2025 22:28:09 +0800 Subject: [PATCH] package: sync libs with openwrt-24.10 --- package/libs/libnl-tiny/Makefile | 12 ++-- package/libs/libnl/Makefile | 27 ++++++-- package/libs/uclient/Makefile | 23 ++++++- package/libs/udebug/Makefile | 8 +-- package/libs/ustream-ssl/Makefile | 6 +- package/libs/wolfssl/Makefile | 26 ++++---- .../patches/100-disable-hardening-check.patch | 6 +- package/system/ubox/Makefile | 17 +++-- package/system/ubox/files/log.init | 6 +- package/system/ubox/files/logd.json | 4 ++ package/utils/ucode-mod-bpf/src/bpf.c | 66 +++++++++++-------- package/utils/ucode/Makefile | 6 +- 12 files changed, 133 insertions(+), 74 deletions(-) create mode 100644 package/system/ubox/files/logd.json diff --git a/package/libs/libnl-tiny/Makefile b/package/libs/libnl-tiny/Makefile index 048c3e793..ef6acdb3a 100644 --- a/package/libs/libnl-tiny/Makefile +++ b/package/libs/libnl-tiny/Makefile @@ -12,9 +12,9 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/libnl-tiny.git -PKG_SOURCE_DATE:=2023-07-01 -PKG_SOURCE_VERSION:=d433990c00e804593f253cc709b8fe901492b530 -PKG_MIRROR_HASH:=fffb2782c7ed2ebabc7d57e5513f52ac53d1828014bc9a8ea131f50eab093086 +PKG_SOURCE_DATE:=2025-03-19 +PKG_SOURCE_VERSION:=c0df580adbd4d555ecc1962dbe88e91d75b67a4e +PKG_MIRROR_HASH:=e0a723e791549866e2d7e1f2aec2392343186645a2c7eae97e73e9fa72171d96 CMAKE_INSTALL:=1 PKG_LICENSE:=LGPL-2.1 @@ -27,7 +27,7 @@ define Package/libnl-tiny SECTION:=libs CATEGORY:=Libraries TITLE:=netlink socket library - ABI_VERSION:=$(PKG_SOURCE_DATE) + ABI_VERSION:=1 endef define Package/libnl-tiny/description @@ -37,13 +37,13 @@ endef define Build/InstallDev $(INSTALL_DIR) $(1)/usr/lib/pkgconfig $(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 endef define Package/libnl-tiny/install $(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 $(eval $(call BuildPackage,libnl-tiny)) diff --git a/package/libs/libnl/Makefile b/package/libs/libnl/Makefile index 71b043a9e..f83a5ac68 100644 --- a/package/libs/libnl/Makefile +++ b/package/libs/libnl/Makefile @@ -6,12 +6,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=libnl -PKG_VERSION:=3.7.0 +PKG_VERSION:=3.11.0 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz 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_FILES:=COPYING @@ -20,6 +20,8 @@ PKG_CPE_ID:=cpe:/a:libnl_project:libnl PKG_INSTALL:=1 PKG_FIXUP:=autoreconf +PKG_BUILD_FLAGS:=gc-sections + include $(INCLUDE_DIR)/package.mk define Package/libnl/default @@ -53,10 +55,16 @@ $(call Package/libnl/default) DEPENDS:=+libnl-route endef +define Package/libnl-cli +$(call Package/libnl/default) + TITLE:=CLI Netlink Library + DEPENDS:=+libnl-genl +libnl-nf +endef + define Package/libnl $(call Package/libnl/default) TITLE:=Full Netlink Library - DEPENDS:=+libnl-genl +libnl-route +libnl-nf + DEPENDS:=+libnl-genl +libnl-route +libnl-nf +libnl-cli endef define Package/libnl-core/description @@ -75,12 +83,16 @@ define Package/libnl-nf/description Netfilter Netlink Library Functions endef +define Package/libnl-cli/description + CLI Netlink Library Functions +endef + define Package/libnl/description Socket handling, connection management, sending and receiving of data, message construction and parsing, object caching system, etc. endef -TARGET_CFLAGS += -ffunction-sections -fdata-sections $(FPIC) +TARGET_CFLAGS += $(FPIC) CONFIGURE_ARGS += \ --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-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-cli-3.so $(1)/usr/lib/libnl-cli.so endef 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/ 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 : endef @@ -126,4 +144,5 @@ $(eval $(call BuildPackage,libnl-core)) $(eval $(call BuildPackage,libnl-genl)) $(eval $(call BuildPackage,libnl-route)) $(eval $(call BuildPackage,libnl-nf)) +$(eval $(call BuildPackage,libnl-cli)) $(eval $(call BuildPackage,libnl)) diff --git a/package/libs/uclient/Makefile b/package/libs/uclient/Makefile index 398a27bb9..65e96dcb7 100644 --- a/package/libs/uclient/Makefile +++ b/package/libs/uclient/Makefile @@ -5,9 +5,9 @@ PKG_RELEASE=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/uclient.git -PKG_MIRROR_HASH:=7c443cac02a734dd312c65618f4de17248d188317f30a9fac192c1503b3d5c05 -PKG_SOURCE_DATE:=2021-05-14 -PKG_SOURCE_VERSION:=6a6011df3429ffa5958d12b1327eeda4fd9daa47 +PKG_MIRROR_HASH:=339b58bd6d6f4b56bb5b0d41c9b47fdad6a7211a2a2eb264a62de3e07fcedfad +PKG_SOURCE_DATE:=2024-10-22 +PKG_SOURCE_VERSION:=88ae8f208dd313f69e268234f7db55956aef1cb9 CMAKE_INSTALL:=1 PKG_BUILD_DEPENDS:=ustream-ssl @@ -16,6 +16,7 @@ PKG_LICENSE:=ISC PKG_LICENSE_FILES:= PKG_MAINTAINER:=Felix Fietkau +PKG_CONFIG_DEPENDS := CONFIG_PACKAGE_ucode-mod-uclient include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/cmake.mk @@ -37,6 +38,16 @@ define Package/uclient-fetch DEPENDS:=+libuclient 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 $(INSTALL_DIR) $(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/ 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,uclient-fetch)) +$(eval $(call BuildPackage,ucode-mod-uclient)) diff --git a/package/libs/udebug/Makefile b/package/libs/udebug/Makefile index 0a54515e7..1962f5255 100644 --- a/package/libs/udebug/Makefile +++ b/package/libs/udebug/Makefile @@ -11,9 +11,9 @@ PKG_NAME:=udebug CMAKE_INSTALL:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/udebug.git -PKG_MIRROR_HASH:=553a58a14b59dc7b22755557acbc74f0655a431442a4faca56d28cdb1ef14fb4 -PKG_SOURCE_DATE:=2023-12-06 -PKG_SOURCE_VERSION:=6d3f51f9fda706f0cf4732c762e4dbe8c21e12cf +PKG_MIRROR_HASH:=6a056e6ed77bf0a7af74fcbac9cdd10bbc51868eea054da8a2d18ef1e3c4abca +PKG_SOURCE_DATE:=2025-08-24 +PKG_SOURCE_VERSION:=edeb4d6dc690acb476a47e6b11633b5632b08437 PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_SOURCE_DATE)) PKG_LICENSE:=GPL-2.0 @@ -51,7 +51,7 @@ define Package/udebug-cli SECTION:=utils CATEGORY:=Utilities TITLE:=OpenWrt debug service CLI - DEPENDS:=+udebugd +ucode-mod-udebug + DEPENDS:=+udebugd +ucode-mod-udebug +ucode-mod-uloop +ucode-mod-ubus endef define Package/libudebug/install diff --git a/package/libs/ustream-ssl/Makefile b/package/libs/ustream-ssl/Makefile index f90a2edb7..d5839df55 100644 --- a/package/libs/ustream-ssl/Makefile +++ b/package/libs/ustream-ssl/Makefile @@ -5,9 +5,9 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/ustream-ssl.git -PKG_SOURCE_DATE:=2022-12-08 -PKG_SOURCE_VERSION:=9217ab46536353c7c792951b57163063f5ec7a3b -PKG_MIRROR_HASH:=cd4dc6a6c18290348b1f8b1c01df3320e4954dc46d714c797bef066f7a91248d +PKG_SOURCE_DATE:=2024-07-28 +PKG_SOURCE_VERSION:=99bd3d2b167ccdffb6de072d02c380cb37b23e33 +PKG_MIRROR_HASH:=9165ce1b05e7bf5ab2cd8450da30c980f1996c9d3a97c4ed2a573b282467b839 CMAKE_INSTALL:=1 PKG_LICENSE:=ISC diff --git a/package/libs/wolfssl/Makefile b/package/libs/wolfssl/Makefile index 6ad44a9ac..ee6baefdd 100644 --- a/package/libs/wolfssl/Makefile +++ b/package/libs/wolfssl/Makefile @@ -8,16 +8,19 @@ include $(TOPDIR)/rules.mk PKG_NAME:=wolfssl -PKG_VERSION:=5.5.4-stable -PKG_RELEASE:=$(AUTORELEASE) +PKG_VERSION:=5.7.6 +PKG_REAL_VERSION:=$(PKG_VERSION)-stable +PKG_RELEASE:=1 -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=https://github.com/wolfSSL/wolfssl/archive/v$(PKG_VERSION) -PKG_HASH:=b7ee150e49def77c765bc02aac92ddeb0bebefd4cb12aa263d8f95e405221fb8 +PKG_SOURCE:=$(PKG_NAME)-$(PKG_REAL_VERSION).tar.gz +PKG_SOURCE_URL:=https://github.com/wolfSSL/wolfssl/archive/v$(PKG_REAL_VERSION) +PKG_HASH:=52b1e439e30d1ed8162a16308a8525a862183b67aa30373b11166ecbab000d63 + +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_REAL_VERSION) PKG_FIXUP:=libtool libtool-abiver PKG_INSTALL:=1 -PKG_USE_MIPS16:=0 +PKG_BUILD_FLAGS:=no-mips16 lto PKG_BUILD_PARALLEL:=1 PKG_LICENSE:=GPL-2.0-or-later PKG_LICENSE_FILES:=LICENSING COPYING @@ -40,7 +43,7 @@ PKG_CONFIG_DEPENDS:=\ CONFIG_WOLFSSL_HAS_TLSV13 \ 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+=\ CONFIG_PACKAGE_libwolfssl-benchmark \ @@ -51,6 +54,8 @@ PKG_CONFIG_DEPENDS+=\ include $(INCLUDE_DIR)/package.mk +DISABLE_NLS:= + define Package/libwolfssl/Default SECTION:=libs SUBMENU:=SSL @@ -100,8 +105,8 @@ This variant uses AES CPU instructions (Intel AESNI or ARMv8 Crypto Extension) endef define Package/libwolfsslcpu-crypto/config - if TARGET_armvirt && PACKAGE_libwolfsslcpu-crypto = y - comment "You are about to build libwolfsslcpu-crypto into an armvirt_64 image." + if TARGET_armsr && PACKAGE_libwolfsslcpu-crypto = y + 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 "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. " @@ -118,12 +123,9 @@ endef TARGET_CFLAGS += \ $(FPIC) \ -fomit-frame-pointer \ - -flto \ -DFP_MAX_BITS=8192 \ $(if $(CONFIG_WOLFSSL_ALT_NAMES),-DWOLFSSL_ALT_NAMES) -TARGET_LDFLAGS += -flto - # --enable-stunnel needed for OpenSSL API compatibility bits CONFIGURE_ARGS += \ --enable-reproducible-build \ diff --git a/package/libs/wolfssl/patches/100-disable-hardening-check.patch b/package/libs/wolfssl/patches/100-disable-hardening-check.patch index af774181e..ab695d391 100644 --- a/package/libs/wolfssl/patches/100-disable-hardening-check.patch +++ b/package/libs/wolfssl/patches/100-disable-hardening-check.patch @@ -1,10 +1,10 @@ --- a/wolfssl/wolfcrypt/settings.h +++ b/wolfssl/wolfcrypt/settings.h -@@ -2496,7 +2496,7 @@ extern void uITRON4_free(void *p) ; - #endif +@@ -3722,7 +3722,7 @@ extern void uITRON4_free(void *p) ; /* 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 (defined(USE_FAST_MATH) && !defined(TFM_TIMING_RESISTANT)) || \ (defined(HAVE_ECC) && !defined(ECC_TIMING_RESISTANT)) || \ diff --git a/package/system/ubox/Makefile b/package/system/ubox/Makefile index 1030c14bb..e54b9fa2d 100644 --- a/package/system/ubox/Makefile +++ b/package/system/ubox/Makefile @@ -1,13 +1,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=ubox -PKG_RELEASE:=$(AUTORELEASE) +PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/ubox.git -PKG_SOURCE_DATE:=2022-08-13 -PKG_SOURCE_VERSION:=4c7b720b9c63b826fb9404e454ae54f2ef5649d5 -PKG_MIRROR_HASH:=35178148034dfef36c5fda2bc8217617920bc1a3b86f72efbe87e85048a6a2a8 +PKG_SOURCE_DATE:=2024-04-26 +PKG_SOURCE_VERSION:=85f1053019caf4cd333795760950235ee4529ba7 +PKG_MIRROR_HASH:=0fea1a29aefc4b5932d739b0c942c182aef7a1ac44f467de80183b21dd739332 CMAKE_INSTALL:=1 PKG_LICENSE:=GPL-2.0 @@ -44,9 +44,10 @@ endef define Package/logd SECTION:=base CATEGORY:=Base system - DEPENDS:=+libubox +libubus +libblobmsg-json + DEPENDS:=+libubox +libubus +libblobmsg-json +libudebug TITLE:=OpenWrt system log implementation USERID:=logd=514:logd=514 + ALTERNATIVES:=200:/sbin/logread:/usr/libexec/logread-ubox endef define Package/getrandom/install @@ -63,10 +64,12 @@ define Package/ubox/install endef 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_DATA) ./files/logd.json $(1)/usr/share/acl.d endef $(eval $(call BuildPackage,ubox)) diff --git a/package/system/ubox/files/log.init b/package/system/ubox/files/log.init index c6fdf4429..e02cc273d 100644 --- a/package/system/ubox/files/log.init +++ b/package/system/ubox/files/log.init @@ -52,8 +52,12 @@ start_service_file() } [ -z "${log_file}" ] && return + local mountpoint="$(procd_get_mountpoints "${log_file}")" + [ "$_BOOT" = "1" ] && - [ "$(procd_get_mountpoints "${log_file}")" ] && return 0 + [ "$mountpoint" ] && + ! grep -q ".* $mountpoint " /proc/mounts && + return 0 mkdir -p "$(dirname "${log_file}")" diff --git a/package/system/ubox/files/logd.json b/package/system/ubox/files/logd.json new file mode 100644 index 000000000..f0b2fb1e1 --- /dev/null +++ b/package/system/ubox/files/logd.json @@ -0,0 +1,4 @@ +{ + "user": "logd", + "publish": [ "log" ] +} diff --git a/package/utils/ucode-mod-bpf/src/bpf.c b/package/utils/ucode-mod-bpf/src/bpf.c index 415215e54..33641ddfb 100644 --- a/package/utils/ucode-mod-bpf/src/bpf.c +++ b/package/utils/ucode-mod-bpf/src/bpf.c @@ -17,7 +17,6 @@ #define err_return(err, ...) do { set_error(err, __VA_ARGS__); return NULL; } while(0) #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_vm_t *debug_vm; @@ -184,21 +183,38 @@ uc_bpf_open_module(uc_vm_t *vm, size_t nargs) err_return(errno, NULL); } - return uc_resource_new(module_type, obj); + return ucv_resource_create(vm, "bpf.module", obj); } 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; + 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->key_size = key_size; uc_map->val_size = val_size; 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 * @@ -223,14 +239,13 @@ uc_bpf_open_map(uc_vm_t *vm, size_t nargs) 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 * uc_bpf_open_program(uc_vm_t *vm, size_t nargs) { uc_value_t *path = uc_fn_arg(0); - struct uc_bpf_fd *f; int fd; if (ucv_type(path) != UC_STRING) @@ -240,11 +255,7 @@ uc_bpf_open_program(uc_vm_t *vm, size_t nargs) if (fd < 0) err_return(errno, NULL); - f = xalloc(sizeof(*f)); - f->fd = fd; - f->close = true; - - return uc_resource_new(program_type, f); + return uc_bpf_prog_create(vm, NULL, fd, true); } static uc_value_t * @@ -284,7 +295,7 @@ uc_bpf_module_get_map(uc_vm_t *vm, size_t nargs) if (fd < 0) 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 * @@ -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_program *prog; uc_value_t *name = uc_fn_arg(0); - struct uc_bpf_fd *f; int fd; 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) err_return(EINVAL, NULL); - f = xalloc(sizeof(*f)); - f->fd = fd; - - return uc_resource_new(program_type, f); + return uc_bpf_prog_create(vm, _uc_fn_this_res(vm), fd, false); } 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_iter *iter; + uc_value_t *res; if (!map) 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->key_size = map->key_size; 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 * @@ -611,7 +620,7 @@ uc_bpf_map_pin(uc_vm_t *vm, size_t nargs) static uc_value_t * 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_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; attach_tc.prog_fd = fd; + attach_tc.classid = ucv_int64_get(classid); if (bpf_tc_attach(&hook, &attach_tc) < 0) 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 *type = uc_fn_arg(1); uc_value_t *prio = uc_fn_arg(2); + uc_value_t *classid = uc_fn_arg(3); if (!f) 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 * @@ -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 *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 @@ -777,7 +788,6 @@ static void uc_bpf_fd_free(void *ptr) if (f->close) close(f->fd); - free(f); } 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); uc_vm_registry_set(vm, "bpf.registry", registry); - module_type = uc_type_declare(vm, "bpf.module", module_fns, module_free); - map_type = 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); - program_type = uc_type_declare(vm, "bpf.program", prog_fns, uc_bpf_fd_free); + uc_type_declare(vm, "bpf.module", module_fns, module_free); + uc_type_declare(vm, "bpf.map", map_fns, uc_bpf_fd_free); + uc_type_declare(vm, "bpf.map_iter", map_iter_fns, NULL); + uc_type_declare(vm, "bpf.program", prog_fns, uc_bpf_fd_free); } diff --git a/package/utils/ucode/Makefile b/package/utils/ucode/Makefile index 38c7731df..20a2b3ced 100644 --- a/package/utils/ucode/Makefile +++ b/package/utils/ucode/Makefile @@ -12,9 +12,9 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=https://github.com/jow-/ucode.git -PKG_SOURCE_DATE:=2025-03-24 -PKG_SOURCE_VERSION:=b27d70c977ab4381f4094a0b1208e2a13fc5123f -PKG_MIRROR_HASH:=c2285ab8e473a12a1795864323af15779ef42a72dfe8a77c740cf99c316a2ac7 +PKG_SOURCE_DATE:=2025-08-26 +PKG_SOURCE_VERSION:=5f712ffd3f31f13ed4812cfb37c21dbef7a75e2b +PKG_MIRROR_HASH:=156b8c3bff39161f01f17272dd16288373c0e90b6cc6ea65eeeb90293ef040c1 PKG_MAINTAINER:=Jo-Philipp Wich PKG_LICENSE:=ISC