| 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 #include "net/base/net_util.h" | 5 #include "net/base/net_util.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <iterator> | 8 #include <iterator> |
| 9 #include <map> | 9 #include <map> |
| 10 | 10 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 #include "unicode/regex.h" | 69 #include "unicode/regex.h" |
| 70 #include "unicode/ucnv.h" | 70 #include "unicode/ucnv.h" |
| 71 #include "unicode/uidna.h" | 71 #include "unicode/uidna.h" |
| 72 #include "unicode/ulocdata.h" | 72 #include "unicode/ulocdata.h" |
| 73 #include "unicode/uniset.h" | 73 #include "unicode/uniset.h" |
| 74 #include "unicode/uscript.h" | 74 #include "unicode/uscript.h" |
| 75 #include "unicode/uset.h" | 75 #include "unicode/uset.h" |
| 76 | 76 |
| 77 using base::Time; | 77 using base::Time; |
| 78 | 78 |
| 79 #if defined(OS_WIN) | |
| 80 // Allow htons/ntohs to be called without requiring ws2_32.dll to be loaded, | |
| 81 // which isn't available in Chrome's sandbox. See crbug.com/116591. | |
| 82 // TODO(wez): Replace these calls with base::htons() etc when available. | |
| 83 #define ntohs(x) _byteswap_ushort(x) | |
| 84 #define htons(x) _byteswap_ushort(x) | |
| 85 #endif // OS_WIN | |
| 86 | |
| 87 namespace net { | 79 namespace net { |
| 88 | 80 |
| 89 namespace { | 81 namespace { |
| 90 | 82 |
| 91 // what we prepend to get a file URL | 83 // what we prepend to get a file URL |
| 92 static const FilePath::CharType kFileURLPrefix[] = | 84 static const FilePath::CharType kFileURLPrefix[] = |
| 93 FILE_PATH_LITERAL("file:///"); | 85 FILE_PATH_LITERAL("file:///"); |
| 94 | 86 |
| 95 // The general list of blocked ports. Will be blocked unless a specific | 87 // The general list of blocked ports. Will be blocked unless a specific |
| 96 // protocol overrides it. (Ex: ftp can use ports 20 and 21) | 88 // protocol overrides it. (Ex: ftp can use ports 20 and 21) |
| (...skipping 2240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2337 const struct sockaddr* address = info->ai_addr; | 2329 const struct sockaddr* address = info->ai_addr; |
| 2338 DCHECK(address); | 2330 DCHECK(address); |
| 2339 DCHECK_EQ(info->ai_family, address->sa_family); | 2331 DCHECK_EQ(info->ai_family, address->sa_family); |
| 2340 return GetPortFieldFromSockaddr(address, info->ai_addrlen); | 2332 return GetPortFieldFromSockaddr(address, info->ai_addrlen); |
| 2341 } | 2333 } |
| 2342 | 2334 |
| 2343 uint16 GetPortFromAddrinfo(const struct addrinfo* info) { | 2335 uint16 GetPortFromAddrinfo(const struct addrinfo* info) { |
| 2344 const uint16* port_field = GetPortFieldFromAddrinfo(info); | 2336 const uint16* port_field = GetPortFieldFromAddrinfo(info); |
| 2345 if (!port_field) | 2337 if (!port_field) |
| 2346 return -1; | 2338 return -1; |
| 2347 return ntohs(*port_field); | 2339 return base::NetToHost16(*port_field); |
| 2348 } | 2340 } |
| 2349 | 2341 |
| 2350 const uint16* GetPortFieldFromSockaddr(const struct sockaddr* address, | 2342 const uint16* GetPortFieldFromSockaddr(const struct sockaddr* address, |
| 2351 socklen_t address_len) { | 2343 socklen_t address_len) { |
| 2352 if (address->sa_family == AF_INET) { | 2344 if (address->sa_family == AF_INET) { |
| 2353 DCHECK_LE(sizeof(sockaddr_in), static_cast<size_t>(address_len)); | 2345 DCHECK_LE(sizeof(sockaddr_in), static_cast<size_t>(address_len)); |
| 2354 const struct sockaddr_in* sockaddr = | 2346 const struct sockaddr_in* sockaddr = |
| 2355 reinterpret_cast<const struct sockaddr_in*>(address); | 2347 reinterpret_cast<const struct sockaddr_in*>(address); |
| 2356 return &sockaddr->sin_port; | 2348 return &sockaddr->sin_port; |
| 2357 } else if (address->sa_family == AF_INET6) { | 2349 } else if (address->sa_family == AF_INET6) { |
| 2358 DCHECK_LE(sizeof(sockaddr_in6), static_cast<size_t>(address_len)); | 2350 DCHECK_LE(sizeof(sockaddr_in6), static_cast<size_t>(address_len)); |
| 2359 const struct sockaddr_in6* sockaddr = | 2351 const struct sockaddr_in6* sockaddr = |
| 2360 reinterpret_cast<const struct sockaddr_in6*>(address); | 2352 reinterpret_cast<const struct sockaddr_in6*>(address); |
| 2361 return &sockaddr->sin6_port; | 2353 return &sockaddr->sin6_port; |
| 2362 } else { | 2354 } else { |
| 2363 NOTREACHED(); | 2355 NOTREACHED(); |
| 2364 return NULL; | 2356 return NULL; |
| 2365 } | 2357 } |
| 2366 } | 2358 } |
| 2367 | 2359 |
| 2368 int GetPortFromSockaddr(const struct sockaddr* address, socklen_t address_len) { | 2360 int GetPortFromSockaddr(const struct sockaddr* address, socklen_t address_len) { |
| 2369 const uint16* port_field = GetPortFieldFromSockaddr(address, address_len); | 2361 const uint16* port_field = GetPortFieldFromSockaddr(address, address_len); |
| 2370 if (!port_field) | 2362 if (!port_field) |
| 2371 return -1; | 2363 return -1; |
| 2372 return ntohs(*port_field); | 2364 return base::NetToHost16(*port_field); |
| 2373 } | 2365 } |
| 2374 | 2366 |
| 2375 // Assign |port| to each address in the linked list starting from |head|. | 2367 // Assign |port| to each address in the linked list starting from |head|. |
| 2376 void SetPortForAllAddrinfos(struct addrinfo* head, uint16 port) { | 2368 void SetPortForAllAddrinfos(struct addrinfo* head, uint16 port) { |
| 2377 DCHECK(head); | 2369 DCHECK(head); |
| 2378 for (struct addrinfo* ai = head; ai; ai = ai->ai_next) { | 2370 for (struct addrinfo* ai = head; ai; ai = ai->ai_next) { |
| 2379 uint16* port_field = GetPortFieldFromAddrinfo(ai); | 2371 uint16* port_field = GetPortFieldFromAddrinfo(ai); |
| 2380 if (port_field) | 2372 if (port_field) |
| 2381 *port_field = htons(port); | 2373 *port_field = base::HostToNet16(port); |
| 2382 } | 2374 } |
| 2383 } | 2375 } |
| 2384 | 2376 |
| 2385 bool IsLocalhost(const std::string& host) { | 2377 bool IsLocalhost(const std::string& host) { |
| 2386 if (host == "localhost" || | 2378 if (host == "localhost" || |
| 2387 host == "localhost.localdomain" || | 2379 host == "localhost.localdomain" || |
| 2388 host == "localhost6" || | 2380 host == "localhost6" || |
| 2389 host == "localhost6.localdomain6") | 2381 host == "localhost6.localdomain6") |
| 2390 return true; | 2382 return true; |
| 2391 | 2383 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 2421 | 2413 |
| 2422 NetworkInterface::NetworkInterface(const std::string& name, | 2414 NetworkInterface::NetworkInterface(const std::string& name, |
| 2423 const IPAddressNumber& address) | 2415 const IPAddressNumber& address) |
| 2424 : name(name), address(address) { | 2416 : name(name), address(address) { |
| 2425 } | 2417 } |
| 2426 | 2418 |
| 2427 NetworkInterface::~NetworkInterface() { | 2419 NetworkInterface::~NetworkInterface() { |
| 2428 } | 2420 } |
| 2429 | 2421 |
| 2430 } // namespace net | 2422 } // namespace net |
| OLD | NEW |