~noskcaj/ubuntu/saucy/xinetd/2.3.15

« back to all changes in this revision

Viewing changes to xinetd/server.h

  • Committer: Bazaar Package Importer
  • Author(s): Thomas Seyrat
  • Date: 2004-04-18 13:33:57 UTC
  • Revision ID: james.westby@ubuntu.com-20040418133357-czeqeju37433xvdd
Tags: upstream-2.3.13
ImportĀ upstreamĀ versionĀ 2.3.13

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
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.
 
6
 */
 
7
 
 
8
#ifndef SERVER_H
 
9
#define SERVER_H
 
10
 
 
11
/*
 
12
 * $Id: server.h,v 1.2 2003/08/06 06:12:10 bbraun Exp $
 
13
 */
 
14
 
 
15
#include "config.h"
 
16
#include <sys/types.h>
 
17
#include <sys/wait.h>
 
18
#include <time.h>
 
19
 
 
20
#include "defs.h"
 
21
#include "pset.h"
 
22
 
 
23
#ifdef NO_POSIX_TYPES
 
24
typedef int pid_t ;
 
25
#endif
 
26
 
 
27
 
 
28
/*
 
29
 * This struct describes running servers
 
30
 */
 
31
struct server
 
32
{
 
33
   pid_t           svr_pid ;
 
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       */
 
38
   int             svr_exit_status ;
 
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                */
 
43
} ;
 
44
 
 
45
#define SERP( p )                       ((struct server *)(p))
 
46
 
 
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
 
57
 
 
58
#define SERVER_FORKLIMIT( serp )         \
 
59
                  ( (serp)->svr_fork_failures >= MAX_FORK_FAILURES )
 
60
 
 
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)
 
64
 
 
65
 
 
66
/*
 
67
 * Macros for compatibility
 
68
 */
 
69
#ifndef OLD_WAIT
 
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 )
 
75
#else
 
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)
 
81
#endif   /* OLD_WAIT */
 
82
 
 
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 );
 
90
 
 
91
#endif   /* SERVER_H */
 
92