linux-bk/include/linux/nfs4.h
<<
>>
Prefs
   1/*
   2 *  include/linux/nfs4.h
   3 *
   4 *  NFSv4 protocol definitions.
   5 *
   6 *  Copyright (c) 2002 The Regents of the University of Michigan.
   7 *  All rights reserved.
   8 *
   9 *  Kendrick Smith <kmsmith@umich.edu>
  10 *  Andy Adamson   <andros@umich.edu>
  11 */
  12
  13#ifndef _LINUX_NFS4_H
  14#define _LINUX_NFS4_H
  15
  16#include <linux/types.h>
  17#include <linux/list.h>
  18
  19#define NFS4_VERIFIER_SIZE      8
  20#define NFS4_FHSIZE             128
  21#define NFS4_MAXPATHLEN         PATH_MAX
  22#define NFS4_MAXNAMLEN          NAME_MAX
  23
  24#define NFS4_ACCESS_READ        0x0001
  25#define NFS4_ACCESS_LOOKUP      0x0002
  26#define NFS4_ACCESS_MODIFY      0x0004
  27#define NFS4_ACCESS_EXTEND      0x0008
  28#define NFS4_ACCESS_DELETE      0x0010
  29#define NFS4_ACCESS_EXECUTE     0x0020
  30
  31#define NFS4_FH_PERISTENT               0x0000
  32#define NFS4_FH_NOEXPIRE_WITH_OPEN      0x0001
  33#define NFS4_FH_VOLATILE_ANY            0x0002
  34#define NFS4_FH_VOL_MIGRATION           0x0004
  35#define NFS4_FH_VOL_RENAME              0x0008
  36
  37#define NFS4_OPEN_RESULT_CONFIRM 0x0002
  38#define NFS4_OPEN_RESULT_LOCKTYPE_POSIX 0x0004
  39
  40#define NFS4_SHARE_ACCESS_READ  0x0001
  41#define NFS4_SHARE_ACCESS_WRITE 0x0002
  42#define NFS4_SHARE_ACCESS_BOTH  0x0003
  43#define NFS4_SHARE_DENY_READ    0x0001
  44#define NFS4_SHARE_DENY_WRITE   0x0002
  45#define NFS4_SHARE_DENY_BOTH    0x0003
  46
  47#define NFS4_SET_TO_SERVER_TIME 0
  48#define NFS4_SET_TO_CLIENT_TIME 1
  49
  50#define NFS4_ACE_ACCESS_ALLOWED_ACE_TYPE 0
  51#define NFS4_ACE_ACCESS_DENIED_ACE_TYPE  1
  52#define NFS4_ACE_SYSTEM_AUDIT_ACE_TYPE   2
  53#define NFS4_ACE_SYSTEM_ALARM_ACE_TYPE   3
  54
  55#define ACL4_SUPPORT_ALLOW_ACL 0x01
  56#define ACL4_SUPPORT_DENY_ACL  0x02
  57#define ACL4_SUPPORT_AUDIT_ACL 0x04
  58#define ACL4_SUPPORT_ALARM_ACL 0x08
  59
  60#define NFS4_ACE_FILE_INHERIT_ACE             0x00000001
  61#define NFS4_ACE_DIRECTORY_INHERIT_ACE        0x00000002
  62#define NFS4_ACE_NO_PROPAGATE_INHERIT_ACE     0x00000004
  63#define NFS4_ACE_INHERIT_ONLY_ACE             0x00000008
  64#define NFS4_ACE_SUCCESSFUL_ACCESS_ACE_FLAG   0x00000010
  65#define NFS4_ACE_FAILED_ACCESS_ACE_FLAG       0x00000020
  66#define NFS4_ACE_IDENTIFIER_GROUP             0x00000040
  67#define NFS4_ACE_OWNER                        0x00000080
  68#define NFS4_ACE_GROUP                        0x00000100
  69#define NFS4_ACE_EVERYONE                     0x00000200
  70
  71#define NFS4_ACE_READ_DATA                    0x00000001
  72#define NFS4_ACE_LIST_DIRECTORY               0x00000001
  73#define NFS4_ACE_WRITE_DATA                   0x00000002
  74#define NFS4_ACE_ADD_FILE                     0x00000002
  75#define NFS4_ACE_APPEND_DATA                  0x00000004
  76#define NFS4_ACE_ADD_SUBDIRECTORY             0x00000004
  77#define NFS4_ACE_READ_NAMED_ATTRS             0x00000008
  78#define NFS4_ACE_WRITE_NAMED_ATTRS            0x00000010
  79#define NFS4_ACE_EXECUTE                      0x00000020
  80#define NFS4_ACE_DELETE_CHILD                 0x00000040
  81#define NFS4_ACE_READ_ATTRIBUTES              0x00000080
  82#define NFS4_ACE_WRITE_ATTRIBUTES             0x00000100
  83#define NFS4_ACE_DELETE                       0x00010000
  84#define NFS4_ACE_READ_ACL                     0x00020000
  85#define NFS4_ACE_WRITE_ACL                    0x00040000
  86#define NFS4_ACE_WRITE_OWNER                  0x00080000
  87#define NFS4_ACE_SYNCHRONIZE                  0x00100000
  88#define NFS4_ACE_GENERIC_READ                 0x00120081
  89#define NFS4_ACE_GENERIC_WRITE                0x00160106
  90#define NFS4_ACE_GENERIC_EXECUTE              0x001200A0
  91#define NFS4_ACE_MASK_ALL                     0x001F01FF
  92
  93enum nfs4_acl_whotype {
  94        NFS4_ACL_WHO_NAMED = 0,
  95        NFS4_ACL_WHO_OWNER,
  96        NFS4_ACL_WHO_GROUP,
  97        NFS4_ACL_WHO_EVERYONE,
  98};
  99
 100struct nfs4_ace {
 101        uint32_t        type;
 102        uint32_t        flag;
 103        uint32_t        access_mask;
 104        int             whotype;
 105        uid_t           who;
 106        struct list_head l_ace;
 107};
 108
 109struct nfs4_acl {
 110        uint32_t        naces;
 111        struct list_head ace_head;
 112};
 113
 114typedef struct { char data[NFS4_VERIFIER_SIZE]; } nfs4_verifier;
 115typedef struct { char data[16]; } nfs4_stateid;
 116
 117enum nfs_opnum4 {
 118        OP_ACCESS = 3,
 119        OP_CLOSE = 4,
 120        OP_COMMIT = 5,
 121        OP_CREATE = 6,
 122        OP_DELEGPURGE = 7,
 123        OP_DELEGRETURN = 8,
 124        OP_GETATTR = 9,
 125        OP_GETFH = 10,
 126        OP_LINK = 11,
 127        OP_LOCK = 12,
 128        OP_LOCKT = 13,
 129        OP_LOCKU = 14,
 130        OP_LOOKUP = 15,
 131        OP_LOOKUPP = 16,
 132        OP_NVERIFY = 17,
 133        OP_OPEN = 18,
 134        OP_OPENATTR = 19,
 135        OP_OPEN_CONFIRM = 20,
 136        OP_OPEN_DOWNGRADE = 21,
 137        OP_PUTFH = 22,
 138        OP_PUTPUBFH = 23,
 139        OP_PUTROOTFH = 24,
 140        OP_READ = 25,
 141        OP_READDIR = 26,
 142        OP_READLINK = 27,
 143        OP_REMOVE = 28,
 144        OP_RENAME = 29,
 145        OP_RENEW = 30,
 146        OP_RESTOREFH = 31,
 147        OP_SAVEFH = 32,
 148        OP_SECINFO = 33,
 149        OP_SETATTR = 34,
 150        OP_SETCLIENTID = 35,
 151        OP_SETCLIENTID_CONFIRM = 36,
 152        OP_VERIFY = 37,
 153        OP_WRITE = 38,
 154        OP_RELEASE_LOCKOWNER = 39,
 155        OP_ILLEGAL = 10044,
 156};
 157
 158enum nfsstat4 {
 159        NFS4_OK = 0,
 160        NFS4ERR_PERM = 1,
 161        NFS4ERR_NOENT = 2,
 162        NFS4ERR_IO = 5,
 163        NFS4ERR_NXIO = 6,
 164        NFS4ERR_ACCESS = 13,
 165        NFS4ERR_EXIST = 17,
 166        NFS4ERR_XDEV = 18,
 167        /* Unused/reserved 19 */
 168        NFS4ERR_NOTDIR = 20,
 169        NFS4ERR_ISDIR = 21,
 170        NFS4ERR_INVAL = 22,
 171        NFS4ERR_FBIG = 27,
 172        NFS4ERR_NOSPC = 28,
 173        NFS4ERR_ROFS = 30,
 174        NFS4ERR_MLINK = 31,
 175        NFS4ERR_NAMETOOLONG = 63,
 176        NFS4ERR_NOTEMPTY = 66,
 177        NFS4ERR_DQUOT = 69,
 178        NFS4ERR_STALE = 70,
 179        NFS4ERR_BADHANDLE = 10001,
 180        NFS4ERR_BAD_COOKIE = 10003,
 181        NFS4ERR_NOTSUPP = 10004,
 182        NFS4ERR_TOOSMALL = 10005,
 183        NFS4ERR_SERVERFAULT = 10006,
 184        NFS4ERR_BADTYPE = 10007,
 185        NFS4ERR_DELAY = 10008,
 186        NFS4ERR_SAME = 10009,
 187        NFS4ERR_DENIED = 10010,
 188        NFS4ERR_EXPIRED = 10011,
 189        NFS4ERR_LOCKED = 10012,
 190        NFS4ERR_GRACE = 10013,
 191        NFS4ERR_FHEXPIRED = 10014,
 192        NFS4ERR_SHARE_DENIED = 10015,
 193        NFS4ERR_WRONGSEC = 10016,
 194        NFS4ERR_CLID_INUSE = 10017,
 195        NFS4ERR_RESOURCE = 10018,
 196        NFS4ERR_MOVED = 10019,
 197        NFS4ERR_NOFILEHANDLE = 10020,
 198        NFS4ERR_MINOR_VERS_MISMATCH = 10021,
 199        NFS4ERR_STALE_CLIENTID = 10022,
 200        NFS4ERR_STALE_STATEID = 10023,
 201        NFS4ERR_OLD_STATEID = 10024,
 202        NFS4ERR_BAD_STATEID = 10025,
 203        NFS4ERR_BAD_SEQID = 10026,
 204        NFS4ERR_NOT_SAME = 10027,
 205        NFS4ERR_LOCK_RANGE = 10028,
 206        NFS4ERR_SYMLINK = 10029,
 207        NFS4ERR_RESTOREFH = 10030,
 208        NFS4ERR_LEASE_MOVED = 10031,
 209        NFS4ERR_ATTRNOTSUPP = 10032,
 210        NFS4ERR_NO_GRACE = 10033,
 211        NFS4ERR_RECLAIM_BAD = 10034,
 212        NFS4ERR_RECLAIM_CONFLICT = 10035,
 213        NFS4ERR_BADXDR = 10036,
 214        NFS4ERR_LOCKS_HELD = 10037,
 215        NFS4ERR_OPENMODE = 10038,
 216        NFS4ERR_BADOWNER = 10039,
 217        NFS4ERR_BADCHAR = 10040,
 218        NFS4ERR_BADNAME = 10041,
 219        NFS4ERR_BAD_RANGE = 10042,
 220        NFS4ERR_LOCK_NOTSUPP = 10043,
 221        NFS4ERR_OP_ILLEGAL = 10044,
 222        NFS4ERR_DEADLOCK = 10045,
 223        NFS4ERR_FILE_OPEN = 10046,
 224        NFS4ERR_ADMIN_REVOKED = 10047,
 225        NFS4ERR_CB_PATH_DOWN = 10048
 226};
 227
 228/*
 229 * Note: NF4BAD is not actually part of the protocol; it is just used
 230 * internally by nfsd.
 231 */
 232enum nfs_ftype4 {
 233        NF4BAD          = 0,
 234        NF4REG          = 1,    /* Regular File */
 235        NF4DIR          = 2,    /* Directory */
 236        NF4BLK          = 3,    /* Special File - block device */
 237        NF4CHR          = 4,    /* Special File - character device */
 238        NF4LNK          = 5,    /* Symbolic Link */
 239        NF4SOCK         = 6,    /* Special File - socket */
 240        NF4FIFO         = 7,    /* Special File - fifo */
 241        NF4ATTRDIR      = 8,    /* Attribute Directory */
 242        NF4NAMEDATTR    = 9     /* Named Attribute */
 243};
 244
 245enum open_claim_type4 {
 246        NFS4_OPEN_CLAIM_NULL = 0,
 247        NFS4_OPEN_CLAIM_PREVIOUS = 1,
 248        NFS4_OPEN_CLAIM_DELEGATE_CUR = 2,
 249        NFS4_OPEN_CLAIM_DELEGATE_PREV = 3
 250};
 251
 252enum opentype4 {
 253        NFS4_OPEN_NOCREATE = 0,
 254        NFS4_OPEN_CREATE = 1
 255};
 256
 257enum createmode4 {
 258        NFS4_CREATE_UNCHECKED = 0,
 259        NFS4_CREATE_GUARDED = 1,
 260        NFS4_CREATE_EXCLUSIVE = 2
 261};
 262
 263enum limit_by4 {
 264        NFS4_LIMIT_SIZE = 1,
 265        NFS4_LIMIT_BLOCKS = 2
 266};
 267
 268enum open_delegation_type4 {
 269        NFS4_OPEN_DELEGATE_NONE = 0,
 270        NFS4_OPEN_DELEGATE_READ = 1,
 271        NFS4_OPEN_DELEGATE_WRITE = 2
 272};
 273
 274enum lock_type4 {
 275        NFS4_UNLOCK_LT = 0,
 276        NFS4_READ_LT = 1,
 277        NFS4_WRITE_LT = 2,
 278        NFS4_READW_LT = 3,
 279        NFS4_WRITEW_LT = 4
 280};
 281
 282
 283/* Mandatory Attributes */
 284#define FATTR4_WORD0_SUPPORTED_ATTRS    (1UL << 0)
 285#define FATTR4_WORD0_TYPE               (1UL << 1)
 286#define FATTR4_WORD0_FH_EXPIRE_TYPE     (1UL << 2)
 287#define FATTR4_WORD0_CHANGE             (1UL << 3)
 288#define FATTR4_WORD0_SIZE               (1UL << 4)
 289#define FATTR4_WORD0_LINK_SUPPORT       (1UL << 5)
 290#define FATTR4_WORD0_SYMLINK_SUPPORT    (1UL << 6)
 291#define FATTR4_WORD0_NAMED_ATTR         (1UL << 7)
 292#define FATTR4_WORD0_FSID               (1UL << 8)
 293#define FATTR4_WORD0_UNIQUE_HANDLES     (1UL << 9)
 294#define FATTR4_WORD0_LEASE_TIME         (1UL << 10)
 295#define FATTR4_WORD0_RDATTR_ERROR       (1UL << 11)
 296
 297/* Recommended Attributes */
 298#define FATTR4_WORD0_ACL                (1UL << 12)
 299#define FATTR4_WORD0_ACLSUPPORT         (1UL << 13)
 300#define FATTR4_WORD0_ARCHIVE            (1UL << 14)
 301#define FATTR4_WORD0_CANSETTIME         (1UL << 15)
 302#define FATTR4_WORD0_CASE_INSENSITIVE   (1UL << 16)
 303#define FATTR4_WORD0_CASE_PRESERVING    (1UL << 17)
 304#define FATTR4_WORD0_CHOWN_RESTRICTED   (1UL << 18)
 305#define FATTR4_WORD0_FILEHANDLE         (1UL << 19)
 306#define FATTR4_WORD0_FILEID             (1UL << 20)
 307#define FATTR4_WORD0_FILES_AVAIL        (1UL << 21)
 308#define FATTR4_WORD0_FILES_FREE         (1UL << 22)
 309#define FATTR4_WORD0_FILES_TOTAL        (1UL << 23)
 310#define FATTR4_WORD0_FS_LOCATIONS       (1UL << 24)
 311#define FATTR4_WORD0_HIDDEN             (1UL << 25)
 312#define FATTR4_WORD0_HOMOGENEOUS        (1UL << 26)
 313#define FATTR4_WORD0_MAXFILESIZE        (1UL << 27)
 314#define FATTR4_WORD0_MAXLINK            (1UL << 28)
 315#define FATTR4_WORD0_MAXNAME            (1UL << 29)
 316#define FATTR4_WORD0_MAXREAD            (1UL << 30)
 317#define FATTR4_WORD0_MAXWRITE           (1UL << 31)
 318#define FATTR4_WORD1_MIMETYPE           (1UL << 0)
 319#define FATTR4_WORD1_MODE               (1UL << 1)
 320#define FATTR4_WORD1_NO_TRUNC           (1UL << 2)
 321#define FATTR4_WORD1_NUMLINKS           (1UL << 3)
 322#define FATTR4_WORD1_OWNER              (1UL << 4)
 323#define FATTR4_WORD1_OWNER_GROUP        (1UL << 5)
 324#define FATTR4_WORD1_QUOTA_HARD         (1UL << 6)
 325#define FATTR4_WORD1_QUOTA_SOFT         (1UL << 7)
 326#define FATTR4_WORD1_QUOTA_USED         (1UL << 8)
 327#define FATTR4_WORD1_RAWDEV             (1UL << 9)
 328#define FATTR4_WORD1_SPACE_AVAIL        (1UL << 10)
 329#define FATTR4_WORD1_SPACE_FREE         (1UL << 11)
 330#define FATTR4_WORD1_SPACE_TOTAL        (1UL << 12)
 331#define FATTR4_WORD1_SPACE_USED         (1UL << 13)
 332#define FATTR4_WORD1_SYSTEM             (1UL << 14)
 333#define FATTR4_WORD1_TIME_ACCESS        (1UL << 15)
 334#define FATTR4_WORD1_TIME_ACCESS_SET    (1UL << 16)
 335#define FATTR4_WORD1_TIME_BACKUP        (1UL << 17)
 336#define FATTR4_WORD1_TIME_CREATE        (1UL << 18)
 337#define FATTR4_WORD1_TIME_DELTA         (1UL << 19)
 338#define FATTR4_WORD1_TIME_METADATA      (1UL << 20)
 339#define FATTR4_WORD1_TIME_MODIFY        (1UL << 21)
 340#define FATTR4_WORD1_TIME_MODIFY_SET    (1UL << 22)
 341#define FATTR4_WORD1_MOUNTED_ON_FILEID  (1UL << 23)
 342
 343#define NFSPROC4_NULL 0
 344#define NFSPROC4_COMPOUND 1
 345#define NFS4_MINOR_VERSION 0
 346#define NFS4_DEBUG 1
 347
 348#ifdef __KERNEL__
 349
 350/* Index of predefined Linux client operations */
 351
 352enum {
 353        NFSPROC4_CLNT_NULL = 0,         /* Unused */
 354        NFSPROC4_CLNT_READ,
 355        NFSPROC4_CLNT_WRITE,
 356        NFSPROC4_CLNT_COMMIT,
 357        NFSPROC4_CLNT_OPEN,
 358        NFSPROC4_CLNT_OPEN_CONFIRM,
 359        NFSPROC4_CLNT_OPEN_NOATTR,
 360        NFSPROC4_CLNT_OPEN_DOWNGRADE,
 361        NFSPROC4_CLNT_CLOSE,
 362        NFSPROC4_CLNT_SETATTR,
 363        NFSPROC4_CLNT_FSINFO,
 364        NFSPROC4_CLNT_RENEW,
 365        NFSPROC4_CLNT_SETCLIENTID,
 366        NFSPROC4_CLNT_SETCLIENTID_CONFIRM,
 367        NFSPROC4_CLNT_LOCK,
 368        NFSPROC4_CLNT_LOCKT,
 369        NFSPROC4_CLNT_LOCKU,
 370        NFSPROC4_CLNT_ACCESS,
 371        NFSPROC4_CLNT_GETATTR,
 372        NFSPROC4_CLNT_LOOKUP,
 373        NFSPROC4_CLNT_LOOKUP_ROOT,
 374        NFSPROC4_CLNT_REMOVE,
 375        NFSPROC4_CLNT_RENAME,
 376        NFSPROC4_CLNT_LINK,
 377        NFSPROC4_CLNT_SYMLINK,
 378        NFSPROC4_CLNT_CREATE,
 379        NFSPROC4_CLNT_PATHCONF,
 380        NFSPROC4_CLNT_STATFS,
 381        NFSPROC4_CLNT_READLINK,
 382        NFSPROC4_CLNT_READDIR,
 383        NFSPROC4_CLNT_SERVER_CAPS,
 384        NFSPROC4_CLNT_DELEGRETURN,
 385};
 386
 387#endif
 388#endif
 389
 390/*
 391 * Local variables:
 392 *  c-basic-offset: 8
 393 * End:
 394 */
 395
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.