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 47#ifdef FORCE_UIDGID 48/* set up a structure for this */ 49typedef struct uidgidset_t { 50 uid_t uid; 51 gid_t gid; 52} uidgidset; 53#endif /* FORCE_UIDGID */ 54 55/* a couple of these options could get stuck in unions to save 56 * space. */ 57struct afp_volume_name { 58 time_t mtime; 59 char *name; 60 char *full_name; 61 int loaded; 62}; 63 64struct afp_options { 65 int connections, transports, tickleval, timeout, server_notif, flags, dircachesize; 66 int sleep; /* Maximum time allowed to sleep (in tickles) */ 67 int disconnected; /* Maximum time in disconnected state (in tickles) */ 68 unsigned int tcp_sndbuf, tcp_rcvbuf; 69 unsigned char passwdbits, passwdminlen, loginmaxfail; 70 u_int32_t server_quantum; 71 int dsireadbuf; /* scale factor for sizefof(dsi->buffer) = server_quantum * dsireadbuf */ 72 char hostname[MAXHOSTNAMELEN + 1], *server, *ipaddr, *port, *configfile; 73 struct at_addr ddpaddr; 74 char *uampath, *fqdn; 75 char *pidfile; 76 char *sigconffile; 77 char *uuidconf; 78 struct afp_volume_name defaultvol, systemvol, uservol; 79 int closevol; 80 81 char *guest, *loginmesg, *keyfile, *passwdfile; 82 char *uamlist; 83 char *authprintdir; 84 char *signatureopt; 85 unsigned char signature[16]; 86 char *k5service, *k5realm, *k5keytab; 87 char *unixcodepage,*maccodepage; 88 charset_t maccharset, unixcharset; 89 mode_t umask; 90 mode_t save_mask; 91#ifdef ADMIN_GRP 92 gid_t admingid; 93#endif /* ADMIN_GRP */ 94 int volnamelen; 95 96 /* default value for winbind authentication */ 97 char *ntdomain, *ntseparator; 98 char *logconfig; 99 100 char *mimicmodel; 101}; 102 103#define AFPOBJ_TMPSIZ (MAXPATHLEN) 104typedef struct _AFPObj { 105 int proto; 106 unsigned long servernum; 107 void *handle; /* either (DSI *) or (ASP *) */ 108 void *config; 109 struct afp_options options; 110 char *Obj, *Type, *Zone; 111 char username[MAXUSERLEN]; 112 void (*logout)(void), (*exit)(int); 113 int (*reply)(void *, int); 114 int (*attention)(void *, AFPUserBytes); 115 /* to prevent confusion, only use these in afp_* calls */ 116 char oldtmp[AFPOBJ_TMPSIZ + 1], newtmp[AFPOBJ_TMPSIZ + 1]; 117 void *uam_cookie; /* cookie for uams */ 118 struct session_info sinfo; 119 uid_t uid; /* client running user id */ 120 int ipc_fd; /* anonymous PF_UNIX socket for IPC with afpd parent */ 121#ifdef FORCE_UIDGID 122 int force_uid; 123 uidgidset uidgid; 124#endif 125} AFPObj; 126 127/* typedef for AFP functions handlers */ 128typedef int (*AFPCmd)(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen); 129 130/* afp_dsi.c */ 131extern AFPObj *AFPobj; 132 133extern int afp_version; 134extern int afp_errno; 135extern unsigned char nologin; 136extern struct dir *curdir; 137extern char getwdbuf[]; 138 139/* FIXME CNID */ 140extern const char *Cnid_srv; 141extern const char *Cnid_port; 142 143extern int get_afp_errno (const int param); 144extern void afp_options_init (struct afp_options *); 145extern int afp_options_parse (int, char **, struct afp_options *); 146extern int afp_options_parseline (char *, struct afp_options *); 147extern void afp_options_free (struct afp_options *, 148 const struct afp_options *); 149extern void setmessage (const char *); 150extern void readmessage (AFPObj *); 151 152/* gettok.c */ 153extern void initline (int, char *); 154extern int parseline (int, char *); 155 156/* afp_util.c */ 157extern const char *AfpNum2name (int ); 158extern const char *AfpErr2name(int err); 159 160/* directory.c */ 161extern struct dir rootParent; 162 163#ifndef NO_DDP 164extern void afp_over_asp (AFPObj *); 165#endif /* NO_DDP */ 166extern void afp_over_dsi (AFPObj *); 167 168#endif /* globals.h */ 169