blob: f0ff52aa23c4288c7f1e72eeddff98c3570da6e8 [file] [log] [blame]
Willy TARREAU3dc06442006-06-15 21:48:13 +02001/*
Willy Tarreaubaaee002006-06-26 02:48:02 +02002 include/proto/checks.h
3 Functions prototypes for the checks.
4
Willy Tarreau26c25062009-03-08 09:38:41 +01005 Copyright (C) 2000-2009 Willy Tarreau - w@1wt.eu
Christopher Fauletfbcc77c2020-04-01 20:54:05 +02006
Willy TARREAU3dc06442006-06-15 21:48:13 +02007 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Lesser General Public
9 License as published by the Free Software Foundation, version 2.1
10 exclusively.
11
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Lesser General Public License for more details.
16
17 You should have received a copy of the GNU Lesser General Public
18 License along with this library; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20*/
21
Willy Tarreaubaaee002006-06-26 02:48:02 +020022#ifndef _PROTO_CHECKS_H
23#define _PROTO_CHECKS_H
24
Gaetan Rivet13a50432020-02-21 18:13:44 +010025#include <types/action.h>
Christopher Fauletdc75d572020-04-29 13:32:21 +020026#include <types/mailers.h>
27#include <types/checks.h>
Gaetan Rivet13a50432020-02-21 18:13:44 +010028
Krzysztof Piotr Oledzki09605412009-09-23 22:09:24 +020029const char *get_check_status_description(short check_status);
30const char *get_check_status_info(short check_status);
Willy Tarreau9fe7aae2013-12-31 23:47:37 +010031void __health_adjust(struct server *s, short status);
Willy Tarreaubaaee002006-06-26 02:48:02 +020032
Willy Tarreau9fe7aae2013-12-31 23:47:37 +010033/* Use this one only. This inline version only ensures that we don't
34 * call the function when the observe mode is disabled.
35 */
36static inline void health_adjust(struct server *s, short status)
37{
Christopher Faulet2a944ee2017-11-07 10:42:54 +010038 HA_SPIN_LOCK(SERVER_LOCK, &s->lock);
Willy Tarreau9fe7aae2013-12-31 23:47:37 +010039 /* return now if observing nor health check is not enabled */
Emeric Brun9f0b4582017-10-23 14:39:51 +020040 if (!s->observe || !s->check.task) {
Christopher Faulet2a944ee2017-11-07 10:42:54 +010041 HA_SPIN_UNLOCK(SERVER_LOCK, &s->lock);
Willy Tarreau9fe7aae2013-12-31 23:47:37 +010042 return;
Emeric Brun9f0b4582017-10-23 14:39:51 +020043 }
Willy Tarreau9fe7aae2013-12-31 23:47:37 +010044
Emeric Brun9f0b4582017-10-23 14:39:51 +020045 __health_adjust(s, status);
Christopher Faulet2a944ee2017-11-07 10:42:54 +010046 HA_SPIN_UNLOCK(SERVER_LOCK, &s->lock);
Willy Tarreau9fe7aae2013-12-31 23:47:37 +010047}
48
Simon Hormanbfb5d332015-01-30 11:22:55 +090049void free_check(struct check *check);
Simon Hormanb1900d52015-01-30 11:22:54 +090050
Christopher Faulet0108bb32017-10-20 21:34:32 +020051int init_email_alert(struct mailers *mailers, struct proxy *p, char **err);
Simon Horman64e34162015-02-06 11:11:57 +090052void send_email_alert(struct server *s, int priority, const char *format, ...)
53 __attribute__ ((format(printf, 3, 4)));
Christopher Fauletba7bc162016-11-07 21:07:38 +010054
Gaetan Rivet707b52f2020-02-21 18:14:59 +010055extern struct action_kw_list tcp_check_keywords;
56static inline void tcp_check_keywords_register(struct action_kw_list *kw_list)
57{
58 LIST_ADDQ(&tcp_check_keywords.list, &kw_list->list);
59}
60
Christopher Faulet5d503fc2020-03-30 20:34:34 +020061void deinit_proxy_tcpcheck(struct proxy *px);
Christopher Faulet7a1e2e12020-04-02 18:05:11 +020062int dup_tcpcheck_vars(struct list *dst, struct list *src);
63
Christopher Fauletba7bc162016-11-07 21:07:38 +010064/* Declared here, but the definitions are in flt_spoe.c */
Christopher Faulet8ef75252017-02-20 22:56:03 +010065int spoe_prepare_healthcheck_request(char **req, int *len);
66int spoe_handle_healthcheck_response(char *frame, size_t size, char *err, int errlen);
Christopher Fauletba7bc162016-11-07 21:07:38 +010067
Christopher Faulet430e4802020-04-09 15:28:16 +020068int proxy_parse_tcp_check_opt(char **args, int cur_arg, struct proxy *curpx, struct proxy *defpx,
69 const char *file, int line);
Christopher Faulet33f05df2020-04-01 11:08:50 +020070int proxy_parse_redis_check_opt(char **args, int cur_arg, struct proxy *curpx, struct proxy *defpx,
71 const char *file, int line);
Christopher Faulet811f78c2020-04-01 11:10:27 +020072int proxy_parse_ssl_hello_chk_opt(char **args, int cur_arg, struct proxy *curpx, struct proxy *defpx,
73 const char *file, int line);
Christopher Fauletfbcc77c2020-04-01 20:54:05 +020074int proxy_parse_smtpchk_opt(char **args, int cur_arg, struct proxy *curpx, struct proxy *defpx,
Christopher Fauletce355072020-04-02 11:44:39 +020075 const char *file, int line);
76int proxy_parse_pgsql_check_opt(char **args, int cur_arg, struct proxy *curpx, struct proxy *defpx,
77 const char *file, int line);
Christopher Fauletf2b3be52020-04-02 18:07:37 +020078int proxy_parse_mysql_check_opt(char **args, int cur_arg, struct proxy *curpx, struct proxy *defpx,
79 const char *file, int line);
Christopher Faulet1997eca2020-04-03 23:13:50 +020080int proxy_parse_ldap_check_opt(char **args, int cur_arg, struct proxy *curpx, struct proxy *defpx,
81 const char *file, int line);
Christopher Faulet267b01b2020-04-04 10:27:09 +020082int proxy_parse_spop_check_opt(char **args, int cur_arg, struct proxy *curpx, struct proxy *defpx,
83 const char *file, int line);
Christopher Faulet6c2a7432020-04-09 14:48:48 +020084int proxy_parse_httpchk_opt(char **args, int cur_arg, struct proxy *curpx, struct proxy *defpx,
85 const char *file, int line);
Christopher Faulet6f557912020-04-09 15:58:50 +020086int proxy_parse_external_check_opt(char **args, int cur_arg, struct proxy *curpx, struct proxy *defpx,
87 const char *file, int line);
Christopher Faulet811f78c2020-04-01 11:10:27 +020088
Christopher Faulet0ae3d1d2020-04-06 17:54:24 +020089int set_srv_agent_send(struct server *srv, const char *send);
90
Willy Tarreaubaaee002006-06-26 02:48:02 +020091#endif /* _PROTO_CHECKS_H */
Willy TARREAU3dc06442006-06-15 21:48:13 +020092
Willy Tarreaubaaee002006-06-26 02:48:02 +020093/*
94 * Local variables:
95 * c-indent-level: 8
96 * c-basic-offset: 8
97 * End:
98 */