[BACK]Return to nfsproto.h CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / nfs

Annotation of src/sys/nfs/nfsproto.h, Revision 1.8

1.8     ! kleink      1: /*     $NetBSD: nfsproto.h,v 1.7 1997/10/19 01:46:54 fvdl Exp $        */
1.1       fvdl        2:
                      3: /*
                      4:  * Copyright (c) 1989, 1993
                      5:  *     The Regents of the University of California.  All rights reserved.
                      6:  *
                      7:  * This code is derived from software contributed to Berkeley by
                      8:  * Rick Macklem at The University of Guelph.
                      9:  *
                     10:  * Redistribution and use in source and binary forms, with or without
                     11:  * modification, are permitted provided that the following conditions
                     12:  * are met:
                     13:  * 1. Redistributions of source code must retain the above copyright
                     14:  *    notice, this list of conditions and the following disclaimer.
                     15:  * 2. Redistributions in binary form must reproduce the above copyright
                     16:  *    notice, this list of conditions and the following disclaimer in the
                     17:  *    documentation and/or other materials provided with the distribution.
                     18:  * 3. All advertising materials mentioning features or use of this software
                     19:  *    must display the following acknowledgement:
                     20:  *     This product includes software developed by the University of
                     21:  *     California, Berkeley and its contributors.
                     22:  * 4. Neither the name of the University nor the names of its contributors
                     23:  *    may be used to endorse or promote products derived from this software
                     24:  *    without specific prior written permission.
                     25:  *
                     26:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     27:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     28:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     29:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     30:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     31:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     32:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     33:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     34:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     35:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     36:  * SUCH DAMAGE.
                     37:  *
                     38:  *     @(#)nfsproto.h  8.2 (Berkeley) 3/30/95
                     39:  */
                     40:
                     41: #ifndef _NFS_NFSPROTO_H_
                     42: #define _NFS_NFSPROTO_H_
                     43:
                     44:
                     45: /*
                     46:  * nfs definitions as per the Version 2 and 3 specs
                     47:  */
                     48:
                     49: /*
                     50:  * Constants as defined in the Sun NFS Version 2 and 3 specs.
                     51:  * "NFS: Network File System Protocol Specification" RFC1094
                     52:  * and in the "NFS: Network File System Version 3 Protocol
1.8     ! kleink     53:  * Specification" RFC1813.
1.1       fvdl       54:  */
                     55:
                     56: #define NFS_PORT       2049
                     57: #define        NFS_PROG        100003
                     58: #define NFS_VER2       2
                     59: #define        NFS_VER3        3
                     60: #define NFS_V2MAXDATA  8192
                     61: #define        NFS_MAXDGRAMDATA 16384
                     62: #define        NFS_MAXDATA     32768
                     63: #define        NFS_MAXPATHLEN  1024
                     64: #define        NFS_MAXNAMLEN   255
                     65: #define        NFS_MAXPKTHDR   404
                     66: #define NFS_MAXPACKET  (NFS_MAXPKTHDR + NFS_MAXDATA)
                     67: #define        NFS_MINPACKET   20
                     68: #define        NFS_FABLKSIZE   512     /* Size in bytes of a block wrt fa_blocks */
                     69:
                     70: /* Stat numbers for rpc returns (version 2 and 3) */
                     71: #define        NFS_OK                  0
                     72: #define        NFSERR_PERM             1
                     73: #define        NFSERR_NOENT            2
                     74: #define        NFSERR_IO               5
                     75: #define        NFSERR_NXIO             6
                     76: #define        NFSERR_ACCES            13
                     77: #define        NFSERR_EXIST            17
                     78: #define        NFSERR_XDEV             18      /* Version 3 only */
                     79: #define        NFSERR_NODEV            19
                     80: #define        NFSERR_NOTDIR           20
                     81: #define        NFSERR_ISDIR            21
                     82: #define        NFSERR_INVAL            22      /* Version 3 only */
                     83: #define        NFSERR_FBIG             27
                     84: #define        NFSERR_NOSPC            28
                     85: #define        NFSERR_ROFS             30
                     86: #define        NFSERR_MLINK            31      /* Version 3 only */
                     87: #define        NFSERR_NAMETOL          63
                     88: #define        NFSERR_NOTEMPTY         66
                     89: #define        NFSERR_DQUOT            69
                     90: #define        NFSERR_STALE            70
                     91: #define        NFSERR_REMOTE           71      /* Version 3 only */
                     92: #define        NFSERR_WFLUSH           99      /* Version 2 only */
                     93: #define        NFSERR_BADHANDLE        10001   /* The rest Version 3 only */
                     94: #define        NFSERR_NOT_SYNC         10002
                     95: #define        NFSERR_BAD_COOKIE       10003
                     96: #define        NFSERR_NOTSUPP          10004
                     97: #define        NFSERR_TOOSMALL         10005
                     98: #define        NFSERR_SERVERFAULT      10006
                     99: #define        NFSERR_BADTYPE          10007
                    100: #define        NFSERR_JUKEBOX          10008
                    101: #define NFSERR_TRYLATER                NFSERR_JUKEBOX
                    102: #define        NFSERR_STALEWRITEVERF   30001   /* Fake return for nfs_commit() */
                    103:
                    104: #define NFSERR_RETVOID         0x20000000 /* Return void, not error */
                    105: #define NFSERR_AUTHERR         0x40000000 /* Mark an authentication error */
                    106: #define NFSERR_RETERR          0x80000000 /* Mark an error return for V3 */
                    107:
                    108: /* Sizes in bytes of various nfs rpc components */
                    109: #define        NFSX_UNSIGNED   4
                    110:
                    111: /* specific to NFS Version 2 */
                    112: #define        NFSX_V2FH       32
                    113: #define        NFSX_V2FATTR    68
                    114: #define        NFSX_V2SATTR    32
                    115: #define        NFSX_V2COOKIE   4
                    116: #define NFSX_V2STATFS  20
                    117:
                    118: /* specific to NFS Version 3 */
                    119: #define NFSX_V3FH              (sizeof (fhandle_t)) /* size this server uses */
                    120: #define        NFSX_V3FHMAX            64      /* max. allowed by protocol */
                    121: #define NFSX_V3FATTR           84
                    122: #define NFSX_V3SATTR           60      /* max. all fields filled in */
                    123: #define NFSX_V3SRVSATTR                (sizeof (struct nfsv3_sattr))
                    124: #define NFSX_V3POSTOPATTR      (NFSX_V3FATTR + NFSX_UNSIGNED)
                    125: #define NFSX_V3WCCDATA         (NFSX_V3POSTOPATTR + 8 * NFSX_UNSIGNED)
                    126: #define NFSX_V3COOKIEVERF      8
                    127: #define NFSX_V3WRITEVERF       8
                    128: #define NFSX_V3CREATEVERF      8
                    129: #define NFSX_V3STATFS          52
                    130: #define NFSX_V3FSINFO          48
                    131: #define NFSX_V3PATHCONF                24
                    132:
                    133: /* variants for both versions */
                    134: #define NFSX_FH(v3)            ((v3) ? (NFSX_V3FHMAX + NFSX_UNSIGNED) : \
                    135:                                        NFSX_V2FH)
                    136: #define NFSX_SRVFH(v3)         ((v3) ? NFSX_V3FH : NFSX_V2FH)
                    137: #define        NFSX_FATTR(v3)          ((v3) ? NFSX_V3FATTR : NFSX_V2FATTR)
                    138: #define NFSX_PREOPATTR(v3)     ((v3) ? (7 * NFSX_UNSIGNED) : 0)
                    139: #define NFSX_POSTOPATTR(v3)    ((v3) ? (NFSX_V3FATTR + NFSX_UNSIGNED) : 0)
                    140: #define NFSX_POSTOPORFATTR(v3) ((v3) ? (NFSX_V3FATTR + NFSX_UNSIGNED) : \
                    141:                                        NFSX_V2FATTR)
                    142: #define NFSX_WCCDATA(v3)       ((v3) ? NFSX_V3WCCDATA : 0)
                    143: #define NFSX_WCCORFATTR(v3)    ((v3) ? NFSX_V3WCCDATA : NFSX_V2FATTR)
                    144: #define        NFSX_SATTR(v3)          ((v3) ? NFSX_V3SATTR : NFSX_V2SATTR)
                    145: #define        NFSX_COOKIEVERF(v3)     ((v3) ? NFSX_V3COOKIEVERF : 0)
                    146: #define        NFSX_WRITEVERF(v3)      ((v3) ? NFSX_V3WRITEVERF : 0)
                    147: #define NFSX_READDIR(v3)       ((v3) ? (5 * NFSX_UNSIGNED) : \
                    148:                                        (2 * NFSX_UNSIGNED))
                    149: #define        NFSX_STATFS(v3)         ((v3) ? NFSX_V3STATFS : NFSX_V2STATFS)
                    150:
                    151: /* nfs rpc procedure numbers (before version mapping) */
                    152: #define        NFSPROC_NULL            0
                    153: #define        NFSPROC_GETATTR         1
                    154: #define        NFSPROC_SETATTR         2
                    155: #define        NFSPROC_LOOKUP          3
                    156: #define        NFSPROC_ACCESS          4
                    157: #define        NFSPROC_READLINK        5
                    158: #define        NFSPROC_READ            6
                    159: #define        NFSPROC_WRITE           7
                    160: #define        NFSPROC_CREATE          8
                    161: #define        NFSPROC_MKDIR           9
                    162: #define        NFSPROC_SYMLINK         10
                    163: #define        NFSPROC_MKNOD           11
                    164: #define        NFSPROC_REMOVE          12
                    165: #define        NFSPROC_RMDIR           13
                    166: #define        NFSPROC_RENAME          14
                    167: #define        NFSPROC_LINK            15
                    168: #define        NFSPROC_READDIR         16
                    169: #define        NFSPROC_READDIRPLUS     17
                    170: #define        NFSPROC_FSSTAT          18
                    171: #define        NFSPROC_FSINFO          19
                    172: #define        NFSPROC_PATHCONF        20
                    173: #define        NFSPROC_COMMIT          21
                    174:
                    175: /* And leasing (nqnfs) procedure numbers (must be last) */
                    176: #define        NQNFSPROC_GETLEASE      22
                    177: #define        NQNFSPROC_VACATED       23
                    178: #define        NQNFSPROC_EVICTED       24
                    179:
                    180: #define NFSPROC_NOOP           25
                    181: #define        NFS_NPROCS              26
                    182:
                    183: /* Actual Version 2 procedure numbers */
                    184: #define        NFSV2PROC_NULL          0
                    185: #define        NFSV2PROC_GETATTR       1
                    186: #define        NFSV2PROC_SETATTR       2
                    187: #define        NFSV2PROC_NOOP          3
                    188: #define        NFSV2PROC_ROOT          NFSV2PROC_NOOP  /* Obsolete */
                    189: #define        NFSV2PROC_LOOKUP        4
                    190: #define        NFSV2PROC_READLINK      5
                    191: #define        NFSV2PROC_READ          6
                    192: #define        NFSV2PROC_WRITECACHE    NFSV2PROC_NOOP  /* Obsolete */
                    193: #define        NFSV2PROC_WRITE         8
                    194: #define        NFSV2PROC_CREATE        9
                    195: #define        NFSV2PROC_REMOVE        10
                    196: #define        NFSV2PROC_RENAME        11
                    197: #define        NFSV2PROC_LINK          12
                    198: #define        NFSV2PROC_SYMLINK       13
                    199: #define        NFSV2PROC_MKDIR         14
                    200: #define        NFSV2PROC_RMDIR         15
                    201: #define        NFSV2PROC_READDIR       16
                    202: #define        NFSV2PROC_STATFS        17
                    203:
                    204: /*
                    205:  * Constants used by the Version 3 protocol for various RPCs
                    206:  */
                    207: #define NFSV3SATTRTIME_DONTCHANGE      0
                    208: #define NFSV3SATTRTIME_TOSERVER                1
                    209: #define NFSV3SATTRTIME_TOCLIENT                2
                    210:
                    211: #define NFSV3ACCESS_READ               0x01
                    212: #define NFSV3ACCESS_LOOKUP             0x02
                    213: #define NFSV3ACCESS_MODIFY             0x04
                    214: #define NFSV3ACCESS_EXTEND             0x08
                    215: #define NFSV3ACCESS_DELETE             0x10
                    216: #define NFSV3ACCESS_EXECUTE            0x20
                    217:
                    218: #define NFSV3WRITE_UNSTABLE            0
                    219: #define NFSV3WRITE_DATASYNC            1
                    220: #define NFSV3WRITE_FILESYNC            2
                    221:
                    222: #define NFSV3CREATE_UNCHECKED          0
                    223: #define NFSV3CREATE_GUARDED            1
                    224: #define NFSV3CREATE_EXCLUSIVE          2
                    225:
                    226: #define NFSV3FSINFO_LINK               0x01
                    227: #define NFSV3FSINFO_SYMLINK            0x02
                    228: #define NFSV3FSINFO_HOMOGENEOUS                0x08
                    229: #define NFSV3FSINFO_CANSETTIME         0x10
                    230:
                    231: /* Conversion macros */
                    232: #define        vtonfsv2_mode(t,m) \
                    233:                txdr_unsigned(((t) == VFIFO) ? MAKEIMODE(VCHR, (m)) : \
                    234:                                MAKEIMODE((t), (m)))
1.2       mycroft   235: #define vtonfsv3_mode(m)       txdr_unsigned((m) & ALLPERMS)
1.5       christos  236: #define        nfstov_mode(a)          (fxdr_unsigned(u_int32_t, (a)) & ALLPERMS)
1.1       fvdl      237: #define        vtonfsv2_type(a)        txdr_unsigned(nfsv2_type[((int32_t)(a))])
                    238: #define        vtonfsv3_type(a)        txdr_unsigned(nfsv3_type[((int32_t)(a))])
                    239: #define        nfsv2tov_type(a)        nv2tov_type[fxdr_unsigned(u_int32_t,(a))&0x7]
                    240: #define        nfsv3tov_type(a)        nv3tov_type[fxdr_unsigned(u_int32_t,(a))&0x7]
                    241:
                    242: /* File types */
                    243: typedef enum { NFNON=0, NFREG=1, NFDIR=2, NFBLK=3, NFCHR=4, NFLNK=5,
                    244:        NFSOCK=6, NFFIFO=7 } nfstype;
                    245:
                    246: /* Structs for common parts of the rpc's */
                    247: /*
                    248:  * File Handle (32 bytes for version 2), variable up to 64 for version 3.
                    249:  * File Handles of up to NFS_SMALLFH in size are stored directly in the
                    250:  * nfs node, whereas larger ones are malloc'd. (This never happens when
                    251:  * NFS_SMALLFH is set to 64.)
                    252:  * NFS_SMALLFH should be in the range of 32 to 64 and be divisible by 4.
                    253:  */
                    254: #ifndef NFS_SMALLFH
1.7       fvdl      255: #define NFS_SMALLFH    64
1.1       fvdl      256: #endif
                    257: union nfsfh {
                    258:        fhandle_t fh_generic;
                    259:        u_char    fh_bytes[NFS_SMALLFH];
                    260: };
                    261: typedef union nfsfh nfsfh_t;
                    262:
                    263: struct nfsv2_time {
                    264:        u_int32_t nfsv2_sec;
                    265:        u_int32_t nfsv2_usec;
                    266: };
                    267: typedef struct nfsv2_time      nfstime2;
                    268:
                    269: struct nfsv3_time {
                    270:        u_int32_t nfsv3_sec;
                    271:        u_int32_t nfsv3_nsec;
                    272: };
                    273: typedef struct nfsv3_time      nfstime3;
                    274:
                    275: /*
                    276:  * Quads are defined as arrays of 2 longs to ensure dense packing for the
                    277:  * protocol and to facilitate xdr conversion.
                    278:  */
                    279: struct nfs_uquad {
                    280:        u_int32_t nfsuquad[2];
                    281: };
                    282: typedef        struct nfs_uquad        nfsuint64;
                    283:
                    284: /*
                    285:  * Used to convert between two u_longs and a u_quad_t.
                    286:  */
                    287: union nfs_quadconvert {
                    288:        u_int32_t lval[2];
                    289:        u_quad_t  qval;
                    290: };
                    291: typedef union nfs_quadconvert  nfsquad_t;
                    292:
                    293: /*
                    294:  * NFS Version 3 special file number.
                    295:  */
                    296: struct nfsv3_spec {
                    297:        u_int32_t specdata1;
                    298:        u_int32_t specdata2;
                    299: };
                    300: typedef        struct nfsv3_spec       nfsv3spec;
                    301:
                    302: /*
                    303:  * File attributes and setable attributes. These structures cover both
                    304:  * NFS version 2 and the version 3 protocol. Note that the union is only
                    305:  * used so that one pointer can refer to both variants. These structures
                    306:  * go out on the wire and must be densely packed, so no quad data types
                    307:  * are used. (all fields are longs or u_longs or structures of same)
                    308:  * NB: You can't do sizeof(struct nfs_fattr), you must use the
                    309:  *     NFSX_FATTR(v3) macro.
                    310:  */
                    311: struct nfs_fattr {
                    312:        u_int32_t fa_type;
                    313:        u_int32_t fa_mode;
                    314:        u_int32_t fa_nlink;
                    315:        u_int32_t fa_uid;
                    316:        u_int32_t fa_gid;
                    317:        union {
                    318:                struct {
                    319:                        u_int32_t nfsv2fa_size;
                    320:                        u_int32_t nfsv2fa_blocksize;
                    321:                        u_int32_t nfsv2fa_rdev;
                    322:                        u_int32_t nfsv2fa_blocks;
                    323:                        u_int32_t nfsv2fa_fsid;
                    324:                        u_int32_t nfsv2fa_fileid;
                    325:                        nfstime2  nfsv2fa_atime;
                    326:                        nfstime2  nfsv2fa_mtime;
                    327:                        nfstime2  nfsv2fa_ctime;
                    328:                } fa_nfsv2;
                    329:                struct {
                    330:                        nfsuint64 nfsv3fa_size;
                    331:                        nfsuint64 nfsv3fa_used;
                    332:                        nfsv3spec nfsv3fa_rdev;
                    333:                        nfsuint64 nfsv3fa_fsid;
                    334:                        nfsuint64 nfsv3fa_fileid;
                    335:                        nfstime3  nfsv3fa_atime;
                    336:                        nfstime3  nfsv3fa_mtime;
                    337:                        nfstime3  nfsv3fa_ctime;
                    338:                } fa_nfsv3;
                    339:        } fa_un;
                    340: };
                    341:
                    342: /* and some ugly defines for accessing union components */
                    343: #define        fa2_size                fa_un.fa_nfsv2.nfsv2fa_size
                    344: #define        fa2_blocksize           fa_un.fa_nfsv2.nfsv2fa_blocksize
                    345: #define        fa2_rdev                fa_un.fa_nfsv2.nfsv2fa_rdev
                    346: #define        fa2_blocks              fa_un.fa_nfsv2.nfsv2fa_blocks
                    347: #define        fa2_fsid                fa_un.fa_nfsv2.nfsv2fa_fsid
                    348: #define        fa2_fileid              fa_un.fa_nfsv2.nfsv2fa_fileid
                    349: #define        fa2_atime               fa_un.fa_nfsv2.nfsv2fa_atime
                    350: #define        fa2_mtime               fa_un.fa_nfsv2.nfsv2fa_mtime
                    351: #define        fa2_ctime               fa_un.fa_nfsv2.nfsv2fa_ctime
                    352: #define        fa3_size                fa_un.fa_nfsv3.nfsv3fa_size
                    353: #define        fa3_used                fa_un.fa_nfsv3.nfsv3fa_used
                    354: #define        fa3_rdev                fa_un.fa_nfsv3.nfsv3fa_rdev
                    355: #define        fa3_fsid                fa_un.fa_nfsv3.nfsv3fa_fsid
                    356: #define        fa3_fileid              fa_un.fa_nfsv3.nfsv3fa_fileid
                    357: #define        fa3_atime               fa_un.fa_nfsv3.nfsv3fa_atime
                    358: #define        fa3_mtime               fa_un.fa_nfsv3.nfsv3fa_mtime
                    359: #define        fa3_ctime               fa_un.fa_nfsv3.nfsv3fa_ctime
                    360:
                    361: struct nfsv2_sattr {
                    362:        u_int32_t sa_mode;
                    363:        u_int32_t sa_uid;
                    364:        u_int32_t sa_gid;
                    365:        u_int32_t sa_size;
                    366:        nfstime2  sa_atime;
                    367:        nfstime2  sa_mtime;
                    368: };
                    369:
                    370: /*
                    371:  * NFS Version 3 sattr structure for the new node creation case.
                    372:  */
                    373: struct nfsv3_sattr {
                    374:        u_int32_t sa_modetrue;
                    375:        u_int32_t sa_mode;
                    376:        u_int32_t sa_uidfalse;
                    377:        u_int32_t sa_gidfalse;
                    378:        u_int32_t sa_sizefalse;
                    379:        u_int32_t sa_atimetype;
                    380:        nfstime3  sa_atime;
                    381:        u_int32_t sa_mtimetype;
                    382:        nfstime3  sa_mtime;
                    383: };
                    384:
                    385: struct nfs_statfs {
                    386:        union {
                    387:                struct {
                    388:                        u_int32_t nfsv2sf_tsize;
                    389:                        u_int32_t nfsv2sf_bsize;
                    390:                        u_int32_t nfsv2sf_blocks;
                    391:                        u_int32_t nfsv2sf_bfree;
                    392:                        u_int32_t nfsv2sf_bavail;
                    393:                } sf_nfsv2;
                    394:                struct {
                    395:                        nfsuint64 nfsv3sf_tbytes;
                    396:                        nfsuint64 nfsv3sf_fbytes;
                    397:                        nfsuint64 nfsv3sf_abytes;
                    398:                        nfsuint64 nfsv3sf_tfiles;
                    399:                        nfsuint64 nfsv3sf_ffiles;
                    400:                        nfsuint64 nfsv3sf_afiles;
                    401:                        u_int32_t nfsv3sf_invarsec;
                    402:                } sf_nfsv3;
                    403:        } sf_un;
                    404: };
                    405:
                    406: #define sf_tsize       sf_un.sf_nfsv2.nfsv2sf_tsize
                    407: #define sf_bsize       sf_un.sf_nfsv2.nfsv2sf_bsize
                    408: #define sf_blocks      sf_un.sf_nfsv2.nfsv2sf_blocks
                    409: #define sf_bfree       sf_un.sf_nfsv2.nfsv2sf_bfree
                    410: #define sf_bavail      sf_un.sf_nfsv2.nfsv2sf_bavail
                    411: #define sf_tbytes      sf_un.sf_nfsv3.nfsv3sf_tbytes
                    412: #define sf_fbytes      sf_un.sf_nfsv3.nfsv3sf_fbytes
                    413: #define sf_abytes      sf_un.sf_nfsv3.nfsv3sf_abytes
                    414: #define sf_tfiles      sf_un.sf_nfsv3.nfsv3sf_tfiles
                    415: #define sf_ffiles      sf_un.sf_nfsv3.nfsv3sf_ffiles
                    416: #define sf_afiles      sf_un.sf_nfsv3.nfsv3sf_afiles
                    417: #define sf_invarsec    sf_un.sf_nfsv3.nfsv3sf_invarsec
                    418:
                    419: struct nfsv3_fsinfo {
                    420:        u_int32_t fs_rtmax;
                    421:        u_int32_t fs_rtpref;
                    422:        u_int32_t fs_rtmult;
                    423:        u_int32_t fs_wtmax;
                    424:        u_int32_t fs_wtpref;
                    425:        u_int32_t fs_wtmult;
                    426:        u_int32_t fs_dtpref;
                    427:        nfsuint64 fs_maxfilesize;
                    428:        nfstime3  fs_timedelta;
                    429:        u_int32_t fs_properties;
                    430: };
                    431:
                    432: struct nfsv3_pathconf {
                    433:        u_int32_t pc_linkmax;
                    434:        u_int32_t pc_namemax;
                    435:        u_int32_t pc_notrunc;
                    436:        u_int32_t pc_chownrestricted;
                    437:        u_int32_t pc_caseinsensitive;
                    438:        u_int32_t pc_casepreserving;
                    439: };
                    440:
                    441: #endif

CVSweb <webmaster@jp.NetBSD.org>