1/*++
2/* NAME
3/*	master_proto 3h
4/* SUMMARY
5/*	master process protocol
6/* SYNOPSIS
7/*	#include <master_proto.h>
8/* DESCRIPTION
9/* .nf
10
11 /*
12  * Transport names. The master passes the transport name on the command
13  * line, and thus the name is part of the master to child protocol.
14  */
15#define MASTER_XPORT_NAME_UNIX	"unix"	/* local IPC */
16#define MASTER_XPORT_NAME_FIFO	"fifo"	/* local IPC */
17#define MASTER_XPORT_NAME_INET	"inet"	/* non-local IPC */
18#define MASTER_XPORT_NAME_PASS	"pass"	/* local IPC */
19
20 /*
21  * Format of a status message sent by a child process to the process
22  * manager. Since this is between processes on the same machine we need not
23  * worry about byte order and word length.
24  */
25typedef struct MASTER_STATUS {
26    int     pid;			/* process ID */
27    unsigned gen;			/* child generation number */
28    int     avail;			/* availability */
29} MASTER_STATUS;
30
31#define MASTER_GEN_NAME	"GENERATION"	/* passed via environment */
32
33#define MASTER_STAT_TAKEN	0	/* this one is occupied */
34#define MASTER_STAT_AVAIL	1	/* this process is idle */
35
36extern int master_notify(int, unsigned, int);	/* encapsulate status msg */
37
38 /*
39  * File descriptors inherited from the master process. The flow control pipe
40  * is read by receive processes and is written to by send processes. If
41  * receive processes get too far ahead they will pause for a brief moment.
42  */
43#define MASTER_FLOW_READ	3
44#define MASTER_FLOW_WRITE	4
45
46 /*
47  * File descriptors inherited from the master process. All processes that
48  * provide a given service share the same status file descriptor, and listen
49  * on the same service socket(s). The kernel decides what process gets the
50  * next connection. Usually the number of listening processes is small, so
51  * one connection will not cause a "thundering herd" effect. When no process
52  * listens on a given socket, the master process will. MASTER_LISTEN_FD is
53  * actually the lowest-numbered descriptor of a sequence of descriptors to
54  * listen on.
55  */
56#define MASTER_STATUS_FD	5	/* shared channel to parent */
57#define MASTER_LISTEN_FD	6	/* accept connections here */
58
59/* LICENSE
60/* .ad
61/* .fi
62/*	The Secure Mailer license must be distributed with this software.
63/* AUTHOR(S)
64/*	Wietse Venema
65/*	IBM T.J. Watson Research
66/*	P.O. Box 704
67/*	Yorktown Heights, NY 10598, USA
68/*--*/
69
70