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 );