netatalk
4.4.3
Free and Open Source Apple Filing Protocol (AFP) Server
Toggle main menu visibility
Loading...
Searching...
No Matches
globals.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 1990,1993 Regents of The University of Michigan.
3
* All Rights Reserved. See COPYRIGHT.
4
*/
5
6
#ifndef AFPD_GLOBALS_H
7
#define AFPD_GLOBALS_H 1
8
9
#include <grp.h>
10
#ifdef HAVE_INIPARSER_INIPARSER_H
11
#include <iniparser/iniparser.h>
12
#else
13
#include <iniparser.h>
14
#endif
15
#include <netdb.h>
16
#include <stdbool.h>
17
#include <sys/param.h>
18
#include <sys/types.h>
19
20
#include <
netatalk/at.h
>
21
#include <
atalk/afp.h
>
22
#include <
atalk/compat.h
>
23
#include <
atalk/uam.h
>
24
#include <
atalk/unicode.h
>
25
26
#ifdef WITH_DTRACE
27
#include <
atalk/afp_dtrace.h
>
28
#else
29
/* List of empty dtrace macros */
30
#define AFP_AFPFUNC_START(a,b)
31
#define AFP_AFPFUNC_DONE(a, b)
32
#define AFP_CNID_START(a)
33
#define AFP_CNID_DONE()
34
#define AFP_READ_START(a)
35
#define AFP_READ_DONE()
36
#define AFP_WRITE_START(a)
37
#define AFP_WRITE_DONE()
38
#endif
39
40
/* #define DOSFILELEN 12 */
/* Type1, DOS-compat*/
41
#define MACFILELEN 31
42
#define UTF8FILELEN_EARLY 255
43
/* #define UTF8FILELEN_NAME_MAX 765 */
/* Type3, 10.4.?- , getconf NAME_MAX */
44
/* #define UTF8FILELEN_SPEC 0xFFFF */
/* Type3, spec on document */
45
/* #define HFSPLUSFILELEN 510 */
/* HFS+ spec, 510byte = 255codepoint */
46
47
#define MAXUSERLEN 256
48
#define MAXOPTLEN 256
49
50
#define CNID_PATH_OVERHEAD 12
/* CNID protocol header size for path resolution */
51
#define CNID_MAX_PATH_LEN (CNID_PATH_OVERHEAD + MAXPATHLEN + 1)
/* Maximum path length for CNID operations */
52
53
#define DEFAULT_MAX_DIRCACHE_SIZE 8192
54
55
/* Directory cache validation settings */
56
#define DEFAULT_DIRCACHE_VALIDATION_FREQ 1
57
#define DEFAULT_DIRCACHE_METADATA_WINDOW 300
58
#define DEFAULT_DIRCACHE_METADATA_THRESHOLD 60
59
60
#define OPTION_DEBUG (1 << 0)
61
#define OPTION_CLOSEVOL (1 << 1)
62
#define OPTION_SERVERNOTIF (1 << 2)
63
#define OPTION_NOSENDFILE (1 << 3)
64
#define OPTION_VETOMSG (1 << 4)
65
#define OPTION_AFP_READ_LOCK (1 << 5)
66
#define OPTION_ANNOUNCESSH (1 << 6)
67
#define OPTION_UUID (1 << 7)
68
#define OPTION_ACL2MACCESS (1 << 8)
69
#define OPTION_NOZEROCONF (1 << 9)
70
#define OPTION_ACL2MODE (1 << 10)
71
#define OPTION_SHARE_RESERV (1 << 11)
72
#define OPTION_DBUS_AFPSTATS (1 << 12)
73
#define OPTION_SPOTLIGHT (1 << 13)
74
#define OPTION_SPOTLIGHT_VOL (1 << 14)
75
#define OPTION_RECVFILE (1 << 15)
76
#define OPTION_SPOTLIGHT_EXPR (1 << 16)
77
#define OPTION_DDP (1 << 17)
78
#define OPTION_VALID_SHELLCHECK (1 << 18)
79
80
#define PASSWD_NONE 0
81
#define PASSWD_SET (1 << 0)
82
#define PASSWD_NOSAVE (1 << 1)
83
#define PASSWD_ALL (PASSWD_SET | PASSWD_NOSAVE)
84
85
#define IS_AFP_SESSION(obj) (((obj)->dsi && (obj)->dsi->serversock == -1) || ((obj)->Type))
86
87
struct
DSI
;
88
89
#define AFPOBJ_TMPSIZ (MAXPATHLEN)
90
91
struct
afp_volume_name
{
92
time_t
mtime
;
93
int
loaded
;
94
};
95
96
struct
afp_options
{
97
int
connections
;
98
int
tickleval
;
99
int
timeout
;
100
int
flags
;
101
int
dircachesize
;
102
int
dircache_files
;
103
int
sleep
;
104
int
disconnected
;
105
int
fce_fmodwait
;
106
int
fce_sendwait
;
107
unsigned
int
tcp_sndbuf
,
tcp_rcvbuf
;
108
unsigned
char
passwdbits
,
passwdminlen
;
109
uint32_t
server_quantum
;
110
int
dsireadbuf
;
111
char
*
hostname
;
112
char
*
zone
;
113
#ifndef NO_DDP
114
struct
at_addr
ddpaddr
;
115
#endif
116
char
*
listen
, *
interfaces
, *
port
;
117
char
*
Cnid_srv
, *
Cnid_port
;
118
char
*
configfile
;
119
char
*
uampath
, *
fqdn
;
120
char
*
sigconffile
;
121
char
*
uuidconf
;
122
char
*
guest
, *
loginmesg
, *
keyfile
, *
passwdfile
, *
extmapfile
;
123
char
*
uamlist
;
124
char
*
signatureopt
;
125
unsigned
char
signature
[16];
126
char
*
k5service
, *
k5realm
, *
k5keytab
;
127
size_t
k5principal_buflen
;
128
char
*
k5principal
;
129
char
*
unixcodepage
, *
maccodepage
, *
volcodepage
;
130
charset_t
maccharset
,
unixcharset
;
131
mode_t
umask
;
132
mode_t
save_mask
;
133
gid_t
admingid
;
134
bool
force_user
;
135
uid_t
force_uid
;
136
bool
force_group
;
137
gid_t
force_gid
;
138
int
volnamelen
;
139
/* default value for winbind authentication */
140
char
*
ntdomain
, *
ntseparator
, *
addomain
;
141
char
*
logconfig
;
142
char
*
logfile
;
143
bool
log_us_timestamp
;
144
char
*
legacyicon
;
145
char
*
mimicmodel
;
146
char
*
servername
;
147
char
*
adminauthuser
;
148
char
*
ignored_attr
;
149
int
splice_size
;
150
char
*
cnid_mysql_host
;
151
char
*
cnid_mysql_user
;
152
char
*
cnid_mysql_pw
;
153
char
*
cnid_mysql_db
;
154
struct
afp_volume_name
volfile
;
155
uint64_t
sparql_limit
;
156
};
157
158
typedef
struct
AFPObj
{
159
char
*
cmdlineconfigfile
;
160
int
cmdlineflags
;
161
int
proto
;
162
const
void
*
signature
;
163
struct
DSI
*
dsi
;
164
void
*
handle
;
165
#ifndef NO_DDP
166
int
fd
;
167
int
statuslen
;
168
char
aspstatus
[1400];
169
#endif
/* NO_DDP */
170
struct
afp_options
options
;
171
char
*
Obj
, *
Type
, *
Zone
;
172
dictionary *
iniconfig
;
173
char
username
[
MAXUSERLEN
];
174
/* to prevent confusion, only use these in afp_* calls */
175
char
oldtmp
[
AFPOBJ_TMPSIZ
+ 1],
newtmp
[
AFPOBJ_TMPSIZ
+ 1];
176
void
*
uam_cookie
;
177
struct
session_info
sinfo
;
178
uid_t
uid
;
179
uid_t
euid
;
180
int
ipc_fd
;
181
gid_t *
groups
;
182
int
ngroups
;
183
int
afp_version
;
184
int
cnx_cnt
,
cnx_max
;
185
/* Functions */
186
void (*
logout
)(void);
187
void (*
exit
)(int);
188
int (*
reply
)(
void
*, int);
189
int (*
attention
)(
void
*,
AFPUserBytes
);
190
int
fce_version
;
191
char
*
fce_ign_names
;
192
char
*
fce_ign_directories
;
193
char
*
fce_notify_script
;
194
struct
sl_ctx
*
sl_ctx
;
195
}
AFPObj
;
196
198
typedef
int (*
AFPCmd
)(
AFPObj
*
obj
,
char
*ibuf,
size_t
ibuflen,
char
*
rbuf
,
199
size_t
*
rbuflen
);
200
201
/* Global variables */
202
extern
AFPObj
*
AFPobj
;
203
extern
int
afp_version
;
204
extern
int
afp_errno
;
205
extern
unsigned
char
nologin
;
206
extern
struct
dir
*
curdir
;
207
extern
char
getwdbuf
[];
208
extern
struct
afp_options
default_options
;
209
extern
const
char
*
Cnid_srv
;
210
extern
const
char
*
Cnid_port
;
211
212
extern
int
get_afp_errno
(
const
int
param
);
213
extern
void
afp_options_init
(
struct
afp_options
*);
214
extern
void
afp_options_parse_cmdline
(
AFPObj
*
obj
,
int
ac,
char
**av);
215
extern
int
setmessage
(
const
char
*);
216
extern
void
readmessage
(
AFPObj
*);
217
218
#ifndef NO_DDP
219
extern
void
afp_over_asp
(
AFPObj
*);
220
#endif
/* NO_DDP */
221
extern
void
afp_over_dsi
(
AFPObj
*);
222
extern
void
afp_over_dsi_sighandlers
(
AFPObj
*
obj
);
223
#endif
/* globals.h */
afp.h
AFPUserBytes
uint16_t AFPUserBytes
Definition
afp.h:30
AFPobj
AFPObj * AFPobj
Definition
afp_dsi.c:66
afp_dtrace.h
rbuflen
static size_t rbuflen
Definition
afpfunc_helpers.c:45
rbuf
static char rbuf[rbufsize]
Definition
afpfunc_helpers.c:44
at.h
compat.h
curdir
struct dir * curdir
Definition
directory.c:68
afp_errno
int afp_errno
Definition
directory.c:60
nologin
unsigned char nologin
Definition
etc/afpd/main.c:46
default_options
struct afp_options default_options
setmessage
int setmessage(const char *)
Copy AFP message to message buffer.
Definition
messages.c:37
MAXUSERLEN
#define MAXUSERLEN
Definition
globals.h:47
AFPCmd
int(* AFPCmd)(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
Definition
globals.h:198
AFPOBJ_TMPSIZ
#define AFPOBJ_TMPSIZ
Definition
globals.h:89
get_afp_errno
int get_afp_errno(const int param)
Definition
directory.c:473
readmessage
void readmessage(AFPObj *)
Definition
messages.c:47
afp_options_parse_cmdline
void afp_options_parse_cmdline(AFPObj *obj, int ac, char **av)
Definition
afp_options.c:178
afp_options_init
void afp_options_init(struct afp_options *)
afp_over_dsi
void afp_over_dsi(AFPObj *)
Definition
afp_dsi.c:492
afp_version
int afp_version
Cnid_port
const char * Cnid_port
Cnid_srv
const char * Cnid_srv
afp_over_dsi_sighandlers
void afp_over_dsi_sighandlers(AFPObj *obj)
Definition
afp_dsi.c:402
getwdbuf
char getwdbuf[]
afp_over_asp
void afp_over_asp(AFPObj *)
Definition
afp_asp.c:150
obj
static AFPObj obj
Definition
netatalk.c:62
AFPObj
Definition
globals.h:158
AFPObj::aspstatus
char aspstatus[1400]
Definition
globals.h:168
AFPObj::Type
char * Type
Definition
globals.h:171
AFPObj::fd
int fd
Definition
globals.h:166
AFPObj::exit
void(* exit)(int)
Definition
globals.h:187
AFPObj::newtmp
char newtmp[AFPOBJ_TMPSIZ+1]
Definition
globals.h:175
AFPObj::Zone
char * Zone
Definition
globals.h:171
AFPObj::fce_version
int fce_version
Definition
globals.h:190
AFPObj::reply
int(* reply)(void *, int)
Definition
globals.h:188
AFPObj::fce_ign_directories
char * fce_ign_directories
Definition
globals.h:192
AFPObj::ngroups
int ngroups
Definition
globals.h:182
AFPObj::uid
uid_t uid
Definition
globals.h:178
AFPObj::cnx_max
int cnx_max
Definition
globals.h:184
AFPObj::fce_notify_script
char * fce_notify_script
Definition
globals.h:193
AFPObj::sinfo
struct session_info sinfo
Definition
globals.h:177
AFPObj::cmdlineconfigfile
char * cmdlineconfigfile
Definition
globals.h:159
AFPObj::statuslen
int statuslen
Definition
globals.h:167
AFPObj::oldtmp
char oldtmp[AFPOBJ_TMPSIZ+1]
Definition
globals.h:175
AFPObj::signature
const void * signature
Definition
globals.h:162
AFPObj::options
struct afp_options options
Definition
globals.h:170
AFPObj::username
char username[MAXUSERLEN]
Definition
globals.h:173
AFPObj::Obj
char * Obj
Definition
globals.h:171
AFPObj::uam_cookie
void * uam_cookie
Definition
globals.h:176
AFPObj::logout
void(* logout)(void)
Definition
globals.h:186
AFPObj::fce_ign_names
char * fce_ign_names
Definition
globals.h:191
AFPObj::euid
uid_t euid
Definition
globals.h:179
AFPObj::cnx_cnt
int cnx_cnt
Definition
globals.h:184
AFPObj::cmdlineflags
int cmdlineflags
Definition
globals.h:160
AFPObj::ipc_fd
int ipc_fd
Definition
globals.h:180
AFPObj::afp_version
int afp_version
Definition
globals.h:183
AFPObj::groups
gid_t * groups
Definition
globals.h:181
AFPObj::handle
void * handle
Definition
globals.h:164
AFPObj::iniconfig
dictionary * iniconfig
Definition
globals.h:172
AFPObj::dsi
struct DSI * dsi
Definition
globals.h:163
AFPObj::sl_ctx
struct sl_ctx * sl_ctx
Definition
globals.h:194
AFPObj::proto
int proto
Definition
globals.h:161
AFPObj::attention
int(* attention)(void *, AFPUserBytes)
Definition
globals.h:189
DSI
Definition
include/atalk/dsi.h:58
afp_options
Definition
globals.h:96
afp_options::tcp_sndbuf
unsigned int tcp_sndbuf
Definition
globals.h:107
afp_options::maccharset
charset_t maccharset
Definition
globals.h:130
afp_options::force_uid
uid_t force_uid
Definition
globals.h:135
afp_options::logconfig
char * logconfig
Definition
globals.h:141
afp_options::signature
unsigned char signature[16]
Definition
globals.h:125
afp_options::configfile
char * configfile
Definition
globals.h:118
afp_options::uampath
char * uampath
Definition
globals.h:119
afp_options::guest
char * guest
Definition
globals.h:122
afp_options::force_gid
gid_t force_gid
Definition
globals.h:137
afp_options::signatureopt
char * signatureopt
Definition
globals.h:124
afp_options::cnid_mysql_db
char * cnid_mysql_db
Definition
globals.h:153
afp_options::fqdn
char * fqdn
Definition
globals.h:119
afp_options::zone
char * zone
Definition
globals.h:112
afp_options::volfile
struct afp_volume_name volfile
Definition
globals.h:154
afp_options::logfile
char * logfile
Definition
globals.h:142
afp_options::uuidconf
char * uuidconf
Definition
globals.h:121
afp_options::disconnected
int disconnected
Definition
globals.h:104
afp_options::admingid
gid_t admingid
Definition
globals.h:133
afp_options::volnamelen
int volnamelen
Definition
globals.h:138
afp_options::Cnid_srv
char * Cnid_srv
Definition
globals.h:117
afp_options::log_us_timestamp
bool log_us_timestamp
Definition
globals.h:143
afp_options::servername
char * servername
Definition
globals.h:146
afp_options::cnid_mysql_host
char * cnid_mysql_host
Definition
globals.h:150
afp_options::tickleval
int tickleval
Definition
globals.h:98
afp_options::sleep
int sleep
Definition
globals.h:103
afp_options::k5keytab
char * k5keytab
Definition
globals.h:126
afp_options::hostname
char * hostname
Definition
globals.h:111
afp_options::addomain
char * addomain
Definition
globals.h:140
afp_options::passwdminlen
unsigned char passwdminlen
Definition
globals.h:108
afp_options::force_user
bool force_user
Definition
globals.h:134
afp_options::extmapfile
char * extmapfile
Definition
globals.h:122
afp_options::listen
char * listen
Definition
globals.h:116
afp_options::timeout
int timeout
Definition
globals.h:99
afp_options::sigconffile
char * sigconffile
Definition
globals.h:120
afp_options::fce_fmodwait
int fce_fmodwait
Definition
globals.h:105
afp_options::Cnid_port
char * Cnid_port
Definition
globals.h:117
afp_options::flags
int flags
Definition
globals.h:100
afp_options::port
char * port
Definition
globals.h:116
afp_options::k5principal_buflen
size_t k5principal_buflen
Definition
globals.h:127
afp_options::cnid_mysql_pw
char * cnid_mysql_pw
Definition
globals.h:152
afp_options::dsireadbuf
int dsireadbuf
Definition
globals.h:110
afp_options::dircachesize
int dircachesize
Definition
globals.h:101
afp_options::k5service
char * k5service
Definition
globals.h:126
afp_options::unixcharset
charset_t unixcharset
Definition
globals.h:130
afp_options::dircache_files
int dircache_files
Definition
globals.h:102
afp_options::ddpaddr
struct at_addr ddpaddr
Definition
globals.h:114
afp_options::cnid_mysql_user
char * cnid_mysql_user
Definition
globals.h:151
afp_options::force_group
bool force_group
Definition
globals.h:136
afp_options::connections
int connections
Definition
globals.h:97
afp_options::keyfile
char * keyfile
Definition
globals.h:122
afp_options::umask
mode_t umask
Definition
globals.h:131
afp_options::k5principal
char * k5principal
Definition
globals.h:128
afp_options::volcodepage
char * volcodepage
Definition
globals.h:129
afp_options::maccodepage
char * maccodepage
Definition
globals.h:129
afp_options::legacyicon
char * legacyicon
Definition
globals.h:144
afp_options::fce_sendwait
int fce_sendwait
Definition
globals.h:106
afp_options::mimicmodel
char * mimicmodel
Definition
globals.h:145
afp_options::uamlist
char * uamlist
Definition
globals.h:123
afp_options::loginmesg
char * loginmesg
Definition
globals.h:122
afp_options::server_quantum
uint32_t server_quantum
Definition
globals.h:109
afp_options::passwdbits
unsigned char passwdbits
Definition
globals.h:108
afp_options::sparql_limit
uint64_t sparql_limit
Definition
globals.h:155
afp_options::ignored_attr
char * ignored_attr
Definition
globals.h:148
afp_options::passwdfile
char * passwdfile
Definition
globals.h:122
afp_options::unixcodepage
char * unixcodepage
Definition
globals.h:129
afp_options::ntdomain
char * ntdomain
Definition
globals.h:140
afp_options::k5realm
char * k5realm
Definition
globals.h:126
afp_options::adminauthuser
char * adminauthuser
Definition
globals.h:147
afp_options::ntseparator
char * ntseparator
Definition
globals.h:140
afp_options::tcp_rcvbuf
unsigned int tcp_rcvbuf
Definition
globals.h:107
afp_options::splice_size
int splice_size
Definition
globals.h:149
afp_options::save_mask
mode_t save_mask
Definition
globals.h:132
afp_options::interfaces
char * interfaces
Definition
globals.h:116
afp_volume_name
Definition
globals.h:91
afp_volume_name::loaded
int loaded
Definition
globals.h:93
afp_volume_name::mtime
time_t mtime
Definition
globals.h:92
at_addr
Definition
at.h:68
dir
Definition
include/atalk/directory.h:55
param
Definition
config.c:56
session_info
Definition
uam.h:69
uam.h
unicode.h
charset_t
charset_t
Definition
unicode.h:57
include
atalk
globals.h
Generated by
1.17.0