netatalk  4.4.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/* This should belong in a file.h */
24struct extmap {
25 char *em_ext;
26 char em_creator[4];
27 char em_type[4];
28};
29
30struct vol {
31 struct vol *v_next;
33 uint16_t v_vid;
35 char *v_path;
36 struct dir *v_root;
37 time_t v_mtime;
38
41 uint16_t v_mtou_flags;
42 uint16_t v_utom_flags;
43 /* FIXME: should be a u_int32_t ? */
46 char *v_veto;
49 const char *(*ad_path)(const char *, int);
50 struct _cnid_db *v_cdb;
53 mode_t v_umask;
54 mode_t v_dperm;
56 mode_t v_fperm;
61
62 /* get/set volparams */
63 time_t v_ctime;
64 dev_t v_dev;
65
66 /* adouble VFS indirection */
67 struct vfs_ops *vfs;
68 const struct vfs_ops *vfs_modules[4];
70
71 /* misc */
72 char *v_gvs;
74 int v_nfs;
79
80 /* only when opening/closing volumes or in error */
89 char *v_dbpath;
92#if 0
93 int v_hide; /* new volume wait until old volume is closed */
94 int v_new; /* volume deleted but there's a new one
95 * with the same name */
96#endif
98#if 0
99 char *v_root_preexec;
100#endif
102#if 0
103 char *v_root_postexec;
104#endif
106#if 0
107 int v_root_preexec_close;
108#endif
110 char *v_uuid;
111 int v_qfd;
112 uint32_t v_ignattr;
113};
114
116typedef enum {
118 LV_ALL = 1,
120} lv_flags_t;
121
122/* volume flags */
123#define AFPVOL_OPEN (1<<0)
124
125/* flags for quota 0xxx0 */
126#define AFPVOL_GVSMASK (7<<2)
127#define AFPVOL_NONE (0<<2)
128#if 0
129/* Previously used for Andrew File System */
130#define AFPVOL_AFSGVS (1<<2)
131#endif
132#define AFPVOL_USTATFS (1<<3)
133#define AFPVOL_UQUOTA (1<<4)
134
135#define AFPVOL_NOV2TOEACONV (1 << 5)
136#define AFPVOL_SPOTLIGHT (1 << 6)
137#define AFPVOL_EA_SAMBA (1 << 7)
138#define AFPVOL_RO (1 << 8)
139#define AFPVOL_CHMOD_PRESERVE_ACL (1 << 9)
140#define AFPVOL_CHMOD_IGNORE (1 << 10)
141#define AFPVOL_FORCE_STICKY_XATTR (1 << 11)
142#define AFPVOL_LIMITSIZE (1 << 12)
143#define AFPVOL_A2VOL (1 << 13)
144#define AFPVOL_NOSTAT (1 << 16)
146#define AFPVOL_UNIX_PRIV (1 << 17)
147#define AFPVOL_NODEV (1 << 18)
151#define AFPVOL_EILSEQ (1 << 20)
153#define AFPVOL_INV_DOTS (1 << 22)
154#define AFPVOL_TM (1 << 23)
155#define AFPVOL_ACLS (1 << 24)
156#define AFPVOL_SEARCHDB (1 << 25)
157#define AFPVOL_NONETIDS (1 << 26)
158#define AFPVOL_FOLLOWSYM (1 << 27)
159#define AFPVOL_DELVETO (1 << 28)
160
161/* Extended Attributes vfs indirection */
162#define AFPVOL_EA_NONE 0
163#define AFPVOL_EA_AUTO 1
164#define AFPVOL_EA_SYS 2
165#define AFPVOL_EA_AD 3
166
167/* FPGetSrvrParms options */
168#define AFPSRVR_CONFIGINFO (1 << 0)
169#define AFPSRVR_PASSWD (1 << 7)
170
171/* handle casefolding */
172#define AFPVOL_MTOUUPPER (1 << 0)
173#define AFPVOL_MTOULOWER (1 << 1)
174#define AFPVOL_UTOMUPPER (1 << 2)
175#define AFPVOL_UTOMLOWER (1 << 3)
176#define AFPVOL_UMLOWER (AFPVOL_MTOULOWER | AFPVOL_UTOMLOWER)
177#define AFPVOL_UMUPPER (AFPVOL_MTOUUPPER | AFPVOL_UTOMUPPER)
178#define AFPVOL_UUPPERMLOWER (AFPVOL_MTOUUPPER | AFPVOL_UTOMLOWER)
179#define AFPVOL_ULOWERMUPPER (AFPVOL_MTOULOWER | AFPVOL_UTOMUPPER)
180#define AFPVOL_CASESENS (1 << 4)
181
182#define AFPVOLSIG_FLAT 0x0001
183#define AFPVOLSIG_FIX 0x0002
184#define AFPVOLSIG_VAR 0x0003
185#define AFPVOLSIG_DEFAULT AFPVOLSIG_FIX
186
187/* volume attributes */
188#define VOLPBIT_ATTR_RO (1 << 0)
189#define VOLPBIT_ATTR_PASSWD (1 << 1)
190#define VOLPBIT_ATTR_FILEID (1 << 2)
191#define VOLPBIT_ATTR_CATSEARCH (1 << 3)
192#define VOLPBIT_ATTR_BLANKACCESS (1 << 4)
193#define VOLPBIT_ATTR_UNIXPRIV (1 << 5)
194#define VOLPBIT_ATTR_UTF8 (1 << 6)
195#define VOLPBIT_ATTR_NONETIDS (1 << 7)
196#define VOLPBIT_ATTR_PRIVPARENT (1 << 8)
197#define VOLPBIT_ATTR_NOTFILEXCHG (1 << 9)
198#define VOLPBIT_ATTR_EXT_ATTRS (1 << 10)
199#define VOLPBIT_ATTR_ACLS (1 << 11)
200#define VOLPBIT_ATTR_CASESENS (1 << 12)
201#define VOLPBIT_ATTR_TM (1 << 13)
202
203#define VOLPBIT_ATTR 0
204#define VOLPBIT_SIG 1
205#define VOLPBIT_CDATE 2
206#define VOLPBIT_MDATE 3
207#define VOLPBIT_BDATE 4
208#define VOLPBIT_VID 5
209#define VOLPBIT_BFREE 6
210#define VOLPBIT_BTOTAL 7
211#define VOLPBIT_NAME 8
212/* handle > 4GB volumes */
213#define VOLPBIT_XBFREE 9
214#define VOLPBIT_XBTOTAL 10
215#define VOLPBIT_BSIZE 11
216
217#define utf8_encoding(obj) ((obj)->afp_version >= 30)
218
219#define vol_nodev(vol) (((vol)->v_flags & AFPVOL_NODEV) ? 1 : 0)
220#define vol_unix_priv(vol) ((vol)->v_obj->afp_version >= 30 && ((vol)->v_flags & AFPVOL_UNIX_PRIV))
221#define vol_inv_dots(vol) (((vol)->v_flags & AFPVOL_INV_DOTS) ? 1 : 0)
222#define vol_syml_opt(vol) (((vol)->v_flags & AFPVOL_FOLLOWSYM) ? 0 : O_NOFOLLOW)
223#define vol_chmod_opt(vol) (((vol)->v_flags & AFPVOL_CHMOD_PRESERVE_ACL) ? O_NETATALK_ACL : \
224 ((vol)->v_flags & AFPVOL_CHMOD_IGNORE) ? O_IGNORE : 0)
225
226#endif
#define ADEDLEN_PRIVSYN
Definition adouble.h:112
lv_flags_t
Definition include/atalk/volume.h:116
@ LV_DEFAULT
Definition include/atalk/volume.h:117
@ LV_ALL
Definition include/atalk/volume.h:118
@ LV_FORCE
Definition include/atalk/volume.h:119
uint64_t VolSpace
Definition include/atalk/volume.h:21
Definition cnid.h:55
Definition globals.h:154
Definition include/atalk/directory.h:56
Definition include/atalk/volume.h:24
char * em_ext
Definition include/atalk/volume.h:25
char em_type[4]
Definition include/atalk/volume.h:27
char em_creator[4]
Definition include/atalk/volume.h:26
Definition vfs.h:98
Definition include/atalk/volume.h:30
char * v_postexec
Definition include/atalk/volume.h:105
void * v_nfsclient
Definition include/atalk/volume.h:73
char * v_volcodepage
Definition include/atalk/volume.h:85
ucs2_t * v_name
Definition include/atalk/volume.h:60
char * v_password
Definition include/atalk/volume.h:87
dev_t v_dev
Definition include/atalk/volume.h:64
uint16_t v_utom_flags
Definition include/atalk/volume.h:42
struct dir * v_root
Definition include/atalk/volume.h:36
ucs2_t * v_u8mname
Definition include/atalk/volume.h:58
uint16_t v_vid
Definition include/atalk/volume.h:33
time_t v_tm_cachetime
Definition include/atalk/volume.h:76
int v_flags
Definition include/atalk/volume.h:34
int v_ad_options
Definition include/atalk/volume.h:48
int v_adouble
Definition include/atalk/volume.h:47
AFPObj * v_obj
Definition include/atalk/volume.h:32
char * v_path
Definition include/atalk/volume.h:35
char * v_veto
Definition include/atalk/volume.h:46
charset_t v_volcharset
Definition include/atalk/volume.h:39
char * v_cnidport
Definition include/atalk/volume.h:91
VolSpace v_appended
Definition include/atalk/volume.h:78
VolSpace v_limitsize
Definition include/atalk/volume.h:52
int v_preexec_close
Definition include/atalk/volume.h:109
char * v_cnidserver
Definition include/atalk/volume.h:90
mode_t v_dperm
Definition include/atalk/volume.h:54
struct vfs_ops * vfs
Definition include/atalk/volume.h:67
char * v_maccodepage
Definition include/atalk/volume.h:86
int v_nfs
Definition include/atalk/volume.h:74
const struct vfs_ops * vfs_modules[4]
Definition include/atalk/volume.h:68
char * v_localname
Definition include/atalk/volume.h:83
char * v_configname
Definition include/atalk/volume.h:82
ucs2_t * v_macname
Definition include/atalk/volume.h:59
mode_t v_fperm
Definition include/atalk/volume.h:56
charset_t v_maccharset
Definition include/atalk/volume.h:40
uint16_t v_mtou_flags
Definition include/atalk/volume.h:41
size_t max_filename
Definition include/atalk/volume.h:45
long v_kTextEncoding
Definition include/atalk/volume.h:44
mode_t v_umask
Definition include/atalk/volume.h:53
VolSpace v_tm_used
Definition include/atalk/volume.h:75
char * v_preexec
Definition include/atalk/volume.h:101
char * v_gvs
Definition include/atalk/volume.h:72
char * v_cnidscheme
Definition include/atalk/volume.h:88
time_t v_mtime
Definition include/atalk/volume.h:37
time_t v_ctime
Definition include/atalk/volume.h:63
struct vol * v_next
Definition include/atalk/volume.h:31
int v_deleted
Definition include/atalk/volume.h:97
int v_vfs_ea
Definition include/atalk/volume.h:69
char * v_dbpath
Definition include/atalk/volume.h:89
char * v_uuid
Definition include/atalk/volume.h:110
struct _cnid_db * v_cdb
Definition include/atalk/volume.h:50
uint32_t v_ignattr
Definition include/atalk/volume.h:112
int v_qfd
Definition include/atalk/volume.h:111
int v_casefold
Definition include/atalk/volume.h:81
char v_stamp[ADEDLEN_PRIVSYN]
Definition include/atalk/volume.h:51
#define ucs2_t
Definition unicode.h:8
charset_t
Definition unicode.h:57