]> git.ipfire.org Git - thirdparty/squid.git/blame - src/CachePeer.h
Cleanup: replace USE_SSL wrapper macro with USE_OPENSSL
[thirdparty/squid.git] / src / CachePeer.h
CommitLineData
a011edee
FC
1#ifndef SQUID_CACHEPEER_H_
2#define SQUID_CACHEPEER_H_
3/*
4 * SQUID Web Proxy Cache http://www.squid-cache.org/
5 * ----------------------------------------------------------
6 *
7 * Squid is the result of efforts by numerous individuals from
8 * the Internet community; see the CONTRIBUTORS file for full
9 * details. Many organizations have provided support for Squid's
10 * development; see the SPONSORS file for full details. Squid is
11 * Copyrighted (C) 2001 by the Regents of the University of
12 * California; see the COPYRIGHT file for full details. Squid
13 * incorporates software developed and/or copyrighted by other
14 * sources; see the CREDITS file for full details.
15 *
16 * This program is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License as published by
18 * the Free Software Foundation; either version 2 of the License, or
19 * (at your option) any later version.
20 *
21 * This program is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 * GNU General Public License for more details.
25 *
26 * You should have received a copy of the GNU General Public License
27 * along with this program; if not, write to the Free Software
28 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
29 *
30 */
31
6f58d7d7 32#include "acl/forward.h"
a011edee
FC
33#include "enums.h"
34#include "icp_opcode.h"
35#include "ip/Address.h"
36
a7458115
FC
37//TODO: remove, it is unconditionally defined and always used.
38#define PEER_MULTICAST_SIBLINGS 1
39
cb4f4424 40#if HAVE_OPENSSL_SSL_H
a011edee
FC
41#include <openssl/ssl.h>
42#endif
43
b802d2cb 44class CachePeerDomainList;
5844d003 45class NeighborTypeDomainList;
a011edee
FC
46class PeerDigest;
47
001d55dc 48// currently a POD
1b2f0924
FC
49class CachePeer
50{
a011edee
FC
51public:
52 u_int index;
53 char *name;
54 char *host;
55 peer_t type;
56
57 Ip::Address in_addr;
58
59 struct {
60 int pings_sent;
61 int pings_acked;
62 int fetches;
63 int rtt;
64 int ignored_replies;
65 int n_keepalives_sent;
66 int n_keepalives_recv;
67 time_t probe_start;
68 time_t last_query;
69 time_t last_reply;
70 time_t last_connect_failure;
71 time_t last_connect_probe;
72 int logged_state; /* so we can print dead/revived msgs */
73 int conn_open; /* current opened connections */
74 } stats;
75
76 struct {
77 int version;
78 int counts[ICP_END+1];
79 unsigned short port;
80 } icp;
81
82#if USE_HTCP
83 struct {
84 double version;
85 int counts[2];
86 unsigned short port;
87 } htcp;
88#endif
89
90 unsigned short http_port;
b802d2cb 91 CachePeerDomainList *peer_domain;
5844d003 92 NeighborTypeDomainList *typelist;
a011edee
FC
93 acl_access *access;
94
95 struct {
ccdf4138
FC
96 bool proxy_only;
97 bool no_query;
98 bool background_ping;
99 bool no_digest;
100 bool default_parent;
101 bool roundrobin;
102 bool weighted_roundrobin;
103 bool mcast_responder;
104 bool closest_only;
a011edee 105#if USE_HTCP
ccdf4138
FC
106 bool htcp;
107 bool htcp_oldsquid;
108 bool htcp_no_clr;
109 bool htcp_no_purge_clr;
110 bool htcp_only_clr;
111 bool htcp_forward_clr;
a011edee 112#endif
ccdf4138 113 bool no_netdb_exchange;
a011edee 114#if USE_DELAY_POOLS
ccdf4138 115 bool no_delay;
a011edee 116#endif
ccdf4138
FC
117 bool allow_miss;
118 bool carp;
a011edee 119 struct {
ccdf4138
FC
120 bool set; //If false, whole url is to be used. Overrides others
121 bool scheme;
122 bool host;
123 bool port;
124 bool path;
125 bool params;
a011edee
FC
126 } carp_key;
127#if USE_AUTH
ccdf4138 128 bool userhash;
a011edee 129#endif
ccdf4138
FC
130 bool sourcehash;
131 bool originserver;
132 bool no_tproxy;
a011edee 133#if PEER_MULTICAST_SIBLINGS
ccdf4138 134 bool mcast_siblings;
a011edee
FC
135#endif
136 } options;
137
138 int weight;
139 int basetime;
140
141 struct {
142 double avg_n_members;
143 int n_times_counted;
144 int n_replies_expected;
145 int ttl;
146 int id;
147
148 struct {
ccdf4138
FC
149 bool count_event_pending;
150 bool counting;
a011edee
FC
151 } flags;
152 } mcast;
153#if USE_CACHE_DIGESTS
154
155 PeerDigest *digest;
156 char *digest_url;
157#endif
158
159 int tcp_up; /* 0 if a connect() fails */
160
161 Ip::Address addresses[10];
162 int n_addresses;
163 int rr_count;
164 CachePeer *next;
165 int testing_now;
166
167 struct {
168 unsigned int hash;
169 double load_multiplier;
170 double load_factor; /* normalized weight value */
171 } carp;
172#if USE_AUTH
173 struct {
174 unsigned int hash;
175 double load_multiplier;
176 double load_factor; /* normalized weight value */
177 } userhash;
178#endif
179 struct {
180 unsigned int hash;
181 double load_multiplier;
182 double load_factor; /* normalized weight value */
183 } sourcehash;
184
185 char *login; /* Proxy authorization */
186 time_t connect_timeout;
187 int connect_fail_limit;
188 int max_conn;
189 char *domain; /* Forced domain */
cb4f4424 190#if USE_OPENSSL
a011edee
FC
191
192 int use_ssl;
193 char *sslcert;
194 char *sslkey;
195 int sslversion;
196 char *ssloptions;
197 char *sslcipher;
198 char *sslcafile;
199 char *sslcapath;
200 char *sslcrlfile;
201 char *sslflags;
202 char *ssldomain;
203 SSL_CTX *sslContext;
204 SSL_SESSION *sslSession;
205#endif
206
207 int front_end_https;
208 int connection_auth;
209};
210
211#endif /* SQUID_CACHEPEER_H_ */