#include "squid.h"
#include "AccessLogEntry.h"
#include "acl/Address.h"
#include "acl/FilledChecklist.h"
#include "acl/Gadgets.h"
#include "anyp/PortCfg.h"
#include "base/AsyncCallbacks.h"
#include "base/AsyncCbdataCalls.h"
#include "CacheManager.h"
#include "CachePeer.h"
#include "client_side.h"
#include "clients/forward.h"
#include "clients/HttpTunneler.h"
#include "comm/Connection.h"
#include "comm/ConnOpener.h"
#include "comm/Loops.h"
#include "CommCalls.h"
#include "errorpage.h"
#include "event.h"
#include "fd.h"
#include "fde.h"
#include "FwdState.h"
#include "globals.h"
#include "HappyConnOpener.h"
#include "hier_code.h"
#include "http.h"
#include "http/Stream.h"
#include "HttpReply.h"
#include "HttpRequest.h"
#include "icmp/net_db.h"
#include "internal.h"
#include "ip/Intercept.h"
#include "ip/NfMarkConfig.h"
#include "ip/QosConfig.h"
#include "ip/tools.h"
#include "MemObject.h"
#include "mgr/Registration.h"
#include "neighbors.h"
#include "pconn.h"
#include "PeerPoolMgr.h"
#include "ResolvedPeers.h"
#include "security/BlindPeerConnector.h"
#include "SquidConfig.h"
#include "ssl/PeekingPeerConnector.h"
#include "Store.h"
#include "StoreClient.h"
#include "urn.h"
#include "whois.h"
#include "ssl/cert_validate_message.h"
#include "ssl/Config.h"
#include "ssl/helper.h"
#include "ssl/ServerBump.h"
#include "ssl/support.h"
#include <cerrno>
Go to the source code of this file.
Macros | |
#define | MAX_FWD_STATS_IDX 9 |
Functions | |
static time_t | diffOrZero (const time_t larger, const time_t smaller) |
static void | fwdServerClosedWrapper (const CommCloseCbParams ¶ms) |
static void | fwdStats (StoreEntry *s) |
tos_t | aclMapTOS (acl_tos *head, ACLChecklist *ch) |
Checks for a TOS value to apply depending on the ACL. More... | |
Ip::NfMarkConfig | aclFindNfMarkConfig (acl_nfmark *head, ACLChecklist *ch) |
Checks for a netfilter mark value to apply depending on the ACL. More... | |
void | getOutgoingAddress (HttpRequest *request, const Comm::ConnectionPointer &conn) |
static tos_t | GetTosToServer (HttpRequest *request, Comm::Connection &conn) |
static nfmark_t | GetNfmarkToServer (HttpRequest *request, Comm::Connection &conn) |
void | GetMarkingsToServer (HttpRequest *request, Comm::Connection &conn) |
void | ResetMarkingsToServer (HttpRequest *request, Comm::Connection &conn) |
Variables | |
static CLCB | fwdServerClosedWrapper |
static OBJH | fwdStats |
static int | FwdReplyCodes [MAX_FWD_STATS_IDX+1][Http::scInvalidHeader+1] |
PconnPool * | fwdPconnPool = new PconnPool("server-peers", nullptr) |
a collection of previously used persistent Squid-to-peer HTTP(S) connections More... | |
Macro Definition Documentation
◆ MAX_FWD_STATS_IDX
#define MAX_FWD_STATS_IDX 9 |
Definition at line 75 of file FwdState.cc.
Function Documentation
◆ aclFindNfMarkConfig()
Ip::NfMarkConfig aclFindNfMarkConfig | ( | acl_nfmark * | head, |
ACLChecklist * | ch | ||
) |
Definition at line 1465 of file FwdState.cc.
References Acl::Answer::allowed(), ACLChecklist::fastCheck(), head, and squidaio_request_t::next.
Referenced by ClientHttpRequest::doCallouts(), and GetNfmarkToServer().
◆ aclMapTOS()
tos_t aclMapTOS | ( | acl_tos * | head, |
ACLChecklist * | ch | ||
) |
Definition at line 1453 of file FwdState.cc.
References Acl::Answer::allowed(), ACLChecklist::fastCheck(), head, and squidaio_request_t::next.
Referenced by ClientHttpRequest::doCallouts(), and GetTosToServer().
◆ diffOrZero()
|
inlinestatic |
subtracts time_t values, returning zero if smaller exceeds the larger value time_t might be unsigned so we need to be careful when subtracting times...
Definition at line 421 of file FwdState.cc.
Referenced by FwdState::ForwardTimeout().
◆ fwdServerClosedWrapper()
|
static |
Definition at line 674 of file FwdState.cc.
References CommCommonCbParams::data, and FwdState::serverClosed().
◆ fwdStats()
|
static |
Definition at line 1356 of file FwdState.cc.
References FwdReplyCodes, int, MAX_FWD_STATS_IDX, Http::scInvalidHeader, and storeAppendPrintf().
◆ GetMarkingsToServer()
void GetMarkingsToServer | ( | HttpRequest * | request, |
Comm::Connection & | conn | ||
) |
Sets initial TOS value and Netfilter for the future outgoing connection. Updates the given Connection object, not the future transport connection.
Definition at line 1555 of file FwdState.cc.
References conn, debugs, GetNfmarkToServer(), and GetTosToServer().
Referenced by HappyConnOpener::openFreshConnection(), PeerPoolMgr::openNewConnection(), and ResetMarkingsToServer().
◆ GetNfmarkToServer()
|
static |
- Returns
- the Netfilter mark that should be set on the to-peer connection
Definition at line 1542 of file FwdState.cc.
References aclFindNfMarkConfig(), conn, ACLFilledChecklist::dst_addr, ACLFilledChecklist::dst_peer_name, and Ip::Qos::TheConfig.
Referenced by GetMarkingsToServer().
◆ getOutgoingAddress()
void getOutgoingAddress | ( | HttpRequest * | request, |
const Comm::ConnectionPointer & | conn | ||
) |
Definition at line 1476 of file FwdState.cc.
References SquidConfig::accessList, Acl::Answer::allowed(), HttpRequest::client_addr, COMM_DOBIND, COMM_TRANSPARENT, Config, conn, ACLFilledChecklist::dst_addr, ACLFilledChecklist::dst_peer_name, ACLChecklist::fastCheck(), HttpRequest::flags, HttpRequest::indirect_client_addr, Acl::Address::next, SquidConfig::onoff, SquidConfig::outgoing_address, RequestFlags::spoofClientIp, and SquidConfig::tproxy_uses_indirect_client.
Referenced by Adaptation::Icap::Xaction::dnsLookupDone(), PeerSelector::handlePath(), PeerPoolMgr::openNewConnection(), and peerProbeConnect().
◆ GetTosToServer()
|
static |
- Returns
- the TOS value that should be set on the to-peer connection
Definition at line 1529 of file FwdState.cc.
References aclMapTOS(), conn, ACLFilledChecklist::dst_addr, ACLFilledChecklist::dst_peer_name, and Ip::Qos::TheConfig.
Referenced by GetMarkingsToServer().
◆ ResetMarkingsToServer()
void ResetMarkingsToServer | ( | HttpRequest * | request, |
Comm::Connection & | conn | ||
) |
Recomputes and applies TOS value and Netfilter to the outgoing connection. Updates both the given Connection object and the transport connection.
Definition at line 1564 of file FwdState.cc.
References conn, GetMarkingsToServer(), Ip::Qos::setSockNfmark(), and Ip::Qos::setSockTos().
Referenced by TunnelStateData::connectDone(), and FwdState::syncWithServerConn().
Variable Documentation
◆ fwdPconnPool
Definition at line 78 of file FwdState.cc.
Referenced by FwdState::closePendingConnection(), FwdState::closeServerConnection(), Http::Tunneler::countFailingConnection(), Security::PeerConnector::countFailingConnection(), HttpStateData::processReplyBody(), HappyConnOpener::reuseOldConnection(), and FwdState::serverClosed().
◆ FwdReplyCodes
|
static |
Definition at line 76 of file FwdState.cc.
Referenced by fwdStats(), and FwdState::logReplyStatus().
◆ fwdServerClosedWrapper
|
static |
Definition at line 71 of file FwdState.cc.
Referenced by FwdState::syncWithServerConn().
◆ fwdStats
|
static |
Definition at line 73 of file FwdState.cc.
Referenced by FwdState::RegisterWithCacheManager().