2
* (c) Copyright 1992 by Panagiotis Tsirigotis
3
* (c) Sections Copyright 1998-2001 by Rob Braun
4
* All rights reserved. The file named COPYRIGHT specifies the terms
5
* and conditions for redistribution.
12
* $Id: server.h,v 1.2 2003/08/06 06:12:10 bbraun Exp $
16
#include <sys/types.h>
29
* This struct describes running servers
34
time_t svr_start_time ;
35
connection_s *svr_conn ;
36
struct service *svr_sp ; /* service that owns this server */
37
int svr_fork_failures ; /* number of fork(2) failures */
39
bool_int svr_log_remote_user ;
40
bool_int svr_writes_to_log ; /* needed because a service may be */
41
/* reconfigured between server */
42
/* forking and exit */
45
#define SERP( p ) ((struct server *)(p))
47
#define SERVER_SERVICE( serp ) (serp)->svr_sp
48
#define SERVER_CONNECTION( serp) (connection_s *)(serp)->svr_conn
49
#define SERVER_CONNSERVICE( serp ) CONN_SERVICE( SERVER_CONNECTION( serp ) )
50
#define SERVER_FD( serp ) CONN_DESCRIPTOR( (serp)->svr_conn )
51
#define SERVER_PID( serp ) (serp)->svr_pid
52
#define SERVER_EXITSTATUS( serp ) (serp)->svr_exit_status
53
#define SERVER_STARTTIME( serp ) (serp)->svr_start_time
54
#define SERVER_LOGUSER( serp ) (serp)->svr_log_remote_user
55
#define SERVER_FORK_FAILURES( serp ) (serp)->svr_fork_failures
56
#define SERVER_WRITES_TO_LOG( serp ) (serp)->svr_writes_to_log
58
#define SERVER_FORKLIMIT( serp ) \
59
( (serp)->svr_fork_failures >= MAX_FORK_FAILURES )
61
#define SERVER_SET_PID( serp, pid ) (serp)->svr_pid = (pid)
62
#define SERVER_SET_EXIT_STATUS( serp, status ) \
63
(serp)->svr_exit_status = (status)
67
* Macros for compatibility
70
#define PROC_EXITED( s ) WIFEXITED( s )
71
#define PROC_SIGNALED( s ) WIFSIGNALED( s )
72
#define PROC_STOPPED( s ) WIFSTOPPED( s )
73
#define PROC_EXITSTATUS( s ) WEXITSTATUS( s )
74
#define PROC_TERMSIG( s ) WTERMSIG( s )
76
#define PROC_EXITED( s ) WIFEXITED( *(union wait *)&(s) )
77
#define PROC_SIGNALED( s ) WIFSIGNALED( *(union wait *)&(s) )
78
#define PROC_STOPPED( s ) WIFSTOPPED( *(union wait *)&(s) )
79
#define PROC_EXITSTATUS( s ) (((union wait *)&(s))->w_T.w_Retcode)
80
#define PROC_TERMSIG( s ) (((union wait *)&(s))->w_T.w_Termsig)
83
void server_release(struct server *serp);
84
status_e server_run(struct service *sp,connection_s *cp);
85
status_e server_start(struct server *serp);
86
void server_dump(const struct server *serp,int fd);
87
void server_end(struct server *serp);
88
struct server *server_lookup(pid_t pid);
89
struct server *server_alloc( const struct server *init_serp );