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