usr/src/uts/common/nfs/nfs4_attr.h
author chunli zhang - Sun Microsystems - Irvine United States <Chunli.Zhang@Sun.COM>
Mon, 18 Jan 2010 10:34:16 -0800
changeset 11539 10d35fc3d7fd
parent 11291 80bdcd03e626
permissions -rw-r--r--
6873106 Need a mechanism to share buffers between fs modules
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     1
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     2
 * CDDL HEADER START
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     3
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     4
 * The contents of this file are subject to the terms of the
11291
80bdcd03e626 6232737 Client should support NFS4ERR_MOVED and fs_locations
Robert Thurlow <Robert.Thurlow@Sun.COM>
parents: 0
diff changeset
     5
 * Common Development and Distribution License (the "License").
80bdcd03e626 6232737 Client should support NFS4ERR_MOVED and fs_locations
Robert Thurlow <Robert.Thurlow@Sun.COM>
parents: 0
diff changeset
     6
 * You may not use this file except in compliance with the License.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     7
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     8
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     9
 * or http://www.opensolaris.org/os/licensing.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    10
 * See the License for the specific language governing permissions
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    11
 * and limitations under the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    12
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    13
 * When distributing Covered Code, include this CDDL HEADER in each
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    14
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    15
 * If applicable, add the following below this CDDL HEADER, with the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    16
 * fields enclosed by brackets "[]" replaced with your own identifying
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    17
 * information: Portions Copyright [yyyy] [name of copyright owner]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    18
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    19
 * CDDL HEADER END
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    20
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    21
/*
11291
80bdcd03e626 6232737 Client should support NFS4ERR_MOVED and fs_locations
Robert Thurlow <Robert.Thurlow@Sun.COM>
parents: 0
diff changeset
    22
 * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    23
 * Use is subject to license terms.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    24
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    25
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    26
#ifndef _NFS4_ATTR_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    27
#define	_NFS4_ATTR_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    28
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    29
#ifdef	__cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    30
extern "C" {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    31
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    32
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    33
#define	FATTR4_WORD0	32
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    34
#define	FATTR4_WORD1	0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    35
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    36
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    37
 * Attributes
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    38
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    39
#define	FATTR4_SUPPORTED_ATTRS_MASK	(1ULL << (FATTR4_WORD0 + 0))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    40
#define	FATTR4_TYPE_MASK		(1ULL << (FATTR4_WORD0 + 1))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    41
#define	FATTR4_FH_EXPIRE_TYPE_MASK	(1ULL << (FATTR4_WORD0 + 2))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    42
#define	FATTR4_CHANGE_MASK		(1ULL << (FATTR4_WORD0 + 3))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    43
#define	FATTR4_SIZE_MASK		(1ULL << (FATTR4_WORD0 + 4))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    44
#define	FATTR4_LINK_SUPPORT_MASK	(1ULL << (FATTR4_WORD0 + 5))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    45
#define	FATTR4_SYMLINK_SUPPORT_MASK	(1ULL << (FATTR4_WORD0 + 6))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    46
#define	FATTR4_NAMED_ATTR_MASK		(1ULL << (FATTR4_WORD0 + 7))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    47
#define	FATTR4_FSID_MASK		(1ULL << (FATTR4_WORD0 + 8))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    48
#define	FATTR4_UNIQUE_HANDLES_MASK	(1ULL << (FATTR4_WORD0 + 9))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    49
#define	FATTR4_LEASE_TIME_MASK		(1ULL << (FATTR4_WORD0 + 10))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    50
#define	FATTR4_RDATTR_ERROR_MASK	(1ULL << (FATTR4_WORD0 + 11))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    51
#define	FATTR4_ACL_MASK			(1ULL << (FATTR4_WORD0 + 12))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    52
#define	FATTR4_ACLSUPPORT_MASK		(1ULL << (FATTR4_WORD0 + 13))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    53
#define	FATTR4_ARCHIVE_MASK		(1ULL << (FATTR4_WORD0 + 14))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    54
#define	FATTR4_CANSETTIME_MASK		(1ULL << (FATTR4_WORD0 + 15))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    55
#define	FATTR4_CASE_INSENSITIVE_MASK	(1ULL << (FATTR4_WORD0 + 16))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    56
#define	FATTR4_CASE_PRESERVING_MASK	(1ULL << (FATTR4_WORD0 + 17))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    57
#define	FATTR4_CHOWN_RESTRICTED_MASK	(1ULL << (FATTR4_WORD0 + 18))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    58
#define	FATTR4_FILEHANDLE_MASK		(1ULL << (FATTR4_WORD0 + 19))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    59
#define	FATTR4_FILEID_MASK		(1ULL << (FATTR4_WORD0 + 20))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    60
#define	FATTR4_FILES_AVAIL_MASK		(1ULL << (FATTR4_WORD0 + 21))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    61
#define	FATTR4_FILES_FREE_MASK		(1ULL << (FATTR4_WORD0 + 22))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    62
#define	FATTR4_FILES_TOTAL_MASK		(1ULL << (FATTR4_WORD0 + 23))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    63
#define	FATTR4_FS_LOCATIONS_MASK	(1ULL << (FATTR4_WORD0 + 24))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    64
#define	FATTR4_HIDDEN_MASK		(1ULL << (FATTR4_WORD0 + 25))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    65
#define	FATTR4_HOMOGENEOUS_MASK		(1ULL << (FATTR4_WORD0 + 26))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    66
#define	FATTR4_MAXFILESIZE_MASK		(1ULL << (FATTR4_WORD0 + 27))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    67
#define	FATTR4_MAXLINK_MASK		(1ULL << (FATTR4_WORD0 + 28))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    68
#define	FATTR4_MAXNAME_MASK		(1ULL << (FATTR4_WORD0 + 29))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    69
#define	FATTR4_MAXREAD_MASK		(1ULL << (FATTR4_WORD0 + 30))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    70
#define	FATTR4_MAXWRITE_MASK		(1ULL << (FATTR4_WORD0 + 31))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    71
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    72
#define	FATTR4_MIMETYPE_MASK		(1ULL << (FATTR4_WORD1 + 0))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    73
#define	FATTR4_MODE_MASK		(1ULL << (FATTR4_WORD1 + 1))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    74
#define	FATTR4_NO_TRUNC_MASK		(1ULL << (FATTR4_WORD1 + 2))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    75
#define	FATTR4_NUMLINKS_MASK		(1ULL << (FATTR4_WORD1 + 3))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    76
#define	FATTR4_OWNER_MASK		(1ULL << (FATTR4_WORD1 + 4))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    77
#define	FATTR4_OWNER_GROUP_MASK		(1ULL << (FATTR4_WORD1 + 5))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    78
#define	FATTR4_QUOTA_AVAIL_HARD_MASK	(1ULL << (FATTR4_WORD1 + 6))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    79
#define	FATTR4_QUOTA_AVAIL_SOFT_MASK	(1ULL << (FATTR4_WORD1 + 7))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    80
#define	FATTR4_QUOTA_USED_MASK		(1ULL << (FATTR4_WORD1 + 8))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    81
#define	FATTR4_RAWDEV_MASK		(1ULL << (FATTR4_WORD1 + 9))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    82
#define	FATTR4_SPACE_AVAIL_MASK		(1ULL << (FATTR4_WORD1 + 10))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    83
#define	FATTR4_SPACE_FREE_MASK		(1ULL << (FATTR4_WORD1 + 11))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    84
#define	FATTR4_SPACE_TOTAL_MASK		(1ULL << (FATTR4_WORD1 + 12))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    85
#define	FATTR4_SPACE_USED_MASK		(1ULL << (FATTR4_WORD1 + 13))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    86
#define	FATTR4_SYSTEM_MASK		(1ULL << (FATTR4_WORD1 + 14))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    87
#define	FATTR4_TIME_ACCESS_MASK		(1ULL << (FATTR4_WORD1 + 15))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    88
#define	FATTR4_TIME_ACCESS_SET_MASK	(1ULL << (FATTR4_WORD1 + 16))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    89
#define	FATTR4_TIME_BACKUP_MASK		(1ULL << (FATTR4_WORD1 + 17))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    90
#define	FATTR4_TIME_CREATE_MASK		(1ULL << (FATTR4_WORD1 + 18))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    91
#define	FATTR4_TIME_DELTA_MASK		(1ULL << (FATTR4_WORD1 + 19))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    92
#define	FATTR4_TIME_METADATA_MASK	(1ULL << (FATTR4_WORD1 + 20))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    93
#define	FATTR4_TIME_MODIFY_MASK		(1ULL << (FATTR4_WORD1 + 21))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    94
#define	FATTR4_TIME_MODIFY_SET_MASK	(1ULL << (FATTR4_WORD1 + 22))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    95
#define	FATTR4_MOUNTED_ON_FILEID_MASK	(1ULL << (FATTR4_WORD1 + 23))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    96
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    97
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    98
 * Common bitmap4 of file attributes to be gathered
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    99
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   100
#define	NFS4_NTOV_ATTR_MASK (		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   101
	FATTR4_TYPE_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   102
	FATTR4_CHANGE_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   103
	FATTR4_SIZE_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   104
	FATTR4_FSID_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   105
	FATTR4_FILEID_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   106
	FATTR4_MODE_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   107
	FATTR4_OWNER_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   108
	FATTR4_OWNER_GROUP_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   109
	FATTR4_NUMLINKS_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   110
	FATTR4_TIME_ACCESS_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   111
	FATTR4_TIME_MODIFY_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   112
	FATTR4_TIME_METADATA_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   113
	FATTR4_RAWDEV_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   114
	FATTR4_SPACE_USED_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   115
	FATTR4_MOUNTED_ON_FILEID_MASK)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   116
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   117
#define	NFS4_VATTR_MASK (		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   118
	FATTR4_TYPE_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   119
	FATTR4_CHANGE_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   120
	FATTR4_SIZE_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   121
	FATTR4_FSID_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   122
	FATTR4_FILEID_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   123
	FATTR4_MODE_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   124
	FATTR4_OWNER_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   125
	FATTR4_OWNER_GROUP_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   126
	FATTR4_NUMLINKS_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   127
	FATTR4_TIME_ACCESS_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   128
	FATTR4_TIME_MODIFY_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   129
	FATTR4_TIME_METADATA_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   130
	FATTR4_RAWDEV_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   131
	FATTR4_SPACE_USED_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   132
	FATTR4_MOUNTED_ON_FILEID_MASK)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   133
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   134
#define	NFS4_PATHCONF_MASK (		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   135
	NFS4_VATTR_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   136
	FATTR4_NO_TRUNC_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   137
	FATTR4_CHOWN_RESTRICTED_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   138
	FATTR4_CASE_INSENSITIVE_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   139
	FATTR4_CASE_PRESERVING_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   140
	FATTR4_NAMED_ATTR_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   141
	FATTR4_LINK_SUPPORT_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   142
	FATTR4_SYMLINK_SUPPORT_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   143
	FATTR4_UNIQUE_HANDLES_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   144
	FATTR4_CANSETTIME_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   145
	FATTR4_HOMOGENEOUS_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   146
	FATTR4_MAXLINK_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   147
	FATTR4_MAXNAME_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   148
	FATTR4_MAXFILESIZE_MASK)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   149
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   150
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   151
 * The corresponding AT_MASK
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   152
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   153
#define	NFS4_NTOV_ATTR_AT_MASK (	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   154
	AT_TYPE |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   155
	AT_SIZE |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   156
	AT_FSID |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   157
	AT_NODEID |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   158
	AT_MODE |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   159
	AT_UID |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   160
	AT_GID |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   161
	AT_NLINK |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   162
	AT_ATIME |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   163
	AT_MTIME |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   164
	AT_CTIME |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   165
	AT_RDEV |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   166
	AT_NBLOCKS)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   167
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   168
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   169
 * Common bitmap4 of filesystem attributes to be gathered
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   170
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   171
#define	NFS4_FS_ATTR_MASK (		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   172
	FATTR4_FILES_AVAIL_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   173
	FATTR4_FILES_FREE_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   174
	FATTR4_FILES_TOTAL_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   175
	FATTR4_SPACE_AVAIL_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   176
	FATTR4_SPACE_FREE_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   177
	FATTR4_SPACE_TOTAL_MASK)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   178
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   179
#define	NFS4_STATFS_ATTR_MASK (		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   180
	FATTR4_FILES_AVAIL_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   181
	FATTR4_FILES_FREE_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   182
	FATTR4_FILES_TOTAL_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   183
	FATTR4_SPACE_AVAIL_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   184
	FATTR4_SPACE_FREE_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   185
	FATTR4_SPACE_TOTAL_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   186
	FATTR4_MAXNAME_MASK)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   187
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   188
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   189
 * The corresponding AT_MASK
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   190
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   191
#define	NFS4_FS_ATTR_AT_MASK	0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   192
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   193
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   194
 * Common bitmap4 to gather attr cache state
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   195
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   196
#define	NFS4_NTOV_ATTR_CACHE_MASK (	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   197
	FATTR4_TIME_METADATA_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   198
	FATTR4_TIME_MODIFY_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   199
	FATTR4_SIZE_MASK)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   200
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   201
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   202
 * The corresponding AT_MASK
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   203
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   204
#define	NFS4_NTOV_ATTR_CACHE_AT_MASK (	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   205
	AT_CTIME |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   206
	AT_MTIME |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   207
	AT_SIZE)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   208
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   209
#define	NFS4_VTON_ATTR_MASK (		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   210
	AT_TYPE |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   211
	AT_MODE |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   212
	AT_UID |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   213
	AT_GID |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   214
	AT_NODEID |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   215
	AT_SIZE |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   216
	AT_NLINK |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   217
	AT_ATIME |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   218
	AT_MTIME |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   219
	AT_CTIME |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   220
	AT_RDEV |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   221
	AT_NBLOCKS |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   222
	AT_FSID)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   223
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   224
#define	NFS4_VTON_ATTR_MASK_SET (	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   225
	AT_MODE |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   226
	AT_UID |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   227
	AT_GID |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   228
	AT_SIZE |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   229
	AT_ATIME |			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   230
	AT_MTIME)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   231
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   232
/* solaris-supported, non-vattr_t per-vnode scoped attrs */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   233
#define	NFS4_VP_ATTR_MASK (		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   234
	FATTR4_CHANGE_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   235
	FATTR4_CHOWN_RESTRICTED_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   236
	FATTR4_FILEHANDLE_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   237
	FATTR4_MAXFILESIZE_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   238
	FATTR4_MAXLINK_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   239
	FATTR4_MAXNAME_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   240
	FATTR4_MOUNTED_ON_FILEID_MASK)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   241
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   242
#define	FATTR4_FSINFO_MASK (		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   243
	FATTR4_SUPPORTED_ATTRS_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   244
	FATTR4_TYPE_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   245
	FATTR4_FH_EXPIRE_TYPE_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   246
	FATTR4_LINK_SUPPORT_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   247
	FATTR4_SYMLINK_SUPPORT_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   248
	FATTR4_FSID_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   249
	FATTR4_MAXFILESIZE_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   250
	FATTR4_MAXREAD_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   251
	FATTR4_MAXWRITE_MASK)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   252
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   253
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   254
 * These are the support attributes for the NFSv4 server
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   255
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   256
#define	NFS4_SRV_RDDIR_SUPPORTED_ATTRS (	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   257
	FATTR4_SUPPORTED_ATTRS_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   258
	FATTR4_TYPE_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   259
	FATTR4_FH_EXPIRE_TYPE_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   260
	FATTR4_CHANGE_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   261
	FATTR4_SIZE_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   262
	FATTR4_LINK_SUPPORT_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   263
	FATTR4_SYMLINK_SUPPORT_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   264
	FATTR4_NAMED_ATTR_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   265
	FATTR4_FSID_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   266
	FATTR4_UNIQUE_HANDLES_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   267
	FATTR4_LEASE_TIME_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   268
	FATTR4_RDATTR_ERROR_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   269
	FATTR4_CANSETTIME_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   270
	FATTR4_CASE_INSENSITIVE_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   271
	FATTR4_CASE_PRESERVING_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   272
	FATTR4_CHOWN_RESTRICTED_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   273
	FATTR4_FILEHANDLE_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   274
	FATTR4_FILEID_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   275
	FATTR4_FILES_AVAIL_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   276
	FATTR4_FILES_FREE_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   277
	FATTR4_FILES_TOTAL_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   278
	FATTR4_HOMOGENEOUS_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   279
	FATTR4_MAXFILESIZE_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   280
	FATTR4_MAXLINK_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   281
	FATTR4_MAXNAME_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   282
	FATTR4_MAXREAD_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   283
	FATTR4_MAXWRITE_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   284
	FATTR4_MODE_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   285
	FATTR4_NO_TRUNC_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   286
	FATTR4_NUMLINKS_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   287
	FATTR4_OWNER_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   288
	FATTR4_OWNER_GROUP_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   289
	FATTR4_RAWDEV_MASK |		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   290
	FATTR4_SPACE_AVAIL_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   291
	FATTR4_SPACE_FREE_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   292
	FATTR4_SPACE_TOTAL_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   293
	FATTR4_SPACE_USED_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   294
	FATTR4_TIME_ACCESS_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   295
	FATTR4_TIME_DELTA_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   296
	FATTR4_TIME_METADATA_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   297
	FATTR4_TIME_MODIFY_MASK |	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   298
	FATTR4_MOUNTED_ON_FILEID_MASK	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   299
)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   300
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   301
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   302
#define	FATTR4_FSID_EQ(a, b)	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   303
	((a)->major == (b)->major && (a)->minor == (b)->minor)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   304
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   305
#define	NFS4_MAXNUM_BITWORDS	2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   306
#define	NFS4_MAXNUM_ATTRS	56
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   307
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   308
union nfs4_attr_u {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   309
	fattr4_supported_attrs		supported_attrs;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   310
	fattr4_type			type;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   311
	fattr4_fh_expire_type		fh_expire_type;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   312
	fattr4_change			change;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   313
	fattr4_size			size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   314
	fattr4_link_support		link_support;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   315
	fattr4_symlink_support		symlink_support;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   316
	fattr4_named_attr		named_attr;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   317
	fattr4_fsid			fsid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   318
	fattr4_unique_handles		unique_handles;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   319
	fattr4_lease_time		lease_time;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   320
	fattr4_rdattr_error		rdattr_error;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   321
	fattr4_acl			acl;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   322
	fattr4_aclsupport		aclsupport;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   323
	fattr4_archive			archive;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   324
	fattr4_cansettime		cansettime;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   325
	fattr4_case_insensitive		case_insensitive;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   326
	fattr4_case_preserving		case_preserving;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   327
	fattr4_chown_restricted		chown_restricted;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   328
	fattr4_fileid			fileid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   329
	fattr4_files_avail		files_avail;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   330
	fattr4_filehandle		filehandle;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   331
	fattr4_files_free		files_free;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   332
	fattr4_files_total		files_total;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   333
	fattr4_fs_locations		fs_locations;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   334
	fattr4_hidden			hidden;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   335
	fattr4_homogeneous		homogeneous;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   336
	fattr4_maxfilesize		maxfilesize;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   337
	fattr4_maxlink			maxlink;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   338
	fattr4_maxname			maxname;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   339
	fattr4_maxread			maxread;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   340
	fattr4_maxwrite			maxwrite;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   341
	fattr4_mimetype			mimetype;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   342
	fattr4_mode			mode;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   343
	fattr4_no_trunc			no_trunc;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   344
	fattr4_numlinks			numlinks;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   345
	fattr4_owner			owner;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   346
	fattr4_owner_group		owner_group;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   347
	fattr4_quota_avail_hard		quota_avail_hard;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   348
	fattr4_quota_avail_soft		quota_avail_soft;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   349
	fattr4_quota_used		quota_used;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   350
	fattr4_rawdev			rawdev;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   351
	fattr4_space_avail		space_avail;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   352
	fattr4_space_free		space_free;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   353
	fattr4_space_total		space_total;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   354
	fattr4_space_used		space_used;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   355
	fattr4_system			system;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   356
	fattr4_time_access		time_access;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   357
	fattr4_time_access_set		time_access_set;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   358
	fattr4_time_backup		time_backup;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   359
	fattr4_time_create		time_create;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   360
	fattr4_time_delta		time_delta;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   361
	fattr4_time_metadata		time_metadata;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   362
	fattr4_time_modify		time_modify;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   363
	fattr4_time_modify_set		time_modify_set;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   364
	fattr4_mounted_on_fileid	mounted_on_fileid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   365
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   366
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   367
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   368
 * Error details when processing the getattr response.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   369
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   370
#define	NFS4_GETATTR_OP_OK		0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   371
#define	NFS4_GETATTR_STATUS_ERR		1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   372
#define	NFS4_GETATTR_MANDATTR_ERR	2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   373
#define	NFS4_GETATTR_BITMAP_ERR		3
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   374
#define	NFS4_GETATTR_ATSIZE_ERR		4
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   375
#define	NFS4_GETATTR_ATUID_ERR		5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   376
#define	NFS4_GETATTR_ATGID_ERR		6
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   377
#define	NFS4_GETATTR_ATATIME_ERR	7
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   378
#define	NFS4_GETATTR_ATMTIME_ERR	8
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   379
#define	NFS4_GETATTR_ATCTIME_ERR	9
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   380
#define	NFS4_GETATTR_RAWDEV_ERR		10
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   381
#define	NFS4_GETATTR_ATNBLOCK_ERR	11
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   382
#define	NFS4_GETATTR_MAXFILESIZE_ERR	12
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   383
#define	NFS4_GETATTR_FHANDLE_ERR	13
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   384
#define	NFS4_GETATTR_MAXREAD_ERR	14
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   385
#define	NFS4_GETATTR_MAXWRITE_ERR	15
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   386
#define	NFS4_GETATTR_NOCACHE_OK		16
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   387
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   388
typedef struct nfs4_pathconf_info {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   389
	unsigned pc4_cache_valid:1;	/* When in rnode4, is data valid? */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   390
	unsigned pc4_no_trunc:1;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   391
	unsigned pc4_chown_restricted:1;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   392
	unsigned pc4_case_insensitive:1;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   393
	unsigned pc4_case_preserving:1;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   394
	unsigned pc4_xattr_valid:1;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   395
	unsigned pc4_xattr_exists:1;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   396
	unsigned pc4_link_support:1;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   397
	unsigned pc4_symlink_support:1;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   398
	unsigned pc4_unique_handles:1;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   399
	unsigned pc4_cansettime:1;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   400
	unsigned pc4_homogeneous:1;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   401
	uint_t	pc4_link_max;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   402
	uint_t	pc4_name_max;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   403
	uint_t	pc4_filesizebits;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   404
} nfs4_pathconf_info_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   405
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   406
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   407
 * Used for client only to process incoming getattr results.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   408
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   409
typedef struct nfs4_ga_ext_res {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   410
	bitmap4				n4g_suppattrs;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   411
	nfsstat4			n4g_rdattr_error;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   412
	fattr4_fh_expire_type		n4g_fet;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   413
	fattr4_lease_time		n4g_leasetime;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   414
	uint64_t			n4g_maxfilesize;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   415
	uint64_t			n4g_maxread;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   416
	uint64_t			n4g_maxwrite;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   417
	nfstime4			n4g_delta;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   418
	nfs4_pathconf_info_t		n4g_pc4;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   419
	struct statvfs64		n4g_sb;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   420
	union {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   421
		nfs_fh4 n4g_fh;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   422
		struct {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   423
			uint_t len;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   424
			char *val;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   425
			char data[NFS4_FHSIZE];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   426
		} nfs_fh4_alt;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   427
	} n4g_fh_u;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   428
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   429
	 * Bitmask with valid fields being:
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   430
	 * ACL4_SUPPORT_ALLOW_ACL
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   431
	 * ACL4_SUPPORT_DENY_ACL
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   432
	 * ACL4_SUPPORT_AUDIT_ACL
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   433
	 * ACL4_SUPPORT_ALARM_ACL
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   434
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   435
	fattr4_aclsupport		n4g_aclsupport;
11291
80bdcd03e626 6232737 Client should support NFS4ERR_MOVED and fs_locations
Robert Thurlow <Robert.Thurlow@Sun.COM>
parents: 0
diff changeset
   436
	fattr4_fs_locations		n4g_fslocations;
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   437
} nfs4_ga_ext_res_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   438
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   439
extern bitmap4 rfs4_supported_attrs;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   440
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   441
#ifdef	__cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   442
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   443
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   444
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   445
#endif /* _NFS4_ATTR_H */