Coverage Report

Created: 2026-10-13 06:32

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/haproxy/include/haproxy/backend.h
Line
Count
Source
1
/*
2
 * include/haproxy/backend.h
3
 * Functions prototypes for the backend.
4
 *
5
 * Copyright (C) 2000-2012 Willy Tarreau - w@1wt.eu
6
 *
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
22
#ifndef _HAPROXY_BACKEND_H
23
#define _HAPROXY_BACKEND_H
24
25
#include <haproxy/api.h>
26
#include <haproxy/backend-t.h>
27
#include <haproxy/clock.h>
28
#include <haproxy/proxy-t.h>
29
#include <haproxy/server-t.h>
30
#include <haproxy/stream-t.h>
31
#include <haproxy/time.h>
32
33
extern struct list lb_ops_list;
34
35
void lb_ops_register(struct lb_ops *ops);
36
37
struct server *get_server_sh(struct proxy *px, const char *addr, int len, const struct server *avoid);
38
struct server *get_server_uh(struct proxy *px, char *uri, int uri_len, const struct server *avoid);
39
struct server *get_server_ph(struct proxy *px, const char *uri, int uri_len, const struct server *avoid);
40
struct server *get_server_ph_post(struct stream *s, const struct server *avoid);
41
struct server *get_server_hh(struct stream *s, const struct server *avoid);
42
struct server *get_server_rch(struct stream *s, const struct server *avoid);
43
struct server *get_server_expr(struct stream *s, const struct server *avoid);
44
struct server *get_server_rnd(struct stream *s, const struct server *avoid);
45
46
int assign_server(struct stream *s);
47
int assign_server_address(struct stream *s);
48
int assign_server_and_queue(struct stream *s);
49
int alloc_bind_address(struct sockaddr_storage **ss,
50
                       struct server *srv, struct proxy *be,
51
                       struct stream *s);
52
53
int be_reuse_mode(const struct proxy *be, const struct server *srv);
54
55
int64_t be_calculate_conn_hash(struct server *srv, struct stream *strm,
56
                               struct session *sess,
57
                               struct sockaddr_storage *src,
58
                               struct sockaddr_storage *dst,
59
                               struct ist name);
60
int be_reuse_connection(int64_t hash, struct session *sess,
61
                        struct proxy *be, struct server *srv,
62
                        struct stconn *sc, enum obj_type *target, int not_first_req);
63
64
int srv_redispatch_connect(struct stream *t);
65
void back_try_conn_req(struct stream *s);
66
void back_handle_st_req(struct stream *s);
67
void back_handle_st_con(struct stream *s);
68
void back_handle_st_rdy(struct stream *s);
69
void back_handle_st_cer(struct stream *s);
70
71
const char *backend_lb_algo_str(int algo);
72
int backend_parse_balance(const char **args, char **err, struct proxy *curproxy);
73
int tcp_persist_rdp_cookie(struct stream *s, struct channel *req, int an_bit);
74
75
int be_downtime(struct proxy *px);
76
int be_supports_dynamic_srv(struct proxy *px, char **msg);
77
void recount_servers(struct proxy *px);
78
void update_backend_weight(struct proxy *px);
79
80
/* Returns number of usable servers in backend */
81
static inline int be_usable_srv(struct proxy *be)
82
0
{
83
0
        if (be->flags & PR_FL_DISABLED)
84
0
                return 0;
85
0
        else if (be->srv_act)
86
0
                return be->srv_act;
87
0
        else if (be->lbprm.fbck)
88
0
                return 1;
89
0
        else
90
0
                return be->srv_bck;
91
0
}
Unexecuted instantiation: debug.c:be_usable_srv
Unexecuted instantiation: fd.c:be_usable_srv
Unexecuted instantiation: haproxy.c:be_usable_srv
Unexecuted instantiation: http_htx.c:be_usable_srv
Unexecuted instantiation: limits.c:be_usable_srv
Unexecuted instantiation: listener.c:be_usable_srv
Unexecuted instantiation: log.c:be_usable_srv
Unexecuted instantiation: mworker.c:be_usable_srv
Unexecuted instantiation: peers.c:be_usable_srv
Unexecuted instantiation: pool.c:be_usable_srv
Unexecuted instantiation: proto_sockpair.c:be_usable_srv
Unexecuted instantiation: proxy.c:be_usable_srv
Unexecuted instantiation: resolvers.c:be_usable_srv
Unexecuted instantiation: ring.c:be_usable_srv
Unexecuted instantiation: sample.c:be_usable_srv
Unexecuted instantiation: server.c:be_usable_srv
Unexecuted instantiation: session.c:be_usable_srv
Unexecuted instantiation: sink.c:be_usable_srv
Unexecuted instantiation: sock.c:be_usable_srv
Unexecuted instantiation: stats-proxy.c:be_usable_srv
Unexecuted instantiation: stats.c:be_usable_srv
Unexecuted instantiation: stconn.c:be_usable_srv
Unexecuted instantiation: stick_table.c:be_usable_srv
Unexecuted instantiation: stream.c:be_usable_srv
Unexecuted instantiation: sym.c:be_usable_srv
Unexecuted instantiation: tcp_rules.c:be_usable_srv
Unexecuted instantiation: tcpcheck.c:be_usable_srv
Unexecuted instantiation: thread.c:be_usable_srv
Unexecuted instantiation: tools.c:be_usable_srv
Unexecuted instantiation: trace.c:be_usable_srv
Unexecuted instantiation: vars.c:be_usable_srv
Unexecuted instantiation: activity.c:be_usable_srv
Unexecuted instantiation: applet.c:be_usable_srv
Unexecuted instantiation: backend.c:be_usable_srv
Unexecuted instantiation: cfgparse-listen.c:be_usable_srv
Unexecuted instantiation: cfgparse.c:be_usable_srv
Unexecuted instantiation: channel.c:be_usable_srv
Unexecuted instantiation: check.c:be_usable_srv
Unexecuted instantiation: cli.c:be_usable_srv
Unexecuted instantiation: connection.c:be_usable_srv
Unexecuted instantiation: dns.c:be_usable_srv
Unexecuted instantiation: dns_ring.c:be_usable_srv
Unexecuted instantiation: errors.c:be_usable_srv
Unexecuted instantiation: extcheck.c:be_usable_srv
Unexecuted instantiation: filters.c:be_usable_srv
Unexecuted instantiation: flt_bwlim.c:be_usable_srv
Unexecuted instantiation: flt_decomp.c:be_usable_srv
Unexecuted instantiation: flt_http_comp.c:be_usable_srv
Unexecuted instantiation: flt_spoe.c:be_usable_srv
Unexecuted instantiation: flt_trace.c:be_usable_srv
Unexecuted instantiation: frontend.c:be_usable_srv
Unexecuted instantiation: haterm.c:be_usable_srv
Unexecuted instantiation: http_ana.c:be_usable_srv
Unexecuted instantiation: http_ext.c:be_usable_srv
Unexecuted instantiation: http_fetch.c:be_usable_srv
Unexecuted instantiation: http_rules.c:be_usable_srv
Unexecuted instantiation: lb_chash.c:be_usable_srv
Unexecuted instantiation: lb_fas.c:be_usable_srv
Unexecuted instantiation: lb_fwlc.c:be_usable_srv
Unexecuted instantiation: lb_fwrr.c:be_usable_srv
Unexecuted instantiation: lb_map.c:be_usable_srv
Unexecuted instantiation: lb_ss.c:be_usable_srv
Unexecuted instantiation: pattern.c:be_usable_srv
Unexecuted instantiation: payload.c:be_usable_srv
Unexecuted instantiation: proto_rhttp.c:be_usable_srv
Unexecuted instantiation: queue.c:be_usable_srv
Unexecuted instantiation: stats-html.c:be_usable_srv
Unexecuted instantiation: stats-json.c:be_usable_srv
Unexecuted instantiation: cache.c:be_usable_srv
Unexecuted instantiation: cfgparse-global.c:be_usable_srv
Unexecuted instantiation: compression.c:be_usable_srv
Unexecuted instantiation: fcgi-app.c:be_usable_srv
Unexecuted instantiation: proto_tcp.c:be_usable_srv
92
93
/* Returns true if <be> backend can be used as target to a switching rules. */
94
static inline int be_is_eligible(const struct proxy *be)
95
0
{
96
  /* A disabled or unpublished backend cannot be selected for traffic.
97
   * Note that STOPPED state is ignored as there is a risk of breaking
98
   * requests during soft-stop.
99
   */
100
0
  return !(be->flags & (PR_FL_DISABLED|PR_FL_BE_UNPUBLISHED));
101
0
}
Unexecuted instantiation: debug.c:be_is_eligible
Unexecuted instantiation: fd.c:be_is_eligible
Unexecuted instantiation: haproxy.c:be_is_eligible
Unexecuted instantiation: http_htx.c:be_is_eligible
Unexecuted instantiation: limits.c:be_is_eligible
Unexecuted instantiation: listener.c:be_is_eligible
Unexecuted instantiation: log.c:be_is_eligible
Unexecuted instantiation: mworker.c:be_is_eligible
Unexecuted instantiation: peers.c:be_is_eligible
Unexecuted instantiation: pool.c:be_is_eligible
Unexecuted instantiation: proto_sockpair.c:be_is_eligible
Unexecuted instantiation: proxy.c:be_is_eligible
Unexecuted instantiation: resolvers.c:be_is_eligible
Unexecuted instantiation: ring.c:be_is_eligible
Unexecuted instantiation: sample.c:be_is_eligible
Unexecuted instantiation: server.c:be_is_eligible
Unexecuted instantiation: session.c:be_is_eligible
Unexecuted instantiation: sink.c:be_is_eligible
Unexecuted instantiation: sock.c:be_is_eligible
Unexecuted instantiation: stats-proxy.c:be_is_eligible
Unexecuted instantiation: stats.c:be_is_eligible
Unexecuted instantiation: stconn.c:be_is_eligible
Unexecuted instantiation: stick_table.c:be_is_eligible
Unexecuted instantiation: stream.c:be_is_eligible
Unexecuted instantiation: sym.c:be_is_eligible
Unexecuted instantiation: tcp_rules.c:be_is_eligible
Unexecuted instantiation: tcpcheck.c:be_is_eligible
Unexecuted instantiation: thread.c:be_is_eligible
Unexecuted instantiation: tools.c:be_is_eligible
Unexecuted instantiation: trace.c:be_is_eligible
Unexecuted instantiation: vars.c:be_is_eligible
Unexecuted instantiation: activity.c:be_is_eligible
Unexecuted instantiation: applet.c:be_is_eligible
Unexecuted instantiation: backend.c:be_is_eligible
Unexecuted instantiation: cfgparse-listen.c:be_is_eligible
Unexecuted instantiation: cfgparse.c:be_is_eligible
Unexecuted instantiation: channel.c:be_is_eligible
Unexecuted instantiation: check.c:be_is_eligible
Unexecuted instantiation: cli.c:be_is_eligible
Unexecuted instantiation: connection.c:be_is_eligible
Unexecuted instantiation: dns.c:be_is_eligible
Unexecuted instantiation: dns_ring.c:be_is_eligible
Unexecuted instantiation: errors.c:be_is_eligible
Unexecuted instantiation: extcheck.c:be_is_eligible
Unexecuted instantiation: filters.c:be_is_eligible
Unexecuted instantiation: flt_bwlim.c:be_is_eligible
Unexecuted instantiation: flt_decomp.c:be_is_eligible
Unexecuted instantiation: flt_http_comp.c:be_is_eligible
Unexecuted instantiation: flt_spoe.c:be_is_eligible
Unexecuted instantiation: flt_trace.c:be_is_eligible
Unexecuted instantiation: frontend.c:be_is_eligible
Unexecuted instantiation: haterm.c:be_is_eligible
Unexecuted instantiation: http_ana.c:be_is_eligible
Unexecuted instantiation: http_ext.c:be_is_eligible
Unexecuted instantiation: http_fetch.c:be_is_eligible
Unexecuted instantiation: http_rules.c:be_is_eligible
Unexecuted instantiation: lb_chash.c:be_is_eligible
Unexecuted instantiation: lb_fas.c:be_is_eligible
Unexecuted instantiation: lb_fwlc.c:be_is_eligible
Unexecuted instantiation: lb_fwrr.c:be_is_eligible
Unexecuted instantiation: lb_map.c:be_is_eligible
Unexecuted instantiation: lb_ss.c:be_is_eligible
Unexecuted instantiation: pattern.c:be_is_eligible
Unexecuted instantiation: payload.c:be_is_eligible
Unexecuted instantiation: proto_rhttp.c:be_is_eligible
Unexecuted instantiation: queue.c:be_is_eligible
Unexecuted instantiation: stats-html.c:be_is_eligible
Unexecuted instantiation: stats-json.c:be_is_eligible
Unexecuted instantiation: cache.c:be_is_eligible
Unexecuted instantiation: cfgparse-global.c:be_is_eligible
Unexecuted instantiation: compression.c:be_is_eligible
Unexecuted instantiation: fcgi-app.c:be_is_eligible
Unexecuted instantiation: proto_tcp.c:be_is_eligible
102
103
/* set the time of last session on the backend */
104
static inline void be_set_sess_last(struct proxy *be)
105
0
{
106
0
  uint now_sec = ns_to_sec(now_ns);
107
108
0
  if (be->be_counters.shared.tg)
109
0
    if (HA_ATOMIC_LOAD(&be->be_counters.shared.tg[tgid - 1]->last_sess) != now_sec)
110
0
      HA_ATOMIC_STORE(&be->be_counters.shared.tg[tgid - 1]->last_sess, now_sec);
111
0
}
Unexecuted instantiation: debug.c:be_set_sess_last
Unexecuted instantiation: fd.c:be_set_sess_last
Unexecuted instantiation: haproxy.c:be_set_sess_last
Unexecuted instantiation: http_htx.c:be_set_sess_last
Unexecuted instantiation: limits.c:be_set_sess_last
Unexecuted instantiation: listener.c:be_set_sess_last
Unexecuted instantiation: log.c:be_set_sess_last
Unexecuted instantiation: mworker.c:be_set_sess_last
Unexecuted instantiation: peers.c:be_set_sess_last
Unexecuted instantiation: pool.c:be_set_sess_last
Unexecuted instantiation: proto_sockpair.c:be_set_sess_last
Unexecuted instantiation: proxy.c:be_set_sess_last
Unexecuted instantiation: resolvers.c:be_set_sess_last
Unexecuted instantiation: ring.c:be_set_sess_last
Unexecuted instantiation: sample.c:be_set_sess_last
Unexecuted instantiation: server.c:be_set_sess_last
Unexecuted instantiation: session.c:be_set_sess_last
Unexecuted instantiation: sink.c:be_set_sess_last
Unexecuted instantiation: sock.c:be_set_sess_last
Unexecuted instantiation: stats-proxy.c:be_set_sess_last
Unexecuted instantiation: stats.c:be_set_sess_last
Unexecuted instantiation: stconn.c:be_set_sess_last
Unexecuted instantiation: stick_table.c:be_set_sess_last
Unexecuted instantiation: stream.c:be_set_sess_last
Unexecuted instantiation: sym.c:be_set_sess_last
Unexecuted instantiation: tcp_rules.c:be_set_sess_last
Unexecuted instantiation: tcpcheck.c:be_set_sess_last
Unexecuted instantiation: thread.c:be_set_sess_last
Unexecuted instantiation: tools.c:be_set_sess_last
Unexecuted instantiation: trace.c:be_set_sess_last
Unexecuted instantiation: vars.c:be_set_sess_last
Unexecuted instantiation: activity.c:be_set_sess_last
Unexecuted instantiation: applet.c:be_set_sess_last
Unexecuted instantiation: backend.c:be_set_sess_last
Unexecuted instantiation: cfgparse-listen.c:be_set_sess_last
Unexecuted instantiation: cfgparse.c:be_set_sess_last
Unexecuted instantiation: channel.c:be_set_sess_last
Unexecuted instantiation: check.c:be_set_sess_last
Unexecuted instantiation: cli.c:be_set_sess_last
Unexecuted instantiation: connection.c:be_set_sess_last
Unexecuted instantiation: dns.c:be_set_sess_last
Unexecuted instantiation: dns_ring.c:be_set_sess_last
Unexecuted instantiation: errors.c:be_set_sess_last
Unexecuted instantiation: extcheck.c:be_set_sess_last
Unexecuted instantiation: filters.c:be_set_sess_last
Unexecuted instantiation: flt_bwlim.c:be_set_sess_last
Unexecuted instantiation: flt_decomp.c:be_set_sess_last
Unexecuted instantiation: flt_http_comp.c:be_set_sess_last
Unexecuted instantiation: flt_spoe.c:be_set_sess_last
Unexecuted instantiation: flt_trace.c:be_set_sess_last
Unexecuted instantiation: frontend.c:be_set_sess_last
Unexecuted instantiation: haterm.c:be_set_sess_last
Unexecuted instantiation: http_ana.c:be_set_sess_last
Unexecuted instantiation: http_ext.c:be_set_sess_last
Unexecuted instantiation: http_fetch.c:be_set_sess_last
Unexecuted instantiation: http_rules.c:be_set_sess_last
Unexecuted instantiation: lb_chash.c:be_set_sess_last
Unexecuted instantiation: lb_fas.c:be_set_sess_last
Unexecuted instantiation: lb_fwlc.c:be_set_sess_last
Unexecuted instantiation: lb_fwrr.c:be_set_sess_last
Unexecuted instantiation: lb_map.c:be_set_sess_last
Unexecuted instantiation: lb_ss.c:be_set_sess_last
Unexecuted instantiation: pattern.c:be_set_sess_last
Unexecuted instantiation: payload.c:be_set_sess_last
Unexecuted instantiation: proto_rhttp.c:be_set_sess_last
Unexecuted instantiation: queue.c:be_set_sess_last
Unexecuted instantiation: stats-html.c:be_set_sess_last
Unexecuted instantiation: stats-json.c:be_set_sess_last
Unexecuted instantiation: cache.c:be_set_sess_last
Unexecuted instantiation: cfgparse-global.c:be_set_sess_last
Unexecuted instantiation: compression.c:be_set_sess_last
Unexecuted instantiation: fcgi-app.c:be_set_sess_last
Unexecuted instantiation: proto_tcp.c:be_set_sess_last
112
113
/* This function returns non-zero if the designated server will be
114
 * usable for LB according to pending weight and state.
115
 * Otherwise it returns 0.
116
 */
117
static inline int srv_willbe_usable(const struct server *srv)
118
0
{
119
0
  enum srv_state state = srv->next_state;
120
121
0
  if (!srv->next_eweight)
122
0
    return 0;
123
0
  if (srv->next_admin & SRV_ADMF_MAINT)
124
0
    return 0;
125
0
  if (srv->next_admin & SRV_ADMF_DRAIN)
126
0
    return 0;
127
0
  switch (state) {
128
0
  case SRV_ST_STARTING:
129
0
  case SRV_ST_RUNNING:
130
0
    return 1;
131
0
  case SRV_ST_STOPPING:
132
0
  case SRV_ST_STOPPED:
133
0
    return 0;
134
0
  }
135
0
  return 0;
136
0
}
Unexecuted instantiation: debug.c:srv_willbe_usable
Unexecuted instantiation: fd.c:srv_willbe_usable
Unexecuted instantiation: haproxy.c:srv_willbe_usable
Unexecuted instantiation: http_htx.c:srv_willbe_usable
Unexecuted instantiation: limits.c:srv_willbe_usable
Unexecuted instantiation: listener.c:srv_willbe_usable
Unexecuted instantiation: log.c:srv_willbe_usable
Unexecuted instantiation: mworker.c:srv_willbe_usable
Unexecuted instantiation: peers.c:srv_willbe_usable
Unexecuted instantiation: pool.c:srv_willbe_usable
Unexecuted instantiation: proto_sockpair.c:srv_willbe_usable
Unexecuted instantiation: proxy.c:srv_willbe_usable
Unexecuted instantiation: resolvers.c:srv_willbe_usable
Unexecuted instantiation: ring.c:srv_willbe_usable
Unexecuted instantiation: sample.c:srv_willbe_usable
Unexecuted instantiation: server.c:srv_willbe_usable
Unexecuted instantiation: session.c:srv_willbe_usable
Unexecuted instantiation: sink.c:srv_willbe_usable
Unexecuted instantiation: sock.c:srv_willbe_usable
Unexecuted instantiation: stats-proxy.c:srv_willbe_usable
Unexecuted instantiation: stats.c:srv_willbe_usable
Unexecuted instantiation: stconn.c:srv_willbe_usable
Unexecuted instantiation: stick_table.c:srv_willbe_usable
Unexecuted instantiation: stream.c:srv_willbe_usable
Unexecuted instantiation: sym.c:srv_willbe_usable
Unexecuted instantiation: tcp_rules.c:srv_willbe_usable
Unexecuted instantiation: tcpcheck.c:srv_willbe_usable
Unexecuted instantiation: thread.c:srv_willbe_usable
Unexecuted instantiation: tools.c:srv_willbe_usable
Unexecuted instantiation: trace.c:srv_willbe_usable
Unexecuted instantiation: vars.c:srv_willbe_usable
Unexecuted instantiation: activity.c:srv_willbe_usable
Unexecuted instantiation: applet.c:srv_willbe_usable
Unexecuted instantiation: backend.c:srv_willbe_usable
Unexecuted instantiation: cfgparse-listen.c:srv_willbe_usable
Unexecuted instantiation: cfgparse.c:srv_willbe_usable
Unexecuted instantiation: channel.c:srv_willbe_usable
Unexecuted instantiation: check.c:srv_willbe_usable
Unexecuted instantiation: cli.c:srv_willbe_usable
Unexecuted instantiation: connection.c:srv_willbe_usable
Unexecuted instantiation: dns.c:srv_willbe_usable
Unexecuted instantiation: dns_ring.c:srv_willbe_usable
Unexecuted instantiation: errors.c:srv_willbe_usable
Unexecuted instantiation: extcheck.c:srv_willbe_usable
Unexecuted instantiation: filters.c:srv_willbe_usable
Unexecuted instantiation: flt_bwlim.c:srv_willbe_usable
Unexecuted instantiation: flt_decomp.c:srv_willbe_usable
Unexecuted instantiation: flt_http_comp.c:srv_willbe_usable
Unexecuted instantiation: flt_spoe.c:srv_willbe_usable
Unexecuted instantiation: flt_trace.c:srv_willbe_usable
Unexecuted instantiation: frontend.c:srv_willbe_usable
Unexecuted instantiation: haterm.c:srv_willbe_usable
Unexecuted instantiation: http_ana.c:srv_willbe_usable
Unexecuted instantiation: http_ext.c:srv_willbe_usable
Unexecuted instantiation: http_fetch.c:srv_willbe_usable
Unexecuted instantiation: http_rules.c:srv_willbe_usable
Unexecuted instantiation: lb_chash.c:srv_willbe_usable
Unexecuted instantiation: lb_fas.c:srv_willbe_usable
Unexecuted instantiation: lb_fwlc.c:srv_willbe_usable
Unexecuted instantiation: lb_fwrr.c:srv_willbe_usable
Unexecuted instantiation: lb_map.c:srv_willbe_usable
Unexecuted instantiation: lb_ss.c:srv_willbe_usable
Unexecuted instantiation: pattern.c:srv_willbe_usable
Unexecuted instantiation: payload.c:srv_willbe_usable
Unexecuted instantiation: proto_rhttp.c:srv_willbe_usable
Unexecuted instantiation: queue.c:srv_willbe_usable
Unexecuted instantiation: stats-html.c:srv_willbe_usable
Unexecuted instantiation: stats-json.c:srv_willbe_usable
Unexecuted instantiation: cache.c:srv_willbe_usable
Unexecuted instantiation: cfgparse-global.c:srv_willbe_usable
Unexecuted instantiation: compression.c:srv_willbe_usable
Unexecuted instantiation: fcgi-app.c:srv_willbe_usable
Unexecuted instantiation: proto_tcp.c:srv_willbe_usable
137
138
/* This function returns non-zero if the designated server was usable for LB
139
 * according to its current weight and state. Otherwise it returns 0.
140
 */
141
static inline int srv_currently_usable(const struct server *srv)
142
0
{
143
0
  enum srv_state state = srv->cur_state;
144
145
0
  if (!srv->cur_eweight)
146
0
    return 0;
147
0
  if (srv->cur_admin & SRV_ADMF_MAINT)
148
0
    return 0;
149
0
  if (srv->cur_admin & SRV_ADMF_DRAIN)
150
0
    return 0;
151
0
  switch (state) {
152
0
  case SRV_ST_STARTING:
153
0
  case SRV_ST_RUNNING:
154
0
    return 1;
155
0
  case SRV_ST_STOPPING:
156
0
  case SRV_ST_STOPPED:
157
0
    return 0;
158
0
  }
159
0
  return 0;
160
0
}
Unexecuted instantiation: debug.c:srv_currently_usable
Unexecuted instantiation: fd.c:srv_currently_usable
Unexecuted instantiation: haproxy.c:srv_currently_usable
Unexecuted instantiation: http_htx.c:srv_currently_usable
Unexecuted instantiation: limits.c:srv_currently_usable
Unexecuted instantiation: listener.c:srv_currently_usable
Unexecuted instantiation: log.c:srv_currently_usable
Unexecuted instantiation: mworker.c:srv_currently_usable
Unexecuted instantiation: peers.c:srv_currently_usable
Unexecuted instantiation: pool.c:srv_currently_usable
Unexecuted instantiation: proto_sockpair.c:srv_currently_usable
Unexecuted instantiation: proxy.c:srv_currently_usable
Unexecuted instantiation: resolvers.c:srv_currently_usable
Unexecuted instantiation: ring.c:srv_currently_usable
Unexecuted instantiation: sample.c:srv_currently_usable
Unexecuted instantiation: server.c:srv_currently_usable
Unexecuted instantiation: session.c:srv_currently_usable
Unexecuted instantiation: sink.c:srv_currently_usable
Unexecuted instantiation: sock.c:srv_currently_usable
Unexecuted instantiation: stats-proxy.c:srv_currently_usable
Unexecuted instantiation: stats.c:srv_currently_usable
Unexecuted instantiation: stconn.c:srv_currently_usable
Unexecuted instantiation: stick_table.c:srv_currently_usable
Unexecuted instantiation: stream.c:srv_currently_usable
Unexecuted instantiation: sym.c:srv_currently_usable
Unexecuted instantiation: tcp_rules.c:srv_currently_usable
Unexecuted instantiation: tcpcheck.c:srv_currently_usable
Unexecuted instantiation: thread.c:srv_currently_usable
Unexecuted instantiation: tools.c:srv_currently_usable
Unexecuted instantiation: trace.c:srv_currently_usable
Unexecuted instantiation: vars.c:srv_currently_usable
Unexecuted instantiation: activity.c:srv_currently_usable
Unexecuted instantiation: applet.c:srv_currently_usable
Unexecuted instantiation: backend.c:srv_currently_usable
Unexecuted instantiation: cfgparse-listen.c:srv_currently_usable
Unexecuted instantiation: cfgparse.c:srv_currently_usable
Unexecuted instantiation: channel.c:srv_currently_usable
Unexecuted instantiation: check.c:srv_currently_usable
Unexecuted instantiation: cli.c:srv_currently_usable
Unexecuted instantiation: connection.c:srv_currently_usable
Unexecuted instantiation: dns.c:srv_currently_usable
Unexecuted instantiation: dns_ring.c:srv_currently_usable
Unexecuted instantiation: errors.c:srv_currently_usable
Unexecuted instantiation: extcheck.c:srv_currently_usable
Unexecuted instantiation: filters.c:srv_currently_usable
Unexecuted instantiation: flt_bwlim.c:srv_currently_usable
Unexecuted instantiation: flt_decomp.c:srv_currently_usable
Unexecuted instantiation: flt_http_comp.c:srv_currently_usable
Unexecuted instantiation: flt_spoe.c:srv_currently_usable
Unexecuted instantiation: flt_trace.c:srv_currently_usable
Unexecuted instantiation: frontend.c:srv_currently_usable
Unexecuted instantiation: haterm.c:srv_currently_usable
Unexecuted instantiation: http_ana.c:srv_currently_usable
Unexecuted instantiation: http_ext.c:srv_currently_usable
Unexecuted instantiation: http_fetch.c:srv_currently_usable
Unexecuted instantiation: http_rules.c:srv_currently_usable
Unexecuted instantiation: lb_chash.c:srv_currently_usable
Unexecuted instantiation: lb_fas.c:srv_currently_usable
Unexecuted instantiation: lb_fwlc.c:srv_currently_usable
Unexecuted instantiation: lb_fwrr.c:srv_currently_usable
Unexecuted instantiation: lb_map.c:srv_currently_usable
Unexecuted instantiation: lb_ss.c:srv_currently_usable
Unexecuted instantiation: pattern.c:srv_currently_usable
Unexecuted instantiation: payload.c:srv_currently_usable
Unexecuted instantiation: proto_rhttp.c:srv_currently_usable
Unexecuted instantiation: queue.c:srv_currently_usable
Unexecuted instantiation: stats-html.c:srv_currently_usable
Unexecuted instantiation: stats-json.c:srv_currently_usable
Unexecuted instantiation: cache.c:srv_currently_usable
Unexecuted instantiation: cfgparse-global.c:srv_currently_usable
Unexecuted instantiation: compression.c:srv_currently_usable
Unexecuted instantiation: fcgi-app.c:srv_currently_usable
Unexecuted instantiation: proto_tcp.c:srv_currently_usable
161
162
/* This function commits the next server state and weight onto the current
163
 * ones in order to detect future changes. The server's lock is expected to
164
 * be held when calling this function.
165
 */
166
static inline void srv_lb_commit_status(struct server *srv)
167
0
{
168
0
  srv->cur_state = srv->next_state;
169
0
  srv->cur_admin = srv->next_admin;
170
0
  srv->cur_eweight = srv->next_eweight;
171
0
}
Unexecuted instantiation: debug.c:srv_lb_commit_status
Unexecuted instantiation: fd.c:srv_lb_commit_status
Unexecuted instantiation: haproxy.c:srv_lb_commit_status
Unexecuted instantiation: http_htx.c:srv_lb_commit_status
Unexecuted instantiation: limits.c:srv_lb_commit_status
Unexecuted instantiation: listener.c:srv_lb_commit_status
Unexecuted instantiation: log.c:srv_lb_commit_status
Unexecuted instantiation: mworker.c:srv_lb_commit_status
Unexecuted instantiation: peers.c:srv_lb_commit_status
Unexecuted instantiation: pool.c:srv_lb_commit_status
Unexecuted instantiation: proto_sockpair.c:srv_lb_commit_status
Unexecuted instantiation: proxy.c:srv_lb_commit_status
Unexecuted instantiation: resolvers.c:srv_lb_commit_status
Unexecuted instantiation: ring.c:srv_lb_commit_status
Unexecuted instantiation: sample.c:srv_lb_commit_status
Unexecuted instantiation: server.c:srv_lb_commit_status
Unexecuted instantiation: session.c:srv_lb_commit_status
Unexecuted instantiation: sink.c:srv_lb_commit_status
Unexecuted instantiation: sock.c:srv_lb_commit_status
Unexecuted instantiation: stats-proxy.c:srv_lb_commit_status
Unexecuted instantiation: stats.c:srv_lb_commit_status
Unexecuted instantiation: stconn.c:srv_lb_commit_status
Unexecuted instantiation: stick_table.c:srv_lb_commit_status
Unexecuted instantiation: stream.c:srv_lb_commit_status
Unexecuted instantiation: sym.c:srv_lb_commit_status
Unexecuted instantiation: tcp_rules.c:srv_lb_commit_status
Unexecuted instantiation: tcpcheck.c:srv_lb_commit_status
Unexecuted instantiation: thread.c:srv_lb_commit_status
Unexecuted instantiation: tools.c:srv_lb_commit_status
Unexecuted instantiation: trace.c:srv_lb_commit_status
Unexecuted instantiation: vars.c:srv_lb_commit_status
Unexecuted instantiation: activity.c:srv_lb_commit_status
Unexecuted instantiation: applet.c:srv_lb_commit_status
Unexecuted instantiation: backend.c:srv_lb_commit_status
Unexecuted instantiation: cfgparse-listen.c:srv_lb_commit_status
Unexecuted instantiation: cfgparse.c:srv_lb_commit_status
Unexecuted instantiation: channel.c:srv_lb_commit_status
Unexecuted instantiation: check.c:srv_lb_commit_status
Unexecuted instantiation: cli.c:srv_lb_commit_status
Unexecuted instantiation: connection.c:srv_lb_commit_status
Unexecuted instantiation: dns.c:srv_lb_commit_status
Unexecuted instantiation: dns_ring.c:srv_lb_commit_status
Unexecuted instantiation: errors.c:srv_lb_commit_status
Unexecuted instantiation: extcheck.c:srv_lb_commit_status
Unexecuted instantiation: filters.c:srv_lb_commit_status
Unexecuted instantiation: flt_bwlim.c:srv_lb_commit_status
Unexecuted instantiation: flt_decomp.c:srv_lb_commit_status
Unexecuted instantiation: flt_http_comp.c:srv_lb_commit_status
Unexecuted instantiation: flt_spoe.c:srv_lb_commit_status
Unexecuted instantiation: flt_trace.c:srv_lb_commit_status
Unexecuted instantiation: frontend.c:srv_lb_commit_status
Unexecuted instantiation: haterm.c:srv_lb_commit_status
Unexecuted instantiation: http_ana.c:srv_lb_commit_status
Unexecuted instantiation: http_ext.c:srv_lb_commit_status
Unexecuted instantiation: http_fetch.c:srv_lb_commit_status
Unexecuted instantiation: http_rules.c:srv_lb_commit_status
Unexecuted instantiation: lb_chash.c:srv_lb_commit_status
Unexecuted instantiation: lb_fas.c:srv_lb_commit_status
Unexecuted instantiation: lb_fwlc.c:srv_lb_commit_status
Unexecuted instantiation: lb_fwrr.c:srv_lb_commit_status
Unexecuted instantiation: lb_map.c:srv_lb_commit_status
Unexecuted instantiation: lb_ss.c:srv_lb_commit_status
Unexecuted instantiation: pattern.c:srv_lb_commit_status
Unexecuted instantiation: payload.c:srv_lb_commit_status
Unexecuted instantiation: proto_rhttp.c:srv_lb_commit_status
Unexecuted instantiation: queue.c:srv_lb_commit_status
Unexecuted instantiation: stats-html.c:srv_lb_commit_status
Unexecuted instantiation: stats-json.c:srv_lb_commit_status
Unexecuted instantiation: cache.c:srv_lb_commit_status
Unexecuted instantiation: cfgparse-global.c:srv_lb_commit_status
Unexecuted instantiation: compression.c:srv_lb_commit_status
Unexecuted instantiation: fcgi-app.c:srv_lb_commit_status
Unexecuted instantiation: proto_tcp.c:srv_lb_commit_status
172
173
/* This function returns true when a server has experienced a change since last
174
 * commit on its state or weight, otherwise zero.
175
 */
176
static inline int srv_lb_status_changed(const struct server *srv)
177
0
{
178
0
  return (srv->next_state != srv->cur_state ||
179
0
    srv->next_admin != srv->cur_admin ||
180
0
    srv->next_eweight != srv->cur_eweight);
181
0
}
Unexecuted instantiation: debug.c:srv_lb_status_changed
Unexecuted instantiation: fd.c:srv_lb_status_changed
Unexecuted instantiation: haproxy.c:srv_lb_status_changed
Unexecuted instantiation: http_htx.c:srv_lb_status_changed
Unexecuted instantiation: limits.c:srv_lb_status_changed
Unexecuted instantiation: listener.c:srv_lb_status_changed
Unexecuted instantiation: log.c:srv_lb_status_changed
Unexecuted instantiation: mworker.c:srv_lb_status_changed
Unexecuted instantiation: peers.c:srv_lb_status_changed
Unexecuted instantiation: pool.c:srv_lb_status_changed
Unexecuted instantiation: proto_sockpair.c:srv_lb_status_changed
Unexecuted instantiation: proxy.c:srv_lb_status_changed
Unexecuted instantiation: resolvers.c:srv_lb_status_changed
Unexecuted instantiation: ring.c:srv_lb_status_changed
Unexecuted instantiation: sample.c:srv_lb_status_changed
Unexecuted instantiation: server.c:srv_lb_status_changed
Unexecuted instantiation: session.c:srv_lb_status_changed
Unexecuted instantiation: sink.c:srv_lb_status_changed
Unexecuted instantiation: sock.c:srv_lb_status_changed
Unexecuted instantiation: stats-proxy.c:srv_lb_status_changed
Unexecuted instantiation: stats.c:srv_lb_status_changed
Unexecuted instantiation: stconn.c:srv_lb_status_changed
Unexecuted instantiation: stick_table.c:srv_lb_status_changed
Unexecuted instantiation: stream.c:srv_lb_status_changed
Unexecuted instantiation: sym.c:srv_lb_status_changed
Unexecuted instantiation: tcp_rules.c:srv_lb_status_changed
Unexecuted instantiation: tcpcheck.c:srv_lb_status_changed
Unexecuted instantiation: thread.c:srv_lb_status_changed
Unexecuted instantiation: tools.c:srv_lb_status_changed
Unexecuted instantiation: trace.c:srv_lb_status_changed
Unexecuted instantiation: vars.c:srv_lb_status_changed
Unexecuted instantiation: activity.c:srv_lb_status_changed
Unexecuted instantiation: applet.c:srv_lb_status_changed
Unexecuted instantiation: backend.c:srv_lb_status_changed
Unexecuted instantiation: cfgparse-listen.c:srv_lb_status_changed
Unexecuted instantiation: cfgparse.c:srv_lb_status_changed
Unexecuted instantiation: channel.c:srv_lb_status_changed
Unexecuted instantiation: check.c:srv_lb_status_changed
Unexecuted instantiation: cli.c:srv_lb_status_changed
Unexecuted instantiation: connection.c:srv_lb_status_changed
Unexecuted instantiation: dns.c:srv_lb_status_changed
Unexecuted instantiation: dns_ring.c:srv_lb_status_changed
Unexecuted instantiation: errors.c:srv_lb_status_changed
Unexecuted instantiation: extcheck.c:srv_lb_status_changed
Unexecuted instantiation: filters.c:srv_lb_status_changed
Unexecuted instantiation: flt_bwlim.c:srv_lb_status_changed
Unexecuted instantiation: flt_decomp.c:srv_lb_status_changed
Unexecuted instantiation: flt_http_comp.c:srv_lb_status_changed
Unexecuted instantiation: flt_spoe.c:srv_lb_status_changed
Unexecuted instantiation: flt_trace.c:srv_lb_status_changed
Unexecuted instantiation: frontend.c:srv_lb_status_changed
Unexecuted instantiation: haterm.c:srv_lb_status_changed
Unexecuted instantiation: http_ana.c:srv_lb_status_changed
Unexecuted instantiation: http_ext.c:srv_lb_status_changed
Unexecuted instantiation: http_fetch.c:srv_lb_status_changed
Unexecuted instantiation: http_rules.c:srv_lb_status_changed
Unexecuted instantiation: lb_chash.c:srv_lb_status_changed
Unexecuted instantiation: lb_fas.c:srv_lb_status_changed
Unexecuted instantiation: lb_fwlc.c:srv_lb_status_changed
Unexecuted instantiation: lb_fwrr.c:srv_lb_status_changed
Unexecuted instantiation: lb_map.c:srv_lb_status_changed
Unexecuted instantiation: lb_ss.c:srv_lb_status_changed
Unexecuted instantiation: pattern.c:srv_lb_status_changed
Unexecuted instantiation: payload.c:srv_lb_status_changed
Unexecuted instantiation: proto_rhttp.c:srv_lb_status_changed
Unexecuted instantiation: queue.c:srv_lb_status_changed
Unexecuted instantiation: stats-html.c:srv_lb_status_changed
Unexecuted instantiation: stats-json.c:srv_lb_status_changed
Unexecuted instantiation: cache.c:srv_lb_status_changed
Unexecuted instantiation: cfgparse-global.c:srv_lb_status_changed
Unexecuted instantiation: compression.c:srv_lb_status_changed
Unexecuted instantiation: fcgi-app.c:srv_lb_status_changed
Unexecuted instantiation: proto_tcp.c:srv_lb_status_changed
182
183
/* sends a log message when a backend goes down, and also sets last
184
 * change date.
185
 */
186
void set_backend_down(struct proxy *be);
187
188
unsigned int gen_hash(const struct proxy* px, const char* key, unsigned long len);
189
190
/* Returns true if connection reuse is supported by <be> backend. */
191
static inline int be_supports_conn_reuse(const struct proxy *be)
192
0
{
193
0
  return be->mode == PR_MODE_HTTP || be->mode == PR_MODE_SPOP;
194
0
}
Unexecuted instantiation: debug.c:be_supports_conn_reuse
Unexecuted instantiation: fd.c:be_supports_conn_reuse
Unexecuted instantiation: haproxy.c:be_supports_conn_reuse
Unexecuted instantiation: http_htx.c:be_supports_conn_reuse
Unexecuted instantiation: limits.c:be_supports_conn_reuse
Unexecuted instantiation: listener.c:be_supports_conn_reuse
Unexecuted instantiation: log.c:be_supports_conn_reuse
Unexecuted instantiation: mworker.c:be_supports_conn_reuse
Unexecuted instantiation: peers.c:be_supports_conn_reuse
Unexecuted instantiation: pool.c:be_supports_conn_reuse
Unexecuted instantiation: proto_sockpair.c:be_supports_conn_reuse
Unexecuted instantiation: proxy.c:be_supports_conn_reuse
Unexecuted instantiation: resolvers.c:be_supports_conn_reuse
Unexecuted instantiation: ring.c:be_supports_conn_reuse
Unexecuted instantiation: sample.c:be_supports_conn_reuse
Unexecuted instantiation: server.c:be_supports_conn_reuse
Unexecuted instantiation: session.c:be_supports_conn_reuse
Unexecuted instantiation: sink.c:be_supports_conn_reuse
Unexecuted instantiation: sock.c:be_supports_conn_reuse
Unexecuted instantiation: stats-proxy.c:be_supports_conn_reuse
Unexecuted instantiation: stats.c:be_supports_conn_reuse
Unexecuted instantiation: stconn.c:be_supports_conn_reuse
Unexecuted instantiation: stick_table.c:be_supports_conn_reuse
Unexecuted instantiation: stream.c:be_supports_conn_reuse
Unexecuted instantiation: sym.c:be_supports_conn_reuse
Unexecuted instantiation: tcp_rules.c:be_supports_conn_reuse
Unexecuted instantiation: tcpcheck.c:be_supports_conn_reuse
Unexecuted instantiation: thread.c:be_supports_conn_reuse
Unexecuted instantiation: tools.c:be_supports_conn_reuse
Unexecuted instantiation: trace.c:be_supports_conn_reuse
Unexecuted instantiation: vars.c:be_supports_conn_reuse
Unexecuted instantiation: activity.c:be_supports_conn_reuse
Unexecuted instantiation: applet.c:be_supports_conn_reuse
Unexecuted instantiation: backend.c:be_supports_conn_reuse
Unexecuted instantiation: cfgparse-listen.c:be_supports_conn_reuse
Unexecuted instantiation: cfgparse.c:be_supports_conn_reuse
Unexecuted instantiation: channel.c:be_supports_conn_reuse
Unexecuted instantiation: check.c:be_supports_conn_reuse
Unexecuted instantiation: cli.c:be_supports_conn_reuse
Unexecuted instantiation: connection.c:be_supports_conn_reuse
Unexecuted instantiation: dns.c:be_supports_conn_reuse
Unexecuted instantiation: dns_ring.c:be_supports_conn_reuse
Unexecuted instantiation: errors.c:be_supports_conn_reuse
Unexecuted instantiation: extcheck.c:be_supports_conn_reuse
Unexecuted instantiation: filters.c:be_supports_conn_reuse
Unexecuted instantiation: flt_bwlim.c:be_supports_conn_reuse
Unexecuted instantiation: flt_decomp.c:be_supports_conn_reuse
Unexecuted instantiation: flt_http_comp.c:be_supports_conn_reuse
Unexecuted instantiation: flt_spoe.c:be_supports_conn_reuse
Unexecuted instantiation: flt_trace.c:be_supports_conn_reuse
Unexecuted instantiation: frontend.c:be_supports_conn_reuse
Unexecuted instantiation: haterm.c:be_supports_conn_reuse
Unexecuted instantiation: http_ana.c:be_supports_conn_reuse
Unexecuted instantiation: http_ext.c:be_supports_conn_reuse
Unexecuted instantiation: http_fetch.c:be_supports_conn_reuse
Unexecuted instantiation: http_rules.c:be_supports_conn_reuse
Unexecuted instantiation: lb_chash.c:be_supports_conn_reuse
Unexecuted instantiation: lb_fas.c:be_supports_conn_reuse
Unexecuted instantiation: lb_fwlc.c:be_supports_conn_reuse
Unexecuted instantiation: lb_fwrr.c:be_supports_conn_reuse
Unexecuted instantiation: lb_map.c:be_supports_conn_reuse
Unexecuted instantiation: lb_ss.c:be_supports_conn_reuse
Unexecuted instantiation: pattern.c:be_supports_conn_reuse
Unexecuted instantiation: payload.c:be_supports_conn_reuse
Unexecuted instantiation: proto_rhttp.c:be_supports_conn_reuse
Unexecuted instantiation: queue.c:be_supports_conn_reuse
Unexecuted instantiation: stats-html.c:be_supports_conn_reuse
Unexecuted instantiation: stats-json.c:be_supports_conn_reuse
Unexecuted instantiation: cache.c:be_supports_conn_reuse
Unexecuted instantiation: cfgparse-global.c:be_supports_conn_reuse
Unexecuted instantiation: compression.c:be_supports_conn_reuse
Unexecuted instantiation: fcgi-app.c:be_supports_conn_reuse
Unexecuted instantiation: proto_tcp.c:be_supports_conn_reuse
195
196
#endif /* _HAPROXY_BACKEND_H */
197
198
/*
199
 * Local variables:
200
 *  c-indent-level: 8
201
 *  c-basic-offset: 8
202
 * End:
203
 */