1*58a2b000SEvgeniy Ivanov /* $NetBSD: nfsv2.h,v 1.4 2005/12/11 12:24:46 christos Exp $ */ 2*58a2b000SEvgeniy Ivanov 3*58a2b000SEvgeniy Ivanov /* 4*58a2b000SEvgeniy Ivanov * Copyright (c) 1989, 1993 5*58a2b000SEvgeniy Ivanov * The Regents of the University of California. All rights reserved. 6*58a2b000SEvgeniy Ivanov * 7*58a2b000SEvgeniy Ivanov * This code is derived from software contributed to Berkeley by 8*58a2b000SEvgeniy Ivanov * Rick Macklem at The University of Guelph. 9*58a2b000SEvgeniy Ivanov * 10*58a2b000SEvgeniy Ivanov * Redistribution and use in source and binary forms, with or without 11*58a2b000SEvgeniy Ivanov * modification, are permitted provided that the following conditions 12*58a2b000SEvgeniy Ivanov * are met: 13*58a2b000SEvgeniy Ivanov * 1. Redistributions of source code must retain the above copyright 14*58a2b000SEvgeniy Ivanov * notice, this list of conditions and the following disclaimer. 15*58a2b000SEvgeniy Ivanov * 2. Redistributions in binary form must reproduce the above copyright 16*58a2b000SEvgeniy Ivanov * notice, this list of conditions and the following disclaimer in the 17*58a2b000SEvgeniy Ivanov * documentation and/or other materials provided with the distribution. 18*58a2b000SEvgeniy Ivanov * 3. Neither the name of the University nor the names of its contributors 19*58a2b000SEvgeniy Ivanov * may be used to endorse or promote products derived from this software 20*58a2b000SEvgeniy Ivanov * without specific prior written permission. 21*58a2b000SEvgeniy Ivanov * 22*58a2b000SEvgeniy Ivanov * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 23*58a2b000SEvgeniy Ivanov * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24*58a2b000SEvgeniy Ivanov * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25*58a2b000SEvgeniy Ivanov * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 26*58a2b000SEvgeniy Ivanov * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27*58a2b000SEvgeniy Ivanov * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28*58a2b000SEvgeniy Ivanov * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29*58a2b000SEvgeniy Ivanov * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30*58a2b000SEvgeniy Ivanov * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31*58a2b000SEvgeniy Ivanov * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32*58a2b000SEvgeniy Ivanov * SUCH DAMAGE. 33*58a2b000SEvgeniy Ivanov * 34*58a2b000SEvgeniy Ivanov * @(#)nfsv2.h 8.1 (Berkeley) 6/10/93 35*58a2b000SEvgeniy Ivanov */ 36*58a2b000SEvgeniy Ivanov 37*58a2b000SEvgeniy Ivanov /* 38*58a2b000SEvgeniy Ivanov * nfs definitions as per the version 2 specs 39*58a2b000SEvgeniy Ivanov */ 40*58a2b000SEvgeniy Ivanov 41*58a2b000SEvgeniy Ivanov /* 42*58a2b000SEvgeniy Ivanov * Constants as defined in the Sun NFS Version 2 spec. 43*58a2b000SEvgeniy Ivanov * "NFS: Network File System Protocol Specification" RFC1094 44*58a2b000SEvgeniy Ivanov */ 45*58a2b000SEvgeniy Ivanov 46*58a2b000SEvgeniy Ivanov #define NFS_PORT 2049 47*58a2b000SEvgeniy Ivanov #define NFS_PROG 100003 48*58a2b000SEvgeniy Ivanov #define NFS_VER2 2 49*58a2b000SEvgeniy Ivanov #define NFS_MAXDGRAMDATA 8192 50*58a2b000SEvgeniy Ivanov #define NFS_MAXDATA 32768 51*58a2b000SEvgeniy Ivanov #define NFS_MAXPATHLEN 1024 52*58a2b000SEvgeniy Ivanov #define NFS_MAXNAMLEN 255 53*58a2b000SEvgeniy Ivanov #define NFS_FHSIZE 32 54*58a2b000SEvgeniy Ivanov #define NFS_MAXPKTHDR 404 55*58a2b000SEvgeniy Ivanov #define NFS_MAXPACKET (NFS_MAXPKTHDR+NFS_MAXDATA) 56*58a2b000SEvgeniy Ivanov #define NFS_MINPACKET 20 57*58a2b000SEvgeniy Ivanov #define NFS_FABLKSIZE 512 /* Size in bytes of a block wrt fa_blocks */ 58*58a2b000SEvgeniy Ivanov 59*58a2b000SEvgeniy Ivanov /* Stat numbers for rpc returns */ 60*58a2b000SEvgeniy Ivanov #define NFS_OK 0 61*58a2b000SEvgeniy Ivanov #define NFSERR_PERM 1 62*58a2b000SEvgeniy Ivanov #define NFSERR_NOENT 2 63*58a2b000SEvgeniy Ivanov #define NFSERR_IO 5 64*58a2b000SEvgeniy Ivanov #define NFSERR_NXIO 6 65*58a2b000SEvgeniy Ivanov #define NFSERR_ACCES 13 66*58a2b000SEvgeniy Ivanov #define NFSERR_EXIST 17 67*58a2b000SEvgeniy Ivanov #define NFSERR_NODEV 19 68*58a2b000SEvgeniy Ivanov #define NFSERR_NOTDIR 20 69*58a2b000SEvgeniy Ivanov #define NFSERR_ISDIR 21 70*58a2b000SEvgeniy Ivanov #define NFSERR_FBIG 27 71*58a2b000SEvgeniy Ivanov #define NFSERR_NOSPC 28 72*58a2b000SEvgeniy Ivanov #define NFSERR_ROFS 30 73*58a2b000SEvgeniy Ivanov #define NFSERR_NAMETOL 63 74*58a2b000SEvgeniy Ivanov #define NFSERR_NOTEMPTY 66 75*58a2b000SEvgeniy Ivanov #define NFSERR_DQUOT 69 76*58a2b000SEvgeniy Ivanov #define NFSERR_STALE 70 77*58a2b000SEvgeniy Ivanov #define NFSERR_WFLUSH 99 78*58a2b000SEvgeniy Ivanov 79*58a2b000SEvgeniy Ivanov /* Sizes in bytes of various nfs rpc components */ 80*58a2b000SEvgeniy Ivanov #define NFSX_FH 32 81*58a2b000SEvgeniy Ivanov #define NFSX_UNSIGNED 4 82*58a2b000SEvgeniy Ivanov #define NFSX_FATTR 68 83*58a2b000SEvgeniy Ivanov #define NFSX_SATTR 32 84*58a2b000SEvgeniy Ivanov #define NFSX_STATFS 20 85*58a2b000SEvgeniy Ivanov #define NFSX_COOKIE 4 86*58a2b000SEvgeniy Ivanov 87*58a2b000SEvgeniy Ivanov /* nfs rpc procedure numbers */ 88*58a2b000SEvgeniy Ivanov #define NFSPROC_NULL 0 89*58a2b000SEvgeniy Ivanov #define NFSPROC_GETATTR 1 90*58a2b000SEvgeniy Ivanov #define NFSPROC_SETATTR 2 91*58a2b000SEvgeniy Ivanov #define NFSPROC_NOOP 3 92*58a2b000SEvgeniy Ivanov #define NFSPROC_ROOT NFSPROC_NOOP /* Obsolete */ 93*58a2b000SEvgeniy Ivanov #define NFSPROC_LOOKUP 4 94*58a2b000SEvgeniy Ivanov #define NFSPROC_READLINK 5 95*58a2b000SEvgeniy Ivanov #define NFSPROC_READ 6 96*58a2b000SEvgeniy Ivanov #define NFSPROC_WRITECACHE NFSPROC_NOOP /* Obsolete */ 97*58a2b000SEvgeniy Ivanov #define NFSPROC_WRITE 8 98*58a2b000SEvgeniy Ivanov #define NFSPROC_CREATE 9 99*58a2b000SEvgeniy Ivanov #define NFSPROC_REMOVE 10 100*58a2b000SEvgeniy Ivanov #define NFSPROC_RENAME 11 101*58a2b000SEvgeniy Ivanov #define NFSPROC_LINK 12 102*58a2b000SEvgeniy Ivanov #define NFSPROC_SYMLINK 13 103*58a2b000SEvgeniy Ivanov #define NFSPROC_MKDIR 14 104*58a2b000SEvgeniy Ivanov #define NFSPROC_RMDIR 15 105*58a2b000SEvgeniy Ivanov #define NFSPROC_READDIR 16 106*58a2b000SEvgeniy Ivanov #define NFSPROC_STATFS 17 107*58a2b000SEvgeniy Ivanov 108*58a2b000SEvgeniy Ivanov #define NFS_NPROCS 18 109*58a2b000SEvgeniy Ivanov 110*58a2b000SEvgeniy Ivanov 111*58a2b000SEvgeniy Ivanov /* File types */ 112*58a2b000SEvgeniy Ivanov typedef enum { 113*58a2b000SEvgeniy Ivanov NFNON=0, 114*58a2b000SEvgeniy Ivanov NFREG=1, 115*58a2b000SEvgeniy Ivanov NFDIR=2, 116*58a2b000SEvgeniy Ivanov NFBLK=3, 117*58a2b000SEvgeniy Ivanov NFCHR=4, 118*58a2b000SEvgeniy Ivanov NFLNK=5 119*58a2b000SEvgeniy Ivanov } nfstype; 120*58a2b000SEvgeniy Ivanov 121*58a2b000SEvgeniy Ivanov /* Structs for common parts of the rpc's */ 122*58a2b000SEvgeniy Ivanov struct nfsv2_time { 123*58a2b000SEvgeniy Ivanov n_long nfs_sec; 124*58a2b000SEvgeniy Ivanov n_long nfs_usec; 125*58a2b000SEvgeniy Ivanov }; 126*58a2b000SEvgeniy Ivanov 127*58a2b000SEvgeniy Ivanov /* 128*58a2b000SEvgeniy Ivanov * File attributes and setable attributes. 129*58a2b000SEvgeniy Ivanov */ 130*58a2b000SEvgeniy Ivanov struct nfsv2_fattr { 131*58a2b000SEvgeniy Ivanov n_long fa_type; 132*58a2b000SEvgeniy Ivanov n_long fa_mode; 133*58a2b000SEvgeniy Ivanov n_long fa_nlink; 134*58a2b000SEvgeniy Ivanov n_long fa_uid; 135*58a2b000SEvgeniy Ivanov n_long fa_gid; 136*58a2b000SEvgeniy Ivanov n_long fa_size; 137*58a2b000SEvgeniy Ivanov n_long fa_blocksize; 138*58a2b000SEvgeniy Ivanov n_long fa_rdev; 139*58a2b000SEvgeniy Ivanov n_long fa_blocks; 140*58a2b000SEvgeniy Ivanov n_long fa_fsid; 141*58a2b000SEvgeniy Ivanov n_long fa_fileid; 142*58a2b000SEvgeniy Ivanov struct nfsv2_time fa_atime; 143*58a2b000SEvgeniy Ivanov struct nfsv2_time fa_mtime; 144*58a2b000SEvgeniy Ivanov struct nfsv2_time fa_ctime; 145*58a2b000SEvgeniy Ivanov }; 146*58a2b000SEvgeniy Ivanov 147*58a2b000SEvgeniy Ivanov struct nfsv2_sattr { 148*58a2b000SEvgeniy Ivanov n_long sa_mode; 149*58a2b000SEvgeniy Ivanov n_long sa_uid; 150*58a2b000SEvgeniy Ivanov n_long sa_gid; 151*58a2b000SEvgeniy Ivanov n_long sa_size; 152*58a2b000SEvgeniy Ivanov struct nfsv2_time sa_atime; 153*58a2b000SEvgeniy Ivanov struct nfsv2_time sa_mtime; 154*58a2b000SEvgeniy Ivanov }; 155*58a2b000SEvgeniy Ivanov 156*58a2b000SEvgeniy Ivanov struct nfsv2_statfs { 157*58a2b000SEvgeniy Ivanov n_long sf_tsize; 158*58a2b000SEvgeniy Ivanov n_long sf_bsize; 159*58a2b000SEvgeniy Ivanov n_long sf_blocks; 160*58a2b000SEvgeniy Ivanov n_long sf_bfree; 161*58a2b000SEvgeniy Ivanov n_long sf_bavail; 162*58a2b000SEvgeniy Ivanov }; 163