1*e81f0ea2Spgoyette /* $NetBSD: nfsproto.h,v 1.1.1.2 2016/11/18 07:49:13 pgoyette Exp $ */ 26ca35587Sdholland /*- 36ca35587Sdholland * Copyright (c) 1989, 1993 46ca35587Sdholland * The Regents of the University of California. All rights reserved. 56ca35587Sdholland * 66ca35587Sdholland * This code is derived from software contributed to Berkeley by 76ca35587Sdholland * Rick Macklem at The University of Guelph. 86ca35587Sdholland * 96ca35587Sdholland * Redistribution and use in source and binary forms, with or without 106ca35587Sdholland * modification, are permitted provided that the following conditions 116ca35587Sdholland * are met: 126ca35587Sdholland * 1. Redistributions of source code must retain the above copyright 136ca35587Sdholland * notice, this list of conditions and the following disclaimer. 146ca35587Sdholland * 2. Redistributions in binary form must reproduce the above copyright 156ca35587Sdholland * notice, this list of conditions and the following disclaimer in the 166ca35587Sdholland * documentation and/or other materials provided with the distribution. 176ca35587Sdholland * 4. Neither the name of the University nor the names of its contributors 186ca35587Sdholland * may be used to endorse or promote products derived from this software 196ca35587Sdholland * without specific prior written permission. 206ca35587Sdholland * 216ca35587Sdholland * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 226ca35587Sdholland * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 236ca35587Sdholland * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 246ca35587Sdholland * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 256ca35587Sdholland * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 266ca35587Sdholland * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 276ca35587Sdholland * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 286ca35587Sdholland * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 296ca35587Sdholland * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 306ca35587Sdholland * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 316ca35587Sdholland * SUCH DAMAGE. 326ca35587Sdholland * 33*e81f0ea2Spgoyette * FreeBSD: head/sys/fs/nfs/nfsproto.h 304026 2016-08-12 22:44:59Z rmacklem 34*e81f0ea2Spgoyette * $NetBSD: nfsproto.h,v 1.1.1.2 2016/11/18 07:49:13 pgoyette Exp $ 356ca35587Sdholland */ 366ca35587Sdholland 376ca35587Sdholland #ifndef _NFS_NFSPROTO_H_ 386ca35587Sdholland #define _NFS_NFSPROTO_H_ 396ca35587Sdholland 406ca35587Sdholland /* 416ca35587Sdholland * nfs definitions as per the Version 2, 3 and 4 specs 426ca35587Sdholland */ 436ca35587Sdholland 446ca35587Sdholland /* 456ca35587Sdholland * Constants as defined in the NFS Version 2, 3 and 4 specs. 466ca35587Sdholland * "NFS: Network File System Protocol Specification" RFC1094 476ca35587Sdholland * and in the "NFS: Network File System Version 3 Protocol 486ca35587Sdholland * Specification" 496ca35587Sdholland */ 506ca35587Sdholland 516ca35587Sdholland #define NFS_PORT 2049 526ca35587Sdholland #define NFS_PROG 100003 536ca35587Sdholland #define NFS_CALLBCKPROG 0x40000000 /* V4 only */ 546ca35587Sdholland #define NFS_VER2 2 556ca35587Sdholland #define NFS_VER3 3 566ca35587Sdholland #define NFS_VER4 4 576ca35587Sdholland #define NFS_V2MAXDATA 8192 586ca35587Sdholland #define NFS_MAXDGRAMDATA 16384 596ca35587Sdholland #define NFS_MAXPATHLEN 1024 606ca35587Sdholland #define NFS_MAXNAMLEN 255 616ca35587Sdholland #define NFS_MAXPKTHDR 404 62*e81f0ea2Spgoyette #define NFS_MAXPACKET (NFS_SRVMAXIO + 2048) 636ca35587Sdholland #define NFS_MINPACKET 20 646ca35587Sdholland #define NFS_FABLKSIZE 512 /* Size in bytes of a block wrt fa_blocks */ 656ca35587Sdholland #define NFSV4_MINORVERSION 0 /* V4 Minor version */ 666ca35587Sdholland #define NFSV41_MINORVERSION 1 /* V4 Minor version */ 676ca35587Sdholland #define NFSV4_CBVERS 1 /* V4 CB Version */ 686ca35587Sdholland #define NFSV41_CBVERS 4 /* V4.1 CB Version */ 696ca35587Sdholland #define NFSV4_SMALLSTR 50 /* Strings small enough for stack */ 706ca35587Sdholland 71*e81f0ea2Spgoyette /* 72*e81f0ea2Spgoyette * This value isn't a fixed value in the RFCs. 73*e81f0ea2Spgoyette * It is the maximum data size supported by NFSv3 or NFSv4 over TCP for 74*e81f0ea2Spgoyette * the server. It should be set to the I/O size preferred by ZFS or 75*e81f0ea2Spgoyette * MAXBSIZE, whichever is greater. 76*e81f0ea2Spgoyette * ZFS currently prefers 128K. 77*e81f0ea2Spgoyette * It used to be called NFS_MAXDATA, but has been renamed to clarify that 78*e81f0ea2Spgoyette * it refers to server side only and doesn't conflict with the NFS_MAXDATA 79*e81f0ea2Spgoyette * defined in rpcsvc/nfs_prot.h for userland. 80*e81f0ea2Spgoyette */ 81*e81f0ea2Spgoyette #define NFS_SRVMAXIO (128 * 1024) 82*e81f0ea2Spgoyette 836ca35587Sdholland /* Stat numbers for rpc returns (version 2, 3 and 4) */ 846ca35587Sdholland /* 856ca35587Sdholland * These numbers are hard-wired in the RFCs, so they can't be changed. 866ca35587Sdholland * The code currently assumes that the ones < 10000 are the same as 876ca35587Sdholland * sys/errno.h and that sys/errno.h will never go as high as 10000. 886ca35587Sdholland * If the value in sys/errno.h of any entry listed below is changed, 896ca35587Sdholland * the NFS code must be modified to do the mapping between them. 906ca35587Sdholland * (You can ignore NFSERR_WFLUSH, since it is never actually used.) 916ca35587Sdholland */ 926ca35587Sdholland #define NFSERR_OK 0 936ca35587Sdholland #define NFSERR_PERM 1 946ca35587Sdholland #define NFSERR_NOENT 2 956ca35587Sdholland #define NFSERR_IO 5 966ca35587Sdholland #define NFSERR_NXIO 6 976ca35587Sdholland #define NFSERR_ACCES 13 986ca35587Sdholland #define NFSERR_EXIST 17 996ca35587Sdholland #define NFSERR_XDEV 18 /* Version 3, 4 only */ 1006ca35587Sdholland #define NFSERR_NODEV 19 1016ca35587Sdholland #define NFSERR_NOTDIR 20 1026ca35587Sdholland #define NFSERR_ISDIR 21 1036ca35587Sdholland #define NFSERR_INVAL 22 /* Version 3, 4 only */ 1046ca35587Sdholland #define NFSERR_FBIG 27 1056ca35587Sdholland #define NFSERR_NOSPC 28 1066ca35587Sdholland #define NFSERR_ROFS 30 1076ca35587Sdholland #define NFSERR_MLINK 31 /* Version 3, 4 only */ 1086ca35587Sdholland #define NFSERR_NAMETOL 63 1096ca35587Sdholland #define NFSERR_NOTEMPTY 66 1106ca35587Sdholland #define NFSERR_DQUOT 69 1116ca35587Sdholland #define NFSERR_STALE 70 1126ca35587Sdholland #define NFSERR_REMOTE 71 /* Version 3 only */ 1136ca35587Sdholland #define NFSERR_WFLUSH 99 /* Version 2 only */ 1146ca35587Sdholland #define NFSERR_BADHANDLE 10001 /* These are Version 3, 4 only */ 1156ca35587Sdholland #define NFSERR_NOT_SYNC 10002 /* Version 3 Only */ 1166ca35587Sdholland #define NFSERR_BAD_COOKIE 10003 1176ca35587Sdholland #define NFSERR_NOTSUPP 10004 1186ca35587Sdholland #define NFSERR_TOOSMALL 10005 1196ca35587Sdholland #define NFSERR_SERVERFAULT 10006 1206ca35587Sdholland #define NFSERR_BADTYPE 10007 1216ca35587Sdholland #define NFSERR_DELAY 10008 /* Called NFSERR_JUKEBOX for V3 */ 1226ca35587Sdholland #define NFSERR_SAME 10009 /* These are Version 4 only */ 1236ca35587Sdholland #define NFSERR_DENIED 10010 1246ca35587Sdholland #define NFSERR_EXPIRED 10011 1256ca35587Sdholland #define NFSERR_LOCKED 10012 1266ca35587Sdholland #define NFSERR_GRACE 10013 1276ca35587Sdholland #define NFSERR_FHEXPIRED 10014 1286ca35587Sdholland #define NFSERR_SHAREDENIED 10015 1296ca35587Sdholland #define NFSERR_WRONGSEC 10016 1306ca35587Sdholland #define NFSERR_CLIDINUSE 10017 1316ca35587Sdholland #define NFSERR_RESOURCE 10018 1326ca35587Sdholland #define NFSERR_MOVED 10019 1336ca35587Sdholland #define NFSERR_NOFILEHANDLE 10020 1346ca35587Sdholland #define NFSERR_MINORVERMISMATCH 10021 1356ca35587Sdholland #define NFSERR_STALECLIENTID 10022 1366ca35587Sdholland #define NFSERR_STALESTATEID 10023 1376ca35587Sdholland #define NFSERR_OLDSTATEID 10024 1386ca35587Sdholland #define NFSERR_BADSTATEID 10025 1396ca35587Sdholland #define NFSERR_BADSEQID 10026 1406ca35587Sdholland #define NFSERR_NOTSAME 10027 1416ca35587Sdholland #define NFSERR_LOCKRANGE 10028 1426ca35587Sdholland #define NFSERR_SYMLINK 10029 1436ca35587Sdholland #define NFSERR_RESTOREFH 10030 1446ca35587Sdholland #define NFSERR_LEASEMOVED 10031 1456ca35587Sdholland #define NFSERR_ATTRNOTSUPP 10032 1466ca35587Sdholland #define NFSERR_NOGRACE 10033 1476ca35587Sdholland #define NFSERR_RECLAIMBAD 10034 1486ca35587Sdholland #define NFSERR_RECLAIMCONFLICT 10035 1496ca35587Sdholland #define NFSERR_BADXDR 10036 1506ca35587Sdholland #define NFSERR_LOCKSHELD 10037 1516ca35587Sdholland #define NFSERR_OPENMODE 10038 1526ca35587Sdholland #define NFSERR_BADOWNER 10039 1536ca35587Sdholland #define NFSERR_BADCHAR 10040 1546ca35587Sdholland #define NFSERR_BADNAME 10041 1556ca35587Sdholland #define NFSERR_BADRANGE 10042 1566ca35587Sdholland #define NFSERR_LOCKNOTSUPP 10043 1576ca35587Sdholland #define NFSERR_OPILLEGAL 10044 1586ca35587Sdholland #define NFSERR_DEADLOCK 10045 1596ca35587Sdholland #define NFSERR_FILEOPEN 10046 1606ca35587Sdholland #define NFSERR_ADMINREVOKED 10047 1616ca35587Sdholland #define NFSERR_CBPATHDOWN 10048 1626ca35587Sdholland 1636ca35587Sdholland /* NFSv4.1 specific errors. */ 1646ca35587Sdholland #define NFSERR_BADIOMODE 10049 1656ca35587Sdholland #define NFSERR_BADLAYOUT 10050 1666ca35587Sdholland #define NFSERR_BADSESSIONDIGEST 10051 1676ca35587Sdholland #define NFSERR_BADSESSION 10052 1686ca35587Sdholland #define NFSERR_BADSLOT 10053 1696ca35587Sdholland #define NFSERR_COMPLETEALREADY 10054 1706ca35587Sdholland #define NFSERR_NOTBNDTOSESS 10055 1716ca35587Sdholland #define NFSERR_DELEGALREADYWANT 10056 1726ca35587Sdholland #define NFSERR_BACKCHANBUSY 10057 1736ca35587Sdholland #define NFSERR_LAYOUTTRYLATER 10058 1746ca35587Sdholland #define NFSERR_LAYOUTUNAVAIL 10059 1756ca35587Sdholland #define NFSERR_NOMATCHLAYOUT 10060 1766ca35587Sdholland #define NFSERR_RECALLCONFLICT 10061 1776ca35587Sdholland #define NFSERR_UNKNLAYOUTTYPE 10062 1786ca35587Sdholland #define NFSERR_SEQMISORDERED 10063 1796ca35587Sdholland #define NFSERR_SEQUENCEPOS 10064 1806ca35587Sdholland #define NFSERR_REQTOOBIG 10065 1816ca35587Sdholland #define NFSERR_REPTOOBIG 10066 1826ca35587Sdholland #define NFSERR_REPTOOBIGTOCACHE 10067 1836ca35587Sdholland #define NFSERR_RETRYUNCACHEDREP 10068 1846ca35587Sdholland #define NFSERR_UNSAFECOMPOUND 10069 1856ca35587Sdholland #define NFSERR_TOOMANYOPS 10070 1866ca35587Sdholland #define NFSERR_OPNOTINSESS 10071 1876ca35587Sdholland #define NFSERR_HASHALGUNSUPP 10072 1886ca35587Sdholland #define NFSERR_CLIENTIDBUSY 10074 1896ca35587Sdholland #define NFSERR_PNFSIOHOLE 10075 1906ca35587Sdholland #define NFSERR_SEQFALSERETRY 10076 1916ca35587Sdholland #define NFSERR_BADHIGHSLOT 10077 1926ca35587Sdholland #define NFSERR_DEADSESSION 10078 1936ca35587Sdholland #define NFSERR_ENCRALGUNSUPP 10079 1946ca35587Sdholland #define NFSERR_PNFSNOLAYOUT 10080 1956ca35587Sdholland #define NFSERR_NOTONLYOP 10081 1966ca35587Sdholland #define NFSERR_WRONGCRED 10082 1976ca35587Sdholland #define NFSERR_WRONGTYPE 10083 1986ca35587Sdholland #define NFSERR_DIRDELEGUNAVAIL 10084 1996ca35587Sdholland #define NFSERR_REJECTDELEG 10085 2006ca35587Sdholland #define NFSERR_RETURNCONFLICT 10086 2016ca35587Sdholland #define NFSERR_DELEGREVOKED 10087 2026ca35587Sdholland 2036ca35587Sdholland #define NFSERR_STALEWRITEVERF 30001 /* Fake return for nfs_commit() */ 2046ca35587Sdholland #define NFSERR_DONTREPLY 30003 /* Don't process request */ 2056ca35587Sdholland #define NFSERR_RETVOID 30004 /* Return void, not error */ 2066ca35587Sdholland #define NFSERR_REPLYFROMCACHE 30005 /* Reply from recent request cache */ 2076ca35587Sdholland #define NFSERR_STALEDONTRECOVER 30006 /* Don't initiate recovery */ 2086ca35587Sdholland 2096ca35587Sdholland #define NFSERR_RPCERR 0x40000000 /* Mark an RPC layer error */ 2106ca35587Sdholland #define NFSERR_AUTHERR 0x80000000 /* Mark an authentication error */ 2116ca35587Sdholland 2126ca35587Sdholland #define NFSERR_RPCMISMATCH (NFSERR_RPCERR | RPC_MISMATCH) 2136ca35587Sdholland #define NFSERR_PROGUNAVAIL (NFSERR_RPCERR | RPC_PROGUNAVAIL) 2146ca35587Sdholland #define NFSERR_PROGMISMATCH (NFSERR_RPCERR | RPC_PROGMISMATCH) 2156ca35587Sdholland #define NFSERR_PROGNOTV4 (NFSERR_RPCERR | 0xffff) 2166ca35587Sdholland #define NFSERR_PROCUNAVAIL (NFSERR_RPCERR | RPC_PROCUNAVAIL) 2176ca35587Sdholland #define NFSERR_GARBAGE (NFSERR_RPCERR | RPC_GARBAGE) 2186ca35587Sdholland 2196ca35587Sdholland /* Sizes in bytes of various nfs rpc components */ 2206ca35587Sdholland #define NFSX_UNSIGNED 4 2216ca35587Sdholland #define NFSX_HYPER (2 * NFSX_UNSIGNED) 2226ca35587Sdholland 2236ca35587Sdholland /* specific to NFS Version 2 */ 2246ca35587Sdholland #define NFSX_V2FH 32 2256ca35587Sdholland #define NFSX_V2FATTR 68 2266ca35587Sdholland #define NFSX_V2SATTR 32 2276ca35587Sdholland #define NFSX_V2COOKIE 4 2286ca35587Sdholland #define NFSX_V2STATFS 20 2296ca35587Sdholland 2306ca35587Sdholland /* specific to NFS Version 3 */ 2316ca35587Sdholland #define NFSX_V3FHMAX 64 /* max. allowed by protocol */ 2326ca35587Sdholland #define NFSX_V3FATTR 84 2336ca35587Sdholland #define NFSX_V3SATTR 60 /* max. all fields filled in */ 2346ca35587Sdholland #define NFSX_V3SRVSATTR (sizeof (struct nfsv3_sattr)) 2356ca35587Sdholland #define NFSX_V3POSTOPATTR (NFSX_V3FATTR + NFSX_UNSIGNED) 2366ca35587Sdholland #define NFSX_V3WCCDATA (NFSX_V3POSTOPATTR + 8 * NFSX_UNSIGNED) 2376ca35587Sdholland #define NFSX_V3STATFS 52 2386ca35587Sdholland #define NFSX_V3FSINFO 48 2396ca35587Sdholland #define NFSX_V3PATHCONF 24 2406ca35587Sdholland 2416ca35587Sdholland /* specific to NFS Version 4 */ 2426ca35587Sdholland #define NFSX_V4FHMAX 128 2436ca35587Sdholland #define NFSX_V4FSID (2 * NFSX_HYPER) 2446ca35587Sdholland #define NFSX_V4SPECDATA (2 * NFSX_UNSIGNED) 2456ca35587Sdholland #define NFSX_V4TIME (NFSX_HYPER + NFSX_UNSIGNED) 2466ca35587Sdholland #define NFSX_V4SETTIME (NFSX_UNSIGNED + NFSX_V4TIME) 2476ca35587Sdholland #define NFSX_V4SESSIONID 16 2486ca35587Sdholland #define NFSX_V4DEVICEID 16 2496ca35587Sdholland 2506ca35587Sdholland /* sizes common to multiple NFS versions */ 2516ca35587Sdholland #define NFSX_FHMAX (NFSX_V4FHMAX) 2526ca35587Sdholland #define NFSX_MYFH (sizeof (fhandle_t)) /* size this server uses */ 2536ca35587Sdholland #define NFSX_VERF 8 2546ca35587Sdholland #define NFSX_STATEIDOTHER 12 2556ca35587Sdholland #define NFSX_STATEID (NFSX_UNSIGNED + NFSX_STATEIDOTHER) 2566ca35587Sdholland #define NFSX_GSSH 12 2576ca35587Sdholland 2586ca35587Sdholland /* variants for multiple versions */ 2596ca35587Sdholland #define NFSX_STATFS(v3) ((v3) ? NFSX_V3STATFS : NFSX_V2STATFS) 2606ca35587Sdholland 2616ca35587Sdholland /* nfs rpc procedure numbers (before version mapping) */ 2626ca35587Sdholland #define NFSPROC_NULL 0 2636ca35587Sdholland #define NFSPROC_GETATTR 1 2646ca35587Sdholland #define NFSPROC_SETATTR 2 2656ca35587Sdholland #define NFSPROC_LOOKUP 3 2666ca35587Sdholland #define NFSPROC_ACCESS 4 2676ca35587Sdholland #define NFSPROC_READLINK 5 2686ca35587Sdholland #define NFSPROC_READ 6 2696ca35587Sdholland #define NFSPROC_WRITE 7 2706ca35587Sdholland #define NFSPROC_CREATE 8 2716ca35587Sdholland #define NFSPROC_MKDIR 9 2726ca35587Sdholland #define NFSPROC_SYMLINK 10 2736ca35587Sdholland #define NFSPROC_MKNOD 11 2746ca35587Sdholland #define NFSPROC_REMOVE 12 2756ca35587Sdholland #define NFSPROC_RMDIR 13 2766ca35587Sdholland #define NFSPROC_RENAME 14 2776ca35587Sdholland #define NFSPROC_LINK 15 2786ca35587Sdholland #define NFSPROC_READDIR 16 2796ca35587Sdholland #define NFSPROC_READDIRPLUS 17 2806ca35587Sdholland #define NFSPROC_FSSTAT 18 2816ca35587Sdholland #define NFSPROC_FSINFO 19 2826ca35587Sdholland #define NFSPROC_PATHCONF 20 2836ca35587Sdholland #define NFSPROC_COMMIT 21 2846ca35587Sdholland 2856ca35587Sdholland /* 2866ca35587Sdholland * The lower numbers -> 21 are used by NFSv2 and v3. These define higher 2876ca35587Sdholland * numbers used by NFSv4. 2886ca35587Sdholland * NFS_V3NPROCS is one greater than the last V3 op and NFS_NPROCS is 2896ca35587Sdholland * one greater than the last number. 2906ca35587Sdholland */ 2916ca35587Sdholland #ifndef NFS_V3NPROCS 2926ca35587Sdholland #define NFS_V3NPROCS 22 2936ca35587Sdholland 2946ca35587Sdholland #define NFSPROC_LOOKUPP 22 2956ca35587Sdholland #define NFSPROC_SETCLIENTID 23 2966ca35587Sdholland #define NFSPROC_SETCLIENTIDCFRM 24 2976ca35587Sdholland #define NFSPROC_LOCK 25 2986ca35587Sdholland #define NFSPROC_LOCKU 26 2996ca35587Sdholland #define NFSPROC_OPEN 27 3006ca35587Sdholland #define NFSPROC_CLOSE 28 3016ca35587Sdholland #define NFSPROC_OPENCONFIRM 29 3026ca35587Sdholland #define NFSPROC_LOCKT 30 3036ca35587Sdholland #define NFSPROC_OPENDOWNGRADE 31 3046ca35587Sdholland #define NFSPROC_RENEW 32 3056ca35587Sdholland #define NFSPROC_PUTROOTFH 33 3066ca35587Sdholland #define NFSPROC_RELEASELCKOWN 34 3076ca35587Sdholland #define NFSPROC_DELEGRETURN 35 3086ca35587Sdholland #define NFSPROC_RETDELEGREMOVE 36 3096ca35587Sdholland #define NFSPROC_RETDELEGRENAME1 37 3106ca35587Sdholland #define NFSPROC_RETDELEGRENAME2 38 3116ca35587Sdholland #define NFSPROC_GETACL 39 3126ca35587Sdholland #define NFSPROC_SETACL 40 3136ca35587Sdholland 3146ca35587Sdholland /* 3156ca35587Sdholland * Must be defined as one higher than the last Proc# above. 3166ca35587Sdholland */ 3176ca35587Sdholland #define NFSV4_NPROCS 41 3186ca35587Sdholland 3196ca35587Sdholland /* Additional procedures for NFSv4.1. */ 3206ca35587Sdholland #define NFSPROC_EXCHANGEID 41 3216ca35587Sdholland #define NFSPROC_CREATESESSION 42 3226ca35587Sdholland #define NFSPROC_DESTROYSESSION 43 3236ca35587Sdholland #define NFSPROC_DESTROYCLIENT 44 3246ca35587Sdholland #define NFSPROC_FREESTATEID 45 3256ca35587Sdholland #define NFSPROC_LAYOUTGET 46 3266ca35587Sdholland #define NFSPROC_GETDEVICEINFO 47 3276ca35587Sdholland #define NFSPROC_LAYOUTCOMMIT 48 3286ca35587Sdholland #define NFSPROC_LAYOUTRETURN 49 3296ca35587Sdholland #define NFSPROC_RECLAIMCOMPL 50 3306ca35587Sdholland #define NFSPROC_WRITEDS 51 3316ca35587Sdholland #define NFSPROC_READDS 52 3326ca35587Sdholland #define NFSPROC_COMMITDS 53 3336ca35587Sdholland 3346ca35587Sdholland /* 3356ca35587Sdholland * Must be defined as one higher than the last NFSv4.1 Proc# above. 3366ca35587Sdholland */ 3376ca35587Sdholland #define NFSV41_NPROCS 54 3386ca35587Sdholland 3396ca35587Sdholland #endif /* NFS_V3NPROCS */ 3406ca35587Sdholland 3416ca35587Sdholland /* 3426ca35587Sdholland * Define NFS_NPROCS as NFSV4_NPROCS for the experimental kernel code. 3436ca35587Sdholland */ 3446ca35587Sdholland #ifndef NFS_NPROCS 3456ca35587Sdholland #define NFS_NPROCS NFSV4_NPROCS 3466ca35587Sdholland #endif 3476ca35587Sdholland 3486ca35587Sdholland /* 3496ca35587Sdholland * NFSPROC_NOOP is a fake op# that can't be the same as any V2/3/4 Procedure 350*e81f0ea2Spgoyette * or Operation#. Since the NFS V4 Op #s go higher, use NFSV42_NOPS, which 3516ca35587Sdholland * is one greater than the highest Op#. 3526ca35587Sdholland */ 353*e81f0ea2Spgoyette #define NFSPROC_NOOP NFSV42_NOPS 3546ca35587Sdholland 3556ca35587Sdholland /* Actual Version 2 procedure numbers */ 3566ca35587Sdholland #define NFSV2PROC_NULL 0 3576ca35587Sdholland #define NFSV2PROC_GETATTR 1 3586ca35587Sdholland #define NFSV2PROC_SETATTR 2 3596ca35587Sdholland #define NFSV2PROC_NOOP 3 3606ca35587Sdholland #define NFSV2PROC_ROOT NFSV2PROC_NOOP /* Obsolete */ 3616ca35587Sdholland #define NFSV2PROC_LOOKUP 4 3626ca35587Sdholland #define NFSV2PROC_READLINK 5 3636ca35587Sdholland #define NFSV2PROC_READ 6 3646ca35587Sdholland #define NFSV2PROC_WRITECACHE NFSV2PROC_NOOP /* Obsolete */ 3656ca35587Sdholland #define NFSV2PROC_WRITE 8 3666ca35587Sdholland #define NFSV2PROC_CREATE 9 3676ca35587Sdholland #define NFSV2PROC_REMOVE 10 3686ca35587Sdholland #define NFSV2PROC_RENAME 11 3696ca35587Sdholland #define NFSV2PROC_LINK 12 3706ca35587Sdholland #define NFSV2PROC_SYMLINK 13 3716ca35587Sdholland #define NFSV2PROC_MKDIR 14 3726ca35587Sdholland #define NFSV2PROC_RMDIR 15 3736ca35587Sdholland #define NFSV2PROC_READDIR 16 3746ca35587Sdholland #define NFSV2PROC_STATFS 17 3756ca35587Sdholland 3766ca35587Sdholland /* 3776ca35587Sdholland * V4 Procedure numbers 3786ca35587Sdholland */ 3796ca35587Sdholland #define NFSV4PROC_COMPOUND 1 3806ca35587Sdholland #define NFSV4PROC_CBNULL 0 3816ca35587Sdholland #define NFSV4PROC_CBCOMPOUND 1 3826ca35587Sdholland 3836ca35587Sdholland /* 3846ca35587Sdholland * Constants used by the Version 3 and 4 protocols for various RPCs 3856ca35587Sdholland */ 3866ca35587Sdholland #define NFSV3SATTRTIME_DONTCHANGE 0 3876ca35587Sdholland #define NFSV3SATTRTIME_TOSERVER 1 3886ca35587Sdholland #define NFSV3SATTRTIME_TOCLIENT 2 3896ca35587Sdholland 3906ca35587Sdholland #define NFSV4SATTRTIME_TOSERVER 0 3916ca35587Sdholland #define NFSV4SATTRTIME_TOCLIENT 1 3926ca35587Sdholland 3936ca35587Sdholland #define NFSV4LOCKT_READ 1 3946ca35587Sdholland #define NFSV4LOCKT_WRITE 2 3956ca35587Sdholland #define NFSV4LOCKT_READW 3 3966ca35587Sdholland #define NFSV4LOCKT_WRITEW 4 3976ca35587Sdholland #define NFSV4LOCKT_RELEASE 5 3986ca35587Sdholland 3996ca35587Sdholland #define NFSV4OPEN_NOCREATE 0 4006ca35587Sdholland #define NFSV4OPEN_CREATE 1 4016ca35587Sdholland #define NFSV4OPEN_CLAIMNULL 0 4026ca35587Sdholland #define NFSV4OPEN_CLAIMPREVIOUS 1 4036ca35587Sdholland #define NFSV4OPEN_CLAIMDELEGATECUR 2 4046ca35587Sdholland #define NFSV4OPEN_CLAIMDELEGATEPREV 3 405*e81f0ea2Spgoyette #define NFSV4OPEN_CLAIMFH 4 406*e81f0ea2Spgoyette #define NFSV4OPEN_CLAIMDELEGATECURFH 5 407*e81f0ea2Spgoyette #define NFSV4OPEN_CLAIMDELEGATEPREVFH 6 4086ca35587Sdholland #define NFSV4OPEN_DELEGATENONE 0 4096ca35587Sdholland #define NFSV4OPEN_DELEGATEREAD 1 4106ca35587Sdholland #define NFSV4OPEN_DELEGATEWRITE 2 411*e81f0ea2Spgoyette #define NFSV4OPEN_DELEGATENONEEXT 3 4126ca35587Sdholland #define NFSV4OPEN_LIMITSIZE 1 4136ca35587Sdholland #define NFSV4OPEN_LIMITBLOCKS 2 4146ca35587Sdholland 4156ca35587Sdholland /* 4166ca35587Sdholland * Nfs V4 ACE stuff 4176ca35587Sdholland */ 4186ca35587Sdholland #define NFSV4ACE_ALLOWEDTYPE 0x00000000 4196ca35587Sdholland #define NFSV4ACE_DENIEDTYPE 0x00000001 4206ca35587Sdholland #define NFSV4ACE_AUDITTYPE 0x00000002 4216ca35587Sdholland #define NFSV4ACE_ALARMTYPE 0x00000003 4226ca35587Sdholland 4236ca35587Sdholland #define NFSV4ACE_SUPALLOWED 0x00000001 4246ca35587Sdholland #define NFSV4ACE_SUPDENIED 0x00000002 4256ca35587Sdholland #define NFSV4ACE_SUPAUDIT 0x00000004 4266ca35587Sdholland #define NFSV4ACE_SUPALARM 0x00000008 4276ca35587Sdholland 4286ca35587Sdholland #define NFSV4ACE_SUPTYPES (NFSV4ACE_SUPALLOWED | NFSV4ACE_SUPDENIED) 4296ca35587Sdholland 4306ca35587Sdholland #define NFSV4ACE_FILEINHERIT 0x00000001 4316ca35587Sdholland #define NFSV4ACE_DIRECTORYINHERIT 0x00000002 4326ca35587Sdholland #define NFSV4ACE_NOPROPAGATEINHERIT 0x00000004 4336ca35587Sdholland #define NFSV4ACE_INHERITONLY 0x00000008 4346ca35587Sdholland #define NFSV4ACE_SUCCESSFULACCESS 0x00000010 4356ca35587Sdholland #define NFSV4ACE_FAILEDACCESS 0x00000020 4366ca35587Sdholland #define NFSV4ACE_IDENTIFIERGROUP 0x00000040 4376ca35587Sdholland 4386ca35587Sdholland #define NFSV4ACE_READDATA 0x00000001 4396ca35587Sdholland #define NFSV4ACE_LISTDIRECTORY 0x00000001 4406ca35587Sdholland #define NFSV4ACE_WRITEDATA 0x00000002 4416ca35587Sdholland #define NFSV4ACE_ADDFILE 0x00000002 4426ca35587Sdholland #define NFSV4ACE_APPENDDATA 0x00000004 4436ca35587Sdholland #define NFSV4ACE_ADDSUBDIRECTORY 0x00000004 4446ca35587Sdholland #define NFSV4ACE_READNAMEDATTR 0x00000008 4456ca35587Sdholland #define NFSV4ACE_WRITENAMEDATTR 0x00000010 4466ca35587Sdholland #define NFSV4ACE_EXECUTE 0x00000020 4476ca35587Sdholland #define NFSV4ACE_SEARCH 0x00000020 4486ca35587Sdholland #define NFSV4ACE_DELETECHILD 0x00000040 4496ca35587Sdholland #define NFSV4ACE_READATTRIBUTES 0x00000080 4506ca35587Sdholland #define NFSV4ACE_WRITEATTRIBUTES 0x00000100 4516ca35587Sdholland #define NFSV4ACE_DELETE 0x00010000 4526ca35587Sdholland #define NFSV4ACE_READACL 0x00020000 4536ca35587Sdholland #define NFSV4ACE_WRITEACL 0x00040000 4546ca35587Sdholland #define NFSV4ACE_WRITEOWNER 0x00080000 4556ca35587Sdholland #define NFSV4ACE_SYNCHRONIZE 0x00100000 4566ca35587Sdholland 4576ca35587Sdholland /* 4586ca35587Sdholland * Here are the mappings between mode bits and acl mask bits for 4596ca35587Sdholland * directories and other files. 4606ca35587Sdholland * (Named attributes have not been included, since named attributes are 4616ca35587Sdholland * not yet supported.) 4626ca35587Sdholland * The mailing list seems to indicate that NFSV4ACE_EXECUTE refers to 4636ca35587Sdholland * searching a directory, although I can't find a statement of that in 4646ca35587Sdholland * the RFC. 4656ca35587Sdholland */ 4666ca35587Sdholland #define NFSV4ACE_ALLFILESMASK (NFSV4ACE_READATTRIBUTES | NFSV4ACE_READACL) 4676ca35587Sdholland #define NFSV4ACE_OWNERMASK (NFSV4ACE_WRITEATTRIBUTES | NFSV4ACE_WRITEACL) 4686ca35587Sdholland #define NFSV4ACE_DIRREADMASK NFSV4ACE_LISTDIRECTORY 4696ca35587Sdholland #define NFSV4ACE_DIREXECUTEMASK NFSV4ACE_EXECUTE 4706ca35587Sdholland #define NFSV4ACE_DIRWRITEMASK (NFSV4ACE_ADDFILE | \ 4716ca35587Sdholland NFSV4ACE_ADDSUBDIRECTORY | NFSV4ACE_DELETECHILD) 4726ca35587Sdholland #define NFSV4ACE_READMASK NFSV4ACE_READDATA 4736ca35587Sdholland #define NFSV4ACE_WRITEMASK (NFSV4ACE_WRITEDATA | NFSV4ACE_APPENDDATA) 4746ca35587Sdholland #define NFSV4ACE_EXECUTEMASK NFSV4ACE_EXECUTE 4756ca35587Sdholland #define NFSV4ACE_ALLFILEBITS (NFSV4ACE_READMASK | NFSV4ACE_WRITEMASK | \ 4766ca35587Sdholland NFSV4ACE_EXECUTEMASK | NFSV4ACE_SYNCHRONIZE) 4776ca35587Sdholland #define NFSV4ACE_ALLDIRBITS (NFSV4ACE_DIRREADMASK | \ 4786ca35587Sdholland NFSV4ACE_DIRWRITEMASK | NFSV4ACE_DIREXECUTEMASK) 4796ca35587Sdholland #define NFSV4ACE_AUDITMASK 0x0 4806ca35587Sdholland 4816ca35587Sdholland /* 4826ca35587Sdholland * These GENERIC masks are not used and are no longer believed to be useful. 4836ca35587Sdholland */ 4846ca35587Sdholland #define NFSV4ACE_GENERICREAD 0x00120081 4856ca35587Sdholland #define NFSV4ACE_GENERICWRITE 0x00160106 4866ca35587Sdholland #define NFSV4ACE_GENERICEXECUTE 0x001200a0 4876ca35587Sdholland 4886ca35587Sdholland #define NFSSTATEID_PUTALLZERO 0 4896ca35587Sdholland #define NFSSTATEID_PUTALLONE 1 4906ca35587Sdholland #define NFSSTATEID_PUTSTATEID 2 4916ca35587Sdholland #define NFSSTATEID_PUTSEQIDZERO 3 4926ca35587Sdholland 4936ca35587Sdholland /* 4946ca35587Sdholland * Bits for share access and deny. 4956ca35587Sdholland */ 4966ca35587Sdholland #define NFSV4OPEN_ACCESSREAD 0x00000001 4976ca35587Sdholland #define NFSV4OPEN_ACCESSWRITE 0x00000002 4986ca35587Sdholland #define NFSV4OPEN_ACCESSBOTH 0x00000003 499*e81f0ea2Spgoyette #define NFSV4OPEN_WANTDELEGMASK 0x0000ff00 500*e81f0ea2Spgoyette #define NFSV4OPEN_WANTREADDELEG 0x00000100 501*e81f0ea2Spgoyette #define NFSV4OPEN_WANTWRITEDELEG 0x00000200 502*e81f0ea2Spgoyette #define NFSV4OPEN_WANTANYDELEG 0x00000300 503*e81f0ea2Spgoyette #define NFSV4OPEN_WANTNODELEG 0x00000400 504*e81f0ea2Spgoyette #define NFSV4OPEN_WANTCANCEL 0x00000500 505*e81f0ea2Spgoyette #define NFSV4OPEN_WANTSIGNALDELEG 0x00010000 506*e81f0ea2Spgoyette #define NFSV4OPEN_WANTPUSHDELEG 0x00020000 5076ca35587Sdholland 5086ca35587Sdholland #define NFSV4OPEN_DENYNONE 0x00000000 5096ca35587Sdholland #define NFSV4OPEN_DENYREAD 0x00000001 5106ca35587Sdholland #define NFSV4OPEN_DENYWRITE 0x00000002 5116ca35587Sdholland #define NFSV4OPEN_DENYBOTH 0x00000003 5126ca35587Sdholland 5136ca35587Sdholland /* 514*e81f0ea2Spgoyette * Delegate_none_ext reply values. 515*e81f0ea2Spgoyette */ 516*e81f0ea2Spgoyette #define NFSV4OPEN_NOTWANTED 0 517*e81f0ea2Spgoyette #define NFSV4OPEN_CONTENTION 1 518*e81f0ea2Spgoyette #define NFSV4OPEN_RESOURCE 2 519*e81f0ea2Spgoyette #define NFSV4OPEN_NOTSUPPFTYPE 3 520*e81f0ea2Spgoyette #define NFSV4OPEN_NOTSUPPWRITEFTYPE 4 521*e81f0ea2Spgoyette #define NFSV4OPEN_NOTSUPPUPGRADE 5 522*e81f0ea2Spgoyette #define NFSV4OPEN_NOTSUPPDOWNGRADE 6 523*e81f0ea2Spgoyette #define NFSV4OPEN_CANCELLED 7 524*e81f0ea2Spgoyette #define NFSV4OPEN_ISDIR 8 525*e81f0ea2Spgoyette 526*e81f0ea2Spgoyette /* 5276ca35587Sdholland * Open result flags 528*e81f0ea2Spgoyette * (The first four are in the spec. The rest are used internally.) 5296ca35587Sdholland */ 5306ca35587Sdholland #define NFSV4OPEN_RESULTCONFIRM 0x00000002 5316ca35587Sdholland #define NFSV4OPEN_LOCKTYPEPOSIX 0x00000004 532*e81f0ea2Spgoyette #define NFSV4OPEN_PRESERVEUNLINKED 0x00000008 533*e81f0ea2Spgoyette #define NFSV4OPEN_MAYNOTIFYLOCK 0x00000020 5346ca35587Sdholland #define NFSV4OPEN_RFLAGS \ 535*e81f0ea2Spgoyette (NFSV4OPEN_RESULTCONFIRM | NFSV4OPEN_LOCKTYPEPOSIX | \ 536*e81f0ea2Spgoyette NFSV4OPEN_PRESERVEUNLINKED | NFSV4OPEN_MAYNOTIFYLOCK) 5376ca35587Sdholland #define NFSV4OPEN_RECALL 0x00010000 5386ca35587Sdholland #define NFSV4OPEN_READDELEGATE 0x00020000 5396ca35587Sdholland #define NFSV4OPEN_WRITEDELEGATE 0x00040000 540*e81f0ea2Spgoyette #define NFSV4OPEN_WDRESOURCE 0x00080000 541*e81f0ea2Spgoyette #define NFSV4OPEN_WDCONTENTION 0x00100000 542*e81f0ea2Spgoyette #define NFSV4OPEN_WDNOTWANTED 0x00200000 5436ca35587Sdholland 5446ca35587Sdholland /* 5456ca35587Sdholland * NFS V4 File Handle types 5466ca35587Sdholland */ 5476ca35587Sdholland #define NFSV4FHTYPE_PERSISTENT 0x0 5486ca35587Sdholland #define NFSV4FHTYPE_NOEXPIREWITHOPEN 0x1 5496ca35587Sdholland #define NFSV4FHTYPE_VOLATILEANY 0x2 5506ca35587Sdholland #define NFSV4FHTYPE_VOLATILEMIGRATE 0x4 5516ca35587Sdholland #define NFSV4FHTYPE_VOLATILERENAME 0x8 5526ca35587Sdholland 5536ca35587Sdholland /* 5546ca35587Sdholland * Maximum size of V4 opaque strings. 5556ca35587Sdholland */ 5566ca35587Sdholland #define NFSV4_OPAQUELIMIT 1024 5576ca35587Sdholland 5586ca35587Sdholland /* 5596ca35587Sdholland * These are the same for V3 and V4. 5606ca35587Sdholland */ 5616ca35587Sdholland #define NFSACCESS_READ 0x01 5626ca35587Sdholland #define NFSACCESS_LOOKUP 0x02 5636ca35587Sdholland #define NFSACCESS_MODIFY 0x04 5646ca35587Sdholland #define NFSACCESS_EXTEND 0x08 5656ca35587Sdholland #define NFSACCESS_DELETE 0x10 5666ca35587Sdholland #define NFSACCESS_EXECUTE 0x20 5676ca35587Sdholland 5686ca35587Sdholland #define NFSWRITE_UNSTABLE 0 5696ca35587Sdholland #define NFSWRITE_DATASYNC 1 5706ca35587Sdholland #define NFSWRITE_FILESYNC 2 5716ca35587Sdholland 5726ca35587Sdholland #define NFSCREATE_UNCHECKED 0 5736ca35587Sdholland #define NFSCREATE_GUARDED 1 5746ca35587Sdholland #define NFSCREATE_EXCLUSIVE 2 5756ca35587Sdholland #define NFSCREATE_EXCLUSIVE41 3 5766ca35587Sdholland 5776ca35587Sdholland #define NFSV3FSINFO_LINK 0x01 5786ca35587Sdholland #define NFSV3FSINFO_SYMLINK 0x02 5796ca35587Sdholland #define NFSV3FSINFO_HOMOGENEOUS 0x08 5806ca35587Sdholland #define NFSV3FSINFO_CANSETTIME 0x10 5816ca35587Sdholland 5826ca35587Sdholland /* Flags for Exchange ID */ 5836ca35587Sdholland #define NFSV4EXCH_SUPPMOVEDREFER 0x00000001 5846ca35587Sdholland #define NFSV4EXCH_SUPPMOVEDMIGR 0x00000002 5856ca35587Sdholland #define NFSV4EXCH_BINDPRINCSTATEID 0x00000100 5866ca35587Sdholland #define NFSV4EXCH_USENONPNFS 0x00010000 5876ca35587Sdholland #define NFSV4EXCH_USEPNFSMDS 0x00020000 5886ca35587Sdholland #define NFSV4EXCH_USEPNFSDS 0x00040000 5896ca35587Sdholland #define NFSV4EXCH_MASKPNFS 0x00070000 5906ca35587Sdholland #define NFSV4EXCH_UPDCONFIRMEDRECA 0x40000000 5916ca35587Sdholland #define NFSV4EXCH_CONFIRMEDR 0x80000000 5926ca35587Sdholland 5936ca35587Sdholland /* State Protects */ 5946ca35587Sdholland #define NFSV4EXCH_SP4NONE 0 5956ca35587Sdholland #define NFSV4EXCH_SP4MACHCRED 1 5966ca35587Sdholland #define NFSV4EXCH_SP4SSV 2 5976ca35587Sdholland 5986ca35587Sdholland /* Flags for Create Session */ 5996ca35587Sdholland #define NFSV4CRSESS_PERSIST 0x00000001 6006ca35587Sdholland #define NFSV4CRSESS_CONNBACKCHAN 0x00000002 6016ca35587Sdholland #define NFSV4CRSESS_CONNRDMA 0x00000004 6026ca35587Sdholland 6036ca35587Sdholland /* Flags for Sequence */ 6046ca35587Sdholland #define NFSV4SEQ_CBPATHDOWN 0x00000001 6056ca35587Sdholland #define NFSV4SEQ_CBGSSCONTEXPIRING 0x00000002 6066ca35587Sdholland #define NFSV4SEQ_CBGSSCONTEXPIRED 0x00000004 6076ca35587Sdholland #define NFSV4SEQ_EXPIREDALLSTATEREVOKED 0x00000008 6086ca35587Sdholland #define NFSV4SEQ_EXPIREDSOMESTATEREVOKED 0x00000010 6096ca35587Sdholland #define NFSV4SEQ_ADMINSTATEREVOKED 0x00000020 6106ca35587Sdholland #define NFSV4SEQ_RECALLABLESTATEREVOKED 0x00000040 6116ca35587Sdholland #define NFSV4SEQ_LEASEMOVED 0x00000080 6126ca35587Sdholland #define NFSV4SEQ_RESTARTRECLAIMNEEDED 0x00000100 6136ca35587Sdholland #define NFSV4SEQ_CBPATHDOWNSESSION 0x00000200 6146ca35587Sdholland #define NFSV4SEQ_BACKCHANNELFAULT 0x00000400 6156ca35587Sdholland #define NFSV4SEQ_DEVIDCHANGED 0x00000800 6166ca35587Sdholland #define NFSV4SEQ_DEVIDDELETED 0x00001000 6176ca35587Sdholland 6186ca35587Sdholland /* Flags for Layout. */ 6196ca35587Sdholland #define NFSLAYOUTRETURN_FILE 1 6206ca35587Sdholland #define NFSLAYOUTRETURN_FSID 2 6216ca35587Sdholland #define NFSLAYOUTRETURN_ALL 3 6226ca35587Sdholland 6236ca35587Sdholland #define NFSLAYOUT_NFSV4_1_FILES 0x1 6246ca35587Sdholland #define NFSLAYOUT_OSD2_OBJECTS 0x2 6256ca35587Sdholland #define NFSLAYOUT_BLOCK_VOLUME 0x3 6266ca35587Sdholland 6276ca35587Sdholland #define NFSLAYOUTIOMODE_READ 1 6286ca35587Sdholland #define NFSLAYOUTIOMODE_RW 2 6296ca35587Sdholland #define NFSLAYOUTIOMODE_ANY 3 6306ca35587Sdholland 6316ca35587Sdholland /* Flags for Get Device Info. */ 6326ca35587Sdholland #define NFSDEVICEIDNOTIFY_CHANGEBIT 0x1 6336ca35587Sdholland #define NFSDEVICEIDNOTIFY_DELETEBIT 0x2 6346ca35587Sdholland 6356ca35587Sdholland /* Flags for File Layout. */ 6366ca35587Sdholland #define NFSFLAYUTIL_DENSE 0x1 6376ca35587Sdholland #define NFSFLAYUTIL_COMMIT_THRU_MDS 0x2 6386ca35587Sdholland 6396ca35587Sdholland /* Conversion macros */ 6406ca35587Sdholland #define vtonfsv2_mode(t,m) \ 6416ca35587Sdholland txdr_unsigned(((t) == VFIFO) ? MAKEIMODE(VCHR, (m)) : \ 6426ca35587Sdholland MAKEIMODE((t), (m))) 6436ca35587Sdholland #define vtonfsv34_mode(m) txdr_unsigned((m) & 07777) 6446ca35587Sdholland #define nfstov_mode(a) (fxdr_unsigned(u_int16_t, (a))&07777) 6456ca35587Sdholland #define vtonfsv2_type(a) (((u_int32_t)(a)) >= 9 ? txdr_unsigned(NFNON) : \ 6466ca35587Sdholland txdr_unsigned(newnfsv2_type[((u_int32_t)(a))])) 6476ca35587Sdholland #define vtonfsv34_type(a) (((u_int32_t)(a)) >= 9 ? txdr_unsigned(NFNON) : \ 6486ca35587Sdholland txdr_unsigned(nfsv34_type[((u_int32_t)(a))])) 6496ca35587Sdholland #define nfsv2tov_type(a) newnv2tov_type[fxdr_unsigned(u_int32_t,(a))&0x7] 6506ca35587Sdholland #define nfsv34tov_type(a) nv34tov_type[fxdr_unsigned(u_int32_t,(a))&0x7] 6516ca35587Sdholland #define vtonfs_dtype(a) (((u_int32_t)(a)) >= 9 ? IFTODT(VTTOIF(VNON)) : \ 6526ca35587Sdholland IFTODT(VTTOIF(a))) 6536ca35587Sdholland 6546ca35587Sdholland /* File types */ 6556ca35587Sdholland typedef enum { NFNON=0, NFREG=1, NFDIR=2, NFBLK=3, NFCHR=4, NFLNK=5, 6566ca35587Sdholland NFSOCK=6, NFFIFO=7, NFATTRDIR=8, NFNAMEDATTR=9 } nfstype; 6576ca35587Sdholland 6586ca35587Sdholland /* Structs for common parts of the rpc's */ 6596ca35587Sdholland 6606ca35587Sdholland struct nfsv2_time { 6616ca35587Sdholland u_int32_t nfsv2_sec; 6626ca35587Sdholland u_int32_t nfsv2_usec; 6636ca35587Sdholland }; 6646ca35587Sdholland typedef struct nfsv2_time nfstime2; 6656ca35587Sdholland 6666ca35587Sdholland struct nfsv3_time { 6676ca35587Sdholland u_int32_t nfsv3_sec; 6686ca35587Sdholland u_int32_t nfsv3_nsec; 6696ca35587Sdholland }; 6706ca35587Sdholland typedef struct nfsv3_time nfstime3; 6716ca35587Sdholland 6726ca35587Sdholland struct nfsv4_time { 6736ca35587Sdholland u_int32_t nfsv4_highsec; 6746ca35587Sdholland u_int32_t nfsv4_sec; 6756ca35587Sdholland u_int32_t nfsv4_nsec; 6766ca35587Sdholland }; 6776ca35587Sdholland typedef struct nfsv4_time nfstime4; 6786ca35587Sdholland 6796ca35587Sdholland /* 6806ca35587Sdholland * Quads are defined as arrays of 2 longs to ensure dense packing for the 6816ca35587Sdholland * protocol and to facilitate xdr conversion. 6826ca35587Sdholland */ 6836ca35587Sdholland struct nfs_uquad { 6846ca35587Sdholland u_int32_t nfsuquad[2]; 6856ca35587Sdholland }; 6866ca35587Sdholland typedef struct nfs_uquad nfsuint64; 6876ca35587Sdholland 6886ca35587Sdholland /* 6896ca35587Sdholland * Used to convert between two u_longs and a u_quad_t. 6906ca35587Sdholland */ 6916ca35587Sdholland union nfs_quadconvert { 6926ca35587Sdholland u_int32_t lval[2]; 6936ca35587Sdholland u_quad_t qval; 6946ca35587Sdholland }; 6956ca35587Sdholland typedef union nfs_quadconvert nfsquad_t; 6966ca35587Sdholland 6976ca35587Sdholland /* 6986ca35587Sdholland * NFS Version 3 special file number. 6996ca35587Sdholland */ 7006ca35587Sdholland struct nfsv3_spec { 7016ca35587Sdholland u_int32_t specdata1; 7026ca35587Sdholland u_int32_t specdata2; 7036ca35587Sdholland }; 7046ca35587Sdholland typedef struct nfsv3_spec nfsv3spec; 7056ca35587Sdholland 7066ca35587Sdholland /* 7076ca35587Sdholland * File attributes and setable attributes. These structures cover both 7086ca35587Sdholland * NFS version 2 and the version 3 protocol. Note that the union is only 7096ca35587Sdholland * used so that one pointer can refer to both variants. These structures 7106ca35587Sdholland * go out on the wire and must be densely packed, so no quad data types 7116ca35587Sdholland * are used. (all fields are longs or u_longs or structures of same) 7126ca35587Sdholland * NB: You can't do sizeof(struct nfs_fattr), you must use the 7136ca35587Sdholland * NFSX_FATTR(v3) macro. 7146ca35587Sdholland */ 7156ca35587Sdholland struct nfs_fattr { 7166ca35587Sdholland u_int32_t fa_type; 7176ca35587Sdholland u_int32_t fa_mode; 7186ca35587Sdholland u_int32_t fa_nlink; 7196ca35587Sdholland u_int32_t fa_uid; 7206ca35587Sdholland u_int32_t fa_gid; 7216ca35587Sdholland union { 7226ca35587Sdholland struct { 7236ca35587Sdholland u_int32_t nfsv2fa_size; 7246ca35587Sdholland u_int32_t nfsv2fa_blocksize; 7256ca35587Sdholland u_int32_t nfsv2fa_rdev; 7266ca35587Sdholland u_int32_t nfsv2fa_blocks; 7276ca35587Sdholland u_int32_t nfsv2fa_fsid; 7286ca35587Sdholland u_int32_t nfsv2fa_fileid; 7296ca35587Sdholland nfstime2 nfsv2fa_atime; 7306ca35587Sdholland nfstime2 nfsv2fa_mtime; 7316ca35587Sdholland nfstime2 nfsv2fa_ctime; 7326ca35587Sdholland } fa_nfsv2; 7336ca35587Sdholland struct { 7346ca35587Sdholland nfsuint64 nfsv3fa_size; 7356ca35587Sdholland nfsuint64 nfsv3fa_used; 7366ca35587Sdholland nfsv3spec nfsv3fa_rdev; 7376ca35587Sdholland nfsuint64 nfsv3fa_fsid; 7386ca35587Sdholland nfsuint64 nfsv3fa_fileid; 7396ca35587Sdholland nfstime3 nfsv3fa_atime; 7406ca35587Sdholland nfstime3 nfsv3fa_mtime; 7416ca35587Sdholland nfstime3 nfsv3fa_ctime; 7426ca35587Sdholland } fa_nfsv3; 7436ca35587Sdholland } fa_un; 7446ca35587Sdholland }; 7456ca35587Sdholland 7466ca35587Sdholland /* and some ugly defines for accessing union components */ 7476ca35587Sdholland #define fa2_size fa_un.fa_nfsv2.nfsv2fa_size 7486ca35587Sdholland #define fa2_blocksize fa_un.fa_nfsv2.nfsv2fa_blocksize 7496ca35587Sdholland #define fa2_rdev fa_un.fa_nfsv2.nfsv2fa_rdev 7506ca35587Sdholland #define fa2_blocks fa_un.fa_nfsv2.nfsv2fa_blocks 7516ca35587Sdholland #define fa2_fsid fa_un.fa_nfsv2.nfsv2fa_fsid 7526ca35587Sdholland #define fa2_fileid fa_un.fa_nfsv2.nfsv2fa_fileid 7536ca35587Sdholland #define fa2_atime fa_un.fa_nfsv2.nfsv2fa_atime 7546ca35587Sdholland #define fa2_mtime fa_un.fa_nfsv2.nfsv2fa_mtime 7556ca35587Sdholland #define fa2_ctime fa_un.fa_nfsv2.nfsv2fa_ctime 7566ca35587Sdholland #define fa3_size fa_un.fa_nfsv3.nfsv3fa_size 7576ca35587Sdholland #define fa3_used fa_un.fa_nfsv3.nfsv3fa_used 7586ca35587Sdholland #define fa3_rdev fa_un.fa_nfsv3.nfsv3fa_rdev 7596ca35587Sdholland #define fa3_fsid fa_un.fa_nfsv3.nfsv3fa_fsid 7606ca35587Sdholland #define fa3_fileid fa_un.fa_nfsv3.nfsv3fa_fileid 7616ca35587Sdholland #define fa3_atime fa_un.fa_nfsv3.nfsv3fa_atime 7626ca35587Sdholland #define fa3_mtime fa_un.fa_nfsv3.nfsv3fa_mtime 7636ca35587Sdholland #define fa3_ctime fa_un.fa_nfsv3.nfsv3fa_ctime 7646ca35587Sdholland 7656ca35587Sdholland struct nfsv2_sattr { 7666ca35587Sdholland u_int32_t sa_mode; 7676ca35587Sdholland u_int32_t sa_uid; 7686ca35587Sdholland u_int32_t sa_gid; 7696ca35587Sdholland u_int32_t sa_size; 7706ca35587Sdholland nfstime2 sa_atime; 7716ca35587Sdholland nfstime2 sa_mtime; 7726ca35587Sdholland }; 7736ca35587Sdholland 7746ca35587Sdholland /* 7756ca35587Sdholland * NFS Version 3 sattr structure for the new node creation case. 7766ca35587Sdholland */ 7776ca35587Sdholland struct nfsv3_sattr { 7786ca35587Sdholland u_int32_t sa_modetrue; 7796ca35587Sdholland u_int32_t sa_mode; 7806ca35587Sdholland u_int32_t sa_uidfalse; 7816ca35587Sdholland u_int32_t sa_gidfalse; 7826ca35587Sdholland u_int32_t sa_sizefalse; 7836ca35587Sdholland u_int32_t sa_atimetype; 7846ca35587Sdholland nfstime3 sa_atime; 7856ca35587Sdholland u_int32_t sa_mtimetype; 7866ca35587Sdholland nfstime3 sa_mtime; 7876ca35587Sdholland }; 7886ca35587Sdholland 7896ca35587Sdholland /* 7906ca35587Sdholland * The attribute bits used for V4. 7916ca35587Sdholland * NFSATTRBIT_xxx defines the attribute# (and its bit position) 7926ca35587Sdholland * NFSATTRBM_xxx is a 32bit mask with the correct bit set within the 7936ca35587Sdholland * appropriate 32bit word. 7946ca35587Sdholland * NFSATTRBIT_MAX is one greater than the largest NFSATTRBIT_xxx 7956ca35587Sdholland */ 7966ca35587Sdholland #define NFSATTRBIT_SUPPORTEDATTRS 0 7976ca35587Sdholland #define NFSATTRBIT_TYPE 1 7986ca35587Sdholland #define NFSATTRBIT_FHEXPIRETYPE 2 7996ca35587Sdholland #define NFSATTRBIT_CHANGE 3 8006ca35587Sdholland #define NFSATTRBIT_SIZE 4 8016ca35587Sdholland #define NFSATTRBIT_LINKSUPPORT 5 8026ca35587Sdholland #define NFSATTRBIT_SYMLINKSUPPORT 6 8036ca35587Sdholland #define NFSATTRBIT_NAMEDATTR 7 8046ca35587Sdholland #define NFSATTRBIT_FSID 8 8056ca35587Sdholland #define NFSATTRBIT_UNIQUEHANDLES 9 8066ca35587Sdholland #define NFSATTRBIT_LEASETIME 10 8076ca35587Sdholland #define NFSATTRBIT_RDATTRERROR 11 8086ca35587Sdholland #define NFSATTRBIT_ACL 12 8096ca35587Sdholland #define NFSATTRBIT_ACLSUPPORT 13 8106ca35587Sdholland #define NFSATTRBIT_ARCHIVE 14 8116ca35587Sdholland #define NFSATTRBIT_CANSETTIME 15 8126ca35587Sdholland #define NFSATTRBIT_CASEINSENSITIVE 16 8136ca35587Sdholland #define NFSATTRBIT_CASEPRESERVING 17 8146ca35587Sdholland #define NFSATTRBIT_CHOWNRESTRICTED 18 8156ca35587Sdholland #define NFSATTRBIT_FILEHANDLE 19 8166ca35587Sdholland #define NFSATTRBIT_FILEID 20 8176ca35587Sdholland #define NFSATTRBIT_FILESAVAIL 21 8186ca35587Sdholland #define NFSATTRBIT_FILESFREE 22 8196ca35587Sdholland #define NFSATTRBIT_FILESTOTAL 23 8206ca35587Sdholland #define NFSATTRBIT_FSLOCATIONS 24 8216ca35587Sdholland #define NFSATTRBIT_HIDDEN 25 8226ca35587Sdholland #define NFSATTRBIT_HOMOGENEOUS 26 8236ca35587Sdholland #define NFSATTRBIT_MAXFILESIZE 27 8246ca35587Sdholland #define NFSATTRBIT_MAXLINK 28 8256ca35587Sdholland #define NFSATTRBIT_MAXNAME 29 8266ca35587Sdholland #define NFSATTRBIT_MAXREAD 30 8276ca35587Sdholland #define NFSATTRBIT_MAXWRITE 31 8286ca35587Sdholland #define NFSATTRBIT_MIMETYPE 32 8296ca35587Sdholland #define NFSATTRBIT_MODE 33 8306ca35587Sdholland #define NFSATTRBIT_NOTRUNC 34 8316ca35587Sdholland #define NFSATTRBIT_NUMLINKS 35 8326ca35587Sdholland #define NFSATTRBIT_OWNER 36 8336ca35587Sdholland #define NFSATTRBIT_OWNERGROUP 37 8346ca35587Sdholland #define NFSATTRBIT_QUOTAHARD 38 8356ca35587Sdholland #define NFSATTRBIT_QUOTASOFT 39 8366ca35587Sdholland #define NFSATTRBIT_QUOTAUSED 40 8376ca35587Sdholland #define NFSATTRBIT_RAWDEV 41 8386ca35587Sdholland #define NFSATTRBIT_SPACEAVAIL 42 8396ca35587Sdholland #define NFSATTRBIT_SPACEFREE 43 8406ca35587Sdholland #define NFSATTRBIT_SPACETOTAL 44 8416ca35587Sdholland #define NFSATTRBIT_SPACEUSED 45 8426ca35587Sdholland #define NFSATTRBIT_SYSTEM 46 8436ca35587Sdholland #define NFSATTRBIT_TIMEACCESS 47 8446ca35587Sdholland #define NFSATTRBIT_TIMEACCESSSET 48 8456ca35587Sdholland #define NFSATTRBIT_TIMEBACKUP 49 8466ca35587Sdholland #define NFSATTRBIT_TIMECREATE 50 8476ca35587Sdholland #define NFSATTRBIT_TIMEDELTA 51 8486ca35587Sdholland #define NFSATTRBIT_TIMEMETADATA 52 8496ca35587Sdholland #define NFSATTRBIT_TIMEMODIFY 53 8506ca35587Sdholland #define NFSATTRBIT_TIMEMODIFYSET 54 8516ca35587Sdholland #define NFSATTRBIT_MOUNTEDONFILEID 55 852*e81f0ea2Spgoyette #define NFSATTRBIT_DIRNOTIFDELAY 56 853*e81f0ea2Spgoyette #define NFSATTRBIT_DIRENTNOTIFDELAY 57 854*e81f0ea2Spgoyette #define NFSATTRBIT_DACL 58 855*e81f0ea2Spgoyette #define NFSATTRBIT_SACL 59 856*e81f0ea2Spgoyette #define NFSATTRBIT_CHANGEPOLICY 60 857*e81f0ea2Spgoyette #define NFSATTRBIT_FSSTATUS 61 858*e81f0ea2Spgoyette #define NFSATTRBIT_FSLAYOUTTYPE 62 859*e81f0ea2Spgoyette #define NFSATTRBIT_LAYOUTHINT 63 860*e81f0ea2Spgoyette #define NFSATTRBIT_LAYOUTTYPE 64 861*e81f0ea2Spgoyette #define NFSATTRBIT_LAYOUTBLKSIZE 65 862*e81f0ea2Spgoyette #define NFSATTRBIT_LAYOUTALIGNMENT 66 863*e81f0ea2Spgoyette #define NFSATTRBIT_FSLOCATIONSINFO 67 864*e81f0ea2Spgoyette #define NFSATTRBIT_MDSTHRESHOLD 68 865*e81f0ea2Spgoyette #define NFSATTRBIT_RETENTIONGET 69 866*e81f0ea2Spgoyette #define NFSATTRBIT_RETENTIONSET 70 867*e81f0ea2Spgoyette #define NFSATTRBIT_RETENTEVTGET 71 868*e81f0ea2Spgoyette #define NFSATTRBIT_RETENTEVTSET 72 869*e81f0ea2Spgoyette #define NFSATTRBIT_RETENTIONHOLD 73 870*e81f0ea2Spgoyette #define NFSATTRBIT_MODESETMASKED 74 871*e81f0ea2Spgoyette #define NFSATTRBIT_SUPPATTREXCLCREAT 75 872*e81f0ea2Spgoyette #define NFSATTRBIT_FSCHARSETCAP 76 8736ca35587Sdholland 8746ca35587Sdholland #define NFSATTRBM_SUPPORTEDATTRS 0x00000001 8756ca35587Sdholland #define NFSATTRBM_TYPE 0x00000002 8766ca35587Sdholland #define NFSATTRBM_FHEXPIRETYPE 0x00000004 8776ca35587Sdholland #define NFSATTRBM_CHANGE 0x00000008 8786ca35587Sdholland #define NFSATTRBM_SIZE 0x00000010 8796ca35587Sdholland #define NFSATTRBM_LINKSUPPORT 0x00000020 8806ca35587Sdholland #define NFSATTRBM_SYMLINKSUPPORT 0x00000040 8816ca35587Sdholland #define NFSATTRBM_NAMEDATTR 0x00000080 8826ca35587Sdholland #define NFSATTRBM_FSID 0x00000100 8836ca35587Sdholland #define NFSATTRBM_UNIQUEHANDLES 0x00000200 8846ca35587Sdholland #define NFSATTRBM_LEASETIME 0x00000400 8856ca35587Sdholland #define NFSATTRBM_RDATTRERROR 0x00000800 8866ca35587Sdholland #define NFSATTRBM_ACL 0x00001000 8876ca35587Sdholland #define NFSATTRBM_ACLSUPPORT 0x00002000 8886ca35587Sdholland #define NFSATTRBM_ARCHIVE 0x00004000 8896ca35587Sdholland #define NFSATTRBM_CANSETTIME 0x00008000 8906ca35587Sdholland #define NFSATTRBM_CASEINSENSITIVE 0x00010000 8916ca35587Sdholland #define NFSATTRBM_CASEPRESERVING 0x00020000 8926ca35587Sdholland #define NFSATTRBM_CHOWNRESTRICTED 0x00040000 8936ca35587Sdholland #define NFSATTRBM_FILEHANDLE 0x00080000 8946ca35587Sdholland #define NFSATTRBM_FILEID 0x00100000 8956ca35587Sdholland #define NFSATTRBM_FILESAVAIL 0x00200000 8966ca35587Sdholland #define NFSATTRBM_FILESFREE 0x00400000 8976ca35587Sdholland #define NFSATTRBM_FILESTOTAL 0x00800000 8986ca35587Sdholland #define NFSATTRBM_FSLOCATIONS 0x01000000 8996ca35587Sdholland #define NFSATTRBM_HIDDEN 0x02000000 9006ca35587Sdholland #define NFSATTRBM_HOMOGENEOUS 0x04000000 9016ca35587Sdholland #define NFSATTRBM_MAXFILESIZE 0x08000000 9026ca35587Sdholland #define NFSATTRBM_MAXLINK 0x10000000 9036ca35587Sdholland #define NFSATTRBM_MAXNAME 0x20000000 9046ca35587Sdholland #define NFSATTRBM_MAXREAD 0x40000000 9056ca35587Sdholland #define NFSATTRBM_MAXWRITE 0x80000000 9066ca35587Sdholland #define NFSATTRBM_MIMETYPE 0x00000001 9076ca35587Sdholland #define NFSATTRBM_MODE 0x00000002 9086ca35587Sdholland #define NFSATTRBM_NOTRUNC 0x00000004 9096ca35587Sdholland #define NFSATTRBM_NUMLINKS 0x00000008 9106ca35587Sdholland #define NFSATTRBM_OWNER 0x00000010 9116ca35587Sdholland #define NFSATTRBM_OWNERGROUP 0x00000020 9126ca35587Sdholland #define NFSATTRBM_QUOTAHARD 0x00000040 9136ca35587Sdholland #define NFSATTRBM_QUOTASOFT 0x00000080 9146ca35587Sdholland #define NFSATTRBM_QUOTAUSED 0x00000100 9156ca35587Sdholland #define NFSATTRBM_RAWDEV 0x00000200 9166ca35587Sdholland #define NFSATTRBM_SPACEAVAIL 0x00000400 9176ca35587Sdholland #define NFSATTRBM_SPACEFREE 0x00000800 9186ca35587Sdholland #define NFSATTRBM_SPACETOTAL 0x00001000 9196ca35587Sdholland #define NFSATTRBM_SPACEUSED 0x00002000 9206ca35587Sdholland #define NFSATTRBM_SYSTEM 0x00004000 9216ca35587Sdholland #define NFSATTRBM_TIMEACCESS 0x00008000 9226ca35587Sdholland #define NFSATTRBM_TIMEACCESSSET 0x00010000 9236ca35587Sdholland #define NFSATTRBM_TIMEBACKUP 0x00020000 9246ca35587Sdholland #define NFSATTRBM_TIMECREATE 0x00040000 9256ca35587Sdholland #define NFSATTRBM_TIMEDELTA 0x00080000 9266ca35587Sdholland #define NFSATTRBM_TIMEMETADATA 0x00100000 9276ca35587Sdholland #define NFSATTRBM_TIMEMODIFY 0x00200000 9286ca35587Sdholland #define NFSATTRBM_TIMEMODIFYSET 0x00400000 9296ca35587Sdholland #define NFSATTRBM_MOUNTEDONFILEID 0x00800000 930*e81f0ea2Spgoyette #define NFSATTRBM_DIRNOTIFDELAY 0x01000000 931*e81f0ea2Spgoyette #define NFSATTRBM_DIRENTNOTIFDELAY 0x02000000 932*e81f0ea2Spgoyette #define NFSATTRBM_DACL 0x04000000 933*e81f0ea2Spgoyette #define NFSATTRBM_SACL 0x08000000 934*e81f0ea2Spgoyette #define NFSATTRBM_CHANGEPOLICY 0x10000000 935*e81f0ea2Spgoyette #define NFSATTRBM_FSSTATUS 0x20000000 936*e81f0ea2Spgoyette #define NFSATTRBM_FSLAYOUTTYPE 0x40000000 937*e81f0ea2Spgoyette #define NFSATTRBM_LAYOUTHINT 0x80000000 938*e81f0ea2Spgoyette #define NFSATTRBM_LAYOUTTYPE 0x00000001 939*e81f0ea2Spgoyette #define NFSATTRBM_LAYOUTBLKSIZE 0x00000002 940*e81f0ea2Spgoyette #define NFSATTRBM_LAYOUTALIGNMENT 0x00000004 941*e81f0ea2Spgoyette #define NFSATTRBM_FSLOCATIONSINFO 0x00000008 942*e81f0ea2Spgoyette #define NFSATTRBM_MDSTHRESHOLD 0x00000010 943*e81f0ea2Spgoyette #define NFSATTRBM_RETENTIONGET 0x00000020 944*e81f0ea2Spgoyette #define NFSATTRBM_RETENTIONSET 0x00000040 945*e81f0ea2Spgoyette #define NFSATTRBM_RETENTEVTGET 0x00000080 946*e81f0ea2Spgoyette #define NFSATTRBM_RETENTEVTSET 0x00000100 947*e81f0ea2Spgoyette #define NFSATTRBM_RETENTIONHOLD 0x00000200 948*e81f0ea2Spgoyette #define NFSATTRBM_MODESETMASKED 0x00000400 949*e81f0ea2Spgoyette #define NFSATTRBM_SUPPATTREXCLCREAT 0x00000800 950*e81f0ea2Spgoyette #define NFSATTRBM_FSCHARSETCAP 0x00001000 9516ca35587Sdholland 952*e81f0ea2Spgoyette #define NFSATTRBIT_MAX 77 9536ca35587Sdholland 9546ca35587Sdholland /* 9556ca35587Sdholland * Sets of attributes that are supported, by words in the bitmap. 9566ca35587Sdholland */ 9576ca35587Sdholland /* 9586ca35587Sdholland * NFSATTRBIT_SUPPORTED - SUPP0 - bits 0<->31 9596ca35587Sdholland * SUPP1 - bits 32<->63 960*e81f0ea2Spgoyette * SUPP2 - bits 64<->95 9616ca35587Sdholland */ 9626ca35587Sdholland #define NFSATTRBIT_SUPP0 \ 9636ca35587Sdholland (NFSATTRBM_SUPPORTEDATTRS | \ 9646ca35587Sdholland NFSATTRBM_TYPE | \ 9656ca35587Sdholland NFSATTRBM_FHEXPIRETYPE | \ 9666ca35587Sdholland NFSATTRBM_CHANGE | \ 9676ca35587Sdholland NFSATTRBM_SIZE | \ 9686ca35587Sdholland NFSATTRBM_LINKSUPPORT | \ 9696ca35587Sdholland NFSATTRBM_SYMLINKSUPPORT | \ 9706ca35587Sdholland NFSATTRBM_NAMEDATTR | \ 9716ca35587Sdholland NFSATTRBM_FSID | \ 9726ca35587Sdholland NFSATTRBM_UNIQUEHANDLES | \ 9736ca35587Sdholland NFSATTRBM_LEASETIME | \ 9746ca35587Sdholland NFSATTRBM_RDATTRERROR | \ 9756ca35587Sdholland NFSATTRBM_ACL | \ 9766ca35587Sdholland NFSATTRBM_ACLSUPPORT | \ 9776ca35587Sdholland NFSATTRBM_CANSETTIME | \ 9786ca35587Sdholland NFSATTRBM_CASEINSENSITIVE | \ 9796ca35587Sdholland NFSATTRBM_CASEPRESERVING | \ 9806ca35587Sdholland NFSATTRBM_CHOWNRESTRICTED | \ 9816ca35587Sdholland NFSATTRBM_FILEHANDLE | \ 9826ca35587Sdholland NFSATTRBM_FILEID | \ 9836ca35587Sdholland NFSATTRBM_FILESAVAIL | \ 9846ca35587Sdholland NFSATTRBM_FILESFREE | \ 9856ca35587Sdholland NFSATTRBM_FILESTOTAL | \ 9866ca35587Sdholland NFSATTRBM_FSLOCATIONS | \ 9876ca35587Sdholland NFSATTRBM_HOMOGENEOUS | \ 9886ca35587Sdholland NFSATTRBM_MAXFILESIZE | \ 9896ca35587Sdholland NFSATTRBM_MAXLINK | \ 9906ca35587Sdholland NFSATTRBM_MAXNAME | \ 9916ca35587Sdholland NFSATTRBM_MAXREAD | \ 9926ca35587Sdholland NFSATTRBM_MAXWRITE) 9936ca35587Sdholland 9946ca35587Sdholland /* 9956ca35587Sdholland * NFSATTRBIT_S1 - subset of SUPP1 - OR of the following bits: 9966ca35587Sdholland */ 9976ca35587Sdholland #define NFSATTRBIT_S1 \ 9986ca35587Sdholland (NFSATTRBM_MODE | \ 9996ca35587Sdholland NFSATTRBM_NOTRUNC | \ 10006ca35587Sdholland NFSATTRBM_NUMLINKS | \ 10016ca35587Sdholland NFSATTRBM_OWNER | \ 10026ca35587Sdholland NFSATTRBM_OWNERGROUP | \ 10036ca35587Sdholland NFSATTRBM_RAWDEV | \ 10046ca35587Sdholland NFSATTRBM_SPACEAVAIL | \ 10056ca35587Sdholland NFSATTRBM_SPACEFREE | \ 10066ca35587Sdholland NFSATTRBM_SPACETOTAL | \ 10076ca35587Sdholland NFSATTRBM_SPACEUSED | \ 10086ca35587Sdholland NFSATTRBM_TIMEACCESS | \ 10096ca35587Sdholland NFSATTRBM_TIMEDELTA | \ 10106ca35587Sdholland NFSATTRBM_TIMEMETADATA | \ 10116ca35587Sdholland NFSATTRBM_TIMEMODIFY | \ 1012*e81f0ea2Spgoyette NFSATTRBM_MOUNTEDONFILEID | \ 1013*e81f0ea2Spgoyette NFSATTRBM_QUOTAHARD | \ 1014*e81f0ea2Spgoyette NFSATTRBM_QUOTASOFT | \ 1015*e81f0ea2Spgoyette NFSATTRBM_QUOTAUSED) 1016*e81f0ea2Spgoyette 10176ca35587Sdholland 10186ca35587Sdholland #ifdef QUOTA 10196ca35587Sdholland /* 10206ca35587Sdholland * If QUOTA OR in NFSATTRBIT_QUOTAHARD, NFSATTRBIT_QUOTASOFT and 10216ca35587Sdholland * NFSATTRBIT_QUOTAUSED. 10226ca35587Sdholland */ 10236ca35587Sdholland #define NFSATTRBIT_SUPP1 (NFSATTRBIT_S1 | \ 10246ca35587Sdholland NFSATTRBM_QUOTAHARD | \ 10256ca35587Sdholland NFSATTRBM_QUOTASOFT | \ 10266ca35587Sdholland NFSATTRBM_QUOTAUSED) 10276ca35587Sdholland #else 10286ca35587Sdholland #define NFSATTRBIT_SUPP1 NFSATTRBIT_S1 10296ca35587Sdholland #endif 10306ca35587Sdholland 1031*e81f0ea2Spgoyette #define NFSATTRBIT_SUPP2 NFSATTRBM_SUPPATTREXCLCREAT 1032*e81f0ea2Spgoyette 10336ca35587Sdholland /* 10346ca35587Sdholland * NFSATTRBIT_SUPPSETONLY is the OR of NFSATTRBIT_TIMEACCESSSET and 10356ca35587Sdholland * NFSATTRBIT_TIMEMODIFYSET. 10366ca35587Sdholland */ 10376ca35587Sdholland #define NFSATTRBIT_SUPPSETONLY (NFSATTRBM_TIMEACCESSSET | \ 10386ca35587Sdholland NFSATTRBM_TIMEMODIFYSET) 10396ca35587Sdholland 10406ca35587Sdholland /* 10416ca35587Sdholland * NFSATTRBIT_SETABLE - SETABLE0 - bits 0<->31 10426ca35587Sdholland * SETABLE1 - bits 32<->63 1043*e81f0ea2Spgoyette * SETABLE2 - bits 64<->95 10446ca35587Sdholland */ 10456ca35587Sdholland #define NFSATTRBIT_SETABLE0 \ 10466ca35587Sdholland (NFSATTRBM_SIZE | \ 10476ca35587Sdholland NFSATTRBM_ACL) 10486ca35587Sdholland #define NFSATTRBIT_SETABLE1 \ 10496ca35587Sdholland (NFSATTRBM_MODE | \ 10506ca35587Sdholland NFSATTRBM_OWNER | \ 10516ca35587Sdholland NFSATTRBM_OWNERGROUP | \ 10526ca35587Sdholland NFSATTRBM_TIMEACCESSSET | \ 10536ca35587Sdholland NFSATTRBM_TIMEMODIFYSET) 1054*e81f0ea2Spgoyette #define NFSATTRBIT_SETABLE2 0 10556ca35587Sdholland 10566ca35587Sdholland /* 10576ca35587Sdholland * Set of attributes that the getattr vnode op needs. 10586ca35587Sdholland * OR of the following bits. 10596ca35587Sdholland * NFSATTRBIT_GETATTR0 - bits 0<->31 10606ca35587Sdholland */ 10616ca35587Sdholland #define NFSATTRBIT_GETATTR0 \ 10626ca35587Sdholland (NFSATTRBM_SUPPORTEDATTRS | \ 10636ca35587Sdholland NFSATTRBM_TYPE | \ 10646ca35587Sdholland NFSATTRBM_CHANGE | \ 10656ca35587Sdholland NFSATTRBM_SIZE | \ 10666ca35587Sdholland NFSATTRBM_FSID | \ 10676ca35587Sdholland NFSATTRBM_FILEID | \ 10686ca35587Sdholland NFSATTRBM_MAXREAD) 10696ca35587Sdholland 10706ca35587Sdholland /* 10716ca35587Sdholland * NFSATTRBIT_GETATTR1 - bits 32<->63 10726ca35587Sdholland */ 10736ca35587Sdholland #define NFSATTRBIT_GETATTR1 \ 10746ca35587Sdholland (NFSATTRBM_MODE | \ 10756ca35587Sdholland NFSATTRBM_NUMLINKS | \ 10766ca35587Sdholland NFSATTRBM_OWNER | \ 10776ca35587Sdholland NFSATTRBM_OWNERGROUP | \ 10786ca35587Sdholland NFSATTRBM_RAWDEV | \ 10796ca35587Sdholland NFSATTRBM_SPACEUSED | \ 10806ca35587Sdholland NFSATTRBM_TIMEACCESS | \ 10816ca35587Sdholland NFSATTRBM_TIMEMETADATA | \ 10826ca35587Sdholland NFSATTRBM_TIMEMODIFY) 10836ca35587Sdholland 10846ca35587Sdholland /* 1085*e81f0ea2Spgoyette * NFSATTRBIT_GETATTR2 - bits 64<->95 1086*e81f0ea2Spgoyette */ 1087*e81f0ea2Spgoyette #define NFSATTRBIT_GETATTR2 0 1088*e81f0ea2Spgoyette 1089*e81f0ea2Spgoyette /* 10906ca35587Sdholland * Subset of the above that the Write RPC gets. 10916ca35587Sdholland * OR of the following bits. 10926ca35587Sdholland * NFSATTRBIT_WRITEGETATTR0 - bits 0<->31 10936ca35587Sdholland */ 10946ca35587Sdholland #define NFSATTRBIT_WRITEGETATTR0 \ 10956ca35587Sdholland (NFSATTRBM_SUPPORTEDATTRS | \ 10966ca35587Sdholland NFSATTRBM_TYPE | \ 10976ca35587Sdholland NFSATTRBM_CHANGE | \ 10986ca35587Sdholland NFSATTRBM_SIZE | \ 10996ca35587Sdholland NFSATTRBM_FSID | \ 11006ca35587Sdholland NFSATTRBM_FILEID | \ 11016ca35587Sdholland NFSATTRBM_MAXREAD) 11026ca35587Sdholland 11036ca35587Sdholland /* 11046ca35587Sdholland * NFSATTRBIT_WRITEGETATTR1 - bits 32<->63 11056ca35587Sdholland */ 11066ca35587Sdholland #define NFSATTRBIT_WRITEGETATTR1 \ 11076ca35587Sdholland (NFSATTRBM_MODE | \ 11086ca35587Sdholland NFSATTRBM_NUMLINKS | \ 11096ca35587Sdholland NFSATTRBM_RAWDEV | \ 11106ca35587Sdholland NFSATTRBM_SPACEUSED | \ 11116ca35587Sdholland NFSATTRBM_TIMEACCESS | \ 11126ca35587Sdholland NFSATTRBM_TIMEMETADATA | \ 11136ca35587Sdholland NFSATTRBM_TIMEMODIFY) 11146ca35587Sdholland 11156ca35587Sdholland /* 1116*e81f0ea2Spgoyette * NFSATTRBIT_WRITEGETATTR2 - bits 64<->95 1117*e81f0ea2Spgoyette */ 1118*e81f0ea2Spgoyette #define NFSATTRBIT_WRITEGETATTR2 0 1119*e81f0ea2Spgoyette 1120*e81f0ea2Spgoyette /* 11216ca35587Sdholland * Set of attributes that the wccattr operation op needs. 11226ca35587Sdholland * OR of the following bits. 11236ca35587Sdholland * NFSATTRBIT_WCCATTR0 - bits 0<->31 11246ca35587Sdholland */ 11256ca35587Sdholland #define NFSATTRBIT_WCCATTR0 0 11266ca35587Sdholland 11276ca35587Sdholland /* 11286ca35587Sdholland * NFSATTRBIT_WCCATTR1 - bits 32<->63 11296ca35587Sdholland */ 11306ca35587Sdholland #define NFSATTRBIT_WCCATTR1 \ 11316ca35587Sdholland (NFSATTRBM_TIMEMODIFY) 11326ca35587Sdholland 11336ca35587Sdholland /* 1134*e81f0ea2Spgoyette * NFSATTRBIT_WCCATTR2 - bits 64<->95 1135*e81f0ea2Spgoyette */ 1136*e81f0ea2Spgoyette #define NFSATTRBIT_WCCATTR2 0 1137*e81f0ea2Spgoyette 1138*e81f0ea2Spgoyette /* 11396ca35587Sdholland * NFSATTRBIT_CBGETATTR0 - bits 0<->31 11406ca35587Sdholland */ 11416ca35587Sdholland #define NFSATTRBIT_CBGETATTR0 (NFSATTRBM_CHANGE | NFSATTRBM_SIZE) 11426ca35587Sdholland 11436ca35587Sdholland /* 11446ca35587Sdholland * NFSATTRBIT_CBGETATTR1 - bits 32<->63 11456ca35587Sdholland */ 11466ca35587Sdholland #define NFSATTRBIT_CBGETATTR1 0x0 11476ca35587Sdholland 11486ca35587Sdholland /* 1149*e81f0ea2Spgoyette * NFSATTRBIT_CBGETATTR2 - bits 64<->95 1150*e81f0ea2Spgoyette */ 1151*e81f0ea2Spgoyette #define NFSATTRBIT_CBGETATTR2 0x0 1152*e81f0ea2Spgoyette 1153*e81f0ea2Spgoyette /* 11546ca35587Sdholland * Sets of attributes that require a VFS_STATFS() call to get the 11556ca35587Sdholland * values of. 11566ca35587Sdholland * NFSATTRBIT_STATFS0 - bits 0<->31 11576ca35587Sdholland */ 11586ca35587Sdholland #define NFSATTRBIT_STATFS0 \ 11596ca35587Sdholland (NFSATTRBM_LINKSUPPORT | \ 11606ca35587Sdholland NFSATTRBM_SYMLINKSUPPORT | \ 11616ca35587Sdholland NFSATTRBM_CANSETTIME | \ 11626ca35587Sdholland NFSATTRBM_FILESAVAIL | \ 11636ca35587Sdholland NFSATTRBM_FILESFREE | \ 11646ca35587Sdholland NFSATTRBM_FILESTOTAL | \ 11656ca35587Sdholland NFSATTRBM_HOMOGENEOUS | \ 11666ca35587Sdholland NFSATTRBM_MAXFILESIZE | \ 11676ca35587Sdholland NFSATTRBM_MAXNAME | \ 11686ca35587Sdholland NFSATTRBM_MAXREAD | \ 11696ca35587Sdholland NFSATTRBM_MAXWRITE) 11706ca35587Sdholland 11716ca35587Sdholland /* 11726ca35587Sdholland * NFSATTRBIT_STATFS1 - bits 32<->63 11736ca35587Sdholland */ 11746ca35587Sdholland #define NFSATTRBIT_STATFS1 \ 11756ca35587Sdholland (NFSATTRBM_QUOTAHARD | \ 11766ca35587Sdholland NFSATTRBM_QUOTASOFT | \ 11776ca35587Sdholland NFSATTRBM_QUOTAUSED | \ 11786ca35587Sdholland NFSATTRBM_SPACEAVAIL | \ 11796ca35587Sdholland NFSATTRBM_SPACEFREE | \ 11806ca35587Sdholland NFSATTRBM_SPACETOTAL | \ 11816ca35587Sdholland NFSATTRBM_SPACEUSED | \ 11826ca35587Sdholland NFSATTRBM_TIMEDELTA) 11836ca35587Sdholland 11846ca35587Sdholland /* 1185*e81f0ea2Spgoyette * NFSATTRBIT_STATFS2 - bits 64<->95 1186*e81f0ea2Spgoyette */ 1187*e81f0ea2Spgoyette #define NFSATTRBIT_STATFS2 0 1188*e81f0ea2Spgoyette 1189*e81f0ea2Spgoyette /* 11906ca35587Sdholland * These are the bits that are needed by the nfs_statfs() call. 11916ca35587Sdholland * (The regular getattr bits are or'd in so the vnode gets the correct 11926ca35587Sdholland * type, etc.) 11936ca35587Sdholland * NFSGETATTRBIT_STATFS0 - bits 0<->31 11946ca35587Sdholland */ 11956ca35587Sdholland #define NFSGETATTRBIT_STATFS0 (NFSATTRBIT_GETATTR0 | \ 11966ca35587Sdholland NFSATTRBM_LINKSUPPORT | \ 11976ca35587Sdholland NFSATTRBM_SYMLINKSUPPORT | \ 11986ca35587Sdholland NFSATTRBM_CANSETTIME | \ 11996ca35587Sdholland NFSATTRBM_FILESFREE | \ 12006ca35587Sdholland NFSATTRBM_FILESTOTAL | \ 12016ca35587Sdholland NFSATTRBM_HOMOGENEOUS | \ 12026ca35587Sdholland NFSATTRBM_MAXFILESIZE | \ 12036ca35587Sdholland NFSATTRBM_MAXNAME | \ 12046ca35587Sdholland NFSATTRBM_MAXREAD | \ 12056ca35587Sdholland NFSATTRBM_MAXWRITE) 12066ca35587Sdholland 12076ca35587Sdholland /* 12086ca35587Sdholland * NFSGETATTRBIT_STATFS1 - bits 32<->63 12096ca35587Sdholland */ 12106ca35587Sdholland #define NFSGETATTRBIT_STATFS1 (NFSATTRBIT_GETATTR1 | \ 12116ca35587Sdholland NFSATTRBM_SPACEAVAIL | \ 12126ca35587Sdholland NFSATTRBM_SPACEFREE | \ 12136ca35587Sdholland NFSATTRBM_SPACETOTAL | \ 12146ca35587Sdholland NFSATTRBM_TIMEDELTA) 12156ca35587Sdholland 12166ca35587Sdholland /* 1217*e81f0ea2Spgoyette * NFSGETATTRBIT_STATFS2 - bits 64<->95 1218*e81f0ea2Spgoyette */ 1219*e81f0ea2Spgoyette #define NFSGETATTRBIT_STATFS2 0 1220*e81f0ea2Spgoyette 1221*e81f0ea2Spgoyette /* 12226ca35587Sdholland * Set of attributes for the equivalent of an nfsv3 pathconf rpc. 12236ca35587Sdholland * NFSGETATTRBIT_PATHCONF0 - bits 0<->31 12246ca35587Sdholland */ 12256ca35587Sdholland #define NFSGETATTRBIT_PATHCONF0 (NFSATTRBIT_GETATTR0 | \ 12266ca35587Sdholland NFSATTRBM_CASEINSENSITIVE | \ 12276ca35587Sdholland NFSATTRBM_CASEPRESERVING | \ 12286ca35587Sdholland NFSATTRBM_CHOWNRESTRICTED | \ 12296ca35587Sdholland NFSATTRBM_MAXLINK | \ 12306ca35587Sdholland NFSATTRBM_MAXNAME) 12316ca35587Sdholland 12326ca35587Sdholland /* 12336ca35587Sdholland * NFSGETATTRBIT_PATHCONF1 - bits 32<->63 12346ca35587Sdholland */ 12356ca35587Sdholland #define NFSGETATTRBIT_PATHCONF1 (NFSATTRBIT_GETATTR1 | \ 12366ca35587Sdholland NFSATTRBM_NOTRUNC) 12376ca35587Sdholland 12386ca35587Sdholland /* 1239*e81f0ea2Spgoyette * NFSGETATTRBIT_PATHCONF2 - bits 64<->95 1240*e81f0ea2Spgoyette */ 1241*e81f0ea2Spgoyette #define NFSGETATTRBIT_PATHCONF2 0 1242*e81f0ea2Spgoyette 1243*e81f0ea2Spgoyette /* 12446ca35587Sdholland * Sets of attributes required by readdir and readdirplus. 12456ca35587Sdholland * NFSATTRBIT_READDIRPLUS0 (NFSATTRBIT_GETATTR0 | NFSATTRBIT_FILEHANDLE | 12466ca35587Sdholland * NFSATTRBIT_RDATTRERROR) 12476ca35587Sdholland */ 12486ca35587Sdholland #define NFSATTRBIT_READDIRPLUS0 (NFSATTRBIT_GETATTR0 | NFSATTRBM_FILEHANDLE | \ 12496ca35587Sdholland NFSATTRBM_RDATTRERROR) 12506ca35587Sdholland #define NFSATTRBIT_READDIRPLUS1 NFSATTRBIT_GETATTR1 1251*e81f0ea2Spgoyette #define NFSATTRBIT_READDIRPLUS2 0 12526ca35587Sdholland 12536ca35587Sdholland /* 12546ca35587Sdholland * Set of attributes supported by Referral vnodes. 12556ca35587Sdholland */ 12566ca35587Sdholland #define NFSATTRBIT_REFERRAL0 (NFSATTRBM_TYPE | NFSATTRBM_FSID | \ 12576ca35587Sdholland NFSATTRBM_RDATTRERROR | NFSATTRBM_FSLOCATIONS) 12586ca35587Sdholland #define NFSATTRBIT_REFERRAL1 NFSATTRBM_MOUNTEDONFILEID 1259*e81f0ea2Spgoyette #define NFSATTRBIT_REFERRAL2 0 12606ca35587Sdholland 12616ca35587Sdholland /* 12626ca35587Sdholland * Structure for data handled by the statfs rpc. Since some fields are 12636ca35587Sdholland * u_int64_t, this cannot be used for copying data on/off the wire, due 12646ca35587Sdholland * to alignment concerns. 12656ca35587Sdholland */ 12666ca35587Sdholland struct nfsstatfs { 12676ca35587Sdholland union { 12686ca35587Sdholland struct { 12696ca35587Sdholland u_int32_t nfsv2sf_tsize; 12706ca35587Sdholland u_int32_t nfsv2sf_bsize; 12716ca35587Sdholland u_int32_t nfsv2sf_blocks; 12726ca35587Sdholland u_int32_t nfsv2sf_bfree; 12736ca35587Sdholland u_int32_t nfsv2sf_bavail; 12746ca35587Sdholland } sf_nfsv2; 12756ca35587Sdholland struct { 12766ca35587Sdholland u_int64_t nfsv3sf_tbytes; 12776ca35587Sdholland u_int64_t nfsv3sf_fbytes; 12786ca35587Sdholland u_int64_t nfsv3sf_abytes; 12796ca35587Sdholland u_int64_t nfsv3sf_tfiles; 12806ca35587Sdholland u_int64_t nfsv3sf_ffiles; 12816ca35587Sdholland u_int64_t nfsv3sf_afiles; 12826ca35587Sdholland u_int32_t nfsv3sf_invarsec; 12836ca35587Sdholland } sf_nfsv3; 12846ca35587Sdholland } sf_un; 12856ca35587Sdholland }; 12866ca35587Sdholland 12876ca35587Sdholland #define sf_tsize sf_un.sf_nfsv2.nfsv2sf_tsize 12886ca35587Sdholland #define sf_bsize sf_un.sf_nfsv2.nfsv2sf_bsize 12896ca35587Sdholland #define sf_blocks sf_un.sf_nfsv2.nfsv2sf_blocks 12906ca35587Sdholland #define sf_bfree sf_un.sf_nfsv2.nfsv2sf_bfree 12916ca35587Sdholland #define sf_bavail sf_un.sf_nfsv2.nfsv2sf_bavail 12926ca35587Sdholland #define sf_tbytes sf_un.sf_nfsv3.nfsv3sf_tbytes 12936ca35587Sdholland #define sf_fbytes sf_un.sf_nfsv3.nfsv3sf_fbytes 12946ca35587Sdholland #define sf_abytes sf_un.sf_nfsv3.nfsv3sf_abytes 12956ca35587Sdholland #define sf_tfiles sf_un.sf_nfsv3.nfsv3sf_tfiles 12966ca35587Sdholland #define sf_ffiles sf_un.sf_nfsv3.nfsv3sf_ffiles 12976ca35587Sdholland #define sf_afiles sf_un.sf_nfsv3.nfsv3sf_afiles 12986ca35587Sdholland #define sf_invarsec sf_un.sf_nfsv3.nfsv3sf_invarsec 12996ca35587Sdholland 13006ca35587Sdholland /* 13016ca35587Sdholland * Now defined using u_int64_t for the 64 bit field(s). 13026ca35587Sdholland * (Cannot be used to move data on/off the wire, due to alignment concerns.) 13036ca35587Sdholland */ 13046ca35587Sdholland struct nfsfsinfo { 13056ca35587Sdholland u_int32_t fs_rtmax; 13066ca35587Sdholland u_int32_t fs_rtpref; 13076ca35587Sdholland u_int32_t fs_rtmult; 13086ca35587Sdholland u_int32_t fs_wtmax; 13096ca35587Sdholland u_int32_t fs_wtpref; 13106ca35587Sdholland u_int32_t fs_wtmult; 13116ca35587Sdholland u_int32_t fs_dtpref; 13126ca35587Sdholland u_int64_t fs_maxfilesize; 13136ca35587Sdholland struct timespec fs_timedelta; 13146ca35587Sdholland u_int32_t fs_properties; 13156ca35587Sdholland }; 13166ca35587Sdholland 13176ca35587Sdholland /* 13186ca35587Sdholland * Bits for fs_properties 13196ca35587Sdholland */ 13206ca35587Sdholland #define NFSV3_FSFLINK 0x1 13216ca35587Sdholland #define NFSV3_FSFSYMLINK 0x2 13226ca35587Sdholland #define NFSV3_FSFHOMOGENEOUS 0x4 13236ca35587Sdholland #define NFSV3_FSFCANSETTIME 0x8 13246ca35587Sdholland 13256ca35587Sdholland /* 13266ca35587Sdholland * Yikes, overload fs_rtmult as fs_maxname for V4. 13276ca35587Sdholland */ 13286ca35587Sdholland #define fs_maxname fs_rtmult 13296ca35587Sdholland 13306ca35587Sdholland struct nfsv3_pathconf { 13316ca35587Sdholland u_int32_t pc_linkmax; 13326ca35587Sdholland u_int32_t pc_namemax; 13336ca35587Sdholland u_int32_t pc_notrunc; 13346ca35587Sdholland u_int32_t pc_chownrestricted; 13356ca35587Sdholland u_int32_t pc_caseinsensitive; 13366ca35587Sdholland u_int32_t pc_casepreserving; 13376ca35587Sdholland }; 13386ca35587Sdholland 13396ca35587Sdholland /* 13406ca35587Sdholland * NFS V4 data structures. 13416ca35587Sdholland */ 13426ca35587Sdholland struct nfsv4stateid { 13436ca35587Sdholland u_int32_t seqid; 13446ca35587Sdholland u_int32_t other[NFSX_STATEIDOTHER / NFSX_UNSIGNED]; 13456ca35587Sdholland }; 13466ca35587Sdholland typedef struct nfsv4stateid nfsv4stateid_t; 13476ca35587Sdholland 13486ca35587Sdholland #endif /* _NFS_NFSPROTO_H_ */ 1349