Postfix3.3.1
mail_server.h
[詳解]
1 /*++
2 /* NAME
3 /* mail_server 3h
4 /* SUMMARY
5 /* skeleton servers
6 /* SYNOPSIS
7 /* #include <mail_server.h>
8 /* DESCRIPTION
9 /* .nf
10 
11  /*
12  * Utility library.
13  */
14 #include <vstream.h>
15 
16  /*
17  * Global library.
18  */
19 #include <mail_conf.h>
20 
21  /*
22  * External interface. Tables are defined in mail_conf.h.
23  */
24 #define MAIL_SERVER_INT_TABLE 1
25 #define MAIL_SERVER_STR_TABLE 2
26 #define MAIL_SERVER_BOOL_TABLE 3
27 #define MAIL_SERVER_TIME_TABLE 4
28 #define MAIL_SERVER_RAW_TABLE 5
29 #define MAIL_SERVER_NINT_TABLE 6
30 #define MAIL_SERVER_NBOOL_TABLE 7
31 #define MAIL_SERVER_LONG_TABLE 8
32 
33 #define MAIL_SERVER_PRE_INIT 10
34 #define MAIL_SERVER_POST_INIT 11
35 #define MAIL_SERVER_LOOP 12
36 #define MAIL_SERVER_EXIT 13
37 #define MAIL_SERVER_PRE_ACCEPT 14
38 #define MAIL_SERVER_SOLITARY 15
39 #define MAIL_SERVER_UNLIMITED 16
40 #define MAIL_SERVER_PRE_DISCONN 17
41 #define MAIL_SERVER_PRIVILEGED 18
42 #define MAIL_SERVER_WATCHDOG 19
43 
44 #define MAIL_SERVER_IN_FLOW_DELAY 20
45 #define MAIL_SERVER_SLOW_EXIT 21
46 #define MAIL_SERVER_BOUNCE_INIT 22
47 
48 typedef void (*MAIL_SERVER_INIT_FN) (char *, char **);
49 typedef int (*MAIL_SERVER_LOOP_FN) (char *, char **);
50 typedef void (*MAIL_SERVER_EXIT_FN) (char *, char **);
51 typedef void (*MAIL_SERVER_ACCEPT_FN) (char *, char **);
52 typedef void (*MAIL_SERVER_DISCONN_FN) (VSTREAM *, char *, char **);
53 typedef void (*MAIL_SERVER_SLOW_EXIT_FN) (char *, char **);
54 
55 /* Type-checked API for external use. */
56 #define CA_MAIL_SERVER_INT_TABLE(v) MAIL_SERVER_INT_TABLE, CHECK_CPTR(MAIL_SERVER, CONFIG_INT_TABLE, (v))
57 #define CA_MAIL_SERVER_STR_TABLE(v) MAIL_SERVER_STR_TABLE, CHECK_CPTR(MAIL_SERVER, CONFIG_STR_TABLE, (v))
58 #define CA_MAIL_SERVER_BOOL_TABLE(v) MAIL_SERVER_BOOL_TABLE, CHECK_CPTR(MAIL_SERVER, CONFIG_BOOL_TABLE, (v))
59 #define CA_MAIL_SERVER_TIME_TABLE(v) MAIL_SERVER_TIME_TABLE, CHECK_CPTR(MAIL_SERVER, CONFIG_TIME_TABLE, (v))
60 #define CA_MAIL_SERVER_RAW_TABLE(v) MAIL_SERVER_RAW_TABLE, CHECK_CPTR(MAIL_SERVER, CONFIG_RAW_TABLE, (v))
61 #define CA_MAIL_SERVER_NINT_TABLE(v) MAIL_SERVER_NINT_TABLE, CHECK_CPTR(MAIL_SERVER, CONFIG_NINT_TABLE, (v))
62 #define CA_MAIL_SERVER_NBOOL_TABLE(v) MAIL_SERVER_NBOOL_TABLE, CHECK_CPTR(MAIL_SERVER, CONFIG_NBOOL_TABLE, (v))
63 #define CA_MAIL_SERVER_LONG_TABLE(v) MAIL_SERVER_LONG_TABLE, CHECK_CPTR(MAIL_SERVER, CONFIG_LONG_TABLE, (v))
64 #define CA_MAIL_SERVER_PRE_INIT(v) MAIL_SERVER_PRE_INIT, CHECK_VAL(MAIL_SERVER, MAIL_SERVER_INIT_FN, (v))
65 #define CA_MAIL_SERVER_POST_INIT(v) MAIL_SERVER_POST_INIT, CHECK_VAL(MAIL_SERVER, MAIL_SERVER_INIT_FN, (v))
66 #define CA_MAIL_SERVER_LOOP(v) MAIL_SERVER_LOOP, CHECK_VAL(MAIL_SERVER, MAIL_SERVER_LOOP_FN, (v))
67 #define CA_MAIL_SERVER_EXIT(v) MAIL_SERVER_EXIT, CHECK_VAL(MAIL_SERVER, MAIL_SERVER_EXIT_FN, (v))
68 #define CA_MAIL_SERVER_PRE_ACCEPT(v) MAIL_SERVER_PRE_ACCEPT, CHECK_VAL(MAIL_SERVER, MAIL_SERVER_ACCEPT_FN, (v))
69 #define CA_MAIL_SERVER_SOLITARY MAIL_SERVER_SOLITARY
70 #define CA_MAIL_SERVER_UNLIMITED MAIL_SERVER_UNLIMITED
71 #define CA_MAIL_SERVER_PRE_DISCONN(v) MAIL_SERVER_PRE_DISCONN, CHECK_VAL(MAIL_SERVER, MAIL_SERVER_DISCONN_FN, (v))
72 #define CA_MAIL_SERVER_PRIVILEGED MAIL_SERVER_PRIVILEGED
73 #define CA_MAIL_SERVER_WATCHDOG(v) MAIL_SERVER_WATCHDOG, CHECK_PTR(MAIL_SERVER, int, (v))
74 #define CA_MAIL_SERVER_IN_FLOW_DELAY MAIL_SERVER_IN_FLOW_DELAY
75 #define CA_MAIL_SERVER_SLOW_EXIT(v) MAIL_SERVER_SLOW_EXIT, CHECK_VAL(MAIL_SERVER, MAIL_SERVER_SLOW_EXIT_FN, (v))
76 #define CA_MAIL_SERVER_BOUNCE_INIT(v, w) MAIL_SERVER_BOUNCE_INIT, CHECK_PTR(MAIL_SERVER, char, (v)), CHECK_PPTR(MAIL_SERVER, char, (w))
77 
84 CHECK_PTR_HELPER_DCL(MAIL_SERVER, int);
85 CHECK_PTR_HELPER_DCL(MAIL_SERVER, char);
86 CHECK_PPTR_HELPER_DCL(MAIL_SERVER, char);
95 
96  /*
97  * single_server.c
98  */
99 typedef void (*SINGLE_SERVER_FN) (VSTREAM *, char *, char **);
100 extern NORETURN single_server_main(int, char **, SINGLE_SERVER_FN,...);
101 
102  /*
103  * multi_server.c
104  */
105 typedef void (*MULTI_SERVER_FN) (VSTREAM *, char *, char **);
106 extern NORETURN multi_server_main(int, char **, MULTI_SERVER_FN,...);
107 extern void multi_server_disconnect(VSTREAM *);
108 extern int multi_server_drain(void);
109 
110  /*
111  * event_server.c
112  */
113 typedef void (*EVENT_SERVER_FN) (VSTREAM *, char *, char **);
114 extern NORETURN event_server_main(int, char **, EVENT_SERVER_FN,...);
115 extern void event_server_disconnect(VSTREAM *);
116 extern int event_server_drain(void);
117 
118  /*
119  * trigger_server.c
120  */
121 typedef void (*TRIGGER_SERVER_FN) (char *, ssize_t, char *, char **);
122 extern NORETURN trigger_server_main(int, char **, TRIGGER_SERVER_FN,...);
123 
124 #define TRIGGER_BUF_SIZE 1024
125 
126 /* LICENSE
127 /* .ad
128 /* .fi
129 /* The Secure Mailer license must be distributed with this software.
130 /* AUTHOR(S)
131 /* Wietse Venema
132 /* IBM T.J. Watson Research
133 /* P.O. Box 704
134 /* Yorktown Heights, NY 10598, USA
135 /*--*/
NORETURN event_server_main(int, char **, EVENT_SERVER_FN,...)
Definition: event_server.c:534
#define NORETURN
Definition: sys_defs.h:1583
int event_server_drain(void)
Definition: event_server.c:305
void(* MAIL_SERVER_DISCONN_FN)(VSTREAM *, char *, char **)
Definition: mail_server.h:52
void(* MAIL_SERVER_EXIT_FN)(char *, char **)
Definition: mail_server.h:50
void event_server_disconnect(VSTREAM *)
Definition: event_server.c:335
void multi_server_disconnect(VSTREAM *)
Definition: multi_server.c:317
int multi_server_drain(void)
Definition: multi_server.c:287
void(* MAIL_SERVER_SLOW_EXIT_FN)(char *, char **)
Definition: mail_server.h:53
void(* TRIGGER_SERVER_FN)(char *, ssize_t, char *, char **)
Definition: mail_server.h:121
NORETURN trigger_server_main(int, char **, TRIGGER_SERVER_FN,...)
CHECK_PPTR_HELPER_DCL(MAIL_SERVER, char)
NORETURN multi_server_main(int, char **, MULTI_SERVER_FN,...)
Definition: multi_server.c:530
void(* MAIL_SERVER_INIT_FN)(char *, char **)
Definition: mail_server.h:48
CHECK_CPTR_HELPER_DCL(MAIL_SERVER, CONFIG_TIME_TABLE)
void(* SINGLE_SERVER_FN)(VSTREAM *, char *, char **)
Definition: mail_server.h:99
void(* MAIL_SERVER_ACCEPT_FN)(char *, char **)
Definition: mail_server.h:51
int int
Definition: smtpd_proxy.h:21
CHECK_VAL_HELPER_DCL(MAIL_SERVER, MAIL_SERVER_SLOW_EXIT_FN)
CHECK_PTR_HELPER_DCL(MAIL_SERVER, int)
NORETURN single_server_main(int, char **, SINGLE_SERVER_FN,...)
int(* MAIL_SERVER_LOOP_FN)(char *, char **)
Definition: mail_server.h:49
void(* MULTI_SERVER_FN)(VSTREAM *, char *, char **)
Definition: mail_server.h:105
void(* EVENT_SERVER_FN)(VSTREAM *, char *, char **)
Definition: mail_server.h:113