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