1*42e22086SApple OSS Distributions /* 2*42e22086SApple OSS Distributions * Copyright (c) 2000-2018 Apple Computer, Inc. All rights reserved. 3*42e22086SApple OSS Distributions * 4*42e22086SApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5*42e22086SApple OSS Distributions * 6*42e22086SApple OSS Distributions * This file contains Original Code and/or Modifications of Original Code 7*42e22086SApple OSS Distributions * as defined in and that are subject to the Apple Public Source License 8*42e22086SApple OSS Distributions * Version 2.0 (the 'License'). You may not use this file except in 9*42e22086SApple OSS Distributions * compliance with the License. The rights granted to you under the License 10*42e22086SApple OSS Distributions * may not be used to create, or enable the creation or redistribution of, 11*42e22086SApple OSS Distributions * unlawful or unlicensed copies of an Apple operating system, or to 12*42e22086SApple OSS Distributions * circumvent, violate, or enable the circumvention or violation of, any 13*42e22086SApple OSS Distributions * terms of an Apple operating system software license agreement. 14*42e22086SApple OSS Distributions * 15*42e22086SApple OSS Distributions * Please obtain a copy of the License at 16*42e22086SApple OSS Distributions * http://www.opensource.apple.com/apsl/ and read it before using this file. 17*42e22086SApple OSS Distributions * 18*42e22086SApple OSS Distributions * The Original Code and all software distributed under the License are 19*42e22086SApple OSS Distributions * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20*42e22086SApple OSS Distributions * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21*42e22086SApple OSS Distributions * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22*42e22086SApple OSS Distributions * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23*42e22086SApple OSS Distributions * Please see the License for the specific language governing rights and 24*42e22086SApple OSS Distributions * limitations under the License. 25*42e22086SApple OSS Distributions * 26*42e22086SApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27*42e22086SApple OSS Distributions */ 28*42e22086SApple OSS Distributions 29*42e22086SApple OSS Distributions /* 30*42e22086SApple OSS Distributions * attr.h - attribute data structures and interfaces 31*42e22086SApple OSS Distributions * 32*42e22086SApple OSS Distributions * Copyright (c) 1998, Apple Computer, Inc. All Rights Reserved. 33*42e22086SApple OSS Distributions */ 34*42e22086SApple OSS Distributions 35*42e22086SApple OSS Distributions #ifndef _SYS_ATTR_H_ 36*42e22086SApple OSS Distributions #define _SYS_ATTR_H_ 37*42e22086SApple OSS Distributions 38*42e22086SApple OSS Distributions #include <sys/appleapiopts.h> 39*42e22086SApple OSS Distributions 40*42e22086SApple OSS Distributions #ifdef __APPLE_API_UNSTABLE 41*42e22086SApple OSS Distributions #include <sys/types.h> 42*42e22086SApple OSS Distributions #include <sys/ucred.h> 43*42e22086SApple OSS Distributions #include <sys/time.h> 44*42e22086SApple OSS Distributions #include <sys/cdefs.h> 45*42e22086SApple OSS Distributions 46*42e22086SApple OSS Distributions #define FSOPT_NOFOLLOW 0x00000001 47*42e22086SApple OSS Distributions #define FSOPT_NOINMEMUPDATE 0x00000002 48*42e22086SApple OSS Distributions #define FSOPT_REPORT_FULLSIZE 0x00000004 49*42e22086SApple OSS Distributions /* The following option only valid when requesting ATTR_CMN_RETURNED_ATTRS */ 50*42e22086SApple OSS Distributions #define FSOPT_PACK_INVAL_ATTRS 0x00000008 51*42e22086SApple OSS Distributions 52*42e22086SApple OSS Distributions #ifdef PRIVATE 53*42e22086SApple OSS Distributions #define FSOPT_EXCHANGE_DATA_ONLY 0x0000010 54*42e22086SApple OSS Distributions #endif 55*42e22086SApple OSS Distributions 56*42e22086SApple OSS Distributions #define FSOPT_ATTR_CMN_EXTENDED 0x00000020 57*42e22086SApple OSS Distributions #ifdef PRIVATE 58*42e22086SApple OSS Distributions #define FSOPT_LIST_SNAPSHOT 0x00000040 59*42e22086SApple OSS Distributions #ifndef FSOPT_NOFIRMLINKPATH /*a copy is in fsgetpath.h */ 60*42e22086SApple OSS Distributions #define FSOPT_NOFIRMLINKPATH 0x00000080 61*42e22086SApple OSS Distributions #endif /* FSOPT_NOFIRMLINKPATH */ 62*42e22086SApple OSS Distributions #define FSOPT_FOLLOW_FIRMLINK 0x00000100 63*42e22086SApple OSS Distributions #endif /* PRIVATE */ 64*42e22086SApple OSS Distributions #define FSOPT_RETURN_REALDEV 0x00000200 65*42e22086SApple OSS Distributions #ifdef PRIVATE 66*42e22086SApple OSS Distributions #ifndef FSOPT_ISREALFSID /*a copy is in fsgetpath.h */ 67*42e22086SApple OSS Distributions #define FSOPT_ISREALFSID FSOPT_RETURN_REALDEV 68*42e22086SApple OSS Distributions #endif 69*42e22086SApple OSS Distributions #define FSOPT_UTIMES_NULL 0x00000400 70*42e22086SApple OSS Distributions #endif /* PRIVATE */ 71*42e22086SApple OSS Distributions #define FSOPT_NOFOLLOW_ANY 0x00000800 72*42e22086SApple OSS Distributions 73*42e22086SApple OSS Distributions /* we currently aren't anywhere near this amount for a valid 74*42e22086SApple OSS Distributions * fssearchblock.sizeofsearchparams1 or fssearchblock.sizeofsearchparams2 75*42e22086SApple OSS Distributions * but we put a sanity check in to avoid abuse of the value passed in from 76*42e22086SApple OSS Distributions * user land. 77*42e22086SApple OSS Distributions */ 78*42e22086SApple OSS Distributions #define SEARCHFS_MAX_SEARCHPARMS 4096 79*42e22086SApple OSS Distributions 80*42e22086SApple OSS Distributions typedef u_int32_t text_encoding_t; 81*42e22086SApple OSS Distributions 82*42e22086SApple OSS Distributions typedef u_int32_t fsobj_type_t; 83*42e22086SApple OSS Distributions 84*42e22086SApple OSS Distributions typedef u_int32_t fsobj_tag_t; 85*42e22086SApple OSS Distributions 86*42e22086SApple OSS Distributions typedef u_int32_t fsfile_type_t; 87*42e22086SApple OSS Distributions 88*42e22086SApple OSS Distributions typedef u_int32_t fsvolid_t; 89*42e22086SApple OSS Distributions 90*42e22086SApple OSS Distributions #include <sys/_types/_fsobj_id_t.h> /* file object id type */ 91*42e22086SApple OSS Distributions 92*42e22086SApple OSS Distributions typedef u_int32_t attrgroup_t; 93*42e22086SApple OSS Distributions 94*42e22086SApple OSS Distributions struct attrlist { 95*42e22086SApple OSS Distributions u_short bitmapcount; /* number of attr. bit sets in list (should be 5) */ 96*42e22086SApple OSS Distributions u_int16_t reserved; /* (to maintain 4-byte alignment) */ 97*42e22086SApple OSS Distributions attrgroup_t commonattr; /* common attribute group */ 98*42e22086SApple OSS Distributions attrgroup_t volattr; /* Volume attribute group */ 99*42e22086SApple OSS Distributions attrgroup_t dirattr; /* directory attribute group */ 100*42e22086SApple OSS Distributions attrgroup_t fileattr; /* file attribute group */ 101*42e22086SApple OSS Distributions attrgroup_t forkattr; /* fork attribute group */ 102*42e22086SApple OSS Distributions }; 103*42e22086SApple OSS Distributions 104*42e22086SApple OSS Distributions #define ATTR_BIT_MAP_COUNT 5 105*42e22086SApple OSS Distributions 106*42e22086SApple OSS Distributions typedef struct attribute_set { 107*42e22086SApple OSS Distributions attrgroup_t commonattr; /* common attribute group */ 108*42e22086SApple OSS Distributions attrgroup_t volattr; /* Volume attribute group */ 109*42e22086SApple OSS Distributions attrgroup_t dirattr; /* directory attribute group */ 110*42e22086SApple OSS Distributions attrgroup_t fileattr; /* file attribute group */ 111*42e22086SApple OSS Distributions attrgroup_t forkattr; /* fork attribute group */ 112*42e22086SApple OSS Distributions } attribute_set_t; 113*42e22086SApple OSS Distributions 114*42e22086SApple OSS Distributions #define ATTRIBUTE_SET_INIT(a) do {(a)->commonattr = (a)->volattr = (a)->dirattr = (a)->fileattr = (a)->forkattr = 0; } while(0) 115*42e22086SApple OSS Distributions 116*42e22086SApple OSS Distributions 117*42e22086SApple OSS Distributions typedef struct attrreference { 118*42e22086SApple OSS Distributions int32_t attr_dataoffset; 119*42e22086SApple OSS Distributions u_int32_t attr_length; 120*42e22086SApple OSS Distributions } attrreference_t; 121*42e22086SApple OSS Distributions 122*42e22086SApple OSS Distributions /* XXX PPD This is derived from HFSVolumePriv.h and should perhaps be referenced from there? */ 123*42e22086SApple OSS Distributions 124*42e22086SApple OSS Distributions struct diskextent { 125*42e22086SApple OSS Distributions u_int32_t startblock; /* first block allocated */ 126*42e22086SApple OSS Distributions u_int32_t blockcount; /* number of blocks allocated */ 127*42e22086SApple OSS Distributions }; 128*42e22086SApple OSS Distributions 129*42e22086SApple OSS Distributions typedef struct diskextent extentrecord[8]; 130*42e22086SApple OSS Distributions 131*42e22086SApple OSS Distributions typedef u_int32_t vol_capabilities_set_t[4]; 132*42e22086SApple OSS Distributions 133*42e22086SApple OSS Distributions #define VOL_CAPABILITIES_FORMAT 0 134*42e22086SApple OSS Distributions #define VOL_CAPABILITIES_INTERFACES 1 135*42e22086SApple OSS Distributions #define VOL_CAPABILITIES_RESERVED1 2 136*42e22086SApple OSS Distributions #define VOL_CAPABILITIES_RESERVED2 3 137*42e22086SApple OSS Distributions 138*42e22086SApple OSS Distributions typedef struct vol_capabilities_attr { 139*42e22086SApple OSS Distributions vol_capabilities_set_t capabilities; 140*42e22086SApple OSS Distributions vol_capabilities_set_t valid; 141*42e22086SApple OSS Distributions } vol_capabilities_attr_t; 142*42e22086SApple OSS Distributions 143*42e22086SApple OSS Distributions /* 144*42e22086SApple OSS Distributions * XXX this value needs to be raised - 3893388 145*42e22086SApple OSS Distributions */ 146*42e22086SApple OSS Distributions #define ATTR_MAX_BUFFER 8192 147*42e22086SApple OSS Distributions 148*42e22086SApple OSS Distributions /* 149*42e22086SApple OSS Distributions * VOL_CAP_FMT_PERSISTENTOBJECTIDS: When set, the volume has object IDs 150*42e22086SApple OSS Distributions * that are persistent (retain their values even when the volume is 151*42e22086SApple OSS Distributions * unmounted and remounted), and a file or directory can be looked up 152*42e22086SApple OSS Distributions * by ID. Volumes that support VolFS and can support Carbon File ID 153*42e22086SApple OSS Distributions * references should set this bit. 154*42e22086SApple OSS Distributions * 155*42e22086SApple OSS Distributions * VOL_CAP_FMT_SYMBOLICLINKS: When set, the volume supports symbolic 156*42e22086SApple OSS Distributions * links. The symlink(), readlink(), and lstat() calls all use this 157*42e22086SApple OSS Distributions * symbolic link. 158*42e22086SApple OSS Distributions * 159*42e22086SApple OSS Distributions * VOL_CAP_FMT_HARDLINKS: When set, the volume supports hard links. 160*42e22086SApple OSS Distributions * The link() call creates hard links. 161*42e22086SApple OSS Distributions * 162*42e22086SApple OSS Distributions * VOL_CAP_FMT_JOURNAL: When set, the volume is capable of supporting 163*42e22086SApple OSS Distributions * a journal used to speed recovery in case of unplanned shutdown 164*42e22086SApple OSS Distributions * (such as a power outage or crash). This bit does not necessarily 165*42e22086SApple OSS Distributions * mean the volume is actively using a journal for recovery. 166*42e22086SApple OSS Distributions * 167*42e22086SApple OSS Distributions * VOL_CAP_FMT_JOURNAL_ACTIVE: When set, the volume is currently using 168*42e22086SApple OSS Distributions * a journal for use in speeding recovery after an unplanned shutdown. 169*42e22086SApple OSS Distributions * This bit can be set only if VOL_CAP_FMT_JOURNAL is also set. 170*42e22086SApple OSS Distributions * 171*42e22086SApple OSS Distributions * VOL_CAP_FMT_NO_ROOT_TIMES: When set, the volume format does not 172*42e22086SApple OSS Distributions * store reliable times for the root directory, so you should not 173*42e22086SApple OSS Distributions * depend on them to detect changes, etc. 174*42e22086SApple OSS Distributions * 175*42e22086SApple OSS Distributions * VOL_CAP_FMT_SPARSE_FILES: When set, the volume supports sparse files. 176*42e22086SApple OSS Distributions * That is, files which can have "holes" that have never been written 177*42e22086SApple OSS Distributions * to, and are not allocated on disk. Sparse files may have an 178*42e22086SApple OSS Distributions * allocated size that is less than the file's logical length. 179*42e22086SApple OSS Distributions * 180*42e22086SApple OSS Distributions * VOL_CAP_FMT_ZERO_RUNS: For security reasons, parts of a file (runs) 181*42e22086SApple OSS Distributions * that have never been written to must appear to contain zeroes. When 182*42e22086SApple OSS Distributions * this bit is set, the volume keeps track of allocated but unwritten 183*42e22086SApple OSS Distributions * runs of a file so that it can substitute zeroes without actually 184*42e22086SApple OSS Distributions * writing zeroes to the media. This provides performance similar to 185*42e22086SApple OSS Distributions * sparse files, but not the space savings. 186*42e22086SApple OSS Distributions * 187*42e22086SApple OSS Distributions * VOL_CAP_FMT_CASE_SENSITIVE: When set, file and directory names are 188*42e22086SApple OSS Distributions * case sensitive (upper and lower case are different). When clear, 189*42e22086SApple OSS Distributions * an upper case character is equivalent to a lower case character, 190*42e22086SApple OSS Distributions * and you can't have two names that differ solely in the case of 191*42e22086SApple OSS Distributions * the characters. 192*42e22086SApple OSS Distributions * 193*42e22086SApple OSS Distributions * VOL_CAP_FMT_CASE_PRESERVING: When set, file and directory names 194*42e22086SApple OSS Distributions * preserve the difference between upper and lower case. If clear, 195*42e22086SApple OSS Distributions * the volume may change the case of some characters (typically 196*42e22086SApple OSS Distributions * making them all upper or all lower case). A volume that sets 197*42e22086SApple OSS Distributions * VOL_CAP_FMT_CASE_SENSITIVE should also set VOL_CAP_FMT_CASE_PRESERVING. 198*42e22086SApple OSS Distributions * 199*42e22086SApple OSS Distributions * VOL_CAP_FMT_FAST_STATFS: This bit is used as a hint to upper layers 200*42e22086SApple OSS Distributions * (especially Carbon) that statfs() is fast enough that its results 201*42e22086SApple OSS Distributions * need not be cached by those upper layers. A volume that caches 202*42e22086SApple OSS Distributions * the statfs information in its in-memory structures should set this bit. 203*42e22086SApple OSS Distributions * A volume that must always read from disk or always perform a network 204*42e22086SApple OSS Distributions * transaction should not set this bit. 205*42e22086SApple OSS Distributions * 206*42e22086SApple OSS Distributions * VOL_CAP_FMT_2TB_FILESIZE: If this bit is set the volume format supports 207*42e22086SApple OSS Distributions * file sizes larger than 4GB, and potentially up to 2TB; it does not 208*42e22086SApple OSS Distributions * indicate whether the filesystem supports files larger than that. 209*42e22086SApple OSS Distributions * 210*42e22086SApple OSS Distributions * VOL_CAP_FMT_OPENDENYMODES: When set, the volume supports open deny 211*42e22086SApple OSS Distributions * modes (e.g. "open for read write, deny write"; effectively, mandatory 212*42e22086SApple OSS Distributions * file locking based on open modes). 213*42e22086SApple OSS Distributions * 214*42e22086SApple OSS Distributions * VOL_CAP_FMT_HIDDEN_FILES: When set, the volume supports the UF_HIDDEN 215*42e22086SApple OSS Distributions * file flag, and the UF_HIDDEN flag is mapped to that volume's native 216*42e22086SApple OSS Distributions * "hidden" or "invisible" bit (which may be the invisible bit from the 217*42e22086SApple OSS Distributions * Finder Info extended attribute). 218*42e22086SApple OSS Distributions * 219*42e22086SApple OSS Distributions * VOL_CAP_FMT_PATH_FROM_ID: When set, the volume supports the ability 220*42e22086SApple OSS Distributions * to derive a pathname to the root of the file system given only the 221*42e22086SApple OSS Distributions * id of an object. This also implies that object ids on this file 222*42e22086SApple OSS Distributions * system are persistent and not recycled. This is a very specialized 223*42e22086SApple OSS Distributions * capability and it is assumed that most file systems will not support 224*42e22086SApple OSS Distributions * it. Its use is for legacy non-posix APIs like ResolveFileIDRef. 225*42e22086SApple OSS Distributions * 226*42e22086SApple OSS Distributions * VOL_CAP_FMT_NO_VOLUME_SIZES: When set, the volume does not support 227*42e22086SApple OSS Distributions * returning values for total data blocks, available blocks, or free blocks 228*42e22086SApple OSS Distributions * (as in f_blocks, f_bavail, or f_bfree in "struct statfs"). Historically, 229*42e22086SApple OSS Distributions * those values were set to 0xFFFFFFFF for volumes that did not support them. 230*42e22086SApple OSS Distributions * 231*42e22086SApple OSS Distributions * VOL_CAP_FMT_DECMPFS_COMPRESSION: When set, the volume supports transparent 232*42e22086SApple OSS Distributions * decompression of compressed files using decmpfs. 233*42e22086SApple OSS Distributions * 234*42e22086SApple OSS Distributions * VOL_CAP_FMT_64BIT_OBJECT_IDS: When set, the volume uses object IDs that 235*42e22086SApple OSS Distributions * are 64-bit. This means that ATTR_CMN_FILEID and ATTR_CMN_PARENTID are the 236*42e22086SApple OSS Distributions * only legitimate attributes for obtaining object IDs from this volume and the 237*42e22086SApple OSS Distributions * 32-bit fid_objno fields of the fsobj_id_t returned by ATTR_CMN_OBJID, 238*42e22086SApple OSS Distributions * ATTR_CMN_OBJPERMID, and ATTR_CMN_PAROBJID are undefined. 239*42e22086SApple OSS Distributions * 240*42e22086SApple OSS Distributions * VOL_CAP_FMT_DIR_HARDLINKS: When set, the volume supports directory 241*42e22086SApple OSS Distributions * hard links. 242*42e22086SApple OSS Distributions * 243*42e22086SApple OSS Distributions * VOL_CAP_FMT_DOCUMENT_ID: When set, the volume supports document IDs 244*42e22086SApple OSS Distributions * (an ID which persists across object ID changes) for document revisions. 245*42e22086SApple OSS Distributions * 246*42e22086SApple OSS Distributions * VOL_CAP_FMT_WRITE_GENERATION_COUNT: When set, the volume supports write 247*42e22086SApple OSS Distributions * generation counts (a count of how many times an object has been modified) 248*42e22086SApple OSS Distributions * 249*42e22086SApple OSS Distributions * VOL_CAP_FMT_NO_IMMUTABLE_FILES: When set, the volume does not support 250*42e22086SApple OSS Distributions * setting the UF_IMMUTABLE flag. 251*42e22086SApple OSS Distributions * 252*42e22086SApple OSS Distributions * VOL_CAP_FMT_NO_PERMISSIONS: When set, the volume does not support setting 253*42e22086SApple OSS Distributions * permissions. 254*42e22086SApple OSS Distributions * 255*42e22086SApple OSS Distributions * VOL_CAP_FMT_SHARED_SPACE: When set, the volume supports sharing space with 256*42e22086SApple OSS Distributions * other filesystems i.e. multiple logical filesystems can exist in the same 257*42e22086SApple OSS Distributions * "partition". An implication of this is that the filesystem which sets 258*42e22086SApple OSS Distributions * this capability treats waitfor arguments to VFS_SYNC as bit flags. 259*42e22086SApple OSS Distributions * 260*42e22086SApple OSS Distributions * VOL_CAP_FMT_VOL_GROUPS: When set, this volume is part of a volume-group 261*42e22086SApple OSS Distributions * that implies multiple volumes must be mounted in order to boot and root the 262*42e22086SApple OSS Distributions * operating system. Typically, this means a read-only system volume and a 263*42e22086SApple OSS Distributions * writable data volume. 264*42e22086SApple OSS Distributions * 265*42e22086SApple OSS Distributions * VOL_CAP_FMT_SEALED: When set, this volume is cryptographically sealed. 266*42e22086SApple OSS Distributions * Any modifications to volume data or metadata will be detected and may 267*42e22086SApple OSS Distributions * render the volume unusable. 268*42e22086SApple OSS Distributions */ 269*42e22086SApple OSS Distributions #define VOL_CAP_FMT_PERSISTENTOBJECTIDS 0x00000001 270*42e22086SApple OSS Distributions #define VOL_CAP_FMT_SYMBOLICLINKS 0x00000002 271*42e22086SApple OSS Distributions #define VOL_CAP_FMT_HARDLINKS 0x00000004 272*42e22086SApple OSS Distributions #define VOL_CAP_FMT_JOURNAL 0x00000008 273*42e22086SApple OSS Distributions #define VOL_CAP_FMT_JOURNAL_ACTIVE 0x00000010 274*42e22086SApple OSS Distributions #define VOL_CAP_FMT_NO_ROOT_TIMES 0x00000020 275*42e22086SApple OSS Distributions #define VOL_CAP_FMT_SPARSE_FILES 0x00000040 276*42e22086SApple OSS Distributions #define VOL_CAP_FMT_ZERO_RUNS 0x00000080 277*42e22086SApple OSS Distributions #define VOL_CAP_FMT_CASE_SENSITIVE 0x00000100 278*42e22086SApple OSS Distributions #define VOL_CAP_FMT_CASE_PRESERVING 0x00000200 279*42e22086SApple OSS Distributions #define VOL_CAP_FMT_FAST_STATFS 0x00000400 280*42e22086SApple OSS Distributions #define VOL_CAP_FMT_2TB_FILESIZE 0x00000800 281*42e22086SApple OSS Distributions #define VOL_CAP_FMT_OPENDENYMODES 0x00001000 282*42e22086SApple OSS Distributions #define VOL_CAP_FMT_HIDDEN_FILES 0x00002000 283*42e22086SApple OSS Distributions #define VOL_CAP_FMT_PATH_FROM_ID 0x00004000 284*42e22086SApple OSS Distributions #define VOL_CAP_FMT_NO_VOLUME_SIZES 0x00008000 285*42e22086SApple OSS Distributions #define VOL_CAP_FMT_DECMPFS_COMPRESSION 0x00010000 286*42e22086SApple OSS Distributions #define VOL_CAP_FMT_64BIT_OBJECT_IDS 0x00020000 287*42e22086SApple OSS Distributions #define VOL_CAP_FMT_DIR_HARDLINKS 0x00040000 288*42e22086SApple OSS Distributions #define VOL_CAP_FMT_DOCUMENT_ID 0x00080000 289*42e22086SApple OSS Distributions #define VOL_CAP_FMT_WRITE_GENERATION_COUNT 0x00100000 290*42e22086SApple OSS Distributions #define VOL_CAP_FMT_NO_IMMUTABLE_FILES 0x00200000 291*42e22086SApple OSS Distributions #define VOL_CAP_FMT_NO_PERMISSIONS 0x00400000 292*42e22086SApple OSS Distributions #define VOL_CAP_FMT_SHARED_SPACE 0x00800000 293*42e22086SApple OSS Distributions #define VOL_CAP_FMT_VOL_GROUPS 0x01000000 294*42e22086SApple OSS Distributions #define VOL_CAP_FMT_SEALED 0x02000000 295*42e22086SApple OSS Distributions 296*42e22086SApple OSS Distributions /* 297*42e22086SApple OSS Distributions * VOL_CAP_INT_SEARCHFS: When set, the volume implements the 298*42e22086SApple OSS Distributions * searchfs() system call (the vnop_searchfs vnode operation). 299*42e22086SApple OSS Distributions * 300*42e22086SApple OSS Distributions * VOL_CAP_INT_ATTRLIST: When set, the volume implements the 301*42e22086SApple OSS Distributions * getattrlist() and setattrlist() system calls (vnop_getattrlist 302*42e22086SApple OSS Distributions * and vnop_setattrlist vnode operations) for the volume, files, 303*42e22086SApple OSS Distributions * and directories. The volume may or may not implement the 304*42e22086SApple OSS Distributions * readdirattr() system call. XXX Is there any minimum set 305*42e22086SApple OSS Distributions * of attributes that should be supported? To determine the 306*42e22086SApple OSS Distributions * set of supported attributes, get the ATTR_VOL_ATTRIBUTES 307*42e22086SApple OSS Distributions * attribute of the volume. 308*42e22086SApple OSS Distributions * 309*42e22086SApple OSS Distributions * VOL_CAP_INT_NFSEXPORT: When set, the volume implements exporting 310*42e22086SApple OSS Distributions * of NFS volumes. 311*42e22086SApple OSS Distributions * 312*42e22086SApple OSS Distributions * VOL_CAP_INT_READDIRATTR: When set, the volume implements the 313*42e22086SApple OSS Distributions * readdirattr() system call (vnop_readdirattr vnode operation). 314*42e22086SApple OSS Distributions * 315*42e22086SApple OSS Distributions * VOL_CAP_INT_EXCHANGEDATA: When set, the volume implements the 316*42e22086SApple OSS Distributions * exchangedata() system call (VNOP_EXCHANGE vnode operation). 317*42e22086SApple OSS Distributions * 318*42e22086SApple OSS Distributions * VOL_CAP_INT_COPYFILE: When set, the volume implements the 319*42e22086SApple OSS Distributions * VOP_COPYFILE vnode operation. (XXX There should be a copyfile() 320*42e22086SApple OSS Distributions * system call in <unistd.h>.) 321*42e22086SApple OSS Distributions * 322*42e22086SApple OSS Distributions * VOL_CAP_INT_ALLOCATE: When set, the volume implements the 323*42e22086SApple OSS Distributions * VNOP_ALLOCATE vnode operation, which means it implements the 324*42e22086SApple OSS Distributions * F_PREALLOCATE selector of fcntl(2). 325*42e22086SApple OSS Distributions * 326*42e22086SApple OSS Distributions * VOL_CAP_INT_VOL_RENAME: When set, the volume implements the 327*42e22086SApple OSS Distributions * ATTR_VOL_NAME attribute for both getattrlist() and setattrlist(). 328*42e22086SApple OSS Distributions * The volume can be renamed by setting ATTR_VOL_NAME with setattrlist(). 329*42e22086SApple OSS Distributions * 330*42e22086SApple OSS Distributions * VOL_CAP_INT_ADVLOCK: When set, the volume implements POSIX style 331*42e22086SApple OSS Distributions * byte range locks via vnop_advlock (accessible from fcntl(2)). 332*42e22086SApple OSS Distributions * 333*42e22086SApple OSS Distributions * VOL_CAP_INT_FLOCK: When set, the volume implements whole-file flock(2) 334*42e22086SApple OSS Distributions * style locks via vnop_advlock. This includes the O_EXLOCK and O_SHLOCK 335*42e22086SApple OSS Distributions * flags of the open(2) call. 336*42e22086SApple OSS Distributions * 337*42e22086SApple OSS Distributions * VOL_CAP_INT_EXTENDED_SECURITY: When set, the volume implements 338*42e22086SApple OSS Distributions * extended security (ACLs). 339*42e22086SApple OSS Distributions * 340*42e22086SApple OSS Distributions * VOL_CAP_INT_USERACCESS: When set, the volume supports the 341*42e22086SApple OSS Distributions * ATTR_CMN_USERACCESS attribute (used to get the user's access 342*42e22086SApple OSS Distributions * mode to the file). 343*42e22086SApple OSS Distributions * 344*42e22086SApple OSS Distributions * VOL_CAP_INT_MANLOCK: When set, the volume supports AFP-style 345*42e22086SApple OSS Distributions * mandatory byte range locks via an ioctl(). 346*42e22086SApple OSS Distributions * 347*42e22086SApple OSS Distributions * VOL_CAP_INT_EXTENDED_ATTR: When set, the volume implements 348*42e22086SApple OSS Distributions * native extended attribues. 349*42e22086SApple OSS Distributions * 350*42e22086SApple OSS Distributions * VOL_CAP_INT_NAMEDSTREAMS: When set, the volume supports 351*42e22086SApple OSS Distributions * native named streams. 352*42e22086SApple OSS Distributions * 353*42e22086SApple OSS Distributions * VOL_CAP_INT_CLONE: When set, the volume supports clones. 354*42e22086SApple OSS Distributions * 355*42e22086SApple OSS Distributions * VOL_CAP_INT_SNAPSHOT: When set, the volume supports snapshots. 356*42e22086SApple OSS Distributions * 357*42e22086SApple OSS Distributions * VOL_CAP_INT_RENAME_SWAP: When set, the volume supports swapping 358*42e22086SApple OSS Distributions * file system objects. 359*42e22086SApple OSS Distributions * 360*42e22086SApple OSS Distributions * VOL_CAP_INT_RENAME_EXCL: When set, the volume supports an 361*42e22086SApple OSS Distributions * exclusive rename operation. 362*42e22086SApple OSS Distributions * 363*42e22086SApple OSS Distributions * VOL_CAP_INT_RENAME_OPENFAIL: When set, the volume may fail rename 364*42e22086SApple OSS Distributions * operations on files that are open. 365*42e22086SApple OSS Distributions */ 366*42e22086SApple OSS Distributions #define VOL_CAP_INT_SEARCHFS 0x00000001 367*42e22086SApple OSS Distributions #define VOL_CAP_INT_ATTRLIST 0x00000002 368*42e22086SApple OSS Distributions #define VOL_CAP_INT_NFSEXPORT 0x00000004 369*42e22086SApple OSS Distributions #define VOL_CAP_INT_READDIRATTR 0x00000008 370*42e22086SApple OSS Distributions #define VOL_CAP_INT_EXCHANGEDATA 0x00000010 371*42e22086SApple OSS Distributions #define VOL_CAP_INT_COPYFILE 0x00000020 372*42e22086SApple OSS Distributions #define VOL_CAP_INT_ALLOCATE 0x00000040 373*42e22086SApple OSS Distributions #define VOL_CAP_INT_VOL_RENAME 0x00000080 374*42e22086SApple OSS Distributions #define VOL_CAP_INT_ADVLOCK 0x00000100 375*42e22086SApple OSS Distributions #define VOL_CAP_INT_FLOCK 0x00000200 376*42e22086SApple OSS Distributions #define VOL_CAP_INT_EXTENDED_SECURITY 0x00000400 377*42e22086SApple OSS Distributions #define VOL_CAP_INT_USERACCESS 0x00000800 378*42e22086SApple OSS Distributions #define VOL_CAP_INT_MANLOCK 0x00001000 379*42e22086SApple OSS Distributions #define VOL_CAP_INT_NAMEDSTREAMS 0x00002000 380*42e22086SApple OSS Distributions #define VOL_CAP_INT_EXTENDED_ATTR 0x00004000 381*42e22086SApple OSS Distributions #ifdef PRIVATE 382*42e22086SApple OSS Distributions /* Volume supports kqueue notifications for remote events */ 383*42e22086SApple OSS Distributions #define VOL_CAP_INT_REMOTE_EVENT 0x00008000 384*42e22086SApple OSS Distributions #endif /* PRIVATE */ 385*42e22086SApple OSS Distributions #define VOL_CAP_INT_CLONE 0x00010000 386*42e22086SApple OSS Distributions #define VOL_CAP_INT_SNAPSHOT 0x00020000 387*42e22086SApple OSS Distributions #define VOL_CAP_INT_RENAME_SWAP 0x00040000 388*42e22086SApple OSS Distributions #define VOL_CAP_INT_RENAME_EXCL 0x00080000 389*42e22086SApple OSS Distributions #define VOL_CAP_INT_RENAME_OPENFAIL 0x00100000 390*42e22086SApple OSS Distributions 391*42e22086SApple OSS Distributions typedef struct vol_attributes_attr { 392*42e22086SApple OSS Distributions attribute_set_t validattr; 393*42e22086SApple OSS Distributions attribute_set_t nativeattr; 394*42e22086SApple OSS Distributions } vol_attributes_attr_t; 395*42e22086SApple OSS Distributions 396*42e22086SApple OSS Distributions #define ATTR_CMN_NAME 0x00000001 397*42e22086SApple OSS Distributions #define ATTR_CMN_DEVID 0x00000002 398*42e22086SApple OSS Distributions #define ATTR_CMN_FSID 0x00000004 399*42e22086SApple OSS Distributions #define ATTR_CMN_OBJTYPE 0x00000008 400*42e22086SApple OSS Distributions #define ATTR_CMN_OBJTAG 0x00000010 401*42e22086SApple OSS Distributions #define ATTR_CMN_OBJID 0x00000020 402*42e22086SApple OSS Distributions #define ATTR_CMN_OBJPERMANENTID 0x00000040 403*42e22086SApple OSS Distributions #define ATTR_CMN_PAROBJID 0x00000080 404*42e22086SApple OSS Distributions #define ATTR_CMN_SCRIPT 0x00000100 405*42e22086SApple OSS Distributions #define ATTR_CMN_CRTIME 0x00000200 406*42e22086SApple OSS Distributions #define ATTR_CMN_MODTIME 0x00000400 407*42e22086SApple OSS Distributions #define ATTR_CMN_CHGTIME 0x00000800 408*42e22086SApple OSS Distributions #define ATTR_CMN_ACCTIME 0x00001000 409*42e22086SApple OSS Distributions #define ATTR_CMN_BKUPTIME 0x00002000 410*42e22086SApple OSS Distributions #define ATTR_CMN_FNDRINFO 0x00004000 411*42e22086SApple OSS Distributions #define ATTR_CMN_OWNERID 0x00008000 412*42e22086SApple OSS Distributions #define ATTR_CMN_GRPID 0x00010000 413*42e22086SApple OSS Distributions #define ATTR_CMN_ACCESSMASK 0x00020000 414*42e22086SApple OSS Distributions #define ATTR_CMN_FLAGS 0x00040000 415*42e22086SApple OSS Distributions 416*42e22086SApple OSS Distributions /* The following were defined as: */ 417*42e22086SApple OSS Distributions /* #define ATTR_CMN_NAMEDATTRCOUNT 0x00080000 */ 418*42e22086SApple OSS Distributions /* #define ATTR_CMN_NAMEDATTRLIST 0x00100000 */ 419*42e22086SApple OSS Distributions /* These bits have been salvaged for use as: */ 420*42e22086SApple OSS Distributions /* #define ATTR_CMN_GEN_COUNT 0x00080000 */ 421*42e22086SApple OSS Distributions /* #define ATTR_CMN_DOCUMENT_ID 0x00100000 */ 422*42e22086SApple OSS Distributions /* They can only be used with the FSOPT_ATTR_CMN_EXTENDED */ 423*42e22086SApple OSS Distributions /* option flag. */ 424*42e22086SApple OSS Distributions 425*42e22086SApple OSS Distributions #define ATTR_CMN_GEN_COUNT 0x00080000 426*42e22086SApple OSS Distributions #define ATTR_CMN_DOCUMENT_ID 0x00100000 427*42e22086SApple OSS Distributions 428*42e22086SApple OSS Distributions #define ATTR_CMN_USERACCESS 0x00200000 429*42e22086SApple OSS Distributions #define ATTR_CMN_EXTENDED_SECURITY 0x00400000 430*42e22086SApple OSS Distributions #define ATTR_CMN_UUID 0x00800000 431*42e22086SApple OSS Distributions #define ATTR_CMN_GRPUUID 0x01000000 432*42e22086SApple OSS Distributions #define ATTR_CMN_FILEID 0x02000000 433*42e22086SApple OSS Distributions #define ATTR_CMN_PARENTID 0x04000000 434*42e22086SApple OSS Distributions #define ATTR_CMN_FULLPATH 0x08000000 435*42e22086SApple OSS Distributions #define ATTR_CMN_ADDEDTIME 0x10000000 436*42e22086SApple OSS Distributions #define ATTR_CMN_ERROR 0x20000000 437*42e22086SApple OSS Distributions #define ATTR_CMN_DATA_PROTECT_FLAGS 0x40000000 438*42e22086SApple OSS Distributions 439*42e22086SApple OSS Distributions /* 440*42e22086SApple OSS Distributions * ATTR_CMN_RETURNED_ATTRS is only valid with getattrlist(2) and 441*42e22086SApple OSS Distributions * getattrlistbulk(2). It is always the first attribute in the return buffer. 442*42e22086SApple OSS Distributions */ 443*42e22086SApple OSS Distributions #define ATTR_CMN_RETURNED_ATTRS 0x80000000 444*42e22086SApple OSS Distributions 445*42e22086SApple OSS Distributions #define ATTR_CMN_VALIDMASK 0xFFFFFFFF 446*42e22086SApple OSS Distributions /* 447*42e22086SApple OSS Distributions * The settable ATTR_CMN_* attributes include the following: 448*42e22086SApple OSS Distributions * ATTR_CMN_SCRIPT 449*42e22086SApple OSS Distributions * ATTR_CMN_CRTIME 450*42e22086SApple OSS Distributions * ATTR_CMN_MODTIME 451*42e22086SApple OSS Distributions * ATTR_CMN_CHGTIME 452*42e22086SApple OSS Distributions * 453*42e22086SApple OSS Distributions * ATTR_CMN_ACCTIME 454*42e22086SApple OSS Distributions * ATTR_CMN_BKUPTIME 455*42e22086SApple OSS Distributions * ATTR_CMN_FNDRINFO 456*42e22086SApple OSS Distributions * ATTR_CMN_OWNERID 457*42e22086SApple OSS Distributions * 458*42e22086SApple OSS Distributions * ATTR_CMN_GRPID 459*42e22086SApple OSS Distributions * ATTR_CMN_ACCESSMASK 460*42e22086SApple OSS Distributions * ATTR_CMN_FLAGS 461*42e22086SApple OSS Distributions * 462*42e22086SApple OSS Distributions * ATTR_CMN_EXTENDED_SECURITY 463*42e22086SApple OSS Distributions * ATTR_CMN_UUID 464*42e22086SApple OSS Distributions * 465*42e22086SApple OSS Distributions * ATTR_CMN_GRPUUID 466*42e22086SApple OSS Distributions * 467*42e22086SApple OSS Distributions * ATTR_CMN_DATA_PROTECT_FLAGS 468*42e22086SApple OSS Distributions */ 469*42e22086SApple OSS Distributions #define ATTR_CMN_SETMASK 0x51C7FF00 470*42e22086SApple OSS Distributions #define ATTR_CMN_VOLSETMASK 0x00006700 471*42e22086SApple OSS Distributions 472*42e22086SApple OSS Distributions #define ATTR_VOL_FSTYPE 0x00000001 473*42e22086SApple OSS Distributions #define ATTR_VOL_SIGNATURE 0x00000002 474*42e22086SApple OSS Distributions #define ATTR_VOL_SIZE 0x00000004 475*42e22086SApple OSS Distributions #define ATTR_VOL_SPACEFREE 0x00000008 476*42e22086SApple OSS Distributions #define ATTR_VOL_SPACEAVAIL 0x00000010 477*42e22086SApple OSS Distributions #define ATTR_VOL_MINALLOCATION 0x00000020 478*42e22086SApple OSS Distributions #define ATTR_VOL_ALLOCATIONCLUMP 0x00000040 479*42e22086SApple OSS Distributions #define ATTR_VOL_IOBLOCKSIZE 0x00000080 480*42e22086SApple OSS Distributions #define ATTR_VOL_OBJCOUNT 0x00000100 481*42e22086SApple OSS Distributions #define ATTR_VOL_FILECOUNT 0x00000200 482*42e22086SApple OSS Distributions #define ATTR_VOL_DIRCOUNT 0x00000400 483*42e22086SApple OSS Distributions #define ATTR_VOL_MAXOBJCOUNT 0x00000800 484*42e22086SApple OSS Distributions #define ATTR_VOL_MOUNTPOINT 0x00001000 485*42e22086SApple OSS Distributions #define ATTR_VOL_NAME 0x00002000 486*42e22086SApple OSS Distributions #define ATTR_VOL_MOUNTFLAGS 0x00004000 487*42e22086SApple OSS Distributions #define ATTR_VOL_MOUNTEDDEVICE 0x00008000 488*42e22086SApple OSS Distributions #define ATTR_VOL_ENCODINGSUSED 0x00010000 489*42e22086SApple OSS Distributions #define ATTR_VOL_CAPABILITIES 0x00020000 490*42e22086SApple OSS Distributions #define ATTR_VOL_UUID 0x00040000 491*42e22086SApple OSS Distributions #define ATTR_VOL_SPACEUSED 0x00800000 492*42e22086SApple OSS Distributions #define ATTR_VOL_QUOTA_SIZE 0x10000000 493*42e22086SApple OSS Distributions #define ATTR_VOL_RESERVED_SIZE 0x20000000 494*42e22086SApple OSS Distributions #define ATTR_VOL_ATTRIBUTES 0x40000000 495*42e22086SApple OSS Distributions #define ATTR_VOL_INFO 0x80000000 496*42e22086SApple OSS Distributions 497*42e22086SApple OSS Distributions #define ATTR_VOL_VALIDMASK 0xF087FFFF 498*42e22086SApple OSS Distributions 499*42e22086SApple OSS Distributions /* 500*42e22086SApple OSS Distributions * The list of settable ATTR_VOL_* attributes include the following: 501*42e22086SApple OSS Distributions * ATTR_VOL_NAME 502*42e22086SApple OSS Distributions * ATTR_VOL_INFO 503*42e22086SApple OSS Distributions */ 504*42e22086SApple OSS Distributions #define ATTR_VOL_SETMASK 0x80002000 505*42e22086SApple OSS Distributions 506*42e22086SApple OSS Distributions 507*42e22086SApple OSS Distributions /* File/directory attributes: */ 508*42e22086SApple OSS Distributions #define ATTR_DIR_LINKCOUNT 0x00000001 509*42e22086SApple OSS Distributions #define ATTR_DIR_ENTRYCOUNT 0x00000002 510*42e22086SApple OSS Distributions #define ATTR_DIR_MOUNTSTATUS 0x00000004 511*42e22086SApple OSS Distributions #define ATTR_DIR_ALLOCSIZE 0x00000008 512*42e22086SApple OSS Distributions #define ATTR_DIR_IOBLOCKSIZE 0x00000010 513*42e22086SApple OSS Distributions #define ATTR_DIR_DATALENGTH 0x00000020 514*42e22086SApple OSS Distributions 515*42e22086SApple OSS Distributions /* ATTR_DIR_MOUNTSTATUS Flags: */ 516*42e22086SApple OSS Distributions #define DIR_MNTSTATUS_MNTPOINT 0x00000001 517*42e22086SApple OSS Distributions #define DIR_MNTSTATUS_TRIGGER 0x00000002 518*42e22086SApple OSS Distributions 519*42e22086SApple OSS Distributions #define ATTR_DIR_VALIDMASK 0x0000003f 520*42e22086SApple OSS Distributions #define ATTR_DIR_SETMASK 0x00000000 521*42e22086SApple OSS Distributions 522*42e22086SApple OSS Distributions #define ATTR_FILE_LINKCOUNT 0x00000001 523*42e22086SApple OSS Distributions #define ATTR_FILE_TOTALSIZE 0x00000002 524*42e22086SApple OSS Distributions #define ATTR_FILE_ALLOCSIZE 0x00000004 525*42e22086SApple OSS Distributions #define ATTR_FILE_IOBLOCKSIZE 0x00000008 526*42e22086SApple OSS Distributions #define ATTR_FILE_DEVTYPE 0x00000020 527*42e22086SApple OSS Distributions #define ATTR_FILE_FORKCOUNT 0x00000080 528*42e22086SApple OSS Distributions #define ATTR_FILE_FORKLIST 0x00000100 529*42e22086SApple OSS Distributions #define ATTR_FILE_DATALENGTH 0x00000200 530*42e22086SApple OSS Distributions #define ATTR_FILE_DATAALLOCSIZE 0x00000400 531*42e22086SApple OSS Distributions #define ATTR_FILE_RSRCLENGTH 0x00001000 532*42e22086SApple OSS Distributions #define ATTR_FILE_RSRCALLOCSIZE 0x00002000 533*42e22086SApple OSS Distributions 534*42e22086SApple OSS Distributions #define ATTR_FILE_VALIDMASK 0x000037FF 535*42e22086SApple OSS Distributions /* 536*42e22086SApple OSS Distributions * Settable ATTR_FILE_* attributes include: 537*42e22086SApple OSS Distributions * ATTR_FILE_DEVTYPE 538*42e22086SApple OSS Distributions */ 539*42e22086SApple OSS Distributions #define ATTR_FILE_SETMASK 0x00000020 540*42e22086SApple OSS Distributions 541*42e22086SApple OSS Distributions /* CMNEXT attributes extend the common attributes, but in the forkattr field */ 542*42e22086SApple OSS Distributions #define ATTR_CMNEXT_RELPATH 0x00000004 543*42e22086SApple OSS Distributions #define ATTR_CMNEXT_PRIVATESIZE 0x00000008 544*42e22086SApple OSS Distributions #define ATTR_CMNEXT_LINKID 0x00000010 545*42e22086SApple OSS Distributions #define ATTR_CMNEXT_NOFIRMLINKPATH 0x00000020 546*42e22086SApple OSS Distributions #define ATTR_CMNEXT_REALDEVID 0x00000040 547*42e22086SApple OSS Distributions #define ATTR_CMNEXT_REALFSID 0x00000080 548*42e22086SApple OSS Distributions #define ATTR_CMNEXT_CLONEID 0x00000100 549*42e22086SApple OSS Distributions #define ATTR_CMNEXT_EXT_FLAGS 0x00000200 550*42e22086SApple OSS Distributions #define ATTR_CMNEXT_RECURSIVE_GENCOUNT 0x00000400 551*42e22086SApple OSS Distributions 552*42e22086SApple OSS Distributions #define ATTR_CMNEXT_VALIDMASK 0x000007fc 553*42e22086SApple OSS Distributions #define ATTR_CMNEXT_SETMASK 0x00000000 554*42e22086SApple OSS Distributions 555*42e22086SApple OSS Distributions /* Deprecated fork attributes */ 556*42e22086SApple OSS Distributions #define ATTR_FORK_TOTALSIZE 0x00000001 557*42e22086SApple OSS Distributions #define ATTR_FORK_ALLOCSIZE 0x00000002 558*42e22086SApple OSS Distributions #define ATTR_FORK_RESERVED 0xffffffff 559*42e22086SApple OSS Distributions 560*42e22086SApple OSS Distributions #define ATTR_FORK_VALIDMASK 0x00000003 561*42e22086SApple OSS Distributions #define ATTR_FORK_SETMASK 0x00000000 562*42e22086SApple OSS Distributions 563*42e22086SApple OSS Distributions /* Obsolete, implemented, not supported */ 564*42e22086SApple OSS Distributions #define ATTR_CMN_NAMEDATTRCOUNT 0x00080000 565*42e22086SApple OSS Distributions #define ATTR_CMN_NAMEDATTRLIST 0x00100000 566*42e22086SApple OSS Distributions #define ATTR_FILE_CLUMPSIZE 0x00000010 /* obsolete */ 567*42e22086SApple OSS Distributions #define ATTR_FILE_FILETYPE 0x00000040 /* always zero */ 568*42e22086SApple OSS Distributions #define ATTR_FILE_DATAEXTENTS 0x00000800 /* obsolete, HFS-specific */ 569*42e22086SApple OSS Distributions #define ATTR_FILE_RSRCEXTENTS 0x00004000 /* obsolete, HFS-specific */ 570*42e22086SApple OSS Distributions 571*42e22086SApple OSS Distributions /* Required attributes for getattrlistbulk(2) */ 572*42e22086SApple OSS Distributions #define ATTR_BULK_REQUIRED (ATTR_CMN_NAME | ATTR_CMN_RETURNED_ATTRS) 573*42e22086SApple OSS Distributions 574*42e22086SApple OSS Distributions /* 575*42e22086SApple OSS Distributions * Searchfs 576*42e22086SApple OSS Distributions */ 577*42e22086SApple OSS Distributions #define SRCHFS_START 0x00000001 578*42e22086SApple OSS Distributions #define SRCHFS_MATCHPARTIALNAMES 0x00000002 579*42e22086SApple OSS Distributions #define SRCHFS_MATCHDIRS 0x00000004 580*42e22086SApple OSS Distributions #define SRCHFS_MATCHFILES 0x00000008 581*42e22086SApple OSS Distributions #define SRCHFS_SKIPLINKS 0x00000010 582*42e22086SApple OSS Distributions #define SRCHFS_SKIPINVISIBLE 0x00000020 583*42e22086SApple OSS Distributions #define SRCHFS_SKIPPACKAGES 0x00000040 584*42e22086SApple OSS Distributions #define SRCHFS_SKIPINAPPROPRIATE 0x00000080 585*42e22086SApple OSS Distributions 586*42e22086SApple OSS Distributions #define SRCHFS_NEGATEPARAMS 0x80000000 587*42e22086SApple OSS Distributions #define SRCHFS_VALIDOPTIONSMASK 0x800000FF 588*42e22086SApple OSS Distributions 589*42e22086SApple OSS Distributions struct fssearchblock { 590*42e22086SApple OSS Distributions struct attrlist *returnattrs; 591*42e22086SApple OSS Distributions void *returnbuffer; 592*42e22086SApple OSS Distributions size_t returnbuffersize; 593*42e22086SApple OSS Distributions u_long maxmatches; 594*42e22086SApple OSS Distributions struct timeval timelimit; 595*42e22086SApple OSS Distributions void *searchparams1; 596*42e22086SApple OSS Distributions size_t sizeofsearchparams1; 597*42e22086SApple OSS Distributions void *searchparams2; 598*42e22086SApple OSS Distributions size_t sizeofsearchparams2; 599*42e22086SApple OSS Distributions struct attrlist searchattrs; 600*42e22086SApple OSS Distributions }; 601*42e22086SApple OSS Distributions 602*42e22086SApple OSS Distributions #ifdef KERNEL 603*42e22086SApple OSS Distributions /* LP64 version of fssearchblock. all pointers and longs 604*42e22086SApple OSS Distributions * grow when we're dealing with a 64-bit process. 605*42e22086SApple OSS Distributions * WARNING - keep in sync with fssearchblock 606*42e22086SApple OSS Distributions */ 607*42e22086SApple OSS Distributions 608*42e22086SApple OSS Distributions struct user64_fssearchblock { 609*42e22086SApple OSS Distributions user64_addr_t returnattrs; 610*42e22086SApple OSS Distributions user64_addr_t returnbuffer; 611*42e22086SApple OSS Distributions user64_size_t returnbuffersize; 612*42e22086SApple OSS Distributions user64_ulong_t maxmatches; 613*42e22086SApple OSS Distributions struct user64_timeval timelimit; 614*42e22086SApple OSS Distributions user64_addr_t searchparams1; 615*42e22086SApple OSS Distributions user64_size_t sizeofsearchparams1; 616*42e22086SApple OSS Distributions user64_addr_t searchparams2; 617*42e22086SApple OSS Distributions user64_size_t sizeofsearchparams2; 618*42e22086SApple OSS Distributions struct attrlist searchattrs; 619*42e22086SApple OSS Distributions }; 620*42e22086SApple OSS Distributions 621*42e22086SApple OSS Distributions struct user32_fssearchblock { 622*42e22086SApple OSS Distributions user32_addr_t returnattrs; 623*42e22086SApple OSS Distributions user32_addr_t returnbuffer; 624*42e22086SApple OSS Distributions user32_size_t returnbuffersize; 625*42e22086SApple OSS Distributions user32_ulong_t maxmatches; 626*42e22086SApple OSS Distributions struct user32_timeval timelimit; 627*42e22086SApple OSS Distributions user32_addr_t searchparams1; 628*42e22086SApple OSS Distributions user32_size_t sizeofsearchparams1; 629*42e22086SApple OSS Distributions user32_addr_t searchparams2; 630*42e22086SApple OSS Distributions user32_size_t sizeofsearchparams2; 631*42e22086SApple OSS Distributions struct attrlist searchattrs; 632*42e22086SApple OSS Distributions }; 633*42e22086SApple OSS Distributions 634*42e22086SApple OSS Distributions #endif /* KERNEL */ 635*42e22086SApple OSS Distributions 636*42e22086SApple OSS Distributions struct searchstate { 637*42e22086SApple OSS Distributions uint32_t ss_union_flags; // for SRCHFS_START 638*42e22086SApple OSS Distributions uint32_t ss_union_layer; // 0 = top 639*42e22086SApple OSS Distributions u_char ss_fsstate[548]; // fs private 640*42e22086SApple OSS Distributions } __attribute__((packed)); 641*42e22086SApple OSS Distributions 642*42e22086SApple OSS Distributions #define FST_EOF (-1) /* end-of-file offset */ 643*42e22086SApple OSS Distributions 644*42e22086SApple OSS Distributions #endif /* __APPLE_API_UNSTABLE */ 645*42e22086SApple OSS Distributions #endif /* !_SYS_ATTR_H_ */ 646