netatalk  4.6.0
Free and Open Source Apple Filing Protocol (AFP) Server
Loading...
Searching...
No Matches
include/atalk/volume.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 1990,1994 Regents of The University of Michigan.
3 * All Rights Reserved. See COPYRIGHT.
4 */
5
6#ifndef ATALK_VOLUME_H
7#define ATALK_VOLUME_H 1
8
9#include <stdint.h>
10#include <sys/types.h>
11
12#include <atalk/cnid.h>
13#include <atalk/globals.h>
14#include <atalk/hash.h>
15#include <atalk/unicode.h>
16#include <atalk/vfs.h>
17
18#define AFPVOL_U8MNAMELEN 255
19#define AFPVOL_MACNAMELEN 27
20
21typedef uint64_t VolSpace;
22
23/* Forward declaration — full definition in atalk/spotlight.h */
24struct sl_backend_ops;
25
26/* This should belong in a file.h */
27struct extmap {
28 char *em_ext;
29 char em_creator[4];
30 char em_type[4];
31};
32
33struct vol {
34 struct vol *v_next;
36 uint16_t v_vid;
38 char *v_path;
39 struct dir *v_root;
40 time_t v_mtime;
41
44 uint16_t v_mtou_flags;
45 uint16_t v_utom_flags;
46 uint32_t v_kTextEncoding;
48 char *v_veto;
51 const char *(*ad_path)(const char *, int);
52 struct _cnid_db *v_cdb;
55 mode_t v_umask;
56 mode_t v_dperm;
58 mode_t v_fperm;
63
64 /* get/set volparams */
65 time_t v_ctime;
66 dev_t v_dev;
67
68 /* adouble VFS indirection */
69 struct vfs_ops *vfs;
70 const struct vfs_ops *vfs_modules[4];
72
73 /* misc */
74 char *v_gvs;
76 int v_nfs;
81
82 /* only when opening/closing volumes or in error */
91 char *v_dbpath;
95 unsigned char *v_icon_rfork;
97#if 0
98 int v_hide; /* new volume wait until old volume is closed */
99 int v_new; /* volume deleted but there's a new one
100 * with the same name */
101#endif
105#if 0
106 char *v_root_preexec;
107#endif
109#if 0
110 char *v_root_postexec;
111#endif
113#if 0
114 int v_root_preexec_close;
115#endif
117 char *v_uuid;
118 int v_qfd;
119 uint32_t v_ignattr;
120};
121
123typedef enum {
125 LV_ALL = 1,
127} lv_flags_t;
128
129/* volume flags */
130#define AFPVOL_OPEN (1<<0)
131
132/* Volume-space backend/state (bits 2–4); value 1 is currently unused. */
133#define AFPVOL_GVSMASK (7 << 2)
134#define AFPVOL_NONE (0 << 2)
135#define AFPVOL_USTATFS (1 << 3)
136#define AFPVOL_UQUOTA (1 << 4)
137
138/* Flags that alter per-volume behavior. */
139#define AFPVOL_NOV2TOEACONV (1 << 5)
140#define AFPVOL_SPOTLIGHT (1 << 6)
141#define AFPVOL_EA_SAMBA (1 << 7)
142#define AFPVOL_RO (1 << 8)
143#define AFPVOL_CHMOD_PRESERVE_ACL (1 << 9)
144#define AFPVOL_CHMOD_IGNORE (1 << 10)
145#define AFPVOL_FORCE_STICKY_XATTR (1 << 11)
146#define AFPVOL_LIMITSIZE (1 << 12)
147#define AFPVOL_A2VOL (1 << 13)
148#define AFPVOL_MULTIPROTO (1 << 14)
149#define AFPVOL_NOSTAT (1 << 16)
151#define AFPVOL_UNIX_PRIV (1 << 17)
152#define AFPVOL_NODEV (1 << 18)
156#define AFPVOL_EILSEQ (1 << 20)
158#define AFPVOL_INV_DOTS (1 << 22)
159#define AFPVOL_TM (1 << 23)
160#define AFPVOL_ACLS (1 << 24)
161#define AFPVOL_SEARCHDB (1 << 25)
162#define AFPVOL_NONETIDS (1 << 26)
163#define AFPVOL_FOLLOWSYM (1 << 27)
164#define AFPVOL_DELVETO (1 << 28)
165
166/* Extended Attributes vfs indirection */
167#define AFPVOL_EA_NONE 0
168#define AFPVOL_EA_AUTO 1
169#define AFPVOL_EA_SYS 2
170#define AFPVOL_EA_AD 3
171
172/* FPGetSrvrParms options */
173#define AFPSRVR_CONFIGINFO (1 << 0)
174#define AFPSRVR_PASSWD (1 << 7)
175
176/* handle casefolding */
177#define AFPVOL_MTOUUPPER (1 << 0)
178#define AFPVOL_MTOULOWER (1 << 1)
179#define AFPVOL_UTOMUPPER (1 << 2)
180#define AFPVOL_UTOMLOWER (1 << 3)
181#define AFPVOL_UMLOWER (AFPVOL_MTOULOWER | AFPVOL_UTOMLOWER)
182#define AFPVOL_UMUPPER (AFPVOL_MTOUUPPER | AFPVOL_UTOMUPPER)
183#define AFPVOL_UUPPERMLOWER (AFPVOL_MTOUUPPER | AFPVOL_UTOMLOWER)
184#define AFPVOL_ULOWERMUPPER (AFPVOL_MTOULOWER | AFPVOL_UTOMUPPER)
185#define AFPVOL_CASESENS (1 << 4)
186
187#define AFPVOLSIG_FLAT 0x0001
188#define AFPVOLSIG_FIX 0x0002
189#define AFPVOLSIG_VAR 0x0003
190#define AFPVOLSIG_DEFAULT AFPVOLSIG_FIX
191
192/* volume attributes */
193#define VOLPBIT_ATTR_RO (1 << 0)
194#define VOLPBIT_ATTR_PASSWD (1 << 1)
195#define VOLPBIT_ATTR_FILEID (1 << 2)
196#define VOLPBIT_ATTR_CATSEARCH (1 << 3)
197#define VOLPBIT_ATTR_BLANKACCESS (1 << 4)
198#define VOLPBIT_ATTR_UNIXPRIV (1 << 5)
199#define VOLPBIT_ATTR_UTF8 (1 << 6)
200#define VOLPBIT_ATTR_NONETIDS (1 << 7)
201#define VOLPBIT_ATTR_PRIVPARENT (1 << 8)
202#define VOLPBIT_ATTR_NOTFILEXCHG (1 << 9)
203#define VOLPBIT_ATTR_EXT_ATTRS (1 << 10)
204#define VOLPBIT_ATTR_ACLS (1 << 11)
205#define VOLPBIT_ATTR_CASESENS (1 << 12)
206#define VOLPBIT_ATTR_TM (1 << 13)
207
208#define VOLPBIT_ATTR 0
209#define VOLPBIT_SIG 1
210#define VOLPBIT_CDATE 2
211#define VOLPBIT_MDATE 3
212#define VOLPBIT_BDATE 4
213#define VOLPBIT_VID 5
214#define VOLPBIT_BFREE 6
215#define VOLPBIT_BTOTAL 7
216#define VOLPBIT_NAME 8
217/* handle > 4GB volumes */
218#define VOLPBIT_XBFREE 9
219#define VOLPBIT_XBTOTAL 10
220#define VOLPBIT_BSIZE 11
221
222#define utf8_encoding(obj) ((obj)->afp_version >= 30)
223
224#define vol_nodev(vol) (((vol)->v_flags & AFPVOL_NODEV) ? 1 : 0)
225#define vol_unix_priv_enabled(vol) (((vol)->v_flags & AFPVOL_UNIX_PRIV) ? 1 : 0)
226#define vol_unix_priv(vol) ((vol)->v_obj->afp_version >= 30 && vol_unix_priv_enabled(vol))
227#define vol_umask(vol) (vol_unix_priv_enabled(vol) ? (vol)->v_umask : 0)
228#define vol_dperm(vol) (vol_unix_priv_enabled(vol) ? (vol)->v_dperm : 0)
229#define vol_fperm(vol) (vol_unix_priv_enabled(vol) ? (vol)->v_fperm : 0)
230#define vol_inv_dots(vol) (((vol)->v_flags & AFPVOL_INV_DOTS) ? 1 : 0)
231#define vol_syml_opt(vol) (((vol)->v_flags & AFPVOL_FOLLOWSYM) ? 0 : O_NOFOLLOW)
232#define vol_chmod_opt(vol) (((vol)->v_flags & AFPVOL_CHMOD_PRESERVE_ACL) ? O_NETATALK_ACL : \
233 ((vol)->v_flags & AFPVOL_CHMOD_IGNORE) ? O_IGNORE : 0)
234
235#endif
#define ADEDLEN_PRIVSYN
Definition adouble.h:113
lv_flags_t
Definition include/atalk/volume.h:123
@ LV_DEFAULT
Definition include/atalk/volume.h:124
@ LV_ALL
Definition include/atalk/volume.h:125
@ LV_FORCE
Definition include/atalk/volume.h:126
uint64_t VolSpace
Definition include/atalk/volume.h:21
Definition globals.h:190
Definition cnid.h:84
Definition include/atalk/directory.h:72
Definition include/atalk/volume.h:27
char * em_ext
Definition include/atalk/volume.h:28
char em_type[4]
Definition include/atalk/volume.h:30
char em_creator[4]
Definition include/atalk/volume.h:29
Definition spotlight.h:118
Definition vfs.h:98
Definition include/atalk/volume.h:33
const struct sl_backend_ops * v_sl_backend
Definition include/atalk/volume.h:104
char * v_postexec
Definition include/atalk/volume.h:112
void * v_nfsclient
Definition include/atalk/volume.h:75
char * v_volcodepage
Definition include/atalk/volume.h:87
uint32_t v_kTextEncoding
Definition include/atalk/volume.h:46
ucs2_t * v_name
Definition include/atalk/volume.h:62
char * v_password
Definition include/atalk/volume.h:89
dev_t v_dev
Definition include/atalk/volume.h:66
uint16_t v_utom_flags
Definition include/atalk/volume.h:45
struct dir * v_root
Definition include/atalk/volume.h:39
ucs2_t * v_u8mname
Definition include/atalk/volume.h:60
uint16_t v_vid
Definition include/atalk/volume.h:36
time_t v_tm_cachetime
Definition include/atalk/volume.h:78
int v_flags
Definition include/atalk/volume.h:37
int v_ad_options
Definition include/atalk/volume.h:50
int v_adouble
Definition include/atalk/volume.h:49
AFPObj * v_obj
Definition include/atalk/volume.h:35
char * v_path
Definition include/atalk/volume.h:38
char * v_veto
Definition include/atalk/volume.h:48
charset_t v_volcharset
Definition include/atalk/volume.h:42
char * v_cnidport
Definition include/atalk/volume.h:93
VolSpace v_appended
Definition include/atalk/volume.h:80
VolSpace v_limitsize
Definition include/atalk/volume.h:54
int v_preexec_close
Definition include/atalk/volume.h:116
char * v_cnidserver
Definition include/atalk/volume.h:92
mode_t v_dperm
Definition include/atalk/volume.h:56
char * v_legacyicon
Definition include/atalk/volume.h:94
struct vfs_ops * vfs
Definition include/atalk/volume.h:69
size_t v_icon_rfork_len
Definition include/atalk/volume.h:96
char * v_maccodepage
Definition include/atalk/volume.h:88
int v_nfs
Definition include/atalk/volume.h:76
unsigned char * v_icon_rfork
Definition include/atalk/volume.h:95
const struct vfs_ops * vfs_modules[4]
Definition include/atalk/volume.h:70
char * v_localname
Definition include/atalk/volume.h:85
char * v_configname
Definition include/atalk/volume.h:84
ucs2_t * v_macname
Definition include/atalk/volume.h:61
mode_t v_fperm
Definition include/atalk/volume.h:58
char * v_sl_backend_name
Definition include/atalk/volume.h:103
charset_t v_maccharset
Definition include/atalk/volume.h:43
uint16_t v_mtou_flags
Definition include/atalk/volume.h:44
size_t max_filename
Definition include/atalk/volume.h:47
mode_t v_umask
Definition include/atalk/volume.h:55
VolSpace v_tm_used
Definition include/atalk/volume.h:77
char * v_preexec
Definition include/atalk/volume.h:108
char * v_gvs
Definition include/atalk/volume.h:74
char * v_cnidscheme
Definition include/atalk/volume.h:90
time_t v_mtime
Definition include/atalk/volume.h:40
time_t v_ctime
Definition include/atalk/volume.h:65
struct vol * v_next
Definition include/atalk/volume.h:34
int v_deleted
Definition include/atalk/volume.h:102
int v_vfs_ea
Definition include/atalk/volume.h:71
char * v_dbpath
Definition include/atalk/volume.h:91
char * v_uuid
Definition include/atalk/volume.h:117
struct _cnid_db * v_cdb
Definition include/atalk/volume.h:52
uint32_t v_ignattr
Definition include/atalk/volume.h:119
int v_qfd
Definition include/atalk/volume.h:118
int v_casefold
Definition include/atalk/volume.h:83
char v_stamp[ADEDLEN_PRIVSYN]
Definition include/atalk/volume.h:53
#define ucs2_t
Definition unicode.h:8
charset_t
Definition unicode.h:57