From: yaydn@protonmail.com Subject: Re: UPDATE: libnfs 7.0.0 To: Brad Smith , "ports@openbsd.org" Date: Sun, 09 Aug 2026 18:26:39 +0000 På søndag 9. august 2026 kl. 03:48, skrev Brad Smith : > Here is an update to libnfs 7.0.0. > > All depends build Ok. $ cd /usr/ports/devel/libnfs/ && patch -l -p0 -E -C < /tmp/libnfs-7.0.0.diff | grep fail $ cd /usr/ports/devel/libnfs/ && patch -l -p0 -E < /tmp/libnfs-7.0.0.diff $ cd /usr/ports/devel/libnfs/ && make build package test ; make port-lib-depends-check check-shlib-syms clean No regression tests for libnfs-7.0.0pl20260708 /usr/local/lib/libnfs.so.2.2 --> /usr/ports/pobj/libnfs-7.0.0pl20260708/fake-amd64/usr/local/lib/libnfs.so.3.0 Dynamic export changes: added: _nfs_mount_async libnfs_zdr_getptr libnfs_zdr_getsize libnfs_zdr_vector mount_getexports_mountport nfs3_creat_async nfs3_preadv_async_internal nfs4_creat_async nfs4_preadv_async_internal nfs_get_evfd nfs_get_poll_timeout nfs_get_readdir_maxcount nfs_get_server_address nfs_get_tid nfs_preadv nfs_preadv_async nfs_readv nfs_readv_async nfs_set_auto_traverse_mounts nfs_set_error_locked nfs_set_hash_size nfs_set_mountport nfs_set_nfsport nfs_set_poll_timeout nfs_set_readdir_max_buffer_size nfs_set_readonly nfs_set_resolve_on_reconnect nfs_set_retrans nfs_set_security pdu_set_timeout rpc_add_iovector rpc_add_to_outqueue_head rpc_add_to_outqueue_highp rpc_add_to_outqueue_lowp rpc_advance_cursor rpc_cancel_pdu rpc_copy_deferred_call rpc_current_time_us rpc_disable_socket rpc_find_pdu rpc_free_cursor rpc_free_deferred_call rpc_free_iovector rpc_get_evfd rpc_get_mountport rpc_get_num_awaiting rpc_get_pdu rpc_get_pdu_stats rpc_get_poll_timeout rpc_get_stats rpc_get_udp_src_sockaddr rpc_memcpy_cursor rpc_mount1_dump_task rpc_mount1_export_task rpc_mount1_mnt_task rpc_mount1_null_task rpc_mount1_umnt_task rpc_mount1_umntall_task rpc_mount3_dump_task rpc_mount3_export_task rpc_mount3_mnt_task rpc_mount3_null_task rpc_mount3_umnt_task rpc_mount3_umntall_task rpc_nfs2_create_task rpc_nfs2_getattr_task rpc_nfs2_link_task rpc_nfs2_lookup_task rpc_nfs2_mkdir_task rpc_nfs2_null_task rpc_nfs2_read_task rpc_nfs2_readdir_task rpc_nfs2_readlink_task rpc_nfs2_remove_task rpc_nfs2_rename_task rpc_nfs2_rmdir_task rpc_nfs2_setattr_task rpc_nfs2_statfs_task rpc_nfs2_symlink_task rpc_nfs2_write_task rpc_nfs3_access_task rpc_nfs3_commit_task rpc_nfs3_create_task rpc_nfs3_fsinfo_task rpc_nfs3_fsstat_task rpc_nfs3_getattr_task rpc_nfs3_link_task rpc_nfs3_lookup_task rpc_nfs3_mkdir_task rpc_nfs3_mknod_task rpc_nfs3_null_task rpc_nfs3_pathconf_task rpc_nfs3_read_task rpc_nfs3_readdir_task rpc_nfs3_readdirplus_task rpc_nfs3_readlink_task rpc_nfs3_readv_task rpc_nfs3_remove_task rpc_nfs3_rename_task rpc_nfs3_rmdir_task rpc_nfs3_setattr_task rpc_nfs3_symlink_task rpc_nfs3_write_task rpc_nfs3_writev_task rpc_nfs4_compound_task rpc_nfs4_compound_task2 rpc_nfs4_null_task rpc_nfs4_read_task rpc_nfs4_readv_task rpc_nfs4_write_task rpc_nfs4_writev_task rpc_nfsacl3_getacl_task rpc_nfsacl3_null_task rpc_nfsacl3_setacl_task rpc_nlm4_cancel_task rpc_nlm4_lock_task rpc_nlm4_null_task rpc_nlm4_share_task rpc_nlm4_test_task rpc_nlm4_unlock_task rpc_nlm4_unshare_task rpc_nsm1_mon_task rpc_nsm1_notify_task rpc_nsm1_null_task rpc_nsm1_simucrash_task rpc_nsm1_stat_task rpc_nsm1_unmon_task rpc_nsm1_unmonall_task rpc_null_task rpc_pdu_get_dispatch_usecs rpc_pdu_get_req_size rpc_pdu_get_resp_size rpc_pdu_is_retransmitted rpc_pmap2_callit_task rpc_pmap2_dump_task rpc_pmap2_getport_task rpc_pmap2_null_task rpc_pmap2_set_task rpc_pmap2_unset_task rpc_pmap3_callit_task rpc_pmap3_dump_task rpc_pmap3_getaddr_task rpc_pmap3_gettime_task rpc_pmap3_null_task rpc_pmap3_set_task rpc_pmap3_taddr2uaddr_task rpc_pmap3_uaddr2taddr_task rpc_pmap3_unset_task rpc_pmap4_bcast_task rpc_pmap4_dump_task rpc_pmap4_getaddr_task rpc_pmap4_getaddrlist_task rpc_pmap4_getstat_task rpc_pmap4_gettime_task rpc_pmap4_getversaddr_task rpc_pmap4_indirect_task rpc_pmap4_null_task rpc_pmap4_set_task rpc_pmap4_taddr2uaddr_task rpc_pmap4_uaddr2taddr_task rpc_pmap4_unset_task rpc_queue_pdu2 rpc_remove_pdu_from_queue rpc_reset_cursor rpc_return_to_outqueue rpc_rquota1_getactivequota_task rpc_rquota1_getquota_task rpc_rquota1_null_task rpc_rquota2_getactivequota_task rpc_rquota2_getquota_task rpc_rquota2_null_task rpc_set_awaiting_limit rpc_set_error_locked rpc_set_hash_size rpc_set_log_cb rpc_set_mountport rpc_set_poll_timeout rpc_set_resiliency rpc_set_resolve_on_reconnect rpc_set_stats_cb rpc_set_username rpc_shrink_cursor rpc_wakeup_service_thread zdr_BIND_CONN_TO_SESSION4args zdr_BIND_CONN_TO_SESSION4res zdr_BIND_CONN_TO_SESSION4resok zdr_EXCHANGE_ID4args zdr_EXCHANGE_ID4res zdr_EXCHANGE_ID4resok zdr_MOUNT1DUMPres zdr_MOUNT1DUMPres_ptr zdr_MOUNT1EXPORTres zdr_MOUNT1EXPORTres_ptr zdr_MOUNT1MNTargs zdr_MOUNT1MNTres zdr_MOUNT1UMNTargs zdr_MOUNT3DUMPres zdr_MOUNT3DUMPres_ptr zdr_MOUNT3EXPORTres zdr_MOUNT3EXPORTres_ptr zdr_MOUNT3MNTargs zdr_MOUNT3MNTres zdr_MOUNT3UMNTargs zdr_NLM4_SHAREargs zdr_NLM4_SHAREres zdr_NLM4_UNSHAREargs zdr_NLM4_UNSHAREres zdr_PMAP3UADDR2TADDRargs zdr_PMAP4BCASTargs zdr_PMAP4BCASTres zdr_PMAP4DUMPres zdr_PMAP4GETADDRLISTargs zdr_PMAP4GETADDRLISTres zdr_PMAP4GETADDRargs zdr_PMAP4GETADDRres zdr_PMAP4GETSTATres zdr_PMAP4GETVERSADDRargs zdr_PMAP4GETVERSADDRres zdr_PMAP4INDIRECTargs zdr_PMAP4INDIRECTres zdr_PMAP4SETargs zdr_PMAP4TADDR2UADDRargs zdr_PMAP4TADDR2UADDRres zdr_PMAP4UADDR2TADDRargs zdr_PMAP4UADDR2TADDRres zdr_PMAP4UNSETargs zdr_READ3res_zero_copy zdr_READ3resok_zero_copy zdr_WRITE3args_zerocopy zdr_channel_dir_from_client4 zdr_channel_dir_from_server4 zdr_client_owner4 zdr_gsshandle4_t zdr_nfs_impl_id4 zdr_pmap4_bcast_args zdr_pmap4_dump_result zdr_pmap4_entry_list_ptr zdr_pmap4_indirect_args zdr_pmap4_mapping zdr_pmap4_mapping_list zdr_pmap4_netbuf zdr_pmap4_stat_byvers zdr_pmap4_string_result zdr_rpc_gss_cred_t zdr_rpc_gss_cred_vers_1_t zdr_rpc_gss_init_arg zdr_rpc_gss_init_res zdr_rpc_gss_integ_data zdr_rpc_gss_proc_t zdr_rpcb_entry zdr_rpcb_entry_list zdr_rpcb_rmtcallres zdr_rpcb_stat zdr_rpcbs_addrlist zdr_rpcbs_addrlist_ptr zdr_rpcbs_proc zdr_rpcbs_rmtcalllist zdr_rpcbs_rmtcalllist_ptr zdr_server_owner4 zdr_ssv_prot_info4 zdr_ssv_sp_parms4 zdr_state_protect4_a zdr_state_protect4_r zdr_state_protect_how4 zdr_state_protect_ops4 zzdr_READ4resok zzdr_WRITE4args removed: nfs3_create_async nfs4_create_async nfs_create nfs_create_async nfs_pagecache_get nfs_pagecache_init nfs_pagecache_invalidate nfs_pagecache_put nfs_set_pagecache nfs_set_pagecache_ttl nfs_set_readahead rpc_get_pdu_size rpc_get_recv_sockaddr rpc_mount1_dump_async rpc_mount1_export_async rpc_mount1_mnt_async rpc_mount1_null_async rpc_mount1_umnt_async rpc_mount1_umntall_async rpc_mount3_dump_async rpc_mount3_export_async rpc_mount3_mnt_async rpc_mount3_null_async rpc_mount3_umnt_async rpc_mount3_umntall_async rpc_mount_dump_async rpc_mount_export_async rpc_mount_mnt_async rpc_mount_null_async rpc_mount_umnt_async rpc_mount_umntall_async rpc_nfs2_create_async rpc_nfs2_getattr_async rpc_nfs2_link_async rpc_nfs2_lookup_async rpc_nfs2_mkdir_async rpc_nfs2_null_async rpc_nfs2_read_async rpc_nfs2_readdir_async rpc_nfs2_readlink_async rpc_nfs2_remove_async rpc_nfs2_rename_async rpc_nfs2_rmdir_async rpc_nfs2_setattr_async rpc_nfs2_statfs_async rpc_nfs2_symlink_async rpc_nfs2_write_async rpc_nfs3_access_async rpc_nfs3_commit_async rpc_nfs3_create_async rpc_nfs3_fsinfo_async rpc_nfs3_fsstat_async rpc_nfs3_getattr_async rpc_nfs3_link_async rpc_nfs3_lookup_async rpc_nfs3_mkdir_async rpc_nfs3_mknod_async rpc_nfs3_null_async rpc_nfs3_pathconf_async rpc_nfs3_read_async rpc_nfs3_readdir_async rpc_nfs3_readdirplus_async rpc_nfs3_readlink_async rpc_nfs3_remove_async rpc_nfs3_rename_async rpc_nfs3_rmdir_async rpc_nfs3_setattr_async rpc_nfs3_symlink_async rpc_nfs3_write_async rpc_nfs4_compound_async rpc_nfs4_compound_async2 rpc_nfs4_null_async rpc_nfs_access_async rpc_nfs_commit_async rpc_nfs_create_async rpc_nfs_fsinfo_async rpc_nfs_fsstat_async rpc_nfs_getattr_async rpc_nfs_link_async rpc_nfs_lookup_async rpc_nfs_mkdir_async rpc_nfs_mknod_async rpc_nfs_null_async rpc_nfs_pathconf_async rpc_nfs_read_async rpc_nfs_readdir_async rpc_nfs_readdirplus_async rpc_nfs_readlink_async rpc_nfs_remove_async rpc_nfs_rename_async rpc_nfs_rmdir_async rpc_nfs_setattr_async rpc_nfs_symlink_async rpc_nfs_write_async rpc_nfsacl_getacl_async rpc_nfsacl_null_async rpc_nfsacl_setacl_async rpc_nlm4_cancel_async rpc_nlm4_lock_async rpc_nlm4_null_async rpc_nlm4_test_async rpc_nlm4_unlock_async rpc_nsm1_mon_async rpc_nsm1_notify_async rpc_nsm1_null_async rpc_nsm1_simucrash_async rpc_nsm1_stat_async rpc_nsm1_unmon_async rpc_nsm1_unmonall_async rpc_null_async rpc_pmap2_callit_async rpc_pmap2_dump_async rpc_pmap2_getport_async rpc_pmap2_null_async rpc_pmap2_set_async rpc_pmap2_unset_async rpc_pmap3_callit_async rpc_pmap3_dump_async rpc_pmap3_getaddr_async rpc_pmap3_gettime_async rpc_pmap3_null_async rpc_pmap3_set_async rpc_pmap3_taddr2uaddr_async rpc_pmap3_uaddr2taddr_async rpc_pmap3_unset_async rpc_return_to_queue rpc_rquota1_getactivequota_async rpc_rquota1_getquota_async rpc_rquota1_null_async rpc_rquota2_getactivequota_async rpc_rquota2_getquota_async rpc_rquota2_null_async rpc_set_autoreconnect rpc_set_pagecache rpc_set_pagecache_ttl rpc_set_readahead zdr_pmap3_call_result data object sizes changes: _null_auth 24 --> 32 ===> Cleaning for libnfs-7.0.0pl20260708 -- # TRUSTED_PKG_PATH=/usr/ports/packages/amd64/all/ pkg_add -Dsnap -u libnfs libnfs-5.0.2->7.0.0pl20260708: ok -- Sorry for any noise. Builds on current/amd64 with privsep. Hope this helps. May you stay cool and hydrated. -- yaydn > > > * Sat Aug 08 2026 : Version 7.0.0 > - SONAME bumped to 17. struct rpc_stats grew, so this release is not > ABI compatible with 6.x and dependent packages must be rebuilt > - Security: fix a remotely triggerable crash from a forged AUTH_GSS > reply verifier > - Security: bound the ZDR array element count and string/opaque > padding so a short reply cannot drive a huge allocation or read > outside the receive buffer > - Security: implement RPC record fragment reassembly > - Security: fix several heap over-reads where a length delimited XDR > string was used as a NUL terminated C string > - Security: fix a one byte overflow in nfs_readlink() > - Security: fix an infinite readdir loop against a server that never > advances the cookie > - Fix a PDU leak of ~14KB on every mount > - New API: [p]readv[_async], nfs_readv, rpc_set_timeout is now public > - New "readonly" URL argument, and mountport support in the URL > - NFSv4: read rdev/nfs_dev, honour the server's readmax/writemax, > and fix O_EXCL handling on create > - RPC: high/low priority send queue, eventfd based service thread > wakeups, PDU telemetry, and a 100MB maximum transfer size > - TLS: fail mtls when credentials are unavailable rather than > silently downgrading, and support kernels without TLS_1_3_VERSION > - New optional servers/ directory containing rpcbind, rpc.statd and > an NFSv3 server skeleton, all under the MIT license > - portmapper v4 support, including GETADDRLIST > - Many portability fixes for Windows/MSVC, macOS, PS2, arm32 and > riscv64, and the cmake build now builds the examples > > * Sat Dec 14 2024 : Version 6.0.2 > - Fix compile issue on 32 bit platforms > - Fix windows build > > * Fri Dec 13 2024 : Version 6.0.1 > - Fix compile bug on MacOS > - Add autotools support to enable tls > > * Wed Dec 11 2024 : Version 6.0.0 > - KRB5/i/p support > - TLS support > - READ3/4 Zero-Copy > - New API that breaks some signatures. Check LIBNFS_API_V2 > > * Sun Feb 11 2024 : Version 5.0.3 > - drop *BSD support from github workflows > - workflow: indicate that the linux workflow also runs the tests > - Add workflow to build PS2 > - Add workflow running make test > - ps2 bonus: Remove old implementations > - ps2: Fix linkage with a missing file > - Fix ps2 warnings and remove read macros > - update INSTALL build with cmake and debugging enable > - Update waitpdu_len when a pdu times out. > - ci: Build examples and run tests on Linux > - Fix building examples/nfsclient-raw.c > - Allow setting a limit on the number of commands in-flight. > - Always close the socket. > - Handle small reads for record marker field. > - Reset state on reconnect. > - Check return value from adjust_inbuf. > - README: Document that new development has shifted to libnfs-next-gen branch > - fix compiler warning > - Patch to support NLM Share > - rpc: re-add fragment handling when reading from socket. > - change read_from_socket to use a state machine > - Write multiple pdus at once. > - Added NFS4.1 EXCHANGE_ID and BIND_CONN_TO_SESSION > - Added poll_timeout parameter > - Completed NFS 4.1 defintion of open_claim4 > - NFS3: we do not need to provide an alloc-hint to write3 > - Fix deprecation warnings on modern macOS > - Restore Cygwin CI (official GH action from Cygwin maintainers). > - Change Windows writev & readv polyfills to static inline. > - Fix integer size for readdirs dircount/maxcount > - Add OpenBSD back to the workflow > - Add windows workflow and add missing readv/writev replacements to win32 > - Remove BSD from the github workflows. > - Remove CYGWIN github workflow. The cygwin action is abandonware > - Modify LD_PRELOAD toy doc > - Add options to set dircount/maxcount for readdir() > - compile fix for mac > - write3: make sure we do not add too many iovectors > - Change WRITE3 to become zero-copy usinf iovectors for the data. > - Switch writing PDUs to the socket use iovectors. > - Add CodeQL workflow for GitHub code scanning > - github: switch openbsd to 7.0 and try again > - github: switch OpenBSD workflow to use 7.2 instead of 6.9 > - multithreading.c: do not wake up immediately if there are no events to process > - Reduced memory allocations. > - Expose further configuration options > - tests: disable test_8000 for now > - rpm: fix building RPMs > - rpc: fix use after free on init_context failure > - tests: fix failure in 0201 > - rpc: only scan for tiemout out RPCs every second instead of every I/O > - rpc: make it possible to tweak the number of lists we hash to for waitpdu > - libnfs-sync: fail all pdus before returning error from wait_for_nfs_reply > - cmake: update utils to be installed > - socket: remove debugging printf > - Deduplicate paths in CMakeLists.txt. > - Add -no-undefined linker flag for shared library > - Link shared library with ws2_32 > > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/devel/libnfs/Makefile,v > retrieving revision 1.11 > diff -u -p -u -p -r1.11 Makefile > --- Makefile 4 Mar 2026 09:46:42 -0000 1.11 > +++ Makefile 8 Aug 2026 23:40:43 -0000 > @@ -1,12 +1,12 @@ > COMMENT= client library for accessing NFS > > +DISTNAME= libnfs-7.0.0pl20260708 > GH_ACCOUNT= sahlberg > GH_PROJECT= libnfs > -GH_TAGNAME= libnfs-5.0.2 > -PKGNAME= ${GH_TAGNAME} > +GH_COMMIT= 8d4c2f6057acb6a01a316fbb7eea1c05a06e34c6 > CATEGORIES= devel net > > -SHARED_LIBS= nfs 2.2 > +SHARED_LIBS= nfs 3.0 > > HOMEPAGE= https://github.com/sahlberg/libnfs > > @@ -17,9 +17,11 @@ PERMIT_PACKAGE= Yes > > WANTLIB= c > > -AUTOCONF_VERSION= 2.69 > -AUTOMAKE_VERSION= 1.16 > +MODULES= devel/cmake > > -CONFIGURE_STYLE= autoreconf > +CONFIGURE_ARGS+=-DENABLE_UTILS=ON \ > + -DINSTALL_MAN_DIR="${PREFIX}/man" > + > +NO_TEST= Yes > > .include > Index: distinfo > =================================================================== > RCS file: /cvs/ports/devel/libnfs/distinfo,v > retrieving revision 1.6 > diff -u -p -u -p -r1.6 distinfo > --- distinfo 4 Mar 2026 09:46:42 -0000 1.6 > +++ distinfo 8 Aug 2026 23:40:43 -0000 > @@ -1,2 +1,2 @@ > -SHA256 (libnfs-libnfs-5.0.2.tar.gz) = Y35WZDsZ2p+6mPBoR3iMTa0wi3IxVqZHSAQQNdzfm9M= > -SIZE (libnfs-libnfs-5.0.2.tar.gz) = 281154 > +SHA256 (libnfs-7.0.0pl20260708-8d4c2f60.tar.gz) = ZUqmlJD4r0SdLOryavOtWOiQphUVgdlGxwQxk8Mil3A= > +SIZE (libnfs-7.0.0pl20260708-8d4c2f60.tar.gz) = 389218 > Index: patches/patch-include_nfsc_libnfs_h > =================================================================== > RCS file: patches/patch-include_nfsc_libnfs_h > diff -N patches/patch-include_nfsc_libnfs_h > --- patches/patch-include_nfsc_libnfs_h 11 Mar 2022 18:50:37 -0000 1.5 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,13 +0,0 @@ > -Index: include/nfsc/libnfs.h > ---- include/nfsc/libnfs.h.orig > -+++ include/nfsc/libnfs.h > -@@ -38,6 +38,9 @@ > - #ifdef __cplusplus > - extern "C" { > - #endif > -+#if defined(__OpenBSD__) > -+#include /* gettimeofday */ > -+#endif > - > - #define LIBNFS_FEATURE_READAHEAD > - #define LIBNFS_FEATURE_PAGECACHE > Index: pkg/PLIST > =================================================================== > RCS file: /cvs/ports/devel/libnfs/pkg/PLIST,v > retrieving revision 1.4 > diff -u -p -u -p -r1.4 PLIST > --- pkg/PLIST 11 Mar 2022 18:50:37 -0000 1.4 > +++ pkg/PLIST 8 Aug 2026 23:40:43 -0000 > @@ -13,8 +13,12 @@ include/nfsc/libnfs-raw-rquota.h > include/nfsc/libnfs-raw.h > include/nfsc/libnfs-zdr.h > include/nfsc/libnfs.h > -@static-lib lib/libnfs.a > -lib/libnfs.la > +lib/cmake/ > +lib/cmake/libnfs/ > +lib/cmake/libnfs/FindNFS.cmake > +lib/cmake/libnfs/libnfs-config${MODCMAKE_BUILD_SUFFIX} > +lib/cmake/libnfs/libnfs-config-version.cmake > +lib/cmake/libnfs/libnfs-config.cmake > @lib lib/libnfs.so.${LIBnfs_VERSION} > lib/pkgconfig/libnfs.pc > @man man/man1/nfs-cat.1 > >