Mercurial > dovecot > core-2.2
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 |
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 |