netatalk  4.6.0
Free and Open Source Apple Filing Protocol (AFP) Server
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_DIRCACHE_SIZE 65536
54
55/* Directory cache validation settings */
56#define DEFAULT_DIRCACHE_VALIDATION_FREQ 100
57#define DIRCACHE_VALIDATION_FREQ_MIN 1
58#define DIRCACHE_VALIDATION_FREQ_MAX 100
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_STRICT_LOCKING (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_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
87struct DSI;
88
89#define AFPOBJ_TMPSIZ (MAXPATHLEN)
90
92 time_t mtime;
93 int loaded;
94};
95
96/* Tier 2: Resource Fork data cache hard caps (in KB) */
97#define RFORK_BUDGET_MAX_KB (10 * 1024 * 1024)
98#define RFORK_ENTRY_MAX_KB (10 * 1024)
99
100/*
101 * Default 'spotlight results limit': the number of results any search
102 * backend returns for one query when the option is unset. 0 removes the
103 * limit for every backend.
104 *
105 * A nonzero value below the minimum is raised to it: the CNID search
106 * pagination batch is 100 entries, so a smaller limit buys nothing and
107 * costs a search that cannot fill one batch per term.
108 */
109#define SPOTLIGHT_RESULTS_LIMIT_DEFAULT 10000
110#define SPOTLIGHT_RESULTS_LIMIT_MIN 100
111
112/*
113 * Upper bound on a nonzero limit. Keeps the value clear of the 32-bit
114 * match counts the Xapian API uses, and bounds what one CNID query can
115 * allocate: 16M CNIDs is 64 MB. Use 0 for unlimited instead.
116 */
117#define SPOTLIGHT_RESULTS_LIMIT_MAX 16000000
118
123 int flags;
132 int sleep;
134#ifdef WITH_FCE
135 int fce_fmodwait;
136 int fce_sendwait;
137#endif /* WITH_FCE */
138 unsigned int tcp_sndbuf, tcp_rcvbuf;
139 unsigned char passwdbits, passwdminlen;
142 char *hostname;
143 char *zone;
144#ifndef NO_DDP
146#endif
150 char *uampath, *fqdn;
152 char *uuidconf;
154 char *uamlist;
156 unsigned char signature[16];
162 mode_t umask;
163 mode_t save_mask;
164 gid_t admingid;
172 /* default value for winbind authentication */
175 char *logfile;
188};
189
190typedef struct AFPObj {
193 int proto;
194 const void *signature;
195 struct DSI *dsi;
196 void *handle;
197#ifndef NO_DDP
198 int fd;
200 char aspstatus[1400];
201#endif /* NO_DDP */
203 char *Obj, *Type, *Zone;
204 dictionary *iniconfig;
206 /* to prevent confusion, only use these in afp_* calls */
210 uid_t uid;
211 uid_t euid;
212 pid_t pid;
213 int ipc_fd;
215 gid_t *groups;
219 /* Functions */
220 void (*logout)(void);
221 void (*exit)(int);
222 int (*reply)(void *, int);
223 int (*attention)(void *, AFPUserBytes);
224#ifdef WITH_FCE
225 int fce_version;
226 char *fce_ign_names;
227 char *fce_ign_directories;
228 char *fce_notify_script;
229#endif /* WITH_FCE */
230 void *sl_ctx;
232
234typedef int (*AFPCmd)(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,
235 size_t *rbuflen);
236
237/* Global variables */
238extern AFPObj *AFPobj;
239extern int afp_version;
240extern int afp_errno;
241extern unsigned char nologin;
242extern struct dir *curdir;
243extern char getwdbuf[];
244extern struct afp_options default_options;
245extern const char *Cnid_srv;
246extern const char *Cnid_port;
247
248extern int get_afp_errno(const int param);
249extern void afp_options_init(struct afp_options *);
250extern void afp_options_parse_cmdline(AFPObj *obj, int ac, char **av);
251extern int setmessage(const char *);
252extern void readmessage(AFPObj *);
253
254#ifndef NO_DDP
255extern void afp_over_asp(AFPObj *);
256#endif /* NO_DDP */
257extern void afp_over_dsi(AFPObj *);
258extern void afp_over_dsi_sighandlers(AFPObj *obj);
259#endif /* globals.h */
uint16_t AFPUserBytes
Definition afp.h:30
void afp_over_asp(AFPObj *obj)
Definition afp_asp.c:240
AFPObj * AFPobj
Definition afp_dsi.c:71
void afp_over_dsi_sighandlers(AFPObj *obj)
Definition afp_dsi.c:572
void afp_over_dsi(AFPObj *obj)
Definition afp_dsi.c:662
void afp_options_parse_cmdline(AFPObj *obj, int ac, char **av)
Definition afp_options.c:189
struct dir * curdir
Definition directory.c:83
int afp_errno
Definition directory.c:71
int get_afp_errno(const int param)
Definition directory.c:494
unsigned char nologin
Definition etc/afpd/main.c:47
struct afp_options default_options
#define MAXUSERLEN
Definition globals.h:47
#define AFPOBJ_TMPSIZ
Definition globals.h:89
int(*) AFPCmd(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
Definition globals.h:234
void afp_options_init(struct afp_options *)
int afp_version
const char * Cnid_port
const char * Cnid_srv
char getwdbuf[]
void readmessage(AFPObj *obj)
Definition messages.c:48
int setmessage(const char *message)
Copy AFP message to message buffer.
Definition messages.c:38
Definition globals.h:190
char aspstatus[1400]
Definition globals.h:200
char * Type
Definition globals.h:203
int fd
Definition globals.h:198
char newtmp[AFPOBJ_TMPSIZ+1]
Definition globals.h:207
void(*) logout(void)
Definition globals.h:220
char * Zone
Definition globals.h:203
pid_t pid
Definition globals.h:212
int(*) attention(void *, AFPUserBytes)
Definition globals.h:223
int ngroups
Definition globals.h:216
uid_t uid
Definition globals.h:210
int cnx_max
Definition globals.h:218
struct session_info sinfo
Definition globals.h:209
char * cmdlineconfigfile
Definition globals.h:191
int statuslen
Definition globals.h:199
int hint_fd
Definition globals.h:214
char oldtmp[AFPOBJ_TMPSIZ+1]
Definition globals.h:207
int(*) reply(void *, int)
Definition globals.h:222
const void * signature
Definition globals.h:194
struct afp_options options
Definition globals.h:202
char username[MAXUSERLEN]
Definition globals.h:205
char * Obj
Definition globals.h:203
void * sl_ctx
Definition globals.h:230
void * uam_cookie
Definition globals.h:208
void(*) exit(int)
Definition globals.h:221
uid_t euid
Definition globals.h:211
int cnx_cnt
Definition globals.h:218
int cmdlineflags
Definition globals.h:192
int ipc_fd
Definition globals.h:213
int afp_version
Definition globals.h:217
gid_t * groups
Definition globals.h:215
void * handle
Definition globals.h:196
dictionary * iniconfig
Definition globals.h:204
struct DSI * dsi
Definition globals.h:195
int proto
Definition globals.h:193
Definition include/atalk/dsi.h:58
Definition globals.h:119
unsigned int tcp_sndbuf
Definition globals.h:138
charset_t maccharset
Definition globals.h:161
int dircache_validation_freq
Definition globals.h:126
uid_t force_uid
Definition globals.h:168
char * logconfig
Definition globals.h:174
unsigned char signature[16]
Definition globals.h:156
char * configfile
Definition globals.h:149
int dircache_mode
Definition globals.h:125
int dircache_validation_freq_explicit
Definition globals.h:130
char * uampath
Definition globals.h:150
char * guest
Definition globals.h:153
gid_t force_gid
Definition globals.h:170
char * signatureopt
Definition globals.h:155
char * cnid_mysql_db
Definition globals.h:185
bool afpstats_group
Definition globals.h:165
char * fqdn
Definition globals.h:150
char * zone
Definition globals.h:143
struct afp_volume_name volfile
Definition globals.h:186
char * logfile
Definition globals.h:175
char * uuidconf
Definition globals.h:152
int disconnected
Definition globals.h:133
gid_t admingid
Definition globals.h:164
int volnamelen
Definition globals.h:171
char * Cnid_srv
Definition globals.h:148
bool log_us_timestamp
Definition globals.h:176
char * servername
Definition globals.h:179
char * cnid_mysql_host
Definition globals.h:182
int tickleval
Definition globals.h:121
int sleep
Definition globals.h:132
char * k5keytab
Definition globals.h:157
char * hostname
Definition globals.h:142
char * addomain
Definition globals.h:173
unsigned char passwdminlen
Definition globals.h:139
bool force_user
Definition globals.h:167
char * extmapfile
Definition globals.h:153
char * listen
Definition globals.h:147
int timeout
Definition globals.h:122
char * sigconffile
Definition globals.h:151
char * Cnid_port
Definition globals.h:148
int flags
Definition globals.h:123
char * port
Definition globals.h:147
size_t k5principal_buflen
Definition globals.h:158
int dircache_rfork_budget
Definition globals.h:127
char * cnid_mysql_pw
Definition globals.h:184
int dsireadbuf
Definition globals.h:141
int dircachesize
Definition globals.h:124
char * k5service
Definition globals.h:157
gid_t afpstats_gid
Definition globals.h:166
charset_t unixcharset
Definition globals.h:161
struct at_addr ddpaddr
Definition globals.h:145
char * cnid_mysql_user
Definition globals.h:183
bool force_group
Definition globals.h:169
int connections
Definition globals.h:120
char * keyfile
Definition globals.h:153
mode_t umask
Definition globals.h:162
char * k5principal
Definition globals.h:159
char * volcodepage
Definition globals.h:160
char * maccodepage
Definition globals.h:160
char * legacyicon
Definition globals.h:177
int dircache_rfork_budget_explicit
Definition globals.h:131
char * mimicmodel
Definition globals.h:178
char * uamlist
Definition globals.h:154
char * loginmesg
Definition globals.h:153
uint32_t server_quantum
Definition globals.h:140
unsigned char passwdbits
Definition globals.h:139
int strict_locking_explicit
Definition globals.h:129
char * srpverifierpath
Definition globals.h:153
char * ignored_attr
Definition globals.h:180
char * passwdfile
Definition globals.h:153
char * unixcodepage
Definition globals.h:160
char * ntdomain
Definition globals.h:173
char * k5realm
Definition globals.h:157
uint64_t spotlight_results_limit
Definition globals.h:187
int dircache_rfork_maxentry
Definition globals.h:128
char * ntseparator
Definition globals.h:173
unsigned int tcp_rcvbuf
Definition globals.h:138
int splice_size
Definition globals.h:181
mode_t save_mask
Definition globals.h:163
char * interfaces
Definition globals.h:147
Definition globals.h:91
int loaded
Definition globals.h:93
time_t mtime
Definition globals.h:92
Definition at.h:68
Definition include/atalk/directory.h:72
Definition config.c:56
Definition uam.h:70
charset_t
Definition unicode.h:57