Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(217)

Side by Side Diff: net/quic/quic_address_mismatch.cc

Issue 294823002: Treat IPv4-mapped IPv6 addresses as IPv4 addresses. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Change histogram owners Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | net/quic/quic_address_mismatch_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/quic/quic_address_mismatch.h" 5 #include "net/quic/quic_address_mismatch.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "net/base/ip_endpoint.h" 8 #include "net/base/ip_endpoint.h"
9 9
10 namespace net { 10 namespace net {
11 11
12 int GetAddressMismatch(const IPEndPoint& first_address, 12 int GetAddressMismatch(const IPEndPoint& first_address,
13 const IPEndPoint& second_address) { 13 const IPEndPoint& second_address) {
14 if (first_address.address().empty() || second_address.address().empty()) { 14 if (first_address.address().empty() || second_address.address().empty()) {
15 return -1; 15 return -1;
16 } 16 }
17 IPAddressNumber first_ip_address = first_address.address();
18 if (IsIPv4Mapped(first_ip_address)) {
19 first_ip_address = ConvertIPv4MappedToIPv4(first_ip_address);
20 }
21 IPAddressNumber second_ip_address = second_address.address();
22 if (IsIPv4Mapped(second_ip_address)) {
23 second_ip_address = ConvertIPv4MappedToIPv4(second_ip_address);
24 }
17 25
18 int sample; 26 int sample;
19 if (first_address.address() != second_address.address()) { 27 if (first_ip_address != second_ip_address) {
20 sample = QUIC_ADDRESS_MISMATCH_BASE; 28 sample = QUIC_ADDRESS_MISMATCH_BASE;
21 } else if (first_address.port() != second_address.port()) { 29 } else if (first_address.port() != second_address.port()) {
22 sample = QUIC_PORT_MISMATCH_BASE; 30 sample = QUIC_PORT_MISMATCH_BASE;
23 } else { 31 } else {
24 sample = QUIC_ADDRESS_AND_PORT_MATCH_BASE; 32 sample = QUIC_ADDRESS_AND_PORT_MATCH_BASE;
25 } 33 }
26 34
27 // Add an offset to |sample|: 35 // Add an offset to |sample|:
28 // V4_V4: add 0 36 // V4_V4: add 0
29 // V6_V6: add 1 37 // V6_V6: add 1
30 // V4_V6: add 2 38 // V4_V6: add 2
31 // V6_V4: add 3 39 // V6_V4: add 3
32 bool first_ipv4 = (first_address.address().size() == kIPv4AddressSize); 40 bool first_ipv4 = (first_ip_address.size() == kIPv4AddressSize);
33 bool second_ipv4 = (second_address.address().size() == kIPv4AddressSize); 41 bool second_ipv4 = (second_ip_address.size() == kIPv4AddressSize);
34 if (first_ipv4 != second_ipv4) { 42 if (first_ipv4 != second_ipv4) {
35 CHECK_EQ(sample, QUIC_ADDRESS_MISMATCH_BASE); 43 CHECK_EQ(sample, QUIC_ADDRESS_MISMATCH_BASE);
36 sample += 2; 44 sample += 2;
37 } 45 }
38 if (!first_ipv4) { 46 if (!first_ipv4) {
39 sample += 1; 47 sample += 1;
40 } 48 }
41 return sample; 49 return sample;
42 } 50 }
43 51
44 } // namespace net 52 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | net/quic/quic_address_mismatch_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698