]> git.ipfire.org Git - thirdparty/squid.git/blob - src/neighbors.h
Merged from trunk
[thirdparty/squid.git] / src / neighbors.h
1 /*
2 * DEBUG: section 15 Neighbor Routines
3 * AUTHOR: Harvest Derived
4 *
5 * SQUID Web Proxy Cache http://www.squid-cache.org/
6 * ----------------------------------------------------------
7 *
8 * Squid is the result of efforts by numerous individuals from
9 * the Internet community; see the CONTRIBUTORS file for full
10 * details. Many organizations have provided support for Squid's
11 * development; see the SPONSORS file for full details. Squid is
12 * Copyrighted (C) 2001 by the Regents of the University of
13 * California; see the COPYRIGHT file for full details. Squid
14 * incorporates software developed and/or copyrighted by other
15 * sources; see the CREDITS file for full details.
16 *
17 * This program is free software; you can redistribute it and/or modify
18 * it under the terms of the GNU General Public License as published by
19 * the Free Software Foundation; either version 2 of the License, or
20 * (at your option) any later version.
21 *
22 * This program is distributed in the hope that it will be useful,
23 * but WITHOUT ANY WARRANTY; without even the implied warranty of
24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 * GNU General Public License for more details.
26 *
27 * You should have received a copy of the GNU General Public License
28 * along with this program; if not, write to the Free Software
29 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
30 *
31 */
32
33
34 #ifndef SQUID_NEIGHBORS_H_
35 #define SQUID_NEIGHBORS_H_
36
37 #include "enums.h"
38 #include "HttpRequestMethod.h"
39 #include "lookup_t.h"
40 #include "ip/Address.h"
41 #include "typedefs.h"
42
43 class HttpRequest;
44 class peer;
45 class StoreEntry;
46
47 SQUIDCEXTERN peer *getFirstPeer(void);
48 SQUIDCEXTERN peer *getFirstUpParent(HttpRequest *);
49 SQUIDCEXTERN peer *getNextPeer(peer *);
50 SQUIDCEXTERN peer *getSingleParent(HttpRequest *);
51 SQUIDCEXTERN int neighborsCount(HttpRequest *);
52 SQUIDCEXTERN int neighborsUdpPing(HttpRequest *,
53 StoreEntry *,
54 IRCB * callback,
55 void *data,
56 int *exprep,
57 int *timeout);
58 SQUIDCEXTERN void neighborAddAcl(const char *, const char *);
59
60 SQUIDCEXTERN void neighborsUdpAck(const cache_key *, icp_common_t *, const Ip::Address &);
61 SQUIDCEXTERN void neighborAdd(const char *, const char *, int, int, int, int, int);
62 SQUIDCEXTERN void neighbors_init(void);
63 #if USE_HTCP
64 SQUIDCEXTERN void neighborsHtcpClear(StoreEntry *, const char *, HttpRequest *, const HttpRequestMethod &, htcp_clr_reason);
65 #endif
66 SQUIDCEXTERN peer *peerFindByName(const char *);
67 SQUIDCEXTERN peer *peerFindByNameAndPort(const char *, unsigned short);
68 SQUIDCEXTERN peer *getDefaultParent(HttpRequest * request);
69 SQUIDCEXTERN peer *getRoundRobinParent(HttpRequest * request);
70 SQUIDCEXTERN peer *getWeightedRoundRobinParent(HttpRequest * request);
71 SQUIDCEXTERN void peerClearRRStart(void);
72 SQUIDCEXTERN void peerClearRR(void);
73 SQUIDCEXTERN lookup_t peerDigestLookup(peer * p, HttpRequest * request);
74 SQUIDCEXTERN peer *neighborsDigestSelect(HttpRequest * request);
75 SQUIDCEXTERN void peerNoteDigestLookup(HttpRequest * request, peer * p, lookup_t lookup);
76 SQUIDCEXTERN void peerNoteDigestGone(peer * p);
77 SQUIDCEXTERN int neighborUp(const peer * e);
78 SQUIDCEXTERN CBDUNL peerDestroy;
79 SQUIDCEXTERN const char *neighborTypeStr(const peer * e);
80 SQUIDCEXTERN peer_t neighborType(const peer *, const HttpRequest *);
81 SQUIDCEXTERN void peerConnectFailed(peer *);
82 SQUIDCEXTERN void peerConnectSucceded(peer *);
83 SQUIDCEXTERN void dump_peer_options(StoreEntry *, peer *);
84 SQUIDCEXTERN int peerHTTPOkay(const peer *, HttpRequest *);
85
86 SQUIDCEXTERN peer *whichPeer(const Ip::Address &from);
87
88 #endif /* SQUID_NEIGHBORS_H_ */