xref: /aosp_15_r20/external/cronet/net/base/session_usage.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2024 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #ifndef NET_BASE_SESSION_USAGE_H_
6*6777b538SAndroid Build Coastguard Worker #define NET_BASE_SESSION_USAGE_H_
7*6777b538SAndroid Build Coastguard Worker 
8*6777b538SAndroid Build Coastguard Worker namespace net {
9*6777b538SAndroid Build Coastguard Worker 
10*6777b538SAndroid Build Coastguard Worker // This type distinguishes sessions carrying traffic through the destination
11*6777b538SAndroid Build Coastguard Worker // host from sessions carrying traffic directly to the host. Credentials such
12*6777b538SAndroid Build Coastguard Worker // as cookies are attached to `kDestination` sessions, but not to `kProxy`
13*6777b538SAndroid Build Coastguard Worker // sessions. This type is used in QUIC and SPDY session keys, together with a
14*6777b538SAndroid Build Coastguard Worker // proxy chain and host-port pair, to prevent pooling such sessions together.
15*6777b538SAndroid Build Coastguard Worker //
16*6777b538SAndroid Build Coastguard Worker // Examples:
17*6777b538SAndroid Build Coastguard Worker //
18*6777b538SAndroid Build Coastguard Worker // A session with no proxies at all will have a direct proxy chain and
19*6777b538SAndroid Build Coastguard Worker // `session_usage = kDestination`.
20*6777b538SAndroid Build Coastguard Worker //
21*6777b538SAndroid Build Coastguard Worker // A session to "dest" carried over one or more proxies will have those
22*6777b538SAndroid Build Coastguard Worker // proxies in its proxy chain, "dest" in its host-port pair, and `session_usage
23*6777b538SAndroid Build Coastguard Worker // = kDestination`.
24*6777b538SAndroid Build Coastguard Worker //
25*6777b538SAndroid Build Coastguard Worker // A session over "proxyA" to "proxyB" which is carrying tunneled traffic to
26*6777b538SAndroid Build Coastguard Worker // "dest" will have "proxyA" in its proxy chain, "proxyB in
27*6777b538SAndroid Build Coastguard Worker // its host-port pair, and `session_usage = kProxy`.
28*6777b538SAndroid Build Coastguard Worker enum class SessionUsage {
29*6777b538SAndroid Build Coastguard Worker   // This session is used for a connection to the destination host.
30*6777b538SAndroid Build Coastguard Worker   kDestination,
31*6777b538SAndroid Build Coastguard Worker   // This session is used to proxy traffic to other destinations.
32*6777b538SAndroid Build Coastguard Worker   kProxy,
33*6777b538SAndroid Build Coastguard Worker };
34*6777b538SAndroid Build Coastguard Worker 
35*6777b538SAndroid Build Coastguard Worker }  // namespace net
36*6777b538SAndroid Build Coastguard Worker 
37*6777b538SAndroid Build Coastguard Worker #endif  // NET_BASE_SESSION_USAGE_H_
38