Mercurial > dovecot > core-2.2
annotate src/director/mail-host.h @ 22664:fea53c2725c0
director: Fix director_max_parallel_moves/kicks type
Should be uint, not time.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Thu, 09 Nov 2017 12:24:16 +0200 |
parents | 7163028a9f90 |
children |
rev | line source |
---|---|
11321
5f350b5ff6d9
Added initial implementation of a director process (for NFS users).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
1 #ifndef MAIL_HOST_H |
5f350b5ff6d9
Added initial implementation of a director process (for NFS users).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
2 #define MAIL_HOST_H |
5f350b5ff6d9
Added initial implementation of a director process (for NFS users).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
3 |
15187
02451e967a06
Renamed network.[ch] to net.[ch].
Timo Sirainen <tss@iki.fi>
parents:
11353
diff
changeset
|
4 #include "net.h" |
21077
b2418f9c5a54
director: Code cleanup - Reorder includes
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21072
diff
changeset
|
5 #include "user-directory.h" |
11321
5f350b5ff6d9
Added initial implementation of a director process (for NFS users).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
6 |
11352
19336bddada2
director: Code cleanup - keep mail hosts in a struct rather than in static variables.
Timo Sirainen <tss@iki.fi>
parents:
11321
diff
changeset
|
7 struct mail_host_list; |
19336bddada2
director: Code cleanup - keep mail hosts in a struct rather than in static variables.
Timo Sirainen <tss@iki.fi>
parents:
11321
diff
changeset
|
8 |
21079
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
9 struct mail_vhost { |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
10 unsigned int hash; |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
11 struct mail_host *host; |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
12 }; |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
13 |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
14 /* mail_tags aren't removed/freed before mail_hosts_deinit(), so it's safe |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
15 to add pointers to them. */ |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
16 struct mail_tag { |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
17 /* "" = no tag */ |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
18 char *name; |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
19 ARRAY(struct mail_vhost) vhosts; |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
20 /* temporary user -> host associations */ |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
21 struct user_directory *users; |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
22 }; |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
23 ARRAY_DEFINE_TYPE(mail_tag, struct mail_tag *); |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
24 |
11321
5f350b5ff6d9
Added initial implementation of a director process (for NFS users).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
25 struct mail_host { |
19407
39cfca637d60
director: Code cleanup - make most mail_host_*() list parameters unnecessary.
Timo Sirainen <tss@iki.fi>
parents:
19310
diff
changeset
|
26 struct mail_host_list *list; |
39cfca637d60
director: Code cleanup - make most mail_host_*() list parameters unnecessary.
Timo Sirainen <tss@iki.fi>
parents:
19310
diff
changeset
|
27 |
11321
5f350b5ff6d9
Added initial implementation of a director process (for NFS users).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
28 unsigned int user_count; |
5f350b5ff6d9
Added initial implementation of a director process (for NFS users).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
29 unsigned int vhost_count; |
18729
0ee3e734249a
director: Added "up" vs "down" states and doveadm director up/down commands.
Timo Sirainen <tss@iki.fi>
parents:
18067
diff
changeset
|
30 /* server up/down. down=TRUE has effectively the same result as if |
0ee3e734249a
director: Added "up" vs "down" states and doveadm director up/down commands.
Timo Sirainen <tss@iki.fi>
parents:
18067
diff
changeset
|
31 vhost_count=0. */ |
0ee3e734249a
director: Added "up" vs "down" states and doveadm director up/down commands.
Timo Sirainen <tss@iki.fi>
parents:
18067
diff
changeset
|
32 bool down; |
0ee3e734249a
director: Added "up" vs "down" states and doveadm director up/down commands.
Timo Sirainen <tss@iki.fi>
parents:
18067
diff
changeset
|
33 time_t last_updown_change; |
11321
5f350b5ff6d9
Added initial implementation of a director process (for NFS users).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
34 |
5f350b5ff6d9
Added initial implementation of a director process (for NFS users).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
35 struct ip_addr ip; |
22641
7163028a9f90
director: Add mail_host.ip_str
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22538
diff
changeset
|
36 char *ip_str; |
19310
7f718c840aff
director: Remember backends' hostnames and send them in login reply.
Timo Sirainen <tss@iki.fi>
parents:
19291
diff
changeset
|
37 char *hostname; |
19411
0e05efd14b39
director: Fixed backend selection when multiple tags were used.
Timo Sirainen <tss@iki.fi>
parents:
19409
diff
changeset
|
38 struct mail_tag *tag; |
19287
0f9d4f1a083d
director: Don't become desynced if two directors change the same backend in incompatible ways.
Timo Sirainen <tss@iki.fi>
parents:
18729
diff
changeset
|
39 |
0f9d4f1a083d
director: Don't become desynced if two directors change the same backend in incompatible ways.
Timo Sirainen <tss@iki.fi>
parents:
18729
diff
changeset
|
40 /* host was recently changed and ring hasn't synced yet since */ |
0f9d4f1a083d
director: Don't become desynced if two directors change the same backend in incompatible ways.
Timo Sirainen <tss@iki.fi>
parents:
18729
diff
changeset
|
41 unsigned int desynced:1; |
11321
5f350b5ff6d9
Added initial implementation of a director process (for NFS users).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
42 }; |
5f350b5ff6d9
Added initial implementation of a director process (for NFS users).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
43 ARRAY_DEFINE_TYPE(mail_host, struct mail_host *); |
5f350b5ff6d9
Added initial implementation of a director process (for NFS users).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
44 |
11352
19336bddada2
director: Code cleanup - keep mail hosts in a struct rather than in static variables.
Timo Sirainen <tss@iki.fi>
parents:
11321
diff
changeset
|
45 struct mail_host * |
18067
a7e830b9b967
director: Added support for backend cluster "tags".
Timo Sirainen <tss@iki.fi>
parents:
18065
diff
changeset
|
46 mail_host_add_ip(struct mail_host_list *list, const struct ip_addr *ip, |
19409
11a913488054
director: Code cleanup - rename tag to tag_name in mail_host_*() parameters.
Timo Sirainen <tss@iki.fi>
parents:
19408
diff
changeset
|
47 const char *tag_name); |
11352
19336bddada2
director: Code cleanup - keep mail hosts in a struct rather than in static variables.
Timo Sirainen <tss@iki.fi>
parents:
11321
diff
changeset
|
48 struct mail_host * |
19310
7f718c840aff
director: Remember backends' hostnames and send them in login reply.
Timo Sirainen <tss@iki.fi>
parents:
19291
diff
changeset
|
49 mail_host_add_hostname(struct mail_host_list *list, const char *hostname, |
19409
11a913488054
director: Code cleanup - rename tag to tag_name in mail_host_*() parameters.
Timo Sirainen <tss@iki.fi>
parents:
19408
diff
changeset
|
50 const struct ip_addr *ip, const char *tag_name); |
19310
7f718c840aff
director: Remember backends' hostnames and send them in login reply.
Timo Sirainen <tss@iki.fi>
parents:
19291
diff
changeset
|
51 struct mail_host * |
22538
0819f28fc76b
director: Remember backends' hostnames and send them in login reply.
Timo Sirainen <tss@iki.fi>
parents:
21842
diff
changeset
|
52 mail_host_add_hostname(struct mail_host_list *list, const char *hostname, |
0819f28fc76b
director: Remember backends' hostnames and send them in login reply.
Timo Sirainen <tss@iki.fi>
parents:
21842
diff
changeset
|
53 const struct ip_addr *ip, const char *tag); |
0819f28fc76b
director: Remember backends' hostnames and send them in login reply.
Timo Sirainen <tss@iki.fi>
parents:
21842
diff
changeset
|
54 struct mail_host * |
11352
19336bddada2
director: Code cleanup - keep mail hosts in a struct rather than in static variables.
Timo Sirainen <tss@iki.fi>
parents:
11321
diff
changeset
|
55 mail_host_lookup(struct mail_host_list *list, const struct ip_addr *ip); |
19336bddada2
director: Code cleanup - keep mail hosts in a struct rather than in static variables.
Timo Sirainen <tss@iki.fi>
parents:
11321
diff
changeset
|
56 struct mail_host * |
18067
a7e830b9b967
director: Added support for backend cluster "tags".
Timo Sirainen <tss@iki.fi>
parents:
18065
diff
changeset
|
57 mail_host_get_by_hash(struct mail_host_list *list, unsigned int hash, |
19409
11a913488054
director: Code cleanup - rename tag to tag_name in mail_host_*() parameters.
Timo Sirainen <tss@iki.fi>
parents:
19408
diff
changeset
|
58 const char *tag_name); |
11321
5f350b5ff6d9
Added initial implementation of a director process (for NFS users).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
59 |
11352
19336bddada2
director: Code cleanup - keep mail hosts in a struct rather than in static variables.
Timo Sirainen <tss@iki.fi>
parents:
11321
diff
changeset
|
60 int mail_hosts_parse_and_add(struct mail_host_list *list, |
19336bddada2
director: Code cleanup - keep mail hosts in a struct rather than in static variables.
Timo Sirainen <tss@iki.fi>
parents:
11321
diff
changeset
|
61 const char *hosts_string); |
21072
f670c77eafcb
director: const mail_host in mail_host_get_tag
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19411
diff
changeset
|
62 const char *mail_host_get_tag(const struct mail_host *host); |
19409
11a913488054
director: Code cleanup - rename tag to tag_name in mail_host_*() parameters.
Timo Sirainen <tss@iki.fi>
parents:
19408
diff
changeset
|
63 void mail_host_set_tag(struct mail_host *host, const char *tag_name); |
21842
86e52ff70044
director: Log vhost count changes and HOST-UP/DOWN
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents:
21079
diff
changeset
|
64 void mail_host_set_down(struct mail_host *host, bool down, time_t timestamp, |
86e52ff70044
director: Log vhost count changes and HOST-UP/DOWN
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents:
21079
diff
changeset
|
65 const char *log_prefix); |
86e52ff70044
director: Log vhost count changes and HOST-UP/DOWN
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents:
21079
diff
changeset
|
66 void mail_host_set_vhost_count(struct mail_host *host, unsigned int vhost_count, |
86e52ff70044
director: Log vhost count changes and HOST-UP/DOWN
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents:
21079
diff
changeset
|
67 const char *log_prefix); |
19407
39cfca637d60
director: Code cleanup - make most mail_host_*() list parameters unnecessary.
Timo Sirainen <tss@iki.fi>
parents:
19310
diff
changeset
|
68 void mail_host_remove(struct mail_host *host); |
11321
5f350b5ff6d9
Added initial implementation of a director process (for NFS users).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
69 |
19287
0f9d4f1a083d
director: Don't become desynced if two directors change the same backend in incompatible ways.
Timo Sirainen <tss@iki.fi>
parents:
18729
diff
changeset
|
70 void mail_hosts_set_synced(struct mail_host_list *list); |
19291
eb9b9519db7a
director: Added mail_hosts_hash(), which identifies the current mail_hosts configuration.
Timo Sirainen <tss@iki.fi>
parents:
19287
diff
changeset
|
71 unsigned int mail_hosts_hash(struct mail_host_list *list); |
18067
a7e830b9b967
director: Added support for backend cluster "tags".
Timo Sirainen <tss@iki.fi>
parents:
18065
diff
changeset
|
72 bool mail_hosts_have_usable(struct mail_host_list *list); |
11352
19336bddada2
director: Code cleanup - keep mail hosts in a struct rather than in static variables.
Timo Sirainen <tss@iki.fi>
parents:
11321
diff
changeset
|
73 const ARRAY_TYPE(mail_host) *mail_hosts_get(struct mail_host_list *list); |
19411
0e05efd14b39
director: Fixed backend selection when multiple tags were used.
Timo Sirainen <tss@iki.fi>
parents:
19409
diff
changeset
|
74 bool mail_hosts_have_tags(struct mail_host_list *list); |
11321
5f350b5ff6d9
Added initial implementation of a director process (for NFS users).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
75 |
21079
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
76 const ARRAY_TYPE(mail_tag) *mail_hosts_get_tags(struct mail_host_list *list); |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
77 struct mail_tag * |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
78 mail_tag_find(struct mail_host_list *list, const char *tag_name); |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
79 struct user * |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
80 mail_hosts_find_user(struct mail_host_list *list, const char *tag_name, |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
81 unsigned int username_hash); |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
82 |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
83 struct mail_host_list * |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
84 mail_hosts_init(unsigned int user_expire_secs, bool consistent_hashing, |
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
85 user_free_hook_t *user_free_hook); |
11352
19336bddada2
director: Code cleanup - keep mail hosts in a struct rather than in static variables.
Timo Sirainen <tss@iki.fi>
parents:
11321
diff
changeset
|
86 void mail_hosts_deinit(struct mail_host_list **list); |
11321
5f350b5ff6d9
Added initial implementation of a director process (for NFS users).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
87 |
11353
1bc3d5589c5a
doveadm director status user: Show more ways of what user's potential hosts are.
Timo Sirainen <tss@iki.fi>
parents:
11352
diff
changeset
|
88 struct mail_host_list *mail_hosts_dup(const struct mail_host_list *src); |
21079
d6f399a7f672
director: Keep per-tag directory
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21077
diff
changeset
|
89 void mail_hosts_sort_users(struct mail_host_list *list); |
11353
1bc3d5589c5a
doveadm director status user: Show more ways of what user's potential hosts are.
Timo Sirainen <tss@iki.fi>
parents:
11352
diff
changeset
|
90 |
11321
5f350b5ff6d9
Added initial implementation of a director process (for NFS users).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
91 #endif |