DF-3214 / fix.diff
--- a/sys/vfs/nfs/nfs_srvcache.c +++ b/sys/vfs/nfs/nfs_srvcache.c @@ -190,10 +190,16 @@ nfsrv_getcache(struct nfsrv_descript *nd, struct nfssvc_sock *slp, loop: for (rp = NFSRCHASH(nd->nd_retxid)->lh_first; rp != NULL; rp = rp->rc_hash.le_next) { if (nd->nd_retxid == rp->rc_xid && nd->nd_procnum == rp->rc_proc && - netaddr_match(AF_INET, &rp->rc_haddr, nd->nd_nam)) { + ((rp->rc_flag & RC_INETADDR) ? + netaddr_match(AF_INET, &rp->rc_haddr, nd->nd_nam) : + netaddr_match(nd->nd_nam->sa_family, &rp->rc_haddr, + nd->nd_nam))) { @@ -304,10 +310,16 @@ nfsrv_updatecache(struct nfsrv_descript *nd, int repvalid, struct mbuf *repmbuf) loop: for (rp = NFSRCHASH(nd->nd_retxid)->lh_first; rp != NULL; rp = rp->rc_hash.le_next) { if (nd->nd_retxid == rp->rc_xid && nd->nd_procnum == rp->rc_proc && - netaddr_match(AF_INET, &rp->rc_haddr, nd->nd_nam)) { + ((rp->rc_flag & RC_INETADDR) ? + netaddr_match(AF_INET, &rp->rc_haddr, nd->nd_nam) : + netaddr_match(nd->nd_nam->sa_family, &rp->rc_haddr, + nd->nd_nam))) { |