From nobody Thu Apr 30 21:44:36 2026 X-Original-To: dev-commits-src-all@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 4g67496D2mz6cKsZ for ; Thu, 30 Apr 2026 21:44:41 +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 4g674944BHz3gGf for ; Thu, 30 Apr 2026 21:44:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777585481; 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=hV8uAAhe1aWGzXW+hHu0wwDE8W3k3W/X0NmePeB1CN4yTrPXEsmegLFs6zMzwmfE5exy91 I/XL/BGnk54aHBzdJN/6GVnAyVXx4TtgmMSnv3j8ptQA8tfOpW3Ftv0AZw3+RG2MSzZH9G Db+k4jzFuCR45g5Hi4N6f+l6gTIMGrWAqxsBMkvSwSwhiyuhbSI3HVXNs3OuByqJHaIuMh Yzz4HcyTJVVX5ryJpIMib9i+oWXkJWjEp5UWiNbhUpO+vJE+lNrwSaPv8atWiLITswr/Bb eX5KzxdkboBnHqph70ZqVDLzMacjpm5A6UkHghsdqHU9+RzWEin1W07ZIWay4g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1777585481; a=rsa-sha256; cv=none; b=XNkdnhGDtCoXNuDHDOxx28pctMeB9Nh+adxUfYu49U27VbF/RW7gMcjSpVd/m4nyeiS2Bc oQKv21g9uh6cDV7qW5HE61pCS63equOZ5P95chdO+5O743jKM6sVnU3kVDGCmPWyqU+3ea 8g7TSNOYBD86TGP5q67Y9RXRAHsH2/RccgkfXKOCntwG2G/Oo+OxBUjyXv8X5C5/npzVzb x/yn+vyMS1P/dJEf/+qTyj/PkKDuevd8HBhAJD0r5xkE+mMycb52Rp80gNAoCEQnKOxZzy NMDCsVsWhymvJmJ14LRMZPDCz6M69PbVwR4KQ28fpqYnu2noh/S/pZOsFQl+sw== 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=1777585481; 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=HAGM2OPDzjfNRrjdtMeY+GG0yfU7TN65pI5f9p8i+egqRsno0TtWa3LpeX05qwoG2fC0do hewWiD2I6FW4G3mpTe7l8dFqyePt75whBWg/W+WeKd5KD8CZp3U3mf4bU1q67lFq9uoHQ7 nzue+qXyVFHzlVs+3PsWOB2MVQ+/UZ+G8Bijf30PSAm0jLxHlnDEBkaNi7l9gQt5miYYCG nB1CNjs5rUPdDq/BiAxc8RhIrFdPu32ulxjoGPv3bgHmGq/lmIt/ORy7Yi3eB7FHyay7mQ ECP1M3ACub5lQsncgjyWESd85ydGhNMB8sRDgtj+dsyd4ZI+Sm0+BTp7pBMVCA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g674939y3zTKN for ; Thu, 30 Apr 2026 21:44:41 +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 all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@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;