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 3// found in the LICENSE file. 4 5#ifndef NET_QUIC_QUIC_ADDRESS_MISMATCH_H_ 6#define NET_QUIC_QUIC_ADDRESS_MISMATCH_H_ 7 8#include "net/base/net_export.h" 9 10namespace net { 11 12class IPEndPoint; 13 14enum QuicAddressMismatch { 15 // The addresses don't match. 16 QUIC_ADDRESS_MISMATCH_BASE = 0, 17 QUIC_ADDRESS_MISMATCH_V4_V4 = 0, 18 QUIC_ADDRESS_MISMATCH_V6_V6 = 1, 19 QUIC_ADDRESS_MISMATCH_V4_V6 = 2, 20 QUIC_ADDRESS_MISMATCH_V6_V4 = 3, 21 22 // The addresses match, but the ports don't match. 23 QUIC_PORT_MISMATCH_BASE = 4, 24 QUIC_PORT_MISMATCH_V4_V4 = 4, 25 QUIC_PORT_MISMATCH_V6_V6 = 5, 26 27 QUIC_ADDRESS_AND_PORT_MATCH_BASE = 6, 28 QUIC_ADDRESS_AND_PORT_MATCH_V4_V4 = 6, 29 QUIC_ADDRESS_AND_PORT_MATCH_V6_V6 = 7, 30 31 QUIC_ADDRESS_MISMATCH_MAX, 32}; 33 34// Returns a value of the QuicAddressMismatch enum type that indicates how 35// |first_address| differs from |second_address|. Returns -1 if either address 36// is empty. 37// 38// Only used by the Net.QuicSession.PublicResetAddressMismatch histogram. 39NET_EXPORT_PRIVATE int GetAddressMismatch(const IPEndPoint& first_address, 40 const IPEndPoint& second_address); 41 42} // namespace net 43 44#endif // NET_QUIC_QUIC_ADDRESS_MISMATCH_H_ 45