From nobody Thu Apr 30 21:44:36 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4g674457Tvz6cKyV for ; Thu, 30 Apr 2026 21:44:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4g67443HGDz3g79 for ; Thu, 30 Apr 2026 21:44:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777585476; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HS/UIWEFUhl4vHQ+m/aqTk1Bdeb6pAxCLAXVfIpE3cM=; b=bEpLm3nieGvD6QtMrqLOwJNMgDG50oVd1JZLzeUPj/PZAuF7M/F7fnQu7mdw/enc4u3ITy nTU8vbXduq5bWQolyk9NhKb/4fL0K6FxvWu0gimS7aweq/Grdc44VcD+i/Uq12R8g4J3jh 5FvOvM7uqGOtc4aVzD6as1Xm4z9yNImLtSOfMhP84a7Di0XLcq9aYltX65/GnCQqLPUxes dgBavYRQm2LSVHr7CqnUGk5W69oTCSPBMm1F3Ye3t0r098/3UTB5vCfkgu8Q9AQWz79L8r VyVYmMqpjs6o3aBSOaFH50+VE7IoxSAYCJkIjeHimqXYRu01KQC5BnZyMQuOMQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1777585476; a=rsa-sha256; cv=none; b=m9KtMwnNBjiYMZBpzOwaFnntRvTYTtHzJqGnTGGDF5pjoxHDpnmECOQ2gQHH+66apc2PNf XGc83sfTDtNmm/gG1YK6x6iLW38X/s5nvdrWgtvTN1dRPPpSP1XWnDnrATC1DAS0pN89iz hKP7xfqfht4GM0qXInQnjwhNfuWkq9SIalKQ4Kjt4XB2ZHQSFVs9vyRZVs0XV9BwmEEY/t FzszpG7Cb/6RkLICFrep7MxfqAT+Yf2hFWwCX2MN8ZZ1kM+Py1Gh+SZs8gRid8VDWiOGoZ KJorrbglbmDA8F9aX83inKtjcWf5xHuAVz0V5AP+BI+Mw8ucq44gZ0vlHVHYnQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777585476; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HS/UIWEFUhl4vHQ+m/aqTk1Bdeb6pAxCLAXVfIpE3cM=; b=e9Vnyq1UWJdCG3e9eiNGmH034/T1dazgfWWJrI7njQdmCnARxLqa9YwGj1Vj17VBA3QC0D 4SSLgT6EGv1nbKeIqr40ZDUWGC35zDnv8BvexeSTwvayLQXCe0lZkcWr1g7x3x9mchm2np Bl0cNN6vVJisHzghyrUCZt449Id7MBIiEglWQwC8FH4ZUvYDjIRMPL6Q+qq463n11r62TU F3XJj3N9MYXMPjTKCxUCZrI2g0JqMsqT6gdsWAq1pxUY84RdgoeIoVGjD1rw9qXNxuKZwx tNteajFRcY8sIvzHSsu8HWiD2TpS4uiQ7uW16oWfAB2kt6LZfpyZ45Va3ogntA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g67442bxzzTKM for ; Thu, 30 Apr 2026 21:44:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 47f6a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 30 Apr 2026 21:44:36 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 71ac1ec5c9d9 - main - nfscl: Disable use of callbacks for NFSv4.0 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 71ac1ec5c9d990e7881e75f04140eb0bfe473a21 Auto-Submitted: auto-generated Date: Thu, 30 Apr 2026 21:44:36 +0000 Message-Id: <69f3cd44.47f6a.51672120@gitrepo.freebsd.org> The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=71ac1ec5c9d990e7881e75f04140eb0bfe473a21 commit 71ac1ec5c9d990e7881e75f04140eb0bfe473a21 Author: Rick Macklem AuthorDate: 2026-04-30 21:37:36 +0000 Commit: Rick Macklem CommitDate: 2026-04-30 21:43:04 +0000 nfscl: Disable use of callbacks for NFSv4.0 The only use for callbacks for NFSv4.0 is delegations and delegations rarely work well for NFSv4.0 anyhow. Therefore, this patch disables callbacks for the NFSv4.0 client. This is the same behavior as occurred when the nfscbd(8) daemon was not running. This change allowed a function called nfscl_getmyip() to be removed from the kernel, which is nice since maintaining this function was bothersome, due to its use of routing, etc. MFC after: 2 weeks --- sys/fs/nfs/nfs_commonport.c | 4 --- sys/fs/nfs/nfs_var.h | 1 - sys/fs/nfsclient/nfs_clport.c | 79 ----------------------------------------- sys/fs/nfsclient/nfs_clrpcops.c | 50 +++----------------------- 4 files changed, 5 insertions(+), 129 deletions(-) diff --git a/sys/fs/nfs/nfs_commonport.c b/sys/fs/nfs/nfs_commonport.c index dbc2b3b942e9..91d9188d30c5 100644 --- a/sys/fs/nfs/nfs_commonport.c +++ b/sys/fs/nfs/nfs_commonport.c @@ -62,7 +62,6 @@ int newnfs_numnfsd = 0; struct nfsstatsv1 nfsstatsv1; int nfs_numnfscbd = 0; int nfscl_debuglevel = 0; -char nfsv4_callbackaddr[INET6_ADDRSTRLEN]; int nfsrv_lughashsize = 100; struct mtx nfsrv_dslock_mtx; struct nfsdevicehead nfsrv_devidhead; @@ -90,9 +89,6 @@ SYSCTL_INT(_vfs_nfs, OID_AUTO, realign_test, CTLFLAG_RW, &nfs_realign_test, 0, "Number of realign tests done"); SYSCTL_INT(_vfs_nfs, OID_AUTO, realign_count, CTLFLAG_RW, &nfs_realign_count, 0, "Number of mbuf realignments done"); -SYSCTL_STRING(_vfs_nfs, OID_AUTO, callback_addr, CTLFLAG_RW, - nfsv4_callbackaddr, sizeof(nfsv4_callbackaddr), - "NFSv4 callback addr for server to use"); SYSCTL_INT(_vfs_nfs, OID_AUTO, debuglevel, CTLFLAG_RW, &nfscl_debuglevel, 0, "Debug level for NFS client"); SYSCTL_INT(_vfs_nfs, OID_AUTO, userhashsize, CTLFLAG_RDTUN, &nfsrv_lughashsize, diff --git a/sys/fs/nfs/nfs_var.h b/sys/fs/nfs/nfs_var.h index 2f81905f6c36..8d8de381cbaf 100644 --- a/sys/fs/nfs/nfs_var.h +++ b/sys/fs/nfs/nfs_var.h @@ -373,7 +373,6 @@ int nfsrpc_destroysession(struct nfsmount *, struct nfsclsession *, /* nfs_clcomsubs.c */ int nfsm_uiombuf(struct nfsrv_descript *, struct uio *, int); struct mbuf *nfsm_uiombuflist(struct uio *, int, u_int); -u_int8_t *nfscl_getmyip(struct nfsmount *, struct in6_addr *, int *); int nfsm_getfh(struct nfsrv_descript *, struct nfsfh **); int nfscl_mtofh(struct nfsrv_descript *, struct nfsfh **, struct nfsvattr *, int *); diff --git a/sys/fs/nfsclient/nfs_clport.c b/sys/fs/nfsclient/nfs_clport.c index d23051058ce4..bc5f74b79749 100644 --- a/sys/fs/nfsclient/nfs_clport.c +++ b/sys/fs/nfsclient/nfs_clport.c @@ -34,8 +34,6 @@ */ #include -#include "opt_inet.h" -#include "opt_inet6.h" #include @@ -47,11 +45,6 @@ #include #include #include -#include -#include -#include -#include -#include #include @@ -1046,78 +1039,6 @@ nfscl_loadfsinfo(struct nfsmount *nmp, struct nfsfsinfo *fsp, nmp->nm_state |= NFSSTA_GOTFSINFO; } -/* - * Lookups source address which should be used to communicate with - * @nmp and stores it inside @pdst. - * - * Returns 0 on success. - */ -u_int8_t * -nfscl_getmyip(struct nfsmount *nmp, struct in6_addr *paddr, int *isinet6p) -{ -#if defined(INET6) || defined(INET) - int fibnum; - - fibnum = curthread->td_proc->p_fibnum; -#endif -#ifdef INET - if (nmp->nm_nam->sa_family == AF_INET) { - struct epoch_tracker et; - struct nhop_object *nh; - struct sockaddr_in *sin; - struct in_addr addr = {}; - - sin = (struct sockaddr_in *)nmp->nm_nam; - NET_EPOCH_ENTER(et); - CURVNET_SET(CRED_TO_VNET(nmp->nm_sockreq.nr_cred)); - nh = fib4_lookup(fibnum, sin->sin_addr, 0, NHR_NONE, 0); - if (nh != NULL) { - addr = IA_SIN(ifatoia(nh->nh_ifa))->sin_addr; - if (IN_LOOPBACK(ntohl(addr.s_addr))) { - /* Ignore loopback addresses */ - nh = NULL; - } - } - CURVNET_RESTORE(); - NET_EPOCH_EXIT(et); - - if (nh == NULL) - return (NULL); - *isinet6p = 0; - *((struct in_addr *)paddr) = addr; - - return (u_int8_t *)paddr; - } -#endif -#ifdef INET6 - if (nmp->nm_nam->sa_family == AF_INET6) { - struct epoch_tracker et; - struct sockaddr_in6 *sin6; - int error; - - sin6 = (struct sockaddr_in6 *)nmp->nm_nam; - - NET_EPOCH_ENTER(et); - CURVNET_SET(CRED_TO_VNET(nmp->nm_sockreq.nr_cred)); - error = in6_selectsrc_addr(fibnum, &sin6->sin6_addr, - sin6->sin6_scope_id, NULL, paddr, NULL); - CURVNET_RESTORE(); - NET_EPOCH_EXIT(et); - if (error != 0) - return (NULL); - - if (IN6_IS_ADDR_LOOPBACK(paddr)) - return (NULL); - - /* Scope is embedded in */ - *isinet6p = 1; - - return (u_int8_t *)paddr; - } -#endif - return (NULL); -} - /* * Copy NFS uid, gids from the cred structure. */ diff --git a/sys/fs/nfsclient/nfs_clrpcops.c b/sys/fs/nfsclient/nfs_clrpcops.c index 7d7228a974f4..75713c875622 100644 --- a/sys/fs/nfsclient/nfs_clrpcops.c +++ b/sys/fs/nfsclient/nfs_clrpcops.c @@ -74,7 +74,6 @@ extern struct timeval nfsboottime; extern u_int32_t newnfs_false, newnfs_true; extern nfstype nfsv34_type[9]; extern int nfsrv_useacl; -extern char nfsv4_callbackaddr[INET6_ADDRSTRLEN]; extern int nfscl_debuglevel; extern int nfs_pnfsiothreads; extern u_long sb_max_adj; @@ -1040,13 +1039,10 @@ nfsrpc_setclient(struct nfsmount *nmp, struct nfsclclient *clp, int reclaim, u_int32_t *tl; struct nfsrv_descript nfsd; struct nfsrv_descript *nd = &nfsd; - u_int8_t *cp = NULL, *cp2, addr[INET6_ADDRSTRLEN + 9]; - u_short port; - int error, isinet6 = 0, callblen; + int error; nfsquad_t confirm; static u_int32_t rev = 0; struct nfsclds *dsp, *odsp; - struct in6_addr a6; struct nfsclsession *tsep; struct rpc_reconupcall recon; struct nfscl_reconarg *rcp; @@ -1204,49 +1200,13 @@ nfsrpc_setclient(struct nfsmount *nmp, struct nfsclclient *clp, int reclaim, (void) nfsm_strtom(nd, clp->nfsc_id, clp->nfsc_idlen); /* - * set up the callback address + * Always set the callback address to 0.0.0.0.0.0 so NFSv4.0 + * callbacks are disabled. */ NFSM_BUILD(tl, u_int32_t *, NFSX_UNSIGNED); *tl = txdr_unsigned(NFS_CALLBCKPROG); - callblen = strlen(nfsv4_callbackaddr); - if (callblen == 0) - cp = nfscl_getmyip(nmp, &a6, &isinet6); - if (nfscl_enablecallb && nfs_numnfscbd > 0 && - (callblen > 0 || cp != NULL)) { - port = htons(nfsv4_cbport); - cp2 = (u_int8_t *)&port; -#ifdef INET6 - if ((callblen > 0 && - strchr(nfsv4_callbackaddr, ':')) || isinet6) { - char ip6buf[INET6_ADDRSTRLEN], *ip6add; - - (void) nfsm_strtom(nd, "tcp6", 4); - if (callblen == 0) { - ip6_sprintf(ip6buf, (struct in6_addr *)cp); - ip6add = ip6buf; - } else { - ip6add = nfsv4_callbackaddr; - } - snprintf(addr, INET6_ADDRSTRLEN + 9, "%s.%d.%d", - ip6add, cp2[0], cp2[1]); - } else -#endif - { - (void) nfsm_strtom(nd, "tcp", 3); - if (callblen == 0) - snprintf(addr, INET6_ADDRSTRLEN + 9, - "%d.%d.%d.%d.%d.%d", cp[0], cp[1], - cp[2], cp[3], cp2[0], cp2[1]); - else - snprintf(addr, INET6_ADDRSTRLEN + 9, - "%s.%d.%d", nfsv4_callbackaddr, - cp2[0], cp2[1]); - } - (void) nfsm_strtom(nd, addr, strlen(addr)); - } else { - (void) nfsm_strtom(nd, "tcp", 3); - (void) nfsm_strtom(nd, "0.0.0.0.0.0", 11); - } + (void)nfsm_strtom(nd, "tcp", 3); + (void)nfsm_strtom(nd, "0.0.0.0.0.0", 11); NFSM_BUILD(tl, u_int32_t *, NFSX_UNSIGNED); *tl = txdr_unsigned(clp->nfsc_cbident); nd->nd_flag |= ND_USEGSSNAME;