2 * Copyright (c) 1995-2000, Index Data.
4 * Permission to use, copy, modify, distribute, and sell this software and
5 * its documentation, in whole or in part, for any purpose, is hereby granted,
8 * 1. This copyright and permission notice appear in all copies of the
9 * software and its documentation. Notices of copyright or attribution
10 * which appear at the beginning of any file must remain unchanged.
12 * 2. The name of Index Data or the individual authors may not be used to
13 * endorse or promote products derived from this software without specific
14 * prior written permission.
16 * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND,
17 * EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
18 * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
19 * IN NO EVENT SHALL INDEX DATA BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
20 * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES
21 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR
22 * NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
23 * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
26 * $Log: statserv.h,v $
27 * Revision 1.4 2000-03-15 12:59:49 adam
28 * Added handle member to statserv_control.
30 * Revision 1.3 2000/03/14 09:06:11 adam
31 * Added POSIX threads support for frontend server.
33 * Revision 1.2 2000/02/28 11:20:06 adam
34 * Using autoconf. New definitions: YAZ_BEGIN_CDECL/YAZ_END_CDECL.
36 * Revision 1.1 1999/11/30 13:47:11 adam
37 * Improved installation. Moved header files to include/yaz.
39 * Revision 1.17 1999/07/06 12:17:15 adam
40 * Added option -1 that runs server once (for profiling purposes).
42 * Revision 1.16 1999/06/10 11:45:30 adam
43 * Added bend_start, bend_stop handlers and removed pre_init.
44 * Handlers bend_start/bend_stop are called when service/daemon is
47 * Revision 1.15 1999/04/16 14:45:55 adam
48 * Added interface for tcpd wrapper for access control.
50 * Revision 1.14 1999/02/02 13:57:32 adam
51 * Uses preprocessor define WIN32 instead of WINDOWS to build code
52 * for Microsoft WIN32.
54 * Revision 1.13 1998/02/10 10:28:56 adam
55 * Added app_name, service_dependencies, service_display_name and
56 * options_func. options_func allows us to specify a different function
57 * to interogate the command line arguments. The other members allow us
58 * to pass the full service details accross to the service manager (CW).
60 * Revision 1.??? 1997/12/18 Chas
61 * Added app_name, service_dependencies, service_display_name and
62 * options_func. options_func allows us to specify a different function
63 * to interogate the command line arguments. The other members allow us
64 * to pass the full service details accross to the service manager.
66 * Revision 1.12 1997/11/07 13:31:47 adam
67 * Added NT Service name part of statserv_options_block. Moved NT
68 * service utility to server library.
70 * Revision 1.11 1997/10/27 14:03:01 adam
71 * Added new member to statserver_options_block, pre_init, which
72 * specifies a callback to be invoked after command line parsing and
73 * before the server listens for the first time.
75 * Revision 1.10 1997/09/01 09:31:26 adam
76 * Removed definition statserv_remove to eventl.h. (A hack really).
78 * Revision 1.9 1997/09/01 08:49:53 adam
79 * New windows NT/95 port using MSV5.0. To export DLL functions the
80 * YAZ_EXPORT modifier was added. Defined in yconfig.h.
82 * Revision 1.8 1997/05/14 06:53:51 adam
85 * Revision 1.7 1995/09/29 17:12:12 quinn
88 * Revision 1.6 1995/09/27 15:02:53 quinn
89 * Modified function heads & prototypes.
91 * Revision 1.5 1995/06/19 12:38:31 quinn
92 * Reorganized include-files. Added small features.
94 * Revision 1.4 1995/06/15 07:45:08 quinn
97 * Revision 1.3 1995/05/16 08:50:38 quinn
98 * License, documentation, and memory fixes
106 #include <yaz/yconfig.h>
112 typedef struct statserv_options_block
114 int dynamic; /* fork on incoming requests */
115 int threads; /* use threads */
116 int one_shot; /* one session then exit(1) */
117 int loglevel; /* desired logging-level */
118 char apdufile[ODR_MAXNAME+1]; /* file for pretty-printed PDUs */
119 char logfile[ODR_MAXNAME+1]; /* file for diagnostic output */
120 char default_listen[1024]; /* 0 == no default listen */
121 enum oid_proto default_proto; /* PROTO_SR or PROTO_Z3950 */
122 int idle_timeout; /* how many minutes to wait before closing */
123 int maxrecordsize; /* maximum value for negotiation */
124 char configname[ODR_MAXNAME+1]; /* given to the backend in bend_init */
125 char setuid[ODR_MAXNAME+1]; /* setuid to this user after binding */
126 void (*bend_start)(struct statserv_options_block *p);
127 void (*bend_stop)(struct statserv_options_block *p);
128 int (*options_func)(int argc, char **argv);
129 int (*check_ip)(void *cd, const char *addr, int len, int type);
130 char daemon_name[128];
131 int inetd; /* Do we use the inet deamon or not */
133 void *handle; /* Handle */
135 /* We only have these members for the windows version */
136 /* They seemed a bit large to have them there in general */
137 char service_name[128]; /* NT Service Name */
138 char app_name[128]; /* Application Name */
139 char service_dependencies[128]; /* The services we are dependent on */
140 char service_display_name[128]; /* The service display name */
142 } statserv_options_block;
144 int statserv_main(int argc, char **argv);
145 int statserv_start(int argc, char **argv);
146 void statserv_closedown(void);
147 statserv_options_block *statserv_getcontrol(void);
148 void statserv_setcontrol(statserv_options_block *block);
150 int check_ip_tcpd(void *cd, const char *addr, int len, int type);