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 <sys/param.h> 10#include <sys/cdefs.h> 11 12#ifdef ADMIN_GRP 13#include <grp.h> 14#include <sys/types.h> 15#endif /* ADMIN_GRP */ 16 17#ifdef HAVE_NETDB_H 18#include <netdb.h> /* this isn't header-protected under ultrix */ 19#endif /* HAVE_NETDB_H */ 20 21#include <netatalk/at.h> 22#include <atalk/afp.h> 23#include <atalk/compat.h> 24#include <atalk/unicode.h> 25#include <atalk/uam.h> 26 27/* #define DOSFILELEN 12 */ /* Type1, DOS-compat*/ 28#define MACFILELEN 31 /* Type2, HFS-compat */ 29#define UTF8FILELEN_EARLY 255 /* Type3, early Mac OS X 10.0-10.4.? */ 30/* #define UTF8FILELEN_NAME_MAX 765 */ /* Type3, 10.4.?- , getconf NAME_MAX */ 31/* #define UTF8FILELEN_SPEC 0xFFFF */ /* Type3, spec on document */ 32/* #define HFSPLUSFILELEN 510 */ /* HFS+ spec, 510byte = 255codepoint */ 33 34#define MAXUSERLEN 256 35 36#define OPTION_DEBUG (1 << 0) 37#define OPTION_USERVOLFIRST (1 << 1) 38#define OPTION_NOUSERVOL (1 << 2) 39#define OPTION_PROXY (1 << 3) 40#define OPTION_CUSTOMICON (1 << 4) 41#define OPTION_NOSLP (1 << 5) 42#define OPTION_ANNOUNCESSH (1 << 6) 43#define OPTION_UUID (1 << 7) 44#define OPTION_ACL2MACCESS (1 << 8) 45#define OPTION_NOZEROCONF (1 << 9) 46#define OPTION_KEEPSESSIONS (1 << 10) /* preserve sessions across master afpd restart with SIGQUIT */ 47 48#ifdef FORCE_UIDGID 49/* set up a structure for this */ 50typedef struct uidgidset_t { 51 uid_t uid; 52 gid_t gid; 53} uidgidset; 54#endif /* FORCE_UIDGID */ 55 56/* a couple of these options could get stuck in unions to save 57 * space. */ 58struct afp_volume_name { 59 time_t mtime; 60 char *name; 61 char *full_name; 62 int loaded; 63}; 64 65struct afp_options { 66 int connections, transports, tickleval, timeout, server_notif, flags, dircachesize; 67 int sleep; /* Maximum time allowed to sleep (in tickles) */ 68 int disconnected; /* Maximum time in disconnected state (in tickles) */ 69 int fce_fmodwait; /* number of seconds FCE file mod events are put on hold */ 70 unsigned int tcp_sndbuf, tcp_rcvbuf; 71 unsigned char passwdbits, passwdminlen, loginmaxfail; 72 u_int32_t server_quantum; 73 int dsireadbuf; /* scale factor for sizefof(dsi->buffer) = server_quantum * dsireadbuf */ 74 char hostname[MAXHOSTNAMELEN + 1], *server, *ipaddr, *port, *configfile; 75#ifndef NO_DDP 76 struct at_addr ddpaddr; 77#endif 78 char *uampath, *fqdn; 79 char *pidfile; 80 char *sigconffile; 81 char *uuidconf; 82 struct afp_volume_name defaultvol, systemvol, uservol; 83 int closevol; 84 85 char *guest, *loginmesg, *keyfile, *passwdfile; 86 char *uamlist; 87 char *authprintdir; 88 char *signatureopt; 89 unsigned char signature[16]; 90 char *k5service, *k5realm, *k5keytab; 91 char *unixcodepage,*maccodepage; 92 charset_t maccharset, unixcharset; 93 mode_t umask; 94 mode_t save_mask; 95#ifdef ADMIN_GRP 96 gid_t admingid; 97#endif /* ADMIN_GRP */ 98 int volnamelen; 99 100 /* default value for winbind authentication */ 101 char *ntdomain, *ntseparator; 102 char *logconfig; 103 104 char *mimicmodel; 105 char *adminauthuser; 106}; 107 108#define AFPOBJ_TMPSIZ (MAXPATHLEN) 109typedef struct _AFPObj { 110 int proto; 111 unsigned long servernum; 112 void *handle; /* either (DSI *) or (ASP *) */ 113 void *config; 114 struct afp_options options; 115 char *Obj, *Type, *Zone; 116 char username[MAXUSERLEN]; 117 void (*logout)(void), (*exit)(int); 118 int (*reply)(void *, int); 119 int (*attention)(void *, AFPUserBytes); 120 /* to prevent confusion, only use these in afp_* calls */ 121 char oldtmp[AFPOBJ_TMPSIZ + 1], newtmp[AFPOBJ_TMPSIZ + 1]; 122 void *uam_cookie; /* cookie for uams */ 123 struct session_info sinfo; 124 uid_t uid; /* client running user id */ 125 int ipc_fd; /* anonymous PF_UNIX socket for IPC with afpd parent */ 126#ifdef FORCE_UIDGID 127 int force_uid; 128 uidgidset uidgid; 129#endif 130} AFPObj; 131 132/* typedef for AFP functions handlers */ 133typedef int (*AFPCmd)(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen); 134 135/* Global variables */ 136extern AFPObj *AFPobj; 137extern int afp_version; 138extern int afp_errno; 139extern unsigned char nologin; 140extern struct dir *curdir; 141extern char getwdbuf[]; 142extern struct afp_options default_options; 143extern const char *Cnid_srv; 144extern const char *Cnid_port; 145 146extern int get_afp_errno (const int param); 147extern void afp_options_init (struct afp_options *); 148extern int afp_options_parse (int, char **, struct afp_options *); 149extern int afp_options_parseline (char *, struct afp_options *); 150extern void afp_options_free (struct afp_options *, 151 const struct afp_options *); 152extern void setmessage (const char *); 153extern void readmessage (AFPObj *); 154 155/* gettok.c */ 156extern void initline (int, char *); 157extern int parseline (int, char *); 158 159/* afp_util.c */ 160extern const char *AfpNum2name (int ); 161extern const char *AfpErr2name(int err); 162 163/* directory.c */ 164extern struct dir rootParent; 165 166#ifndef NO_DDP 167extern void afp_over_asp (AFPObj *); 168#endif /* NO_DDP */ 169extern void afp_over_dsi (AFPObj *); 170extern void afp_over_dsi_sighandlers(AFPObj *obj); 171#endif /* globals.h */ 172