blob: 2b285f3ce1e0ad91ef17f75d0dd8c2706e9fdd5f [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
Willy TARREAU3dc06442006-06-15 21:48:13 +02006
7 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
25#include <types/task.h>
Willy Tarreaue3ba5f02006-06-29 18:54:54 +020026#include <common/config.h>
Christopher Faulet0108bb32017-10-20 21:34:32 +020027#include <types/mailers.h>
Willy TARREAU3dc06442006-06-15 21:48:13 +020028
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 Tarreaubc174aa2012-11-19 16:10:32 +010033extern struct data_cb check_conn_cb;
34
Willy Tarreau9fe7aae2013-12-31 23:47:37 +010035/* Use this one only. This inline version only ensures that we don't
36 * call the function when the observe mode is disabled.
37 */
38static inline void health_adjust(struct server *s, short status)
39{
Christopher Faulet2a944ee2017-11-07 10:42:54 +010040 HA_SPIN_LOCK(SERVER_LOCK, &s->lock);
Willy Tarreau9fe7aae2013-12-31 23:47:37 +010041 /* return now if observing nor health check is not enabled */
Emeric Brun9f0b4582017-10-23 14:39:51 +020042 if (!s->observe || !s->check.task) {
Christopher Faulet2a944ee2017-11-07 10:42:54 +010043 HA_SPIN_UNLOCK(SERVER_LOCK, &s->lock);
Willy Tarreau9fe7aae2013-12-31 23:47:37 +010044 return;
Emeric Brun9f0b4582017-10-23 14:39:51 +020045 }
Willy Tarreau9fe7aae2013-12-31 23:47:37 +010046
Emeric Brun9f0b4582017-10-23 14:39:51 +020047 __health_adjust(s, status);
Christopher Faulet2a944ee2017-11-07 10:42:54 +010048 HA_SPIN_UNLOCK(SERVER_LOCK, &s->lock);
Willy Tarreau9fe7aae2013-12-31 23:47:37 +010049}
50
Simon Hormanb1900d52015-01-30 11:22:54 +090051const char *init_check(struct check *check, int type);
Simon Hormanbfb5d332015-01-30 11:22:55 +090052void free_check(struct check *check);
Simon Hormanb1900d52015-01-30 11:22:54 +090053
Christopher Faulet0108bb32017-10-20 21:34:32 +020054int init_email_alert(struct mailers *mailers, struct proxy *p, char **err);
Simon Horman64e34162015-02-06 11:11:57 +090055void send_email_alert(struct server *s, int priority, const char *format, ...)
56 __attribute__ ((format(printf, 3, 4)));
Baptiste Assmann95db2bc2016-06-13 14:15:41 +020057int srv_check_healthcheck_port(struct check *chk);
Christopher Fauletba7bc162016-11-07 21:07:38 +010058
59/* Declared here, but the definitions are in flt_spoe.c */
Christopher Faulet8ef75252017-02-20 22:56:03 +010060int spoe_prepare_healthcheck_request(char **req, int *len);
61int spoe_handle_healthcheck_response(char *frame, size_t size, char *err, int errlen);
Christopher Fauletba7bc162016-11-07 21:07:38 +010062
Willy Tarreaubaaee002006-06-26 02:48:02 +020063#endif /* _PROTO_CHECKS_H */
Willy TARREAU3dc06442006-06-15 21:48:13 +020064
Willy Tarreaubaaee002006-06-26 02:48:02 +020065/*
66 * Local variables:
67 * c-indent-level: 8
68 * c-basic-offset: 8
69 * End:
70 */