annotate src/lib-master/master-interface.h @ 22652:09523ad05bef

director: Log whenever HOST-RESET-USERS is used
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Sun, 05 Nov 2017 22:53:23 +0200
parents c32bfc54bc50
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9159
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1 #ifndef MASTER_INTERFACE_H
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2 #define MASTER_INTERFACE_H
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
4 /* We are attempting semi-compatibility with Postfix's master process here.
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
5 Whether this is useful or not remains to be seen. */
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
6
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
7 /* Child processes should send status updates whenever they accept a new
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
8 connection (decrease available_count) and when they close existing
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
9 connection (increase available_count). */
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
10 struct master_status {
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
11 pid_t pid;
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
12 /* uid is used to check for old/invalid status messages */
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
13 unsigned int uid;
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
14 /* number of new connections process is currently accepting */
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
15 unsigned int available_count;
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
16 };
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
17
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
18 /* When connecting to log service, send this handshake first */
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
19 struct log_service_handshake {
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
20 /* If magic is invalid, assume the data is already what we want
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
21 to log */
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
22 #define MASTER_LOG_MAGIC 0x02ff03fe
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
23 unsigned int log_magic;
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
24
9975
173435e81938 struct log_service_handshake: Removed unused max_lines_per_sec.
Timo Sirainen <tss@iki.fi>
parents: 9923
diff changeset
25 /* Add this prefix to each logged line */
9214
7def7fa61d68 master: Fixes to handling logging.
Timo Sirainen <tss@iki.fi>
parents: 9159
diff changeset
26 #define MASTER_LOG_PREFIX_NAME "MASTER"
9159
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
27 unsigned int prefix_len;
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
28 /* unsigned char prefix[]; */
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
29 };
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
30
10101
4fe8c4382712 Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents: 10059
diff changeset
31 enum master_login_state {
4fe8c4382712 Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents: 10059
diff changeset
32 MASTER_LOGIN_STATE_NONFULL = 0,
4fe8c4382712 Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents: 10059
diff changeset
33 MASTER_LOGIN_STATE_FULL
9159
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
34 };
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
35
12425
10c163bb5e22 "Running standalone?" check now uses a new DOVECOT_CHILD_PROCESS environment rather than GENERATION.
Timo Sirainen <tss@iki.fi>
parents: 11256
diff changeset
36 /* getenv(MASTER_IS_PARENT_ENV) != NULL if process was started by
10c163bb5e22 "Running standalone?" check now uses a new DOVECOT_CHILD_PROCESS environment rather than GENERATION.
Timo Sirainen <tss@iki.fi>
parents: 11256
diff changeset
37 Dovecot master */
10c163bb5e22 "Running standalone?" check now uses a new DOVECOT_CHILD_PROCESS environment rather than GENERATION.
Timo Sirainen <tss@iki.fi>
parents: 11256
diff changeset
38 #define MASTER_IS_PARENT_ENV "DOVECOT_CHILD_PROCESS"
10c163bb5e22 "Running standalone?" check now uses a new DOVECOT_CHILD_PROCESS environment rather than GENERATION.
Timo Sirainen <tss@iki.fi>
parents: 11256
diff changeset
39
9159
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
40 /* getenv(MASTER_UID_ENV) provides master_status.uid value */
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
41 #define MASTER_UID_ENV "GENERATION"
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
42
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
43 /* getenv(MASTER_CLIENT_LIMIT_ENV) provides maximum
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
44 master_status.available_count as specified in configuration file */
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
45 #define MASTER_CLIENT_LIMIT_ENV "CLIENT_LIMIT"
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
46
13081
a5ab569ee4cd master process now tells its children their service's process_limit.
Timo Sirainen <tss@iki.fi>
parents: 12726
diff changeset
47 /* getenv(MASTER_PROCESS_LIMIT_ENV) specifies how many processes of this type
a5ab569ee4cd master process now tells its children their service's process_limit.
Timo Sirainen <tss@iki.fi>
parents: 12726
diff changeset
48 can be created before reaching the limit */
a5ab569ee4cd master process now tells its children their service's process_limit.
Timo Sirainen <tss@iki.fi>
parents: 12726
diff changeset
49 #define MASTER_PROCESS_LIMIT_ENV "PROCESS_LIMIT"
a5ab569ee4cd master process now tells its children their service's process_limit.
Timo Sirainen <tss@iki.fi>
parents: 12726
diff changeset
50
16178
c32bfc54bc50 lib-master: Added master_service_get_process_min_avail()
Timo Sirainen <tss@iki.fi>
parents: 13969
diff changeset
51 /* getenv(MASTER_PROCESS_MIN_AVAIL_ENV) specifies how many processes of this
c32bfc54bc50 lib-master: Added master_service_get_process_min_avail()
Timo Sirainen <tss@iki.fi>
parents: 13969
diff changeset
52 type are created at startup and are kept running all the time */
c32bfc54bc50 lib-master: Added master_service_get_process_min_avail()
Timo Sirainen <tss@iki.fi>
parents: 13969
diff changeset
53 #define MASTER_PROCESS_MIN_AVAIL_ENV "PROCESS_MIN_AVAIL"
c32bfc54bc50 lib-master: Added master_service_get_process_min_avail()
Timo Sirainen <tss@iki.fi>
parents: 13969
diff changeset
54
9839
d76916a6df44 Added service_count setting to limit how many requests a service can handle before dying.
Timo Sirainen <tss@iki.fi>
parents: 9782
diff changeset
55 /* getenv(MASTER_SERVICE_COUNT_ENV) specifies how many client connections the
d76916a6df44 Added service_count setting to limit how many requests a service can handle before dying.
Timo Sirainen <tss@iki.fi>
parents: 9782
diff changeset
56 process can finish handling before it should kill itself. */
d76916a6df44 Added service_count setting to limit how many requests a service can handle before dying.
Timo Sirainen <tss@iki.fi>
parents: 9782
diff changeset
57 #define MASTER_SERVICE_COUNT_ENV "SERVICE_COUNT"
d76916a6df44 Added service_count setting to limit how many requests a service can handle before dying.
Timo Sirainen <tss@iki.fi>
parents: 9782
diff changeset
58
13969
3963862a4086 lib-master: Send service's idle_kill value to process in environment.
Timo Sirainen <tss@iki.fi>
parents: 13081
diff changeset
59 /* getenv(MASTER_SERVICE_IDLE_KILL_ENV) specifies service's idle_kill timeout
3963862a4086 lib-master: Send service's idle_kill value to process in environment.
Timo Sirainen <tss@iki.fi>
parents: 13081
diff changeset
60 in seconds. */
3963862a4086 lib-master: Send service's idle_kill value to process in environment.
Timo Sirainen <tss@iki.fi>
parents: 13081
diff changeset
61 #define MASTER_SERVICE_IDLE_KILL_ENV "IDLE_KILL"
3963862a4086 lib-master: Send service's idle_kill value to process in environment.
Timo Sirainen <tss@iki.fi>
parents: 13081
diff changeset
62
9159
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
63 /* getenv(MASTER_CONFIG_FILE_ENV) provides path to configuration file/socket */
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
64 #define MASTER_CONFIG_FILE_ENV "CONFIG_FILE"
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
65
12425
10c163bb5e22 "Running standalone?" check now uses a new DOVECOT_CHILD_PROCESS environment rather than GENERATION.
Timo Sirainen <tss@iki.fi>
parents: 11256
diff changeset
66 /* getenv(MASTER_DOVECOT_VERSION_ENV) provides master's version number
10c163bb5e22 "Running standalone?" check now uses a new DOVECOT_CHILD_PROCESS environment rather than GENERATION.
Timo Sirainen <tss@iki.fi>
parents: 11256
diff changeset
67 (unset if version_ignore=yes) */
9159
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
68 #define MASTER_DOVECOT_VERSION_ENV "DOVECOT_VERSION"
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
69
9914
3e4f64af6c9a dovecot -p: And fixed it to really work this time.
Timo Sirainen <tss@iki.fi>
parents: 9839
diff changeset
70 /* getenv(MASTER_SSL_KEY_PASSWORD_ENV) returns manually typed SSL key password,
3e4f64af6c9a dovecot -p: And fixed it to really work this time.
Timo Sirainen <tss@iki.fi>
parents: 9839
diff changeset
71 if dovecot was started with -p parameter. */
3e4f64af6c9a dovecot -p: And fixed it to really work this time.
Timo Sirainen <tss@iki.fi>
parents: 9839
diff changeset
72 #define MASTER_SSL_KEY_PASSWORD_ENV "SSL_KEY_PASSWORD"
3e4f64af6c9a dovecot -p: And fixed it to really work this time.
Timo Sirainen <tss@iki.fi>
parents: 9839
diff changeset
73
12726
cec7fa92ff48 Added import_environment setting.
Timo Sirainen <tss@iki.fi>
parents: 12564
diff changeset
74 /* getenv(DOVECOT_PRESERVE_ENVS_ENV) returns a space separated list of
cec7fa92ff48 Added import_environment setting.
Timo Sirainen <tss@iki.fi>
parents: 12564
diff changeset
75 environments that should be preserved. */
cec7fa92ff48 Added import_environment setting.
Timo Sirainen <tss@iki.fi>
parents: 12564
diff changeset
76 #define DOVECOT_PRESERVE_ENVS_ENV "DOVECOT_PRESERVE_ENVS"
cec7fa92ff48 Added import_environment setting.
Timo Sirainen <tss@iki.fi>
parents: 12564
diff changeset
77
10101
4fe8c4382712 Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents: 10059
diff changeset
78 /* Write pipe to anvil. */
9235
2e2b957f1cca Implemented anvil service, which is used to implement mail_max_userip_connections.
Timo Sirainen <tss@iki.fi>
parents: 9214
diff changeset
79 #define MASTER_ANVIL_FD 3
10454
802b9ebe79e6 anvil: After master gets a SIGHUP, start logging via new log process.
Timo Sirainen <tss@iki.fi>
parents: 10101
diff changeset
80 /* Anvil reads new log fds from this fd */
802b9ebe79e6 anvil: After master gets a SIGHUP, start logging via new log process.
Timo Sirainen <tss@iki.fi>
parents: 10101
diff changeset
81 #define MASTER_ANVIL_LOG_FDPASS_FD 4
10101
4fe8c4382712 Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents: 10059
diff changeset
82 /* Master's "all processes full" notification fd for login processes */
4fe8c4382712 Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents: 10059
diff changeset
83 #define MASTER_LOGIN_NOTIFY_FD 4
9159
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
84
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
85 /* Shared pipe to master, used to send master_status reports */
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
86 #define MASTER_STATUS_FD 5
12564
b0ec48006d57 master-child API change: Use a separate fd for tracking when master dies.
Timo Sirainen <tss@iki.fi>
parents: 12425
diff changeset
87 /* Pipe to master, used to detect when it dies. (MASTER_STATUS_FD would have
b0ec48006d57 master-child API change: Use a separate fd for tracking when master dies.
Timo Sirainen <tss@iki.fi>
parents: 12425
diff changeset
88 been fine for this, except it's inefficient in Linux) */
b0ec48006d57 master-child API change: Use a separate fd for tracking when master dies.
Timo Sirainen <tss@iki.fi>
parents: 12425
diff changeset
89 #define MASTER_DEAD_FD 6
9159
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
90 /* First file descriptor where process is expected to be listening.
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
91 The file descriptor count is given in -s parameter, defaulting to 1.
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
92
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
93 master_status.available_count reports how many accept()s we're still
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
94 accepting. Once no children are listening, master will do it and create
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
95 new child processes when needed. */
12564
b0ec48006d57 master-child API change: Use a separate fd for tracking when master dies.
Timo Sirainen <tss@iki.fi>
parents: 12425
diff changeset
96 #define MASTER_LISTEN_FD_FIRST 7
9159
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
97
11256
e08dd68309a9 auth/login related timeouts are now in one place and they make more sense.
Timo Sirainen <tss@iki.fi>
parents: 10454
diff changeset
98 /* Timeouts: base everything on how long we can wait for login clients. */
e08dd68309a9 auth/login related timeouts are now in one place and they make more sense.
Timo Sirainen <tss@iki.fi>
parents: 10454
diff changeset
99 #define MASTER_LOGIN_TIMEOUT_SECS (3*60)
e08dd68309a9 auth/login related timeouts are now in one place and they make more sense.
Timo Sirainen <tss@iki.fi>
parents: 10454
diff changeset
100 /* auth server should abort auth requests before that happens */
e08dd68309a9 auth/login related timeouts are now in one place and they make more sense.
Timo Sirainen <tss@iki.fi>
parents: 10454
diff changeset
101 #define MASTER_AUTH_SERVER_TIMEOUT_SECS (MASTER_LOGIN_TIMEOUT_SECS - 30)
e08dd68309a9 auth/login related timeouts are now in one place and they make more sense.
Timo Sirainen <tss@iki.fi>
parents: 10454
diff changeset
102 /* auth clients should abort auth lookups after server was supposed to have
e08dd68309a9 auth/login related timeouts are now in one place and they make more sense.
Timo Sirainen <tss@iki.fi>
parents: 10454
diff changeset
103 done that */
e08dd68309a9 auth/login related timeouts are now in one place and they make more sense.
Timo Sirainen <tss@iki.fi>
parents: 10454
diff changeset
104 #define MASTER_AUTH_LOOKUP_TIMEOUT_SECS (MASTER_AUTH_SERVER_TIMEOUT_SECS + 5)
e08dd68309a9 auth/login related timeouts are now in one place and they make more sense.
Timo Sirainen <tss@iki.fi>
parents: 10454
diff changeset
105
9159
6324a79d3ee1 Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
106 #endif