Download raw body.
UPDATE: libnfs 7.0.0
På søndag 9. august 2026 kl. 03:48, skrev Brad Smith
<brad@comstyle.com>:
> 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 <bsd.port.mk>
> 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 <sys/time.h> /* 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
>
>
UPDATE: libnfs 7.0.0