| /* | 
 |  *  Copyright 2004 The WebRTC Project Authors. All rights reserved. | 
 |  * | 
 |  *  Use of this source code is governed by a BSD-style license | 
 |  *  that can be found in the LICENSE file in the root of the source | 
 |  *  tree. An additional intellectual property rights grant can be found | 
 |  *  in the file PATENTS.  All contributing project authors may | 
 |  *  be found in the AUTHORS file in the root of the source tree. | 
 |  */ | 
 |  | 
 | #ifndef RTC_BASE_NETWORK_CONSTANTS_H_ | 
 | #define RTC_BASE_NETWORK_CONSTANTS_H_ | 
 |  | 
 | #include <stdint.h> | 
 |  | 
 | #include <string> | 
 |  | 
 | namespace webrtc { | 
 |  | 
 | constexpr uint16_t kNetworkCostMax = 999; | 
 | constexpr uint16_t kNetworkCostCellular2G = 980; | 
 | constexpr uint16_t kNetworkCostCellular3G = 910; | 
 | constexpr uint16_t kNetworkCostCellular = 900; | 
 | constexpr uint16_t kNetworkCostCellular4G = 500; | 
 | constexpr uint16_t kNetworkCostCellular5G = 250; | 
 | constexpr uint16_t kNetworkCostUnknown = 50; | 
 | constexpr uint16_t kNetworkCostLow = 10; | 
 | constexpr uint16_t kNetworkCostMin = 0; | 
 |  | 
 | // Add 1 to network cost of underlying network type | 
 | // so that e.g a "plain" WIFI is prefered over a VPN over WIFI | 
 | // everything else being equal. | 
 | constexpr uint16_t kNetworkCostVpn = 1; | 
 |  | 
 | // alias | 
 | constexpr uint16_t kNetworkCostHigh = kNetworkCostCellular; | 
 |  | 
 | enum AdapterType { | 
 |   // This enum resembles the one in Chromium net::ConnectionType. | 
 |   ADAPTER_TYPE_UNKNOWN = 0, | 
 |   ADAPTER_TYPE_ETHERNET = 1 << 0, | 
 |   ADAPTER_TYPE_WIFI = 1 << 1, | 
 |   ADAPTER_TYPE_CELLULAR = 1 << 2,  // This is CELLULAR of unknown type. | 
 |   ADAPTER_TYPE_VPN = 1 << 3, | 
 |   ADAPTER_TYPE_LOOPBACK = 1 << 4, | 
 |   // ADAPTER_TYPE_ANY is used for a network, which only contains a single "any | 
 |   // address" IP address (INADDR_ANY for IPv4 or in6addr_any for IPv6), and can | 
 |   // use any/all network interfaces. Whereas ADAPTER_TYPE_UNKNOWN is used | 
 |   // when the network uses a specific interface/IP, but its interface type can | 
 |   // not be determined or not fit in this enum. | 
 |   ADAPTER_TYPE_ANY = 1 << 5, | 
 |   ADAPTER_TYPE_CELLULAR_2G = 1 << 6, | 
 |   ADAPTER_TYPE_CELLULAR_3G = 1 << 7, | 
 |   ADAPTER_TYPE_CELLULAR_4G = 1 << 8, | 
 |   ADAPTER_TYPE_CELLULAR_5G = 1 << 9 | 
 | }; | 
 |  | 
 | std::string AdapterTypeToString(AdapterType type); | 
 |  | 
 | // Useful for testing! | 
 | constexpr AdapterType kAllAdapterTypes[] = { | 
 |     ADAPTER_TYPE_UNKNOWN,     ADAPTER_TYPE_ETHERNET, | 
 |     ADAPTER_TYPE_WIFI,        ADAPTER_TYPE_CELLULAR, | 
 |     ADAPTER_TYPE_VPN,         ADAPTER_TYPE_LOOPBACK, | 
 |     ADAPTER_TYPE_ANY,         ADAPTER_TYPE_CELLULAR_2G, | 
 |     ADAPTER_TYPE_CELLULAR_3G, ADAPTER_TYPE_CELLULAR_4G, | 
 |     ADAPTER_TYPE_CELLULAR_5G, | 
 | }; | 
 |  | 
 | }  //  namespace webrtc | 
 |  | 
 |  | 
 | #endif  // RTC_BASE_NETWORK_CONSTANTS_H_ |