X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=nfs%2Fnfs.x;h=1f4976b14e3a3b5188a2306dc616c7fe9d2db654;hb=ea98629aef9428ca270a76b77e8de49e523be0e4;hp=abb4e461779f9edf89c2e93b259866287d90a079;hpb=2060155945dcdf638499b0d95c1b938d5013c828;p=deb_libnfs.git diff --git a/nfs/nfs.x b/nfs/nfs.x index abb4e46..1f4976b 100644 --- a/nfs/nfs.x +++ b/nfs/nfs.x @@ -1,4 +1,4 @@ -/* copied from rfc 1813 */ +/* NFS part from rfc 1813, NFSACL part is from wireshark sources */ const NFS3_FHSIZE = 64; /* Maximum bytes in a V3 file handle */ const NFS3_WRITEVERFSIZE = 8; @@ -333,8 +333,9 @@ typedef opaque createverf3[NFS3_CREATEVERFSIZE]; union createhow3 switch (createmode3 mode) { case UNCHECKED: - case GUARDED: sattr3 obj_attributes; + case GUARDED: + sattr3 g_obj_attributes; case EXCLUSIVE: createverf3 verf; }; @@ -556,9 +557,11 @@ struct devicedata3 { union mknoddata3 switch (ftype3 type) { case NF3CHR: + devicedata3 chr_device; case NF3BLK: - devicedata3 device; + devicedata3 blk_device; case NF3SOCK: + sattr3 sock_attributes; case NF3FIFO: sattr3 pipe_attributes; default: @@ -846,3 +849,70 @@ program NFS_PROGRAM { NFS3_COMMIT(COMMIT3args) = 21; } = 3; } = 100003; + + + +/* NFS ACL definitions based on wireshark souces and network traces */ +/* NFSACL interface. Uses same port/process as NFS */ + +enum nfsacl_type { + NFSACL_TYPE_USER_OBJ = 0x0001, + NFSACL_TYPE_USER = 0x0002, + NFSACL_TYPE_GROUP_OBJ = 0x0004, + NFSACL_TYPE_GROUP = 0x0008, + NFSACL_TYPE_CLASS_OBJ = 0x0010, + NFSACL_TYPE_CLASS = 0x0020, + NFSACL_TYPE_DEFAULT = 0x1000, + NFSACL_TYPE_DEFAULT_USER_OBJ = 0x1001, + NFSACL_TYPE_DEFAULT_USER = 0x1002, + NFSACL_TYPE_DEFAULT_GROUP_OBJ = 0x1004, + NFSACL_TYPE_DEFAULT_GROUP = 0x1008, + NFSACL_TYPE_DEFAULT_CLASS_OBJ = 0x1010, + NFSACL_TYPE_DEFAULT_OTHER_OBJ = 0x1020 +}; + +const NFSACL_PERM_READ = 0x04; +const NFSACL_PERM_WRITE = 0x02; +const NFSACL_PERM_EXEC = 0x01; + +struct nfsacl_ace { + enum nfsacl_type type; + uint32_t id; + uint32_t perm; +}; + +const NFSACL_MASK_ACL_ENTRY = 0x0001; +const NFSACL_MASK_ACL_COUNT = 0x0002; +const NFSACL_MASK_ACL_DEFAULT_ENTRY = 0x0004; +const NFSACL_MASK_ACL_DEFAULT_COUNT = 0x0008; + +struct GETACL3args { + nfs_fh3 dir; + uint32 mask; +}; + +struct GETACL3resok { + post_op_attr attr; + uint32_t mask; + uint32_t ace_count; + struct nfsacl_ace ace<>; + uint32_t default_ace_count; + struct nfsacl_ace default_ace<>; +}; + +union GETACL3res switch (nfsstat3 status) { +case NFS3_OK: + GETACL3resok resok; +default: + void; +}; + +program NFSACL_PROGRAM { + version NFSACL_V3 { + void + NFSACL3_NULL(void) = 0; + + GETACL3res + NFSACL3_GETACL(GETACL3args) = 1; + } = 3; +} = 100227;