From: Frank Lahm Date: Wed, 1 Jun 2011 11:57:44 +0000 (+0200) Subject: Merge sf.net X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e22bbf78a53bf739dd38383de42a23c95d43c15d;hp=-c;p=netatalk.git Merge sf.net --- e22bbf78a53bf739dd38383de42a23c95d43c15d diff --combined NEWS index fa81acd9,2ede1251..2a54c2b9 --- a/NEWS +++ b/NEWS @@@ -1,23 -1,5 +1,24 @@@ +Changes in 2.2 +============== + +* NEW: afpd: new volume option "nonetids" +* NEW: afpd: ACL access check caching * NEW: afpd: FCE event notifications + * NEW: afpd: new option "-mimicmodel" for specifying Bonjour model registration +* UPD: Support for Berkeley DB 5.1 +* UPD: case-conversion is based on Unicode 6.0.0 +* UPD: cnid_metad: allow up to 4096 volumes +* UPD: afpd: only forward SIGTERM and SIGUSR1 from parent to childs +* UPD: afpd: use internal function instead of popening du -sh in order to + calculate the used size of a volume for option "volsizelimit" +* UPD: afpd: Add negative UUID caching, enhance local UUID handling +* FIX: afpd: configuration reload with SIGHUP +* FIX: afpd: crashes in the dircache +* FIX: afpd: Correct afp logout vs dsi eof behaviour +* FIX: afpd: new catsearch was broken +* FIX: afpd: only use volume UUIDs in master afpd +* FIX: dbd: Multiple fixes, reliable locking +* FIX: ad file suite: fix an error that resulted in CNID database inconsistencies Changes in 2.2beta4 =================== diff --combined etc/afpd/afp_options.c index 22cb2d33,3ad83fe2..b79bc8d1 --- a/etc/afpd/afp_options.c +++ b/etc/afpd/afp_options.c @@@ -34,9 -34,9 +34,9 @@@ #include #include #include +#include #include -#include "globals.h" #include "status.h" #include "auth.h" #include "dircache.h" @@@ -140,6 -140,8 +140,8 @@@ void afp_options_free(struct afp_option free(opt->ntseparator); if (opt->logconfig && (opt->logconfig != save->logconfig)) free(opt->logconfig); + if (opt->mimicmodel && (opt->mimicmodel != save->mimicmodel)) + free(opt->mimicmodel); } /* initialize options */ @@@ -190,6 -192,7 +192,7 @@@ void afp_options_init(struct afp_option options->tcp_sndbuf = 0; /* 0 means don't change OS default */ options->tcp_rcvbuf = 0; /* 0 means don't change OS default */ options->dsireadbuf = 12; + options->mimicmodel = NULL; } /* parse an afpd.conf line. i'm doing it this way because it's @@@ -351,11 -354,8 +354,11 @@@ int afp_options_parseline(char *buf, st while (NULL != (c = strstr(c, "-setuplog"))) { char *optstr; if ((optstr = getoption(c, "-setuplog"))) { + /* hokey2: options->logconfig must be converted to store an array of logstrings */ + if (options->logconfig) + free(options->logconfig); + options->logconfig = strdup(optstr); setuplog(optstr); - options->logconfig = optstr; /* at least store the last (possibly only) one */ c += sizeof("-setuplog"); } } @@@ -495,6 -495,9 +498,9 @@@ fce_set_events(c); } + if ((c = getoption(buf, "-mimicmodel")) && (opt = strdup(c))) + options->mimicmodel = opt; + return 1; } diff --combined include/atalk/globals.h index 02dcf8b5,00000000..cca15f57 mode 100644,000000..100644 --- a/include/atalk/globals.h +++ b/include/atalk/globals.h @@@ -1,166 -1,0 +1,168 @@@ +/* + * Copyright (c) 1990,1993 Regents of The University of Michigan. + * All Rights Reserved. See COPYRIGHT. + */ + +#ifndef AFPD_GLOBALS_H +#define AFPD_GLOBALS_H 1 + +#include +#include + +#ifdef ADMIN_GRP +#include +#include +#endif /* ADMIN_GRP */ + +#ifdef HAVE_NETDB_H +#include /* this isn't header-protected under ultrix */ +#endif /* HAVE_NETDB_H */ + +#include +#include +#include +#include +#include + +/* #define DOSFILELEN 12 */ /* Type1, DOS-compat*/ +#define MACFILELEN 31 /* Type2, HFS-compat */ +#define UTF8FILELEN_EARLY 255 /* Type3, early Mac OS X 10.0-10.4.? */ +/* #define UTF8FILELEN_NAME_MAX 765 */ /* Type3, 10.4.?- , getconf NAME_MAX */ +/* #define UTF8FILELEN_SPEC 0xFFFF */ /* Type3, spec on document */ +/* #define HFSPLUSFILELEN 510 */ /* HFS+ spec, 510byte = 255codepoint */ + +#define MAXUSERLEN 256 + +#define OPTION_DEBUG (1 << 0) +#define OPTION_USERVOLFIRST (1 << 1) +#define OPTION_NOUSERVOL (1 << 2) +#define OPTION_PROXY (1 << 3) +#define OPTION_CUSTOMICON (1 << 4) +#define OPTION_NOSLP (1 << 5) +#define OPTION_ANNOUNCESSH (1 << 6) +#define OPTION_UUID (1 << 7) +#define OPTION_ACL2MACCESS (1 << 8) +#define OPTION_NOZEROCONF (1 << 9) + +#ifdef FORCE_UIDGID +/* set up a structure for this */ +typedef struct uidgidset_t { + uid_t uid; + gid_t gid; +} uidgidset; +#endif /* FORCE_UIDGID */ + +/* a couple of these options could get stuck in unions to save + * space. */ +struct afp_volume_name { + time_t mtime; + char *name; + char *full_name; + int loaded; +}; + +struct afp_options { + int connections, transports, tickleval, timeout, server_notif, flags, dircachesize; + int sleep; /* Maximum time allowed to sleep (in tickles) */ + int disconnected; /* Maximum time in disconnected state (in tickles) */ + unsigned int tcp_sndbuf, tcp_rcvbuf; + unsigned char passwdbits, passwdminlen, loginmaxfail; + u_int32_t server_quantum; + int dsireadbuf; /* scale factor for sizefof(dsi->buffer) = server_quantum * dsireadbuf */ + char hostname[MAXHOSTNAMELEN + 1], *server, *ipaddr, *port, *configfile; + struct at_addr ddpaddr; + char *uampath, *fqdn; + char *pidfile; + char *sigconffile; + char *uuidconf; + struct afp_volume_name defaultvol, systemvol, uservol; + int closevol; + + char *guest, *loginmesg, *keyfile, *passwdfile; + char *uamlist; + char *authprintdir; + char *signatureopt; + unsigned char signature[16]; + char *k5service, *k5realm, *k5keytab; + char *unixcodepage,*maccodepage; + charset_t maccharset, unixcharset; + mode_t umask; + mode_t save_mask; +#ifdef ADMIN_GRP + gid_t admingid; +#endif /* ADMIN_GRP */ + int volnamelen; + + /* default value for winbind authentication */ + char *ntdomain, *ntseparator; + char *logconfig; ++ ++ char *mimicmodel; +}; + +#define AFPOBJ_TMPSIZ (MAXPATHLEN) +typedef struct _AFPObj { + int proto; + unsigned long servernum; + void *handle; /* either (DSI *) or (ASP *) */ + void *config; + struct afp_options options; + char *Obj, *Type, *Zone; + char username[MAXUSERLEN]; + void (*logout)(void), (*exit)(int); + int (*reply)(void *, int); + int (*attention)(void *, AFPUserBytes); + /* to prevent confusion, only use these in afp_* calls */ + char oldtmp[AFPOBJ_TMPSIZ + 1], newtmp[AFPOBJ_TMPSIZ + 1]; + void *uam_cookie; /* cookie for uams */ + struct session_info sinfo; + uid_t uid; /* client running user id */ + int ipc_fd; /* anonymous PF_UNIX socket for IPC with afpd parent */ +#ifdef FORCE_UIDGID + int force_uid; + uidgidset uidgid; +#endif +} AFPObj; + +/* typedef for AFP functions handlers */ +typedef int (*AFPCmd)(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen); + +/* afp_dsi.c */ +extern AFPObj *AFPobj; + +extern int afp_version; +extern int afp_errno; +extern unsigned char nologin; +extern struct dir *curdir; +extern char getwdbuf[]; + +/* FIXME CNID */ +extern const char *Cnid_srv; +extern const char *Cnid_port; + +extern int get_afp_errno (const int param); +extern void afp_options_init (struct afp_options *); +extern int afp_options_parse (int, char **, struct afp_options *); +extern int afp_options_parseline (char *, struct afp_options *); +extern void afp_options_free (struct afp_options *, + const struct afp_options *); +extern void setmessage (const char *); +extern void readmessage (AFPObj *); + +/* gettok.c */ +extern void initline (int, char *); +extern int parseline (int, char *); + +/* afp_util.c */ +extern const char *AfpNum2name (int ); +extern const char *AfpErr2name(int err); + +/* directory.c */ +extern struct dir rootParent; + +#ifndef NO_DDP +extern void afp_over_asp (AFPObj *); +#endif /* NO_DDP */ +extern void afp_over_dsi (AFPObj *); + +#endif /* globals.h */