17c478bd9Sstevel@tonic-gate /* 27c478bd9Sstevel@tonic-gate * CDDL HEADER START 37c478bd9Sstevel@tonic-gate * 47c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the 5*2f172c55SRobert Thurlow * Common Development and Distribution License (the "License"). 6*2f172c55SRobert Thurlow * You may not use this file except in compliance with the License. 77c478bd9Sstevel@tonic-gate * 87c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 97c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 107c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 117c478bd9Sstevel@tonic-gate * and limitations under the License. 127c478bd9Sstevel@tonic-gate * 137c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 147c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 157c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 167c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 177c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 187c478bd9Sstevel@tonic-gate * 197c478bd9Sstevel@tonic-gate * CDDL HEADER END 207c478bd9Sstevel@tonic-gate */ 217c478bd9Sstevel@tonic-gate /* 22*2f172c55SRobert Thurlow * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 237c478bd9Sstevel@tonic-gate * Use is subject to license terms. 247c478bd9Sstevel@tonic-gate */ 257c478bd9Sstevel@tonic-gate 267c478bd9Sstevel@tonic-gate #ifndef _NFS4_ATTR_H 277c478bd9Sstevel@tonic-gate #define _NFS4_ATTR_H 287c478bd9Sstevel@tonic-gate 297c478bd9Sstevel@tonic-gate #ifdef __cplusplus 307c478bd9Sstevel@tonic-gate extern "C" { 317c478bd9Sstevel@tonic-gate #endif 327c478bd9Sstevel@tonic-gate 337c478bd9Sstevel@tonic-gate #define FATTR4_WORD0 32 347c478bd9Sstevel@tonic-gate #define FATTR4_WORD1 0 357c478bd9Sstevel@tonic-gate 367c478bd9Sstevel@tonic-gate /* 377c478bd9Sstevel@tonic-gate * Attributes 387c478bd9Sstevel@tonic-gate */ 397c478bd9Sstevel@tonic-gate #define FATTR4_SUPPORTED_ATTRS_MASK (1ULL << (FATTR4_WORD0 + 0)) 407c478bd9Sstevel@tonic-gate #define FATTR4_TYPE_MASK (1ULL << (FATTR4_WORD0 + 1)) 417c478bd9Sstevel@tonic-gate #define FATTR4_FH_EXPIRE_TYPE_MASK (1ULL << (FATTR4_WORD0 + 2)) 427c478bd9Sstevel@tonic-gate #define FATTR4_CHANGE_MASK (1ULL << (FATTR4_WORD0 + 3)) 437c478bd9Sstevel@tonic-gate #define FATTR4_SIZE_MASK (1ULL << (FATTR4_WORD0 + 4)) 447c478bd9Sstevel@tonic-gate #define FATTR4_LINK_SUPPORT_MASK (1ULL << (FATTR4_WORD0 + 5)) 457c478bd9Sstevel@tonic-gate #define FATTR4_SYMLINK_SUPPORT_MASK (1ULL << (FATTR4_WORD0 + 6)) 467c478bd9Sstevel@tonic-gate #define FATTR4_NAMED_ATTR_MASK (1ULL << (FATTR4_WORD0 + 7)) 477c478bd9Sstevel@tonic-gate #define FATTR4_FSID_MASK (1ULL << (FATTR4_WORD0 + 8)) 487c478bd9Sstevel@tonic-gate #define FATTR4_UNIQUE_HANDLES_MASK (1ULL << (FATTR4_WORD0 + 9)) 497c478bd9Sstevel@tonic-gate #define FATTR4_LEASE_TIME_MASK (1ULL << (FATTR4_WORD0 + 10)) 507c478bd9Sstevel@tonic-gate #define FATTR4_RDATTR_ERROR_MASK (1ULL << (FATTR4_WORD0 + 11)) 517c478bd9Sstevel@tonic-gate #define FATTR4_ACL_MASK (1ULL << (FATTR4_WORD0 + 12)) 527c478bd9Sstevel@tonic-gate #define FATTR4_ACLSUPPORT_MASK (1ULL << (FATTR4_WORD0 + 13)) 537c478bd9Sstevel@tonic-gate #define FATTR4_ARCHIVE_MASK (1ULL << (FATTR4_WORD0 + 14)) 547c478bd9Sstevel@tonic-gate #define FATTR4_CANSETTIME_MASK (1ULL << (FATTR4_WORD0 + 15)) 557c478bd9Sstevel@tonic-gate #define FATTR4_CASE_INSENSITIVE_MASK (1ULL << (FATTR4_WORD0 + 16)) 567c478bd9Sstevel@tonic-gate #define FATTR4_CASE_PRESERVING_MASK (1ULL << (FATTR4_WORD0 + 17)) 577c478bd9Sstevel@tonic-gate #define FATTR4_CHOWN_RESTRICTED_MASK (1ULL << (FATTR4_WORD0 + 18)) 587c478bd9Sstevel@tonic-gate #define FATTR4_FILEHANDLE_MASK (1ULL << (FATTR4_WORD0 + 19)) 597c478bd9Sstevel@tonic-gate #define FATTR4_FILEID_MASK (1ULL << (FATTR4_WORD0 + 20)) 607c478bd9Sstevel@tonic-gate #define FATTR4_FILES_AVAIL_MASK (1ULL << (FATTR4_WORD0 + 21)) 617c478bd9Sstevel@tonic-gate #define FATTR4_FILES_FREE_MASK (1ULL << (FATTR4_WORD0 + 22)) 627c478bd9Sstevel@tonic-gate #define FATTR4_FILES_TOTAL_MASK (1ULL << (FATTR4_WORD0 + 23)) 637c478bd9Sstevel@tonic-gate #define FATTR4_FS_LOCATIONS_MASK (1ULL << (FATTR4_WORD0 + 24)) 647c478bd9Sstevel@tonic-gate #define FATTR4_HIDDEN_MASK (1ULL << (FATTR4_WORD0 + 25)) 657c478bd9Sstevel@tonic-gate #define FATTR4_HOMOGENEOUS_MASK (1ULL << (FATTR4_WORD0 + 26)) 667c478bd9Sstevel@tonic-gate #define FATTR4_MAXFILESIZE_MASK (1ULL << (FATTR4_WORD0 + 27)) 677c478bd9Sstevel@tonic-gate #define FATTR4_MAXLINK_MASK (1ULL << (FATTR4_WORD0 + 28)) 687c478bd9Sstevel@tonic-gate #define FATTR4_MAXNAME_MASK (1ULL << (FATTR4_WORD0 + 29)) 697c478bd9Sstevel@tonic-gate #define FATTR4_MAXREAD_MASK (1ULL << (FATTR4_WORD0 + 30)) 707c478bd9Sstevel@tonic-gate #define FATTR4_MAXWRITE_MASK (1ULL << (FATTR4_WORD0 + 31)) 717c478bd9Sstevel@tonic-gate 727c478bd9Sstevel@tonic-gate #define FATTR4_MIMETYPE_MASK (1ULL << (FATTR4_WORD1 + 0)) 737c478bd9Sstevel@tonic-gate #define FATTR4_MODE_MASK (1ULL << (FATTR4_WORD1 + 1)) 747c478bd9Sstevel@tonic-gate #define FATTR4_NO_TRUNC_MASK (1ULL << (FATTR4_WORD1 + 2)) 757c478bd9Sstevel@tonic-gate #define FATTR4_NUMLINKS_MASK (1ULL << (FATTR4_WORD1 + 3)) 767c478bd9Sstevel@tonic-gate #define FATTR4_OWNER_MASK (1ULL << (FATTR4_WORD1 + 4)) 777c478bd9Sstevel@tonic-gate #define FATTR4_OWNER_GROUP_MASK (1ULL << (FATTR4_WORD1 + 5)) 787c478bd9Sstevel@tonic-gate #define FATTR4_QUOTA_AVAIL_HARD_MASK (1ULL << (FATTR4_WORD1 + 6)) 797c478bd9Sstevel@tonic-gate #define FATTR4_QUOTA_AVAIL_SOFT_MASK (1ULL << (FATTR4_WORD1 + 7)) 807c478bd9Sstevel@tonic-gate #define FATTR4_QUOTA_USED_MASK (1ULL << (FATTR4_WORD1 + 8)) 817c478bd9Sstevel@tonic-gate #define FATTR4_RAWDEV_MASK (1ULL << (FATTR4_WORD1 + 9)) 827c478bd9Sstevel@tonic-gate #define FATTR4_SPACE_AVAIL_MASK (1ULL << (FATTR4_WORD1 + 10)) 837c478bd9Sstevel@tonic-gate #define FATTR4_SPACE_FREE_MASK (1ULL << (FATTR4_WORD1 + 11)) 847c478bd9Sstevel@tonic-gate #define FATTR4_SPACE_TOTAL_MASK (1ULL << (FATTR4_WORD1 + 12)) 857c478bd9Sstevel@tonic-gate #define FATTR4_SPACE_USED_MASK (1ULL << (FATTR4_WORD1 + 13)) 867c478bd9Sstevel@tonic-gate #define FATTR4_SYSTEM_MASK (1ULL << (FATTR4_WORD1 + 14)) 877c478bd9Sstevel@tonic-gate #define FATTR4_TIME_ACCESS_MASK (1ULL << (FATTR4_WORD1 + 15)) 887c478bd9Sstevel@tonic-gate #define FATTR4_TIME_ACCESS_SET_MASK (1ULL << (FATTR4_WORD1 + 16)) 897c478bd9Sstevel@tonic-gate #define FATTR4_TIME_BACKUP_MASK (1ULL << (FATTR4_WORD1 + 17)) 907c478bd9Sstevel@tonic-gate #define FATTR4_TIME_CREATE_MASK (1ULL << (FATTR4_WORD1 + 18)) 917c478bd9Sstevel@tonic-gate #define FATTR4_TIME_DELTA_MASK (1ULL << (FATTR4_WORD1 + 19)) 927c478bd9Sstevel@tonic-gate #define FATTR4_TIME_METADATA_MASK (1ULL << (FATTR4_WORD1 + 20)) 937c478bd9Sstevel@tonic-gate #define FATTR4_TIME_MODIFY_MASK (1ULL << (FATTR4_WORD1 + 21)) 947c478bd9Sstevel@tonic-gate #define FATTR4_TIME_MODIFY_SET_MASK (1ULL << (FATTR4_WORD1 + 22)) 957c478bd9Sstevel@tonic-gate #define FATTR4_MOUNTED_ON_FILEID_MASK (1ULL << (FATTR4_WORD1 + 23)) 967c478bd9Sstevel@tonic-gate 977c478bd9Sstevel@tonic-gate /* 987c478bd9Sstevel@tonic-gate * Common bitmap4 of file attributes to be gathered 997c478bd9Sstevel@tonic-gate */ 1007c478bd9Sstevel@tonic-gate #define NFS4_NTOV_ATTR_MASK ( \ 1017c478bd9Sstevel@tonic-gate FATTR4_TYPE_MASK | \ 1027c478bd9Sstevel@tonic-gate FATTR4_CHANGE_MASK | \ 1037c478bd9Sstevel@tonic-gate FATTR4_SIZE_MASK | \ 1047c478bd9Sstevel@tonic-gate FATTR4_FSID_MASK | \ 1057c478bd9Sstevel@tonic-gate FATTR4_FILEID_MASK | \ 1067c478bd9Sstevel@tonic-gate FATTR4_MODE_MASK | \ 1077c478bd9Sstevel@tonic-gate FATTR4_OWNER_MASK | \ 1087c478bd9Sstevel@tonic-gate FATTR4_OWNER_GROUP_MASK | \ 1097c478bd9Sstevel@tonic-gate FATTR4_NUMLINKS_MASK | \ 1107c478bd9Sstevel@tonic-gate FATTR4_TIME_ACCESS_MASK | \ 1117c478bd9Sstevel@tonic-gate FATTR4_TIME_MODIFY_MASK | \ 1127c478bd9Sstevel@tonic-gate FATTR4_TIME_METADATA_MASK | \ 1137c478bd9Sstevel@tonic-gate FATTR4_RAWDEV_MASK | \ 1147c478bd9Sstevel@tonic-gate FATTR4_SPACE_USED_MASK | \ 1157c478bd9Sstevel@tonic-gate FATTR4_MOUNTED_ON_FILEID_MASK) 1167c478bd9Sstevel@tonic-gate 1177c478bd9Sstevel@tonic-gate #define NFS4_VATTR_MASK ( \ 1187c478bd9Sstevel@tonic-gate FATTR4_TYPE_MASK | \ 1197c478bd9Sstevel@tonic-gate FATTR4_CHANGE_MASK | \ 1207c478bd9Sstevel@tonic-gate FATTR4_SIZE_MASK | \ 1217c478bd9Sstevel@tonic-gate FATTR4_FSID_MASK | \ 1227c478bd9Sstevel@tonic-gate FATTR4_FILEID_MASK | \ 1237c478bd9Sstevel@tonic-gate FATTR4_MODE_MASK | \ 1247c478bd9Sstevel@tonic-gate FATTR4_OWNER_MASK | \ 1257c478bd9Sstevel@tonic-gate FATTR4_OWNER_GROUP_MASK | \ 1267c478bd9Sstevel@tonic-gate FATTR4_NUMLINKS_MASK | \ 1277c478bd9Sstevel@tonic-gate FATTR4_TIME_ACCESS_MASK | \ 1287c478bd9Sstevel@tonic-gate FATTR4_TIME_MODIFY_MASK | \ 1297c478bd9Sstevel@tonic-gate FATTR4_TIME_METADATA_MASK | \ 1307c478bd9Sstevel@tonic-gate FATTR4_RAWDEV_MASK | \ 1317c478bd9Sstevel@tonic-gate FATTR4_SPACE_USED_MASK | \ 1327c478bd9Sstevel@tonic-gate FATTR4_MOUNTED_ON_FILEID_MASK) 1337c478bd9Sstevel@tonic-gate 1347c478bd9Sstevel@tonic-gate #define NFS4_PATHCONF_MASK ( \ 1357c478bd9Sstevel@tonic-gate NFS4_VATTR_MASK | \ 1367c478bd9Sstevel@tonic-gate FATTR4_NO_TRUNC_MASK | \ 1377c478bd9Sstevel@tonic-gate FATTR4_CHOWN_RESTRICTED_MASK | \ 1387c478bd9Sstevel@tonic-gate FATTR4_CASE_INSENSITIVE_MASK | \ 1397c478bd9Sstevel@tonic-gate FATTR4_CASE_PRESERVING_MASK | \ 1407c478bd9Sstevel@tonic-gate FATTR4_NAMED_ATTR_MASK | \ 1417c478bd9Sstevel@tonic-gate FATTR4_LINK_SUPPORT_MASK | \ 1427c478bd9Sstevel@tonic-gate FATTR4_SYMLINK_SUPPORT_MASK | \ 1437c478bd9Sstevel@tonic-gate FATTR4_UNIQUE_HANDLES_MASK | \ 1447c478bd9Sstevel@tonic-gate FATTR4_CANSETTIME_MASK | \ 1457c478bd9Sstevel@tonic-gate FATTR4_HOMOGENEOUS_MASK | \ 1467c478bd9Sstevel@tonic-gate FATTR4_MAXLINK_MASK | \ 1477c478bd9Sstevel@tonic-gate FATTR4_MAXNAME_MASK | \ 1487c478bd9Sstevel@tonic-gate FATTR4_MAXFILESIZE_MASK) 1497c478bd9Sstevel@tonic-gate 1507c478bd9Sstevel@tonic-gate /* 1517c478bd9Sstevel@tonic-gate * The corresponding AT_MASK 1527c478bd9Sstevel@tonic-gate */ 1537c478bd9Sstevel@tonic-gate #define NFS4_NTOV_ATTR_AT_MASK ( \ 1547c478bd9Sstevel@tonic-gate AT_TYPE | \ 1557c478bd9Sstevel@tonic-gate AT_SIZE | \ 1567c478bd9Sstevel@tonic-gate AT_FSID | \ 1577c478bd9Sstevel@tonic-gate AT_NODEID | \ 1587c478bd9Sstevel@tonic-gate AT_MODE | \ 1597c478bd9Sstevel@tonic-gate AT_UID | \ 1607c478bd9Sstevel@tonic-gate AT_GID | \ 1617c478bd9Sstevel@tonic-gate AT_NLINK | \ 1627c478bd9Sstevel@tonic-gate AT_ATIME | \ 1637c478bd9Sstevel@tonic-gate AT_MTIME | \ 1647c478bd9Sstevel@tonic-gate AT_CTIME | \ 1657c478bd9Sstevel@tonic-gate AT_RDEV | \ 1667c478bd9Sstevel@tonic-gate AT_NBLOCKS) 1677c478bd9Sstevel@tonic-gate 1687c478bd9Sstevel@tonic-gate /* 1697c478bd9Sstevel@tonic-gate * Common bitmap4 of filesystem attributes to be gathered 1707c478bd9Sstevel@tonic-gate */ 1717c478bd9Sstevel@tonic-gate #define NFS4_FS_ATTR_MASK ( \ 1727c478bd9Sstevel@tonic-gate FATTR4_FILES_AVAIL_MASK | \ 1737c478bd9Sstevel@tonic-gate FATTR4_FILES_FREE_MASK | \ 1747c478bd9Sstevel@tonic-gate FATTR4_FILES_TOTAL_MASK | \ 1757c478bd9Sstevel@tonic-gate FATTR4_SPACE_AVAIL_MASK | \ 1767c478bd9Sstevel@tonic-gate FATTR4_SPACE_FREE_MASK | \ 1777c478bd9Sstevel@tonic-gate FATTR4_SPACE_TOTAL_MASK) 1787c478bd9Sstevel@tonic-gate 1797c478bd9Sstevel@tonic-gate #define NFS4_STATFS_ATTR_MASK ( \ 1807c478bd9Sstevel@tonic-gate FATTR4_FILES_AVAIL_MASK | \ 1817c478bd9Sstevel@tonic-gate FATTR4_FILES_FREE_MASK | \ 1827c478bd9Sstevel@tonic-gate FATTR4_FILES_TOTAL_MASK | \ 1837c478bd9Sstevel@tonic-gate FATTR4_SPACE_AVAIL_MASK | \ 1847c478bd9Sstevel@tonic-gate FATTR4_SPACE_FREE_MASK | \ 1857c478bd9Sstevel@tonic-gate FATTR4_SPACE_TOTAL_MASK | \ 1867c478bd9Sstevel@tonic-gate FATTR4_MAXNAME_MASK) 1877c478bd9Sstevel@tonic-gate 1887c478bd9Sstevel@tonic-gate /* 1897c478bd9Sstevel@tonic-gate * The corresponding AT_MASK 1907c478bd9Sstevel@tonic-gate */ 1917c478bd9Sstevel@tonic-gate #define NFS4_FS_ATTR_AT_MASK 0 1927c478bd9Sstevel@tonic-gate 1937c478bd9Sstevel@tonic-gate /* 1947c478bd9Sstevel@tonic-gate * Common bitmap4 to gather attr cache state 1957c478bd9Sstevel@tonic-gate */ 1967c478bd9Sstevel@tonic-gate #define NFS4_NTOV_ATTR_CACHE_MASK ( \ 1977c478bd9Sstevel@tonic-gate FATTR4_TIME_METADATA_MASK | \ 1987c478bd9Sstevel@tonic-gate FATTR4_TIME_MODIFY_MASK | \ 1997c478bd9Sstevel@tonic-gate FATTR4_SIZE_MASK) 2007c478bd9Sstevel@tonic-gate 2017c478bd9Sstevel@tonic-gate /* 2027c478bd9Sstevel@tonic-gate * The corresponding AT_MASK 2037c478bd9Sstevel@tonic-gate */ 2047c478bd9Sstevel@tonic-gate #define NFS4_NTOV_ATTR_CACHE_AT_MASK ( \ 2057c478bd9Sstevel@tonic-gate AT_CTIME | \ 2067c478bd9Sstevel@tonic-gate AT_MTIME | \ 2077c478bd9Sstevel@tonic-gate AT_SIZE) 2087c478bd9Sstevel@tonic-gate 2097c478bd9Sstevel@tonic-gate #define NFS4_VTON_ATTR_MASK ( \ 2107c478bd9Sstevel@tonic-gate AT_TYPE | \ 2117c478bd9Sstevel@tonic-gate AT_MODE | \ 2127c478bd9Sstevel@tonic-gate AT_UID | \ 2137c478bd9Sstevel@tonic-gate AT_GID | \ 2147c478bd9Sstevel@tonic-gate AT_NODEID | \ 2157c478bd9Sstevel@tonic-gate AT_SIZE | \ 2167c478bd9Sstevel@tonic-gate AT_NLINK | \ 2177c478bd9Sstevel@tonic-gate AT_ATIME | \ 2187c478bd9Sstevel@tonic-gate AT_MTIME | \ 2197c478bd9Sstevel@tonic-gate AT_CTIME | \ 2207c478bd9Sstevel@tonic-gate AT_RDEV | \ 2217c478bd9Sstevel@tonic-gate AT_NBLOCKS | \ 2227c478bd9Sstevel@tonic-gate AT_FSID) 2237c478bd9Sstevel@tonic-gate 2247c478bd9Sstevel@tonic-gate #define NFS4_VTON_ATTR_MASK_SET ( \ 2257c478bd9Sstevel@tonic-gate AT_MODE | \ 2267c478bd9Sstevel@tonic-gate AT_UID | \ 2277c478bd9Sstevel@tonic-gate AT_GID | \ 2287c478bd9Sstevel@tonic-gate AT_SIZE | \ 2297c478bd9Sstevel@tonic-gate AT_ATIME | \ 2307c478bd9Sstevel@tonic-gate AT_MTIME) 2317c478bd9Sstevel@tonic-gate 2327c478bd9Sstevel@tonic-gate /* solaris-supported, non-vattr_t per-vnode scoped attrs */ 2337c478bd9Sstevel@tonic-gate #define NFS4_VP_ATTR_MASK ( \ 2347c478bd9Sstevel@tonic-gate FATTR4_CHANGE_MASK | \ 2357c478bd9Sstevel@tonic-gate FATTR4_CHOWN_RESTRICTED_MASK | \ 2367c478bd9Sstevel@tonic-gate FATTR4_FILEHANDLE_MASK | \ 2377c478bd9Sstevel@tonic-gate FATTR4_MAXFILESIZE_MASK | \ 2387c478bd9Sstevel@tonic-gate FATTR4_MAXLINK_MASK | \ 2397c478bd9Sstevel@tonic-gate FATTR4_MAXNAME_MASK | \ 2407c478bd9Sstevel@tonic-gate FATTR4_MOUNTED_ON_FILEID_MASK) 2417c478bd9Sstevel@tonic-gate 2427c478bd9Sstevel@tonic-gate #define FATTR4_FSINFO_MASK ( \ 2437c478bd9Sstevel@tonic-gate FATTR4_SUPPORTED_ATTRS_MASK | \ 2447c478bd9Sstevel@tonic-gate FATTR4_TYPE_MASK | \ 2457c478bd9Sstevel@tonic-gate FATTR4_FH_EXPIRE_TYPE_MASK | \ 2467c478bd9Sstevel@tonic-gate FATTR4_LINK_SUPPORT_MASK | \ 2477c478bd9Sstevel@tonic-gate FATTR4_SYMLINK_SUPPORT_MASK | \ 2487c478bd9Sstevel@tonic-gate FATTR4_FSID_MASK | \ 2497c478bd9Sstevel@tonic-gate FATTR4_MAXFILESIZE_MASK | \ 2507c478bd9Sstevel@tonic-gate FATTR4_MAXREAD_MASK | \ 2517c478bd9Sstevel@tonic-gate FATTR4_MAXWRITE_MASK) 2527c478bd9Sstevel@tonic-gate 2537c478bd9Sstevel@tonic-gate /* 2547c478bd9Sstevel@tonic-gate * These are the support attributes for the NFSv4 server 2557c478bd9Sstevel@tonic-gate */ 2567c478bd9Sstevel@tonic-gate #define NFS4_SRV_RDDIR_SUPPORTED_ATTRS ( \ 2577c478bd9Sstevel@tonic-gate FATTR4_SUPPORTED_ATTRS_MASK | \ 2587c478bd9Sstevel@tonic-gate FATTR4_TYPE_MASK | \ 2597c478bd9Sstevel@tonic-gate FATTR4_FH_EXPIRE_TYPE_MASK | \ 2607c478bd9Sstevel@tonic-gate FATTR4_CHANGE_MASK | \ 2617c478bd9Sstevel@tonic-gate FATTR4_SIZE_MASK | \ 2627c478bd9Sstevel@tonic-gate FATTR4_LINK_SUPPORT_MASK | \ 2637c478bd9Sstevel@tonic-gate FATTR4_SYMLINK_SUPPORT_MASK | \ 2647c478bd9Sstevel@tonic-gate FATTR4_NAMED_ATTR_MASK | \ 2657c478bd9Sstevel@tonic-gate FATTR4_FSID_MASK | \ 2667c478bd9Sstevel@tonic-gate FATTR4_UNIQUE_HANDLES_MASK | \ 2677c478bd9Sstevel@tonic-gate FATTR4_LEASE_TIME_MASK | \ 2687c478bd9Sstevel@tonic-gate FATTR4_RDATTR_ERROR_MASK | \ 2697c478bd9Sstevel@tonic-gate FATTR4_CANSETTIME_MASK | \ 2707c478bd9Sstevel@tonic-gate FATTR4_CASE_INSENSITIVE_MASK | \ 2717c478bd9Sstevel@tonic-gate FATTR4_CASE_PRESERVING_MASK | \ 2727c478bd9Sstevel@tonic-gate FATTR4_CHOWN_RESTRICTED_MASK | \ 2737c478bd9Sstevel@tonic-gate FATTR4_FILEHANDLE_MASK | \ 2747c478bd9Sstevel@tonic-gate FATTR4_FILEID_MASK | \ 2757c478bd9Sstevel@tonic-gate FATTR4_FILES_AVAIL_MASK | \ 2767c478bd9Sstevel@tonic-gate FATTR4_FILES_FREE_MASK | \ 2777c478bd9Sstevel@tonic-gate FATTR4_FILES_TOTAL_MASK | \ 2787c478bd9Sstevel@tonic-gate FATTR4_HOMOGENEOUS_MASK | \ 2797c478bd9Sstevel@tonic-gate FATTR4_MAXFILESIZE_MASK | \ 2807c478bd9Sstevel@tonic-gate FATTR4_MAXLINK_MASK | \ 2817c478bd9Sstevel@tonic-gate FATTR4_MAXNAME_MASK | \ 2827c478bd9Sstevel@tonic-gate FATTR4_MAXREAD_MASK | \ 2837c478bd9Sstevel@tonic-gate FATTR4_MAXWRITE_MASK | \ 2847c478bd9Sstevel@tonic-gate FATTR4_MODE_MASK | \ 2857c478bd9Sstevel@tonic-gate FATTR4_NO_TRUNC_MASK | \ 2867c478bd9Sstevel@tonic-gate FATTR4_NUMLINKS_MASK | \ 2877c478bd9Sstevel@tonic-gate FATTR4_OWNER_MASK | \ 2887c478bd9Sstevel@tonic-gate FATTR4_OWNER_GROUP_MASK | \ 2897c478bd9Sstevel@tonic-gate FATTR4_RAWDEV_MASK | \ 2907c478bd9Sstevel@tonic-gate FATTR4_SPACE_AVAIL_MASK | \ 2917c478bd9Sstevel@tonic-gate FATTR4_SPACE_FREE_MASK | \ 2927c478bd9Sstevel@tonic-gate FATTR4_SPACE_TOTAL_MASK | \ 2937c478bd9Sstevel@tonic-gate FATTR4_SPACE_USED_MASK | \ 2947c478bd9Sstevel@tonic-gate FATTR4_TIME_ACCESS_MASK | \ 2957c478bd9Sstevel@tonic-gate FATTR4_TIME_DELTA_MASK | \ 2967c478bd9Sstevel@tonic-gate FATTR4_TIME_METADATA_MASK | \ 2977c478bd9Sstevel@tonic-gate FATTR4_TIME_MODIFY_MASK | \ 2987c478bd9Sstevel@tonic-gate FATTR4_MOUNTED_ON_FILEID_MASK \ 2997c478bd9Sstevel@tonic-gate ) 3007c478bd9Sstevel@tonic-gate 3017c478bd9Sstevel@tonic-gate 3027c478bd9Sstevel@tonic-gate #define FATTR4_FSID_EQ(a, b) \ 3037c478bd9Sstevel@tonic-gate ((a)->major == (b)->major && (a)->minor == (b)->minor) 3047c478bd9Sstevel@tonic-gate 3057c478bd9Sstevel@tonic-gate #define NFS4_MAXNUM_BITWORDS 2 3067c478bd9Sstevel@tonic-gate #define NFS4_MAXNUM_ATTRS 56 3077c478bd9Sstevel@tonic-gate 3087c478bd9Sstevel@tonic-gate union nfs4_attr_u { 3097c478bd9Sstevel@tonic-gate fattr4_supported_attrs supported_attrs; 3107c478bd9Sstevel@tonic-gate fattr4_type type; 3117c478bd9Sstevel@tonic-gate fattr4_fh_expire_type fh_expire_type; 3127c478bd9Sstevel@tonic-gate fattr4_change change; 3137c478bd9Sstevel@tonic-gate fattr4_size size; 3147c478bd9Sstevel@tonic-gate fattr4_link_support link_support; 3157c478bd9Sstevel@tonic-gate fattr4_symlink_support symlink_support; 3167c478bd9Sstevel@tonic-gate fattr4_named_attr named_attr; 3177c478bd9Sstevel@tonic-gate fattr4_fsid fsid; 3187c478bd9Sstevel@tonic-gate fattr4_unique_handles unique_handles; 3197c478bd9Sstevel@tonic-gate fattr4_lease_time lease_time; 3207c478bd9Sstevel@tonic-gate fattr4_rdattr_error rdattr_error; 3217c478bd9Sstevel@tonic-gate fattr4_acl acl; 3227c478bd9Sstevel@tonic-gate fattr4_aclsupport aclsupport; 3237c478bd9Sstevel@tonic-gate fattr4_archive archive; 3247c478bd9Sstevel@tonic-gate fattr4_cansettime cansettime; 3257c478bd9Sstevel@tonic-gate fattr4_case_insensitive case_insensitive; 3267c478bd9Sstevel@tonic-gate fattr4_case_preserving case_preserving; 3277c478bd9Sstevel@tonic-gate fattr4_chown_restricted chown_restricted; 3287c478bd9Sstevel@tonic-gate fattr4_fileid fileid; 3297c478bd9Sstevel@tonic-gate fattr4_files_avail files_avail; 3307c478bd9Sstevel@tonic-gate fattr4_filehandle filehandle; 3317c478bd9Sstevel@tonic-gate fattr4_files_free files_free; 3327c478bd9Sstevel@tonic-gate fattr4_files_total files_total; 3337c478bd9Sstevel@tonic-gate fattr4_fs_locations fs_locations; 3347c478bd9Sstevel@tonic-gate fattr4_hidden hidden; 3357c478bd9Sstevel@tonic-gate fattr4_homogeneous homogeneous; 3367c478bd9Sstevel@tonic-gate fattr4_maxfilesize maxfilesize; 3377c478bd9Sstevel@tonic-gate fattr4_maxlink maxlink; 3387c478bd9Sstevel@tonic-gate fattr4_maxname maxname; 3397c478bd9Sstevel@tonic-gate fattr4_maxread maxread; 3407c478bd9Sstevel@tonic-gate fattr4_maxwrite maxwrite; 3417c478bd9Sstevel@tonic-gate fattr4_mimetype mimetype; 3427c478bd9Sstevel@tonic-gate fattr4_mode mode; 3437c478bd9Sstevel@tonic-gate fattr4_no_trunc no_trunc; 3447c478bd9Sstevel@tonic-gate fattr4_numlinks numlinks; 3457c478bd9Sstevel@tonic-gate fattr4_owner owner; 3467c478bd9Sstevel@tonic-gate fattr4_owner_group owner_group; 3477c478bd9Sstevel@tonic-gate fattr4_quota_avail_hard quota_avail_hard; 3487c478bd9Sstevel@tonic-gate fattr4_quota_avail_soft quota_avail_soft; 3497c478bd9Sstevel@tonic-gate fattr4_quota_used quota_used; 3507c478bd9Sstevel@tonic-gate fattr4_rawdev rawdev; 3517c478bd9Sstevel@tonic-gate fattr4_space_avail space_avail; 3527c478bd9Sstevel@tonic-gate fattr4_space_free space_free; 3537c478bd9Sstevel@tonic-gate fattr4_space_total space_total; 3547c478bd9Sstevel@tonic-gate fattr4_space_used space_used; 3557c478bd9Sstevel@tonic-gate fattr4_system system; 3567c478bd9Sstevel@tonic-gate fattr4_time_access time_access; 3577c478bd9Sstevel@tonic-gate fattr4_time_access_set time_access_set; 3587c478bd9Sstevel@tonic-gate fattr4_time_backup time_backup; 3597c478bd9Sstevel@tonic-gate fattr4_time_create time_create; 3607c478bd9Sstevel@tonic-gate fattr4_time_delta time_delta; 3617c478bd9Sstevel@tonic-gate fattr4_time_metadata time_metadata; 3627c478bd9Sstevel@tonic-gate fattr4_time_modify time_modify; 3637c478bd9Sstevel@tonic-gate fattr4_time_modify_set time_modify_set; 3647c478bd9Sstevel@tonic-gate fattr4_mounted_on_fileid mounted_on_fileid; 3657c478bd9Sstevel@tonic-gate }; 3667c478bd9Sstevel@tonic-gate 3677c478bd9Sstevel@tonic-gate /* 3687c478bd9Sstevel@tonic-gate * Error details when processing the getattr response. 3697c478bd9Sstevel@tonic-gate */ 3707c478bd9Sstevel@tonic-gate #define NFS4_GETATTR_OP_OK 0 3717c478bd9Sstevel@tonic-gate #define NFS4_GETATTR_STATUS_ERR 1 3727c478bd9Sstevel@tonic-gate #define NFS4_GETATTR_MANDATTR_ERR 2 3737c478bd9Sstevel@tonic-gate #define NFS4_GETATTR_BITMAP_ERR 3 3747c478bd9Sstevel@tonic-gate #define NFS4_GETATTR_ATSIZE_ERR 4 3757c478bd9Sstevel@tonic-gate #define NFS4_GETATTR_ATUID_ERR 5 3767c478bd9Sstevel@tonic-gate #define NFS4_GETATTR_ATGID_ERR 6 3777c478bd9Sstevel@tonic-gate #define NFS4_GETATTR_ATATIME_ERR 7 3787c478bd9Sstevel@tonic-gate #define NFS4_GETATTR_ATMTIME_ERR 8 3797c478bd9Sstevel@tonic-gate #define NFS4_GETATTR_ATCTIME_ERR 9 3807c478bd9Sstevel@tonic-gate #define NFS4_GETATTR_RAWDEV_ERR 10 3817c478bd9Sstevel@tonic-gate #define NFS4_GETATTR_ATNBLOCK_ERR 11 3827c478bd9Sstevel@tonic-gate #define NFS4_GETATTR_MAXFILESIZE_ERR 12 3837c478bd9Sstevel@tonic-gate #define NFS4_GETATTR_FHANDLE_ERR 13 3847c478bd9Sstevel@tonic-gate #define NFS4_GETATTR_MAXREAD_ERR 14 3857c478bd9Sstevel@tonic-gate #define NFS4_GETATTR_MAXWRITE_ERR 15 3867c478bd9Sstevel@tonic-gate #define NFS4_GETATTR_NOCACHE_OK 16 3877c478bd9Sstevel@tonic-gate 3887c478bd9Sstevel@tonic-gate typedef struct nfs4_pathconf_info { 3897c478bd9Sstevel@tonic-gate unsigned pc4_cache_valid:1; /* When in rnode4, is data valid? */ 3907c478bd9Sstevel@tonic-gate unsigned pc4_no_trunc:1; 3917c478bd9Sstevel@tonic-gate unsigned pc4_chown_restricted:1; 3927c478bd9Sstevel@tonic-gate unsigned pc4_case_insensitive:1; 3937c478bd9Sstevel@tonic-gate unsigned pc4_case_preserving:1; 3947c478bd9Sstevel@tonic-gate unsigned pc4_xattr_valid:1; 3957c478bd9Sstevel@tonic-gate unsigned pc4_xattr_exists:1; 3967c478bd9Sstevel@tonic-gate unsigned pc4_link_support:1; 3977c478bd9Sstevel@tonic-gate unsigned pc4_symlink_support:1; 3987c478bd9Sstevel@tonic-gate unsigned pc4_unique_handles:1; 3997c478bd9Sstevel@tonic-gate unsigned pc4_cansettime:1; 4007c478bd9Sstevel@tonic-gate unsigned pc4_homogeneous:1; 4017c478bd9Sstevel@tonic-gate uint_t pc4_link_max; 4027c478bd9Sstevel@tonic-gate uint_t pc4_name_max; 4037c478bd9Sstevel@tonic-gate uint_t pc4_filesizebits; 4047c478bd9Sstevel@tonic-gate } nfs4_pathconf_info_t; 4057c478bd9Sstevel@tonic-gate 4067c478bd9Sstevel@tonic-gate /* 4077c478bd9Sstevel@tonic-gate * Used for client only to process incoming getattr results. 4087c478bd9Sstevel@tonic-gate */ 4097c478bd9Sstevel@tonic-gate typedef struct nfs4_ga_ext_res { 4107c478bd9Sstevel@tonic-gate bitmap4 n4g_suppattrs; 4117c478bd9Sstevel@tonic-gate nfsstat4 n4g_rdattr_error; 4127c478bd9Sstevel@tonic-gate fattr4_fh_expire_type n4g_fet; 4137c478bd9Sstevel@tonic-gate fattr4_lease_time n4g_leasetime; 4147c478bd9Sstevel@tonic-gate uint64_t n4g_maxfilesize; 4157c478bd9Sstevel@tonic-gate uint64_t n4g_maxread; 4167c478bd9Sstevel@tonic-gate uint64_t n4g_maxwrite; 4177c478bd9Sstevel@tonic-gate nfstime4 n4g_delta; 4187c478bd9Sstevel@tonic-gate nfs4_pathconf_info_t n4g_pc4; 4197c478bd9Sstevel@tonic-gate struct statvfs64 n4g_sb; 4207c478bd9Sstevel@tonic-gate union { 4217c478bd9Sstevel@tonic-gate nfs_fh4 n4g_fh; 4227c478bd9Sstevel@tonic-gate struct { 4237c478bd9Sstevel@tonic-gate uint_t len; 4247c478bd9Sstevel@tonic-gate char *val; 4257c478bd9Sstevel@tonic-gate char data[NFS4_FHSIZE]; 4267c478bd9Sstevel@tonic-gate } nfs_fh4_alt; 4277c478bd9Sstevel@tonic-gate } n4g_fh_u; 4287c478bd9Sstevel@tonic-gate /* 4297c478bd9Sstevel@tonic-gate * Bitmask with valid fields being: 4307c478bd9Sstevel@tonic-gate * ACL4_SUPPORT_ALLOW_ACL 4317c478bd9Sstevel@tonic-gate * ACL4_SUPPORT_DENY_ACL 4327c478bd9Sstevel@tonic-gate * ACL4_SUPPORT_AUDIT_ACL 4337c478bd9Sstevel@tonic-gate * ACL4_SUPPORT_ALARM_ACL 4347c478bd9Sstevel@tonic-gate */ 4357c478bd9Sstevel@tonic-gate fattr4_aclsupport n4g_aclsupport; 436*2f172c55SRobert Thurlow fattr4_fs_locations n4g_fslocations; 4377c478bd9Sstevel@tonic-gate } nfs4_ga_ext_res_t; 4387c478bd9Sstevel@tonic-gate 4397c478bd9Sstevel@tonic-gate extern bitmap4 rfs4_supported_attrs; 4407c478bd9Sstevel@tonic-gate 4417c478bd9Sstevel@tonic-gate #ifdef __cplusplus 4427c478bd9Sstevel@tonic-gate } 4437c478bd9Sstevel@tonic-gate #endif 4447c478bd9Sstevel@tonic-gate 4457c478bd9Sstevel@tonic-gate #endif /* _NFS4_ATTR_H */ 446