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/ip_address_number.h" | 5 #include "net/base/ip_address_number.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/strings/string_number_conversions.h" | 8 #include "base/strings/string_number_conversions.h" |
9 #include "base/strings/string_piece.h" | 9 #include "base/strings/string_piece.h" |
10 #include "base/strings/string_split.h" | 10 #include "base/strings/string_split.h" |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 if (!array) | 85 if (!array) |
86 return false; | 86 return false; |
87 size_t width = host_addr.size() + 1; | 87 size_t width = host_addr.size() + 1; |
88 for (size_t i = 0; i < array_size; ++i, array += width) { | 88 for (size_t i = 0; i < array_size; ++i, array += width) { |
89 if (IPNumberPrefixCheck(host_addr, array, array[width-1])) | 89 if (IPNumberPrefixCheck(host_addr, array, array[width-1])) |
90 return true; | 90 return true; |
91 } | 91 } |
92 return false; | 92 return false; |
93 } | 93 } |
94 | 94 |
95 std::string IPAddressToString(const uint8* address, | 95 std::string IPAddressToString(const uint8_t* address, size_t address_len) { |
96 size_t address_len) { | |
97 std::string str; | 96 std::string str; |
98 url::StdStringCanonOutput output(&str); | 97 url::StdStringCanonOutput output(&str); |
99 | 98 |
100 if (address_len == kIPv4AddressSize) { | 99 if (address_len == kIPv4AddressSize) { |
101 url::AppendIPv4Address(address, &output); | 100 url::AppendIPv4Address(address, &output); |
102 } else if (address_len == kIPv6AddressSize) { | 101 } else if (address_len == kIPv6AddressSize) { |
103 url::AppendIPv6Address(address, &output); | 102 url::AppendIPv6Address(address, &output); |
104 } else { | 103 } else { |
105 CHECK(false) << "Invalid IP address with length: " << address_len; | 104 CHECK(false) << "Invalid IP address with length: " << address_len; |
106 } | 105 } |
107 | 106 |
108 output.Complete(); | 107 output.Complete(); |
109 return str; | 108 return str; |
110 } | 109 } |
111 | 110 |
112 std::string IPAddressToStringWithPort(const uint8* address, | 111 std::string IPAddressToStringWithPort(const uint8_t* address, |
113 size_t address_len, | 112 size_t address_len, |
114 uint16 port) { | 113 uint16_t port) { |
115 std::string address_str = IPAddressToString(address, address_len); | 114 std::string address_str = IPAddressToString(address, address_len); |
116 | 115 |
117 if (address_len == kIPv6AddressSize) { | 116 if (address_len == kIPv6AddressSize) { |
118 // Need to bracket IPv6 addresses since they contain colons. | 117 // Need to bracket IPv6 addresses since they contain colons. |
119 return base::StringPrintf("[%s]:%d", address_str.c_str(), port); | 118 return base::StringPrintf("[%s]:%d", address_str.c_str(), port); |
120 } | 119 } |
121 return base::StringPrintf("%s:%d", address_str.c_str(), port); | 120 return base::StringPrintf("%s:%d", address_str.c_str(), port); |
122 } | 121 } |
123 | 122 |
124 std::string IPAddressToString(const IPAddressNumber& addr) { | 123 std::string IPAddressToString(const IPAddressNumber& addr) { |
125 return IPAddressToString(&addr.front(), addr.size()); | 124 return IPAddressToString(&addr.front(), addr.size()); |
126 } | 125 } |
127 | 126 |
128 std::string IPAddressToStringWithPort(const IPAddressNumber& addr, | 127 std::string IPAddressToStringWithPort(const IPAddressNumber& addr, |
129 uint16 port) { | 128 uint16_t port) { |
130 return IPAddressToStringWithPort(&addr.front(), addr.size(), port); | 129 return IPAddressToStringWithPort(&addr.front(), addr.size(), port); |
131 } | 130 } |
132 | 131 |
133 std::string IPAddressToPackedString(const IPAddressNumber& addr) { | 132 std::string IPAddressToPackedString(const IPAddressNumber& addr) { |
134 return std::string(reinterpret_cast<const char *>(&addr.front()), | 133 return std::string(reinterpret_cast<const char *>(&addr.front()), |
135 addr.size()); | 134 addr.size()); |
136 } | 135 } |
137 | 136 |
138 bool ParseURLHostnameToNumber(const std::string& hostname, | 137 bool ParseURLHostnameToNumber(const std::string& hostname, |
139 IPAddressNumber* ip_number) { | 138 IPAddressNumber* ip_number) { |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 } | 286 } |
288 return a1.size() * CHAR_BIT; | 287 return a1.size() * CHAR_BIT; |
289 } | 288 } |
290 | 289 |
291 unsigned MaskPrefixLength(const IPAddressNumber& mask) { | 290 unsigned MaskPrefixLength(const IPAddressNumber& mask) { |
292 IPAddressNumber all_ones(mask.size(), 0xFF); | 291 IPAddressNumber all_ones(mask.size(), 0xFF); |
293 return CommonPrefixLength(mask, all_ones); | 292 return CommonPrefixLength(mask, all_ones); |
294 } | 293 } |
295 | 294 |
296 } // namespace net | 295 } // namespace net |
OLD | NEW |