netatalk  4.5.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_MAX_DIRCACHE_SIZE 8192
54
55/* Directory cache validation settings */
56#define DEFAULT_DIRCACHE_VALIDATION_FREQ 1
57
58#define OPTION_DEBUG (1 << 0)
59#define OPTION_CLOSEVOL (1 << 1)
60#define OPTION_SERVERNOTIF (1 << 2)
61#define OPTION_NOSENDFILE (1 << 3)
62#define OPTION_VETOMSG (1 << 4)
63#define OPTION_AFP_READ_LOCK (1 << 5)
64#define OPTION_ANNOUNCESSH (1 << 6)
65#define OPTION_UUID (1 << 7)
66#define OPTION_ACL2MACCESS (1 << 8)
67#define OPTION_NOZEROCONF (1 << 9)
68#define OPTION_ACL2MODE (1 << 10)
69#define OPTION_SHARE_RESERV (1 << 11)
70#define OPTION_AFPSTATS (1 << 12)
71#define OPTION_SPOTLIGHT (1 << 13)
72#define OPTION_SPOTLIGHT_VOL (1 << 14)
73#define OPTION_RECVFILE (1 << 15)
74#define OPTION_SPOTLIGHT_EXPR (1 << 16)
75#define OPTION_DDP (1 << 17)
76#define OPTION_VALID_SHELLCHECK (1 << 18)
77
78#define PASSWD_NONE 0
79#define PASSWD_SET (1 << 0)
80#define PASSWD_NOSAVE (1 << 1)
81#define PASSWD_ALL (PASSWD_SET | PASSWD_NOSAVE)
82
83#define IS_AFP_SESSION(obj) (((obj)->dsi && (obj)->dsi->serversock == -1) || ((obj)->Type))
84
85struct DSI;
86
87#define AFPOBJ_TMPSIZ (MAXPATHLEN)
88
90 time_t mtime;
91 int loaded;
92};
93
94/* Tier 2: Resource Fork data cache hard caps (in KB) */
95#define RFORK_BUDGET_MAX_KB (10 * 1024 * 1024)
96#define RFORK_ENTRY_MAX_KB (10 * 1024)
97
102 int flags;
108 int sleep;
110#ifdef WITH_FCE
111 int fce_fmodwait;
112 int fce_sendwait;
113#endif /* WITH_FCE */
114 unsigned int tcp_sndbuf, tcp_rcvbuf;
115 unsigned char passwdbits, passwdminlen;
118 char *hostname;
119 char *zone;
120#ifndef NO_DDP
122#endif
126 char *uampath, *fqdn;
128 char *uuidconf;
130 char *uamlist;
132 unsigned char signature[16];
138 mode_t umask;
139 mode_t save_mask;
140 gid_t admingid;
148 /* default value for winbind authentication */
151 char *logfile;
163 uint64_t sparql_limit;
164};
165
166typedef struct AFPObj {
169 int proto;
170 const void *signature;
171 struct DSI *dsi;
172 void *handle;
173#ifndef NO_DDP
174 int fd;
176 char aspstatus[1400];
177#endif /* NO_DDP */
179 char *Obj, *Type, *Zone;
180 dictionary *iniconfig;
182 /* to prevent confusion, only use these in afp_* calls */
186 uid_t uid;
187 uid_t euid;
188 pid_t pid;
189 int ipc_fd;
191 gid_t *groups;
195 /* Functions */
196 void (*logout)(void);
197 void (*exit)(int);
198 int (*reply)(void *, int);
199 int (*attention)(void *, AFPUserBytes);
200#ifdef WITH_FCE
201 int fce_version;
202 char *fce_ign_names;
203 char *fce_ign_directories;
204 char *fce_notify_script;
205#endif /* WITH_FCE */
206 void *sl_ctx;
208
210typedef int (*AFPCmd)(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,
211 size_t *rbuflen);
212
213/* Global variables */
214extern AFPObj *AFPobj;
215extern int afp_version;
216extern int afp_errno;
217extern unsigned char nologin;
218extern struct dir *curdir;
219extern char getwdbuf[];
220extern struct afp_options default_options;
221extern const char *Cnid_srv;
222extern const char *Cnid_port;
223
224extern int get_afp_errno(const int param);
225extern void afp_options_init(struct afp_options *);
226extern void afp_options_parse_cmdline(AFPObj *obj, int ac, char **av);
227extern int setmessage(const char *);
228extern void readmessage(AFPObj *);
229
230#ifndef NO_DDP
231extern void afp_over_asp(AFPObj *);
232#endif /* NO_DDP */
233extern void afp_over_dsi(AFPObj *);
235#endif /* globals.h */
uint16_t AFPUserBytes
Definition afp.h:30
AFPObj * AFPobj
Definition afp_dsi.c:70
static size_t rbuflen
Definition afpfunc_helpers.c:45
static char rbuf[rbufsize]
Definition afpfunc_helpers.c:44
struct dir * curdir
Definition directory.c:82
int afp_errno
Definition directory.c:70
unsigned char nologin
Definition etc/afpd/main.c:47
struct afp_options default_options
int setmessage(const char *)
Copy AFP message to message buffer.
Definition messages.c:37
#define MAXUSERLEN
Definition globals.h:47
int(* AFPCmd)(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
Definition globals.h:210
#define AFPOBJ_TMPSIZ
Definition globals.h:87
int get_afp_errno(const int param)
Definition directory.c:498
void readmessage(AFPObj *)
Definition messages.c:47
void afp_options_parse_cmdline(AFPObj *obj, int ac, char **av)
Definition afp_options.c:189
void afp_options_init(struct afp_options *)
void afp_over_dsi(AFPObj *)
Definition afp_dsi.c:703
int afp_version
const char * Cnid_port
const char * Cnid_srv
void afp_over_dsi_sighandlers(AFPObj *obj)
Definition afp_dsi.c:613
char getwdbuf[]
void afp_over_asp(AFPObj *)
Definition afp_asp.c:150
static AFPObj obj
Definition netatalk.c:69
Definition globals.h:166
char aspstatus[1400]
Definition globals.h:176
char * Type
Definition globals.h:179
int fd
Definition globals.h:174
void(* exit)(int)
Definition globals.h:197
char newtmp[AFPOBJ_TMPSIZ+1]
Definition globals.h:183
char * Zone
Definition globals.h:179
pid_t pid
Definition globals.h:188
int(* reply)(void *, int)
Definition globals.h:198
int ngroups
Definition globals.h:192
uid_t uid
Definition globals.h:186
int cnx_max
Definition globals.h:194
struct session_info sinfo
Definition globals.h:185
char * cmdlineconfigfile
Definition globals.h:167
int statuslen
Definition globals.h:175
int hint_fd
Definition globals.h:190
char oldtmp[AFPOBJ_TMPSIZ+1]
Definition globals.h:183
const void * signature
Definition globals.h:170
struct afp_options options
Definition globals.h:178
char username[MAXUSERLEN]
Definition globals.h:181
char * Obj
Definition globals.h:179
void * sl_ctx
Definition globals.h:206
void * uam_cookie
Definition globals.h:184
void(* logout)(void)
Definition globals.h:196
uid_t euid
Definition globals.h:187
int cnx_cnt
Definition globals.h:194
int cmdlineflags
Definition globals.h:168
int ipc_fd
Definition globals.h:189
int afp_version
Definition globals.h:193
gid_t * groups
Definition globals.h:191
void * handle
Definition globals.h:172
dictionary * iniconfig
Definition globals.h:180
struct DSI * dsi
Definition globals.h:171
int proto
Definition globals.h:169
int(* attention)(void *, AFPUserBytes)
Definition globals.h:199
Definition include/atalk/dsi.h:58
Definition globals.h:98
unsigned int tcp_sndbuf
Definition globals.h:114
charset_t maccharset
Definition globals.h:137
int dircache_validation_freq
Definition globals.h:105
uid_t force_uid
Definition globals.h:144
char * logconfig
Definition globals.h:150
unsigned char signature[16]
Definition globals.h:132
char * configfile
Definition globals.h:125
int dircache_mode
Definition globals.h:104
char * uampath
Definition globals.h:126
char * guest
Definition globals.h:129
gid_t force_gid
Definition globals.h:146
char * signatureopt
Definition globals.h:131
char * cnid_mysql_db
Definition globals.h:161
bool afpstats_group
Definition globals.h:141
char * fqdn
Definition globals.h:126
char * zone
Definition globals.h:119
struct afp_volume_name volfile
Definition globals.h:162
char * logfile
Definition globals.h:151
char * uuidconf
Definition globals.h:128
int disconnected
Definition globals.h:109
gid_t admingid
Definition globals.h:140
int volnamelen
Definition globals.h:147
char * Cnid_srv
Definition globals.h:124
bool log_us_timestamp
Definition globals.h:152
char * servername
Definition globals.h:155
char * cnid_mysql_host
Definition globals.h:158
int tickleval
Definition globals.h:100
int sleep
Definition globals.h:108
char * k5keytab
Definition globals.h:133
char * hostname
Definition globals.h:118
char * addomain
Definition globals.h:149
unsigned char passwdminlen
Definition globals.h:115
bool force_user
Definition globals.h:143
char * extmapfile
Definition globals.h:129
char * listen
Definition globals.h:123
int timeout
Definition globals.h:101
char * sigconffile
Definition globals.h:127
char * Cnid_port
Definition globals.h:124
int flags
Definition globals.h:102
char * port
Definition globals.h:123
size_t k5principal_buflen
Definition globals.h:134
int dircache_rfork_budget
Definition globals.h:106
char * cnid_mysql_pw
Definition globals.h:160
int dsireadbuf
Definition globals.h:117
int dircachesize
Definition globals.h:103
char * k5service
Definition globals.h:133
gid_t afpstats_gid
Definition globals.h:142
charset_t unixcharset
Definition globals.h:137
struct at_addr ddpaddr
Definition globals.h:121
char * cnid_mysql_user
Definition globals.h:159
bool force_group
Definition globals.h:145
int connections
Definition globals.h:99
char * keyfile
Definition globals.h:129
mode_t umask
Definition globals.h:138
char * k5principal
Definition globals.h:135
char * volcodepage
Definition globals.h:136
char * maccodepage
Definition globals.h:136
char * legacyicon
Definition globals.h:153
char * mimicmodel
Definition globals.h:154
char * uamlist
Definition globals.h:130
char * loginmesg
Definition globals.h:129
uint32_t server_quantum
Definition globals.h:116
unsigned char passwdbits
Definition globals.h:115
uint64_t sparql_limit
Definition globals.h:163
char * ignored_attr
Definition globals.h:156
char * passwdfile
Definition globals.h:129
char * unixcodepage
Definition globals.h:136
char * ntdomain
Definition globals.h:149
char * k5realm
Definition globals.h:133
int dircache_rfork_maxentry
Definition globals.h:107
char * ntseparator
Definition globals.h:149
unsigned int tcp_rcvbuf
Definition globals.h:114
char * srppasswdfile
Definition globals.h:129
int splice_size
Definition globals.h:157
mode_t save_mask
Definition globals.h:139
char * interfaces
Definition globals.h:123
Definition globals.h:89
int loaded
Definition globals.h:91
time_t mtime
Definition globals.h:90
Definition at.h:68
Definition include/atalk/directory.h:56
Definition config.c:56
Definition uam.h:70
charset_t
Definition unicode.h:57