]> git.ipfire.org Git - thirdparty/squid.git/blob - src/XactionInitiator.h
NoNewGlobals for MapLabel (#1746)
[thirdparty/squid.git] / src / XactionInitiator.h
1 /*
2 * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
9 #ifndef SQUID_SRC_XACTIONINITIATOR_H
10 #define SQUID_SRC_XACTIONINITIATOR_H
11
12 /// identifies a protocol agent or Squid feature initiating transactions
13 class XactionInitiator {
14 public:
15 /// transaction triggers
16 enum Initiator {
17 initUnknown = 0,
18 initClient = 1 << 0, ///< HTTP or FTP client
19 initPeerPool = 1 << 1, ///< PeerPool manager
20 initCertFetcher = 1 << 2, ///< Missing intermediate certificates fetching code
21 initEsi = 1 << 3, ///< ESI processing code
22 initCacheDigest = 1 << 4, ///< Cache Digest fetching code
23 initHtcp = 1<< 5, ///< HTCP client
24 initIcp = 1 << 6, ///< the ICP/neighbors subsystem
25 initIcmp = 1 << 7, ///< the ICMP RTT database (NetDB) neighbors exchange subsystem
26 initAsn = 1 << 8, ///< the ASN db subsystem
27 initIpc = 1 << 9, ///< the IPC subsystem
28 initAdaptation = 1 << 10, ///< ICAP/ECAP requests generated by Squid
29 initIcon = 1 << 11, ///< internal icons
30 initPeerMcast = 1 << 12, ///< neighbor multicast
31 initServer = 1 << 13, ///< HTTP/2 push request (not yet supported by Squid)
32
33 initAdaptationOrphan_ = 1 << 31 ///< eCAP-created HTTP message w/o an associated HTTP transaction (not ACL-detectable)
34 };
35
36 typedef uint32_t Initiators; ///< Initiator set
37
38 // this class is a just a trivial wrapper so we allow explicit conversions
39 XactionInitiator(Initiator i) : initiator(i) {}
40
41 /// whether this initiator belongs to the given set
42 bool in(Initiators setOfInitiators) const {return (initiator & setOfInitiators) != 0;}
43
44 /// whether the transaction was initiated by an internal subsystem
45 bool internalClient() const {
46 return (initiator & InternalInitiators()) != 0;
47 }
48
49 /// internally generated requests
50 static Initiators InternalInitiators() {
51 return initPeerPool | initCertFetcher | initEsi | initCacheDigest | initIcp | initIcmp | initIpc | initAdaptation | initIcon | initPeerMcast;
52 }
53
54 /// all initiators
55 static Initiators AllInitiators() {
56 return 0xFFFFFFFF;
57 }
58
59 static Initiators ParseInitiators(const char *name);
60
61 private:
62 XactionInitiator() {}
63
64 Initiator initiator;
65 };
66
67 #endif /* SQUID_SRC_XACTIONINITIATOR_H */
68