Net-LibNFS

 view release on metacpan or  search on metacpan

libnfs/nfs4/nfs4.x  view on Meta::CPAN

const NFS4_FHSIZE               = 128;
const NFS4_VERIFIER_SIZE        = 8;
const NFS4_OPAQUE_LIMIT         = 1024;
const NFS4_SESSIONID_SIZE       = 16;
/*
 * File types
 */
enum nfs_ftype4 {
     NF4REG          = 1,    /* Regular File */
     NF4DIR          = 2,    /* Directory */
     NF4BLK          = 3,    /* Special File - block device */
     NF4CHR          = 4,    /* Special File - character device */
     NF4LNK          = 5,    /* Symbolic Link */
     NF4SOCK         = 6,    /* Special File - socket */
     NF4FIFO         = 7,    /* Special File - fifo */
     NF4ATTRDIR      = 8,    /* Attribute Directory */
     NF4NAMEDATTR    = 9     /* Named Attribute */
};

/*
 * Error status
 */
enum nfsstat4 {
     NFS4_OK                 = 0,    /* everything is okay      */
     NFS4ERR_PERM            = 1,    /* caller not privileged   */
     NFS4ERR_NOENT           = 2,    /* no such file/directory  */
     NFS4ERR_IO              = 5,    /* hard I/O error          */
     NFS4ERR_NXIO            = 6,    /* no such device          */
     NFS4ERR_ACCESS          = 13,   /* access denied           */
     NFS4ERR_EXIST           = 17,   /* file already exists     */
     NFS4ERR_XDEV            = 18,   /* different filesystems   */
     /* Unused/reserved        19 */
     NFS4ERR_NOTDIR          = 20,   /* should be a directory   */
     NFS4ERR_ISDIR           = 21,   /* should not be directory */
     NFS4ERR_INVAL           = 22,   /* invalid argument        */
     NFS4ERR_FBIG            = 27,   /* file exceeds server max */
     NFS4ERR_NOSPC           = 28,   /* no space on filesystem  */
     NFS4ERR_ROFS            = 30,   /* read-only filesystem    */
     NFS4ERR_MLINK           = 31,   /* too many hard links     */
     NFS4ERR_NAMETOOLONG     = 63,   /* name exceeds server max */
     NFS4ERR_NOTEMPTY        = 66,   /* directory not empty     */
     NFS4ERR_DQUOT           = 69,   /* hard quota limit reached*/
     NFS4ERR_STALE           = 70,   /* file no longer exists   */
     NFS4ERR_BADHANDLE       = 10001,/* Illegal filehandle      */
     NFS4ERR_BAD_COOKIE      = 10003,/* READDIR cookie is stale */
     NFS4ERR_NOTSUPP         = 10004,/* operation not supported */
     NFS4ERR_TOOSMALL        = 10005,/* response limit exceeded */
     NFS4ERR_SERVERFAULT     = 10006,/* undefined server error  */
     NFS4ERR_BADTYPE         = 10007,/* type invalid for CREATE */
     NFS4ERR_DELAY           = 10008,/* file "busy" - retry     */
     NFS4ERR_SAME            = 10009,/* nverify says attrs same */
     NFS4ERR_DENIED          = 10010,/* lock unavailable        */
     NFS4ERR_EXPIRED         = 10011,/* lock lease expired      */
     NFS4ERR_LOCKED          = 10012,/* I/O failed due to lock  */
     NFS4ERR_GRACE           = 10013,/* in grace period         */
     NFS4ERR_FHEXPIRED       = 10014,/* filehandle expired      */
     NFS4ERR_SHARE_DENIED    = 10015,/* share reserve denied    */
     NFS4ERR_WRONGSEC        = 10016,/* wrong security flavor   */
     NFS4ERR_CLID_INUSE      = 10017,/* clientid in use         */
     NFS4ERR_RESOURCE        = 10018,/* resource exhaustion     */
     NFS4ERR_MOVED           = 10019,/* filesystem relocated    */
     NFS4ERR_NOFILEHANDLE    = 10020,/* current FH is not set   */
     NFS4ERR_MINOR_VERS_MISMATCH = 10021,/* minor vers not supp */
     NFS4ERR_STALE_CLIENTID  = 10022,/* server has rebooted     */
     NFS4ERR_STALE_STATEID   = 10023,/* server has rebooted     */
     NFS4ERR_OLD_STATEID     = 10024,/* state is out of sync    */
     NFS4ERR_BAD_STATEID     = 10025,/* incorrect stateid       */
     NFS4ERR_BAD_SEQID       = 10026,/* request is out of seq.  */
     NFS4ERR_NOT_SAME        = 10027,/* verify - attrs not same */
     NFS4ERR_LOCK_RANGE      = 10028,/* lock range not supported*/
     NFS4ERR_SYMLINK         = 10029,/* should be file/directory*/
     NFS4ERR_RESTOREFH       = 10030,/* no saved filehandle     */
     NFS4ERR_LEASE_MOVED     = 10031,/* some filesystem moved   */
     NFS4ERR_ATTRNOTSUPP     = 10032,/* recommended attr not sup*/
     NFS4ERR_NO_GRACE        = 10033,/* reclaim outside of grace*/
     NFS4ERR_RECLAIM_BAD     = 10034,/* reclaim error at server */
     NFS4ERR_RECLAIM_CONFLICT = 10035,/* conflict on reclaim    */
     NFS4ERR_BADZDR          = 10036,/* ZDR decode failed       */
     NFS4ERR_LOCKS_HELD      = 10037,/* file locks held at CLOSE*/
     NFS4ERR_OPENMODE        = 10038,/* conflict in OPEN and I/O*/
     NFS4ERR_BADOWNER        = 10039,/* owner translation bad   */
     NFS4ERR_BADCHAR         = 10040,/* utf-8 char not supported*/
     NFS4ERR_BADNAME         = 10041,/* name not supported      */
     NFS4ERR_BAD_RANGE       = 10042,/* lock range not supported*/
     NFS4ERR_LOCK_NOTSUPP    = 10043,/* no atomic up/downgrade  */
     NFS4ERR_OP_ILLEGAL      = 10044,/* undefined operation     */
     NFS4ERR_DEADLOCK        = 10045,/* file locking deadlock   */
     NFS4ERR_FILE_OPEN       = 10046,/* open file blocks op.    */
     NFS4ERR_ADMIN_REVOKED   = 10047,/* lockowner state revoked */
     NFS4ERR_CB_PATH_DOWN    = 10048,/* callback path down      */
     NFS4ERR_BADIOMODE       = 10049,
     NFS4ERR_BADLAYOUT       = 10050,
     NFS4ERR_BAD_SESSION_DIGEST = 10051,
     NFS4ERR_BADSESSION      = 10052,
     NFS4ERR_BADSLOT         = 10053,
     NFS4ERR_COMPLETE_ALREADY = 10054,
     NFS4ERR_CONN_NOT_BOUND_TO_SESSION = 10055,
     NFS4ERR_DELEG_ALREADY_WANTED = 10056,
     NFS4ERR_BACK_CHAN_BUSY  = 10057,
     NFS4ERR_LAYOUTTRYLATER  = 10058,
     NFS4ERR_LAYOUTUNAVAILABLE = 10059,
     NFS4ERR_NOMATCHING_LAYOUT = 10060,
     NFS4ERR_RECALLCONFLICT  = 10061
};

/*
 * Basic data types
 */
typedef uint32_t        bitmap4<>;
typedef uint64_t        offset4;
typedef uint32_t        count4;
typedef uint64_t        length4;
typedef uint64_t        clientid4;
typedef uint32_t	sequenceid4;
typedef uint32_t        seqid4;
typedef uint32_t        slotid4;
typedef opaque          utf8string<>;
typedef utf8string      utf8str_cis;
typedef utf8string      utf8str_cs;
typedef utf8string      utf8str_mixed;
typedef utf8str_cs      component4;

libnfs/nfs4/nfs4.x  view on Meta::CPAN

       layouttype4             da_layout_type;
       opaque                  da_addr_body<>;
};

/*
 * Timeval
 */
struct nfstime4 {
     int64_t         seconds;
     uint32_t        nseconds;
};

enum time_how4 {
     SET_TO_SERVER_TIME4 = 0,
     SET_TO_CLIENT_TIME4 = 1
};

enum layoutiomode4 {
       LAYOUTIOMODE4_READ      = 1,
       LAYOUTIOMODE4_RW        = 2,
       LAYOUTIOMODE4_ANY       = 3
};

struct layout_content4 {
       layouttype4 loc_type;
       opaque      loc_body<>;
};

struct layout4 {
       offset4                 lo_offset;
       length4                 lo_length;
       layoutiomode4           lo_iomode;
       layout_content4         lo_content;
};

union settime4 switch (time_how4 set_it) {
   case SET_TO_CLIENT_TIME4:
        nfstime4 time;
   default:
        void;
};

/*
 * File access handle
 */
typedef opaque  nfs_fh4<NFS4_FHSIZE>;

/*
 * File attribute definitions
 */

/*
 * FSID structure for major/minor
 */
struct fsid4 {
     uint64_t        major;
     uint64_t        minor;
};

/*
 * Filesystem locations attribute for relocation/migration
 */
struct fs_location4 {
     utf8str_cis     server<>;
     pathname4       rootpath;
};

struct fs_locations4 {
     pathname4       fs_root;
     fs_location4    locations<>;
};

/*
 * Various Access Control Entry definitions
 */

/*
 * Mask that indicates which Access Control Entries are supported.
 * Values for the fattr4_aclsupport attribute.
 */
const ACL4_SUPPORT_ALLOW_ACL    = 0x00000001;
const ACL4_SUPPORT_DENY_ACL     = 0x00000002;
const ACL4_SUPPORT_AUDIT_ACL    = 0x00000004;
const ACL4_SUPPORT_ALARM_ACL    = 0x00000008;


typedef uint32_t        acetype4;
/*
 * acetype4 values, others can be added as needed.
 */
const ACE4_ACCESS_ALLOWED_ACE_TYPE      = 0x00000000;
const ACE4_ACCESS_DENIED_ACE_TYPE       = 0x00000001;
const ACE4_SYSTEM_AUDIT_ACE_TYPE        = 0x00000002;
const ACE4_SYSTEM_ALARM_ACE_TYPE        = 0x00000003;


/*
 * ACE flag
 */
typedef uint32_t aceflag4;

/*
 * ACE flag values
 */
const ACE4_FILE_INHERIT_ACE             = 0x00000001;
const ACE4_DIRECTORY_INHERIT_ACE        = 0x00000002;
const ACE4_NO_PROPAGATE_INHERIT_ACE     = 0x00000004;
const ACE4_INHERIT_ONLY_ACE             = 0x00000008;
const ACE4_SUCCESSFUL_ACCESS_ACE_FLAG   = 0x00000010;
const ACE4_FAILED_ACCESS_ACE_FLAG       = 0x00000020;
const ACE4_IDENTIFIER_GROUP             = 0x00000040;


/*
 * ACE mask
 */
typedef uint32_t        acemask4;

/*
 * ACE mask values
 */



( run in 0.616 second using v1.01-cache-2.11-cpan-5511b514fd6 )