+/** \brief control block for server */
+typedef struct statserv_options_block
+{
+ int dynamic; /**< fork on incoming requests */
+ int threads; /**< use threads */
+ int one_shot; /**< one session then exit(1) */
+ char apdufile[BEND_NAME_MAX]; /**< file for pretty-printed PDUs */
+ char logfile[BEND_NAME_MAX]; /**< file for diagnostic output */
+ enum oid_proto default_proto; /**< PROTO_SR or PROTO_Z3950 */
+ int idle_timeout; /**< how many minutes to wait before closing */
+ int maxrecordsize; /**< maximum value for negotiation */
+ char configname[BEND_NAME_MAX]; /**< given to the backend in bend_init */
+ char setuid[BEND_NAME_MAX]; /**< setuid to this user after binding */
+ void (*bend_start)(struct statserv_options_block *p);
+ void (*bend_stop)(struct statserv_options_block *p);
+ int (*options_func)(int argc, char **argv);
+ int (*check_ip)(void *cd, const char *addr, int len, int type);
+ char daemon_name[BEND_NAME_MAX];
+ int inetd; /**< Do we use the inet deamon or not */
+
+ void *handle; /**< Handle */
+ bend_initresult *(*bend_init)(bend_initrequest *r);
+ void (*bend_close)(void *handle);
+#ifdef WIN32
+ /* We only have these members for the windows version */
+ /* They seemed a bit large to have them there in general */
+ char service_name[BEND_NAME_MAX];/**< NT Service Name */
+ char app_name[BEND_NAME_MAX]; /**< Application Name */
+ char service_dependencies[BEND_NAME_MAX];
+ char service_display_name[BEND_NAME_MAX];
+#endif /* WIN32 */
+ char pid_fname[BEND_NAME_MAX]; /**< pid fname */
+ int background; /**< auto daemon */
+ char cert_fname[BEND_NAME_MAX];/**< SSL certificate fname */
+ char xml_config[BEND_NAME_MAX];/**< XML config filename */
+ int keepalive; /**< keep alive if HTTP 1.1 (default: 1) */
+} statserv_options_block;
+
+YAZ_EXPORT int statserv_main(
+ int argc, char **argv,
+ bend_initresult *(*bend_init)(bend_initrequest *r),
+ void (*bend_close)(void *handle));
+
+YAZ_EXPORT statserv_options_block *statserv_getcontrol(void);
+YAZ_EXPORT void statserv_setcontrol(statserv_options_block *block);
+YAZ_EXPORT int check_ip_tcpd(void *cd, const char *addr, int len, int type);
+
+YAZ_EXPORT int bend_assoc_is_alive(bend_association assoc);
+
+YAZ_END_CDECL