| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef NET_BASE_NET_UTIL_H_ | 5 #ifndef NET_BASE_NET_UTIL_H_ |
| 6 #define NET_BASE_NET_UTIL_H_ | 6 #define NET_BASE_NET_UTIL_H_ |
| 7 | 7 |
| 8 #include "build/build_config.h" | 8 #include "build/build_config.h" |
| 9 | 9 |
| 10 #if defined(OS_WIN) | 10 #if defined(OS_WIN) |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 // Saves the result into |*host| and |*port|. If the input did not have | 81 // Saves the result into |*host| and |*port|. If the input did not have |
| 82 // the optional port, sets |*port| to -1. | 82 // the optional port, sets |*port| to -1. |
| 83 // Returns true if the parsing was successful, false otherwise. | 83 // Returns true if the parsing was successful, false otherwise. |
| 84 // The returned host is NOT canonicalized, and may be invalid. If <host> is | 84 // The returned host is NOT canonicalized, and may be invalid. If <host> is |
| 85 // an IPv6 literal address, the returned host includes the square brackets. | 85 // an IPv6 literal address, the returned host includes the square brackets. |
| 86 NET_EXPORT bool ParseHostAndPort( | 86 NET_EXPORT bool ParseHostAndPort( |
| 87 std::string::const_iterator host_and_port_begin, | 87 std::string::const_iterator host_and_port_begin, |
| 88 std::string::const_iterator host_and_port_end, | 88 std::string::const_iterator host_and_port_end, |
| 89 std::string* host, | 89 std::string* host, |
| 90 int* port); | 90 int* port); |
| 91 NET_EXPORT bool ParseHostAndPort( | 91 NET_EXPORT bool ParseHostAndPort(const std::string& host_and_port, |
| 92 const std::string& host_and_port, | 92 std::string* host, |
| 93 std::string* host, | 93 int* port); |
| 94 int* port); | |
| 95 | 94 |
| 96 // Returns a host:port string for the given URL. | 95 // Returns a host:port string for the given URL. |
| 97 NET_EXPORT std::string GetHostAndPort(const GURL& url); | 96 NET_EXPORT std::string GetHostAndPort(const GURL& url); |
| 98 | 97 |
| 99 // Returns a host[:port] string for the given URL, where the port is omitted | 98 // Returns a host[:port] string for the given URL, where the port is omitted |
| 100 // if it is the default for the URL's scheme. | 99 // if it is the default for the URL's scheme. |
| 101 NET_EXPORT_PRIVATE std::string GetHostAndOptionalPort(const GURL& url); | 100 NET_EXPORT_PRIVATE std::string GetHostAndOptionalPort(const GURL& url); |
| 102 | 101 |
| 103 // Returns true if |hostname| contains a non-registerable or non-assignable | 102 // Returns true if |hostname| contains a non-registerable or non-assignable |
| 104 // domain name (eg: a gTLD that has not been assigned by IANA) or an IP address | 103 // domain name (eg: a gTLD that has not been assigned by IANA) or an IP address |
| 105 // that falls in an IANA-reserved range. | 104 // that falls in an IANA-reserved range. |
| 106 NET_EXPORT bool IsHostnameNonUnique(const std::string& hostname); | 105 NET_EXPORT bool IsHostnameNonUnique(const std::string& hostname); |
| 107 | 106 |
| 108 // Returns true if an IP address hostname is in a range reserved by the IANA. | 107 // Returns true if an IP address hostname is in a range reserved by the IANA. |
| 109 // Works with both IPv4 and IPv6 addresses, and only compares against a given | 108 // Works with both IPv4 and IPv6 addresses, and only compares against a given |
| 110 // protocols's reserved ranges. | 109 // protocols's reserved ranges. |
| 111 NET_EXPORT bool IsIPAddressReserved(const IPAddressNumber& address); | 110 NET_EXPORT bool IsIPAddressReserved(const IPAddressNumber& address); |
| 112 | 111 |
| 113 // Convenience struct for when you need a |struct sockaddr|. | 112 // Convenience struct for when you need a |struct sockaddr|. |
| 114 struct SockaddrStorage { | 113 struct SockaddrStorage { |
| 115 SockaddrStorage() : addr_len(sizeof(addr_storage)), | 114 SockaddrStorage() |
| 116 addr(reinterpret_cast<struct sockaddr*>(&addr_storage)) {} | 115 : addr_len(sizeof(addr_storage)), |
| 116 addr(reinterpret_cast<struct sockaddr*>(&addr_storage)) {} |
| 117 struct sockaddr_storage addr_storage; | 117 struct sockaddr_storage addr_storage; |
| 118 socklen_t addr_len; | 118 socklen_t addr_len; |
| 119 struct sockaddr* const addr; | 119 struct sockaddr* const addr; |
| 120 }; | 120 }; |
| 121 | 121 |
| 122 // Extracts the IP address and port portions of a sockaddr. |port| is optional, | 122 // Extracts the IP address and port portions of a sockaddr. |port| is optional, |
| 123 // and will not be filled in if NULL. | 123 // and will not be filled in if NULL. |
| 124 bool GetIPAddressFromSockAddr(const struct sockaddr* sock_addr, | 124 bool GetIPAddressFromSockAddr(const struct sockaddr* sock_addr, |
| 125 socklen_t sock_addr_len, | 125 socklen_t sock_addr_len, |
| 126 const unsigned char** address, | 126 const unsigned char** address, |
| (...skipping 18 matching lines...) Expand all Loading... |
| 145 | 145 |
| 146 // Same as IPAddressToStringWithPort() but for a sockaddr. This output will not | 146 // Same as IPAddressToStringWithPort() but for a sockaddr. This output will not |
| 147 // include the IPv6 scope ID. | 147 // include the IPv6 scope ID. |
| 148 NET_EXPORT std::string NetAddressToStringWithPort(const struct sockaddr* sa, | 148 NET_EXPORT std::string NetAddressToStringWithPort(const struct sockaddr* sa, |
| 149 socklen_t sock_addr_len); | 149 socklen_t sock_addr_len); |
| 150 | 150 |
| 151 // Same as IPAddressToString() but for an IPAddressNumber. | 151 // Same as IPAddressToString() but for an IPAddressNumber. |
| 152 NET_EXPORT std::string IPAddressToString(const IPAddressNumber& addr); | 152 NET_EXPORT std::string IPAddressToString(const IPAddressNumber& addr); |
| 153 | 153 |
| 154 // Same as IPAddressToStringWithPort() but for an IPAddressNumber. | 154 // Same as IPAddressToStringWithPort() but for an IPAddressNumber. |
| 155 NET_EXPORT std::string IPAddressToStringWithPort( | 155 NET_EXPORT std::string IPAddressToStringWithPort(const IPAddressNumber& addr, |
| 156 const IPAddressNumber& addr, uint16 port); | 156 uint16 port); |
| 157 | 157 |
| 158 // Returns the address as a sequence of bytes in network-byte-order. | 158 // Returns the address as a sequence of bytes in network-byte-order. |
| 159 NET_EXPORT std::string IPAddressToPackedString(const IPAddressNumber& addr); | 159 NET_EXPORT std::string IPAddressToPackedString(const IPAddressNumber& addr); |
| 160 | 160 |
| 161 // Returns the hostname of the current system. Returns empty string on failure. | 161 // Returns the hostname of the current system. Returns empty string on failure. |
| 162 NET_EXPORT std::string GetHostName(); | 162 NET_EXPORT std::string GetHostName(); |
| 163 | 163 |
| 164 // Extracts the unescaped username/password from |url|, saving the results | 164 // Extracts the unescaped username/password from |url|, saving the results |
| 165 // into |*username| and |*password|. | 165 // into |*username| and |*password|. |
| 166 NET_EXPORT_PRIVATE void GetIdentityFromURL(const GURL& url, | 166 NET_EXPORT_PRIVATE void GetIdentityFromURL(const GURL& url, |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 229 // |addRow|. | 229 // |addRow|. |
| 230 // | 230 // |
| 231 // |name| is the file name to be displayed. |raw_bytes| will be used | 231 // |name| is the file name to be displayed. |raw_bytes| will be used |
| 232 // as the actual target of the link (so for example, ftp links should use | 232 // as the actual target of the link (so for example, ftp links should use |
| 233 // server's encoding). If |raw_bytes| is an empty string, UTF-8 encoded |name| | 233 // server's encoding). If |raw_bytes| is an empty string, UTF-8 encoded |name| |
| 234 // will be used. | 234 // will be used. |
| 235 // | 235 // |
| 236 // Both |name| and |raw_bytes| are escaped internally. | 236 // Both |name| and |raw_bytes| are escaped internally. |
| 237 NET_EXPORT std::string GetDirectoryListingEntry(const base::string16& name, | 237 NET_EXPORT std::string GetDirectoryListingEntry(const base::string16& name, |
| 238 const std::string& raw_bytes, | 238 const std::string& raw_bytes, |
| 239 bool is_dir, int64 size, | 239 bool is_dir, |
| 240 int64 size, |
| 240 base::Time modified); | 241 base::Time modified); |
| 241 | 242 |
| 242 // If text starts with "www." it is removed, otherwise text is returned | 243 // If text starts with "www." it is removed, otherwise text is returned |
| 243 // unmodified. | 244 // unmodified. |
| 244 NET_EXPORT base::string16 StripWWW(const base::string16& text); | 245 NET_EXPORT base::string16 StripWWW(const base::string16& text); |
| 245 | 246 |
| 246 // Runs |url|'s host through StripWWW(). |url| must be valid. | 247 // Runs |url|'s host through StripWWW(). |url| must be valid. |
| 247 NET_EXPORT base::string16 StripWWWFromHost(const GURL& url); | 248 NET_EXPORT base::string16 StripWWWFromHost(const GURL& url); |
| 248 | 249 |
| 249 // Checks |port| against a list of ports which are restricted by default. | 250 // Checks |port| against a list of ports which are restricted by default. |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 324 UnescapeRule::Type unescape_rules, | 325 UnescapeRule::Type unescape_rules, |
| 325 url::Parsed* new_parsed, | 326 url::Parsed* new_parsed, |
| 326 size_t* prefix_end, | 327 size_t* prefix_end, |
| 327 base::OffsetAdjuster::Adjustments* adjustments); | 328 base::OffsetAdjuster::Adjustments* adjustments); |
| 328 | 329 |
| 329 // This is a convenience function for FormatUrl() with | 330 // This is a convenience function for FormatUrl() with |
| 330 // format_types = kFormatUrlOmitAll and unescape = SPACES. This is the typical | 331 // format_types = kFormatUrlOmitAll and unescape = SPACES. This is the typical |
| 331 // set of flags for "URLs to display to the user". You should be cautious about | 332 // set of flags for "URLs to display to the user". You should be cautious about |
| 332 // using this for URLs which will be parsed or sent to other applications. | 333 // using this for URLs which will be parsed or sent to other applications. |
| 333 inline base::string16 FormatUrl(const GURL& url, const std::string& languages) { | 334 inline base::string16 FormatUrl(const GURL& url, const std::string& languages) { |
| 334 return FormatUrl(url, languages, kFormatUrlOmitAll, UnescapeRule::SPACES, | 335 return FormatUrl(url, |
| 335 NULL, NULL, NULL); | 336 languages, |
| 337 kFormatUrlOmitAll, |
| 338 UnescapeRule::SPACES, |
| 339 NULL, |
| 340 NULL, |
| 341 NULL); |
| 336 } | 342 } |
| 337 | 343 |
| 338 // Returns whether FormatUrl() would strip a trailing slash from |url|, given a | 344 // Returns whether FormatUrl() would strip a trailing slash from |url|, given a |
| 339 // format flag including kFormatUrlOmitTrailingSlashOnBareHostname. | 345 // format flag including kFormatUrlOmitTrailingSlashOnBareHostname. |
| 340 NET_EXPORT bool CanStripTrailingSlash(const GURL& url); | 346 NET_EXPORT bool CanStripTrailingSlash(const GURL& url); |
| 341 | 347 |
| 342 // Strip the portions of |url| that aren't core to the network request. | 348 // Strip the portions of |url| that aren't core to the network request. |
| 343 // - user name / password | 349 // - user name / password |
| 344 // - reference section | 350 // - reference section |
| 345 NET_EXPORT_PRIVATE GURL SimplifyUrlForRequest(const GURL& url); | 351 NET_EXPORT_PRIVATE GURL SimplifyUrlForRequest(const GURL& url); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 356 | 362 |
| 357 DISALLOW_COPY_AND_ASSIGN(ScopedPortException); | 363 DISALLOW_COPY_AND_ASSIGN(ScopedPortException); |
| 358 }; | 364 }; |
| 359 | 365 |
| 360 // Returns true if it can determine that only loopback addresses are configured. | 366 // Returns true if it can determine that only loopback addresses are configured. |
| 361 // i.e. if only 127.0.0.1 and ::1 are routable. | 367 // i.e. if only 127.0.0.1 and ::1 are routable. |
| 362 // Also returns false if it cannot determine this. | 368 // Also returns false if it cannot determine this. |
| 363 bool HaveOnlyLoopbackAddresses(); | 369 bool HaveOnlyLoopbackAddresses(); |
| 364 | 370 |
| 365 // Returns AddressFamily of the address. | 371 // Returns AddressFamily of the address. |
| 366 NET_EXPORT_PRIVATE AddressFamily GetAddressFamily( | 372 NET_EXPORT_PRIVATE AddressFamily |
| 367 const IPAddressNumber& address); | 373 GetAddressFamily(const IPAddressNumber& address); |
| 368 | 374 |
| 369 // Maps the given AddressFamily to either AF_INET, AF_INET6 or AF_UNSPEC. | 375 // Maps the given AddressFamily to either AF_INET, AF_INET6 or AF_UNSPEC. |
| 370 NET_EXPORT_PRIVATE int ConvertAddressFamily(AddressFamily address_family); | 376 NET_EXPORT_PRIVATE int ConvertAddressFamily(AddressFamily address_family); |
| 371 | 377 |
| 372 // Parses an IP address literal (either IPv4 or IPv6) to its numeric value. | 378 // Parses an IP address literal (either IPv4 or IPv6) to its numeric value. |
| 373 // Returns true on success and fills |ip_number| with the numeric value. | 379 // Returns true on success and fills |ip_number| with the numeric value. |
| 374 NET_EXPORT_PRIVATE bool ParseIPLiteralToNumber(const std::string& ip_literal, | 380 NET_EXPORT_PRIVATE bool ParseIPLiteralToNumber(const std::string& ip_literal, |
| 375 IPAddressNumber* ip_number); | 381 IPAddressNumber* ip_number); |
| 376 | 382 |
| 377 // Converts an IPv4 address to an IPv4-mapped IPv6 address. | 383 // Converts an IPv4 address to an IPv4-mapped IPv6 address. |
| 378 // For example 192.168.0.1 would be converted to ::ffff:192.168.0.1. | 384 // For example 192.168.0.1 would be converted to ::ffff:192.168.0.1. |
| 379 NET_EXPORT_PRIVATE IPAddressNumber ConvertIPv4NumberToIPv6Number( | 385 NET_EXPORT_PRIVATE IPAddressNumber |
| 380 const IPAddressNumber& ipv4_number); | 386 ConvertIPv4NumberToIPv6Number(const IPAddressNumber& ipv4_number); |
| 381 | 387 |
| 382 // Returns true iff |address| is an IPv4-mapped IPv6 address. | 388 // Returns true iff |address| is an IPv4-mapped IPv6 address. |
| 383 NET_EXPORT_PRIVATE bool IsIPv4Mapped(const IPAddressNumber& address); | 389 NET_EXPORT_PRIVATE bool IsIPv4Mapped(const IPAddressNumber& address); |
| 384 | 390 |
| 385 // Converts an IPv4-mapped IPv6 address to IPv4 address. Should only be called | 391 // Converts an IPv4-mapped IPv6 address to IPv4 address. Should only be called |
| 386 // on IPv4-mapped IPv6 addresses. | 392 // on IPv4-mapped IPv6 addresses. |
| 387 NET_EXPORT_PRIVATE IPAddressNumber ConvertIPv4MappedToIPv4( | 393 NET_EXPORT_PRIVATE IPAddressNumber |
| 388 const IPAddressNumber& address); | 394 ConvertIPv4MappedToIPv4(const IPAddressNumber& address); |
| 389 | 395 |
| 390 // Parses an IP block specifier from CIDR notation to an | 396 // Parses an IP block specifier from CIDR notation to an |
| 391 // (IP address, prefix length) pair. Returns true on success and fills | 397 // (IP address, prefix length) pair. Returns true on success and fills |
| 392 // |*ip_number| with the numeric value of the IP address and sets | 398 // |*ip_number| with the numeric value of the IP address and sets |
| 393 // |*prefix_length_in_bits| with the length of the prefix. | 399 // |*prefix_length_in_bits| with the length of the prefix. |
| 394 // | 400 // |
| 395 // CIDR notation literals can use either IPv4 or IPv6 literals. Some examples: | 401 // CIDR notation literals can use either IPv4 or IPv6 literals. Some examples: |
| 396 // | 402 // |
| 397 // 10.10.3.1/20 | 403 // 10.10.3.1/20 |
| 398 // a:b:c::/46 | 404 // a:b:c::/46 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 437 NetworkInterface(const std::string& name, | 443 NetworkInterface(const std::string& name, |
| 438 const std::string& friendly_name, | 444 const std::string& friendly_name, |
| 439 uint32 interface_index, | 445 uint32 interface_index, |
| 440 NetworkChangeNotifier::ConnectionType type, | 446 NetworkChangeNotifier::ConnectionType type, |
| 441 const IPAddressNumber& address, | 447 const IPAddressNumber& address, |
| 442 size_t network_prefix); | 448 size_t network_prefix); |
| 443 ~NetworkInterface(); | 449 ~NetworkInterface(); |
| 444 | 450 |
| 445 std::string name; | 451 std::string name; |
| 446 std::string friendly_name; // Same as |name| on non-Windows. | 452 std::string friendly_name; // Same as |name| on non-Windows. |
| 447 uint32 interface_index; // Always 0 on Android. | 453 uint32 interface_index; // Always 0 on Android. |
| 448 NetworkChangeNotifier::ConnectionType type; | 454 NetworkChangeNotifier::ConnectionType type; |
| 449 IPAddressNumber address; | 455 IPAddressNumber address; |
| 450 size_t network_prefix; | 456 size_t network_prefix; |
| 451 }; | 457 }; |
| 452 | 458 |
| 453 typedef std::vector<NetworkInterface> NetworkInterfaceList; | 459 typedef std::vector<NetworkInterface> NetworkInterfaceList; |
| 454 | 460 |
| 455 // Policy settings to include/exclude network interfaces. | 461 // Policy settings to include/exclude network interfaces. |
| 456 enum HostAddressSelectionPolicy { | 462 enum HostAddressSelectionPolicy { |
| 457 INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES = 0x0, | 463 INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES = 0x0, |
| 458 EXCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES = 0x1, | 464 EXCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES = 0x1, |
| 459 // Include temp address only when interface has both permanent and | 465 // Include temp address only when interface has both permanent and |
| 460 // temp addresses. | 466 // temp addresses. |
| 461 INCLUDE_ONLY_TEMP_IPV6_ADDRESS_IF_POSSIBLE = 0x2, | 467 INCLUDE_ONLY_TEMP_IPV6_ADDRESS_IF_POSSIBLE = 0x2, |
| 462 }; | 468 }; |
| 463 | 469 |
| 464 // Returns list of network interfaces except loopback interface. If an | 470 // Returns list of network interfaces except loopback interface. If an |
| 465 // interface has more than one address, a separate entry is added to | 471 // interface has more than one address, a separate entry is added to |
| 466 // the list for each address. | 472 // the list for each address. |
| 467 // Can be called only on a thread that allows IO. | 473 // Can be called only on a thread that allows IO. |
| 468 NET_EXPORT bool GetNetworkList(NetworkInterfaceList* networks, | 474 NET_EXPORT bool GetNetworkList(NetworkInterfaceList* networks, int policy); |
| 469 int policy); | |
| 470 | 475 |
| 471 // General category of the IEEE 802.11 (wifi) physical layer operating mode. | 476 // General category of the IEEE 802.11 (wifi) physical layer operating mode. |
| 472 enum WifiPHYLayerProtocol { | 477 enum WifiPHYLayerProtocol { |
| 473 // No wifi support or no associated AP. | 478 // No wifi support or no associated AP. |
| 474 WIFI_PHY_LAYER_PROTOCOL_NONE, | 479 WIFI_PHY_LAYER_PROTOCOL_NONE, |
| 475 // An obsolete modes introduced by the original 802.11, e.g. IR, FHSS. | 480 // An obsolete modes introduced by the original 802.11, e.g. IR, FHSS. |
| 476 WIFI_PHY_LAYER_PROTOCOL_ANCIENT, | 481 WIFI_PHY_LAYER_PROTOCOL_ANCIENT, |
| 477 // 802.11a, OFDM-based rates. | 482 // 802.11a, OFDM-based rates. |
| 478 WIFI_PHY_LAYER_PROTOCOL_A, | 483 WIFI_PHY_LAYER_PROTOCOL_A, |
| 479 // 802.11b, DSSS or HR DSSS. | 484 // 802.11b, DSSS or HR DSSS. |
| (...skipping 16 matching lines...) Expand all Loading... |
| 496 | 501 |
| 497 // Computes the number of leading 1-bits in |mask|. | 502 // Computes the number of leading 1-bits in |mask|. |
| 498 unsigned MaskPrefixLength(const IPAddressNumber& mask); | 503 unsigned MaskPrefixLength(const IPAddressNumber& mask); |
| 499 | 504 |
| 500 // Differentiated Services Code Point. | 505 // Differentiated Services Code Point. |
| 501 // See http://tools.ietf.org/html/rfc2474 for details. | 506 // See http://tools.ietf.org/html/rfc2474 for details. |
| 502 enum DiffServCodePoint { | 507 enum DiffServCodePoint { |
| 503 DSCP_NO_CHANGE = -1, | 508 DSCP_NO_CHANGE = -1, |
| 504 DSCP_FIRST = DSCP_NO_CHANGE, | 509 DSCP_FIRST = DSCP_NO_CHANGE, |
| 505 DSCP_DEFAULT = 0, // Same as DSCP_CS0 | 510 DSCP_DEFAULT = 0, // Same as DSCP_CS0 |
| 506 DSCP_CS0 = 0, // The default | 511 DSCP_CS0 = 0, // The default |
| 507 DSCP_CS1 = 8, // Bulk/background traffic | 512 DSCP_CS1 = 8, // Bulk/background traffic |
| 508 DSCP_AF11 = 10, | 513 DSCP_AF11 = 10, |
| 509 DSCP_AF12 = 12, | 514 DSCP_AF12 = 12, |
| 510 DSCP_AF13 = 14, | 515 DSCP_AF13 = 14, |
| 511 DSCP_CS2 = 16, | 516 DSCP_CS2 = 16, |
| 512 DSCP_AF21 = 18, | 517 DSCP_AF21 = 18, |
| 513 DSCP_AF22 = 20, | 518 DSCP_AF22 = 20, |
| 514 DSCP_AF23 = 22, | 519 DSCP_AF23 = 22, |
| 515 DSCP_CS3 = 24, | 520 DSCP_CS3 = 24, |
| 516 DSCP_AF31 = 26, | 521 DSCP_AF31 = 26, |
| 517 DSCP_AF32 = 28, | 522 DSCP_AF32 = 28, |
| 518 DSCP_AF33 = 30, | 523 DSCP_AF33 = 30, |
| 519 DSCP_CS4 = 32, | 524 DSCP_CS4 = 32, |
| 520 DSCP_AF41 = 34, // Video | 525 DSCP_AF41 = 34, // Video |
| 521 DSCP_AF42 = 36, // Video | 526 DSCP_AF42 = 36, // Video |
| 522 DSCP_AF43 = 38, // Video | 527 DSCP_AF43 = 38, // Video |
| 523 DSCP_CS5 = 40, // Video | 528 DSCP_CS5 = 40, // Video |
| 524 DSCP_EF = 46, // Voice | 529 DSCP_EF = 46, // Voice |
| 525 DSCP_CS6 = 48, // Voice | 530 DSCP_CS6 = 48, // Voice |
| 526 DSCP_CS7 = 56, // Control messages | 531 DSCP_CS7 = 56, // Control messages |
| 527 DSCP_LAST = DSCP_CS7 | 532 DSCP_LAST = DSCP_CS7 |
| 528 }; | 533 }; |
| 529 | 534 |
| 530 } // namespace net | 535 } // namespace net |
| 531 | 536 |
| 532 #endif // NET_BASE_NET_UTIL_H_ | 537 #endif // NET_BASE_NET_UTIL_H_ |
| OLD | NEW |