+++ /dev/null
-/* NFSv4.1 client for Windows
- * Copyright © 2012 The Regents of the University of Michigan
- *
- * Olga Kornievskaia <aglo@umich.edu>
- * Casey Bodley <cbodley@umich.edu>
- *
- * This library is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or (at
- * your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * without any warranty; without even the implied warranty of merchantability
- * or fitness for a particular purpose. See the GNU Lesser General Public
- * License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- */
-
-#ifndef __NFS41_DAEMON_TYPES_H__
-#define __NFS41_DAEMON_TYPES_H__
-
-#include "wintirpc.h"
-#include "rpc/xdr.h"
-#include "nfs41_const.h"
-
-typedef char* caddr_t;
-
-static const int64_t NFS4_INT64_MAX = 0x7fffffffffffffff;
-static const uint64_t NFS4_UINT64_MAX = 0xffffffffffffffff;
-static const int32_t NFS4_INT32_MAX = 0x7fffffff;
-static const uint32_t NFS4_UINT32_MAX = 0xffffffff;
-
-static const uint64_t NFS4_MAXFILELEN = 0xffffffffffffffff;
-static const uint64_t NFS4_MAXFILEOFF = 0xfffffffffffffffe;
-
-
-/* common nfs types */
-typedef struct __nfs41_abs_path {
- char path[NFS41_MAX_PATH_LEN];
- unsigned short len;
- SRWLOCK lock;
-} nfs41_abs_path;
-
-typedef struct __nfs41_component {
- const char *name;
- unsigned short len;
-} nfs41_component;
-
-typedef struct __nfs41_fh {
- unsigned char fh[NFS4_FHSIZE];
- uint32_t len;
- uint64_t fileid;
- struct __nfs41_superblock *superblock;
-} nfs41_fh;
-
-typedef struct __nfs41_path_fh {
- nfs41_abs_path *path;
- nfs41_component name;
- nfs41_fh fh;
-} nfs41_path_fh;
-
-typedef struct __nfs41_fsid {
- uint64_t major;
- uint64_t minor;
-} nfs41_fsid;
-
-typedef struct __nfs41_readdir_cookie {
- uint64_t cookie;
- unsigned char verf[NFS4_VERIFIER_SIZE];
-} nfs41_readdir_cookie;
-
-typedef struct __nfs41_write_verf {
- unsigned char verf[NFS4_VERIFIER_SIZE];
- unsigned char expected[NFS4_VERIFIER_SIZE];
-#ifdef __REACTOS__
- uint32_t committed;
-#else
- enum stable_how4 committed;
-#endif
-} nfs41_write_verf;
-
-typedef struct __netaddr4 {
- char netid[NFS41_NETWORK_ID_LEN+1];
- char uaddr[NFS41_UNIVERSAL_ADDR_LEN+1];
-} netaddr4;
-
-typedef struct __multi_addr4 {
- netaddr4 arr[NFS41_ADDRS_PER_SERVER];
- uint32_t count;
-} multi_addr4;
-
-typedef struct __bitmap4 {
- uint32_t count;
- uint32_t arr[3];
-} bitmap4;
-
-typedef struct __nfstime4 {
- int64_t seconds;
- uint32_t nseconds;
-} nfstime4;
-
-typedef struct __client_owner4 {
- unsigned char co_verifier[NFS4_VERIFIER_SIZE];
- uint32_t co_ownerid_len;
- unsigned char co_ownerid[NFS4_OPAQUE_LIMIT];
-} client_owner4;
-
-typedef struct __server_owner4 {
- uint64_t so_minor_id;
- uint32_t so_major_id_len;
- char so_major_id[NFS4_OPAQUE_LIMIT];
-} server_owner4;
-
-typedef struct __state_owner4 {
- uint32_t owner_len;
- unsigned char owner[NFS4_OPAQUE_LIMIT];
-} state_owner4;
-
-typedef struct __nfs_impl_id4 {
- uint32_t nii_domain_len;
- unsigned char *nii_domain;
- uint32_t nii_name_len;
- unsigned char *nii_name;
- nfstime4 nii_date;
-} nfs_impl_id4;
-
-typedef struct __nfsace4 {
- uint32_t acetype;
- uint32_t aceflag;
- uint32_t acemask;
- char who[NFS4_OPAQUE_LIMIT];
-} nfsace4;
-
-typedef struct __nfsacl41 {
- uint32_t flag;
- nfsace4 *aces;
- uint32_t count;
-} nfsacl41;
-
-typedef struct __stateid4 {
- uint32_t seqid;
- unsigned char other[NFS4_STATEID_OTHER];
-} stateid4;
-
-typedef struct __open_delegation4 {
- stateid4 stateid;
- nfsace4 permissions;
-#ifdef __REACTOS__
- uint32_t type;
-#else
- enum open_delegation_type4 type;
-#endif
- bool_t recalled;
-} open_delegation4;
-
-typedef struct __fattr4 {
- bitmap4 attrmask;
- uint32_t attr_vals_len;
- unsigned char attr_vals[NFS4_OPAQUE_LIMIT];
-} fattr4;
-
-typedef struct __change_info4 {
- bool_t atomic;
- uint64_t before;
- uint64_t after;
-} change_info4;
-
-typedef struct __fs_location_server {
- /* 'address' represents one of a traditional DNS host name,
- * IPv4 address, IPv6 address, or a zero-length string */
- char address[NFS41_HOSTNAME_LEN+1];
-} fs_location_server;
-
-typedef struct __fs_location4 {
- nfs41_abs_path path; /* path to fs from referred server's root */
- fs_location_server *servers;
- uint32_t server_count;
-} fs_location4;
-
-typedef struct __fs_locations4 {
- nfs41_abs_path path; /* path to fs from referring server's root */
- fs_location4 *locations;
- uint32_t location_count;
-} fs_locations4;
-
-enum {
- MDSTHRESH_READ = 0,
- MDSTHRESH_WRITE,
- MDSTHRESH_READ_IO,
- MDSTHRESH_WRITE_IO,
-
- MAX_MDSTHRESH_HINTS
-};
-typedef struct __threshold_item4 {
- uint32_t type;
- uint64_t hints[MAX_MDSTHRESH_HINTS];
-} threshold_item4;
-
-#define MAX_MDSTHRESHOLD_ITEMS 1
-typedef struct __mdsthreshold4 {
- uint32_t count;
- threshold_item4 items[MAX_MDSTHRESHOLD_ITEMS];
-} mdsthreshold4;
-
-typedef struct __nfs41_file_info {
- nfs41_fsid fsid;
- mdsthreshold4 mdsthreshold;
- nfstime4 time_access;
- nfstime4 time_create;
- nfstime4 time_modify;
- nfsacl41 *acl;
- nfstime4 *time_delta; /* XXX: per-fs */
- bitmap4 attrmask;
- bitmap4 *supported_attrs; /* XXX: per-fs */
- bitmap4 *suppattr_exclcreat; /* XXX: per-fs */
- uint64_t maxread; /* XXX: per-fs */
- uint64_t maxwrite; /* XXX: per-fs */
- uint64_t change;
- uint64_t size;
- uint64_t fileid;
- uint64_t space_avail; /* XXX: per-fs */
- uint64_t space_free; /* XXX: per-fs */
- uint64_t space_total; /* XXX: per-fs */
- uint32_t type;
- uint32_t numlinks;
- uint32_t rdattr_error;
- uint32_t mode;
- uint32_t mode_mask;
- fs_locations4 *fs_locations; /* XXX: per-fs */
- uint32_t lease_time; /* XXX: per-server */
- uint32_t fs_layout_types; /* pnfs, XXX: per-fs */
- bool_t hidden;
- bool_t system;
- bool_t archive;
- bool_t cansettime; /* XXX: per-fs */
- bool_t case_insensitive;
- bool_t case_preserving;
- bool_t symlink_dir;
- bool_t symlink_support;
- bool_t link_support;
- char *owner;
- char *owner_group;
- uint32_t aclsupport;
-} nfs41_file_info;
-
-#endif /* !__NFS41_DAEMON_TYPES_H__ */