Deleted unused method EstimateMTU, and the WinPing class.

BUG=None

Review-Url: https://codereview.webrtc.org/2866183004
Cr-Commit-Position: refs/heads/master@{#18077}
diff --git a/webrtc/base/BUILD.gn b/webrtc/base/BUILD.gn
index ddd570d..78d8a44 100644
--- a/webrtc/base/BUILD.gn
+++ b/webrtc/base/BUILD.gn
@@ -611,8 +611,6 @@
       "win32securityerrors.cc",
       "win32window.cc",
       "win32window.h",
-      "winping.cc",
-      "winping.h",
     ]
 
     libs += [
diff --git a/webrtc/base/asyncsocket.cc b/webrtc/base/asyncsocket.cc
index 6c41596..c593c4f 100644
--- a/webrtc/base/asyncsocket.cc
+++ b/webrtc/base/asyncsocket.cc
@@ -100,10 +100,6 @@
   return socket_->GetState();
 }
 
-int AsyncSocketAdapter::EstimateMTU(uint16_t* mtu) {
-  return socket_->EstimateMTU(mtu);
-}
-
 int AsyncSocketAdapter::GetOption(Option opt, int* value) {
   return socket_->GetOption(opt, value);
 }
diff --git a/webrtc/base/asyncsocket.h b/webrtc/base/asyncsocket.h
index 40cf1b5b..6dc41b6 100644
--- a/webrtc/base/asyncsocket.h
+++ b/webrtc/base/asyncsocket.h
@@ -66,7 +66,6 @@
   int GetError() const override;
   void SetError(int error) override;
   ConnState GetState() const override;
-  int EstimateMTU(uint16_t* mtu) override;
   int GetOption(Option opt, int* value) override;
   int SetOption(Option opt, int value) override;
 
diff --git a/webrtc/base/natsocketfactory.cc b/webrtc/base/natsocketfactory.cc
index 7aa6838..67172fb 100644
--- a/webrtc/base/natsocketfactory.cc
+++ b/webrtc/base/natsocketfactory.cc
@@ -230,7 +230,6 @@
   ConnState GetState() const override {
     return connected_ ? CS_CONNECTED : CS_CLOSED;
   }
-  int EstimateMTU(uint16_t* mtu) override { return socket_->EstimateMTU(mtu); }
   int GetOption(Option opt, int* value) override {
     return socket_->GetOption(opt, value);
   }
diff --git a/webrtc/base/physicalsocketserver.cc b/webrtc/base/physicalsocketserver.cc
index 0d6cfa1..8e57d3b 100644
--- a/webrtc/base/physicalsocketserver.cc
+++ b/webrtc/base/physicalsocketserver.cc
@@ -47,7 +47,6 @@
 #include "webrtc/base/networkmonitor.h"
 #include "webrtc/base/nullsocketserver.h"
 #include "webrtc/base/timeutils.h"
-#include "webrtc/base/winping.h"
 #include "webrtc/base/win32socketinit.h"
 
 #if defined(WEBRTC_POSIX)
@@ -472,70 +471,6 @@
   return err;
 }
 
-int PhysicalSocket::EstimateMTU(uint16_t* mtu) {
-  SocketAddress addr = GetRemoteAddress();
-  if (addr.IsAnyIP()) {
-    SetError(ENOTCONN);
-    return -1;
-  }
-
-#if defined(WEBRTC_WIN)
-  // Gets the interface MTU (TTL=1) for the interface used to reach |addr|.
-  WinPing ping;
-  if (!ping.IsValid()) {
-    SetError(EINVAL);  // can't think of a better error ID
-    return -1;
-  }
-  int header_size = ICMP_HEADER_SIZE;
-  if (addr.family() == AF_INET6) {
-    header_size += IPV6_HEADER_SIZE;
-  } else if (addr.family() == AF_INET) {
-    header_size += IP_HEADER_SIZE;
-  }
-
-  for (int level = 0; PACKET_MAXIMUMS[level + 1] > 0; ++level) {
-    int32_t size = PACKET_MAXIMUMS[level] - header_size;
-    WinPing::PingResult result = ping.Ping(addr.ipaddr(), size,
-                                           ICMP_PING_TIMEOUT_MILLIS,
-                                           1, false);
-    if (result == WinPing::PING_FAIL) {
-      SetError(EINVAL);  // can't think of a better error ID
-      return -1;
-    } else if (result != WinPing::PING_TOO_LARGE) {
-      *mtu = PACKET_MAXIMUMS[level];
-      return 0;
-    }
-  }
-
-  RTC_NOTREACHED();
-  return -1;
-#elif defined(WEBRTC_MAC)
-  // No simple way to do this on Mac OS X.
-  // SIOCGIFMTU would work if we knew which interface would be used, but
-  // figuring that out is pretty complicated. For now we'll return an error
-  // and let the caller pick a default MTU.
-  SetError(EINVAL);
-  return -1;
-#elif defined(WEBRTC_LINUX)
-  // Gets the path MTU.
-  int value;
-  socklen_t vlen = sizeof(value);
-  int err = getsockopt(s_, IPPROTO_IP, IP_MTU, &value, &vlen);
-  if (err < 0) {
-    UpdateLastError();
-    return err;
-  }
-
-  RTC_DCHECK((0 <= value) && (value <= 65536));
-  *mtu = value;
-  return 0;
-#elif defined(__native_client__)
-  // Most socket operations, including this, will fail in NaCl's sandbox.
-  error_ = EACCES;
-  return -1;
-#endif
-}
-
 SOCKET PhysicalSocket::DoAccept(SOCKET socket,
                                 sockaddr* addr,
                                 socklen_t* addrlen) {
diff --git a/webrtc/base/physicalsocketserver.h b/webrtc/base/physicalsocketserver.h
index 462fab2..f2994b2 100644
--- a/webrtc/base/physicalsocketserver.h
+++ b/webrtc/base/physicalsocketserver.h
@@ -151,8 +151,6 @@
 
   int Close() override;
 
-  int EstimateMTU(uint16_t* mtu) override;
-
   SocketServer* socketserver() { return ss_; }
 
  protected:
diff --git a/webrtc/base/socket.h b/webrtc/base/socket.h
index 73dfdbb..38a51f8 100644
--- a/webrtc/base/socket.h
+++ b/webrtc/base/socket.h
@@ -171,11 +171,6 @@
   };
   virtual ConnState GetState() const = 0;
 
-  // Fills in the given uint16_t with the current estimate of the MTU along the
-  // path to the address to which this socket is connected. NOTE: This method
-  // can block for up to 10 seconds on Windows.
-  virtual int EstimateMTU(uint16_t* mtu) = 0;
-
   enum Option {
     OPT_DONTFRAGMENT,
     OPT_RCVBUF,      // receive buffer size
diff --git a/webrtc/base/socket_unittest.cc b/webrtc/base/socket_unittest.cc
index f1a8ecb..2342007 100644
--- a/webrtc/base/socket_unittest.cc
+++ b/webrtc/base/socket_unittest.cc
@@ -1013,30 +1013,6 @@
   int current_nd, desired_nd = 1;
   ASSERT_EQ(-1, socket->GetOption(Socket::OPT_NODELAY, &current_nd));
   ASSERT_EQ(-1, socket->SetOption(Socket::OPT_NODELAY, desired_nd));
-
-  // Skip the esimate MTU test for IPv6 for now.
-  if (loopback.family() != AF_INET6) {
-    // Try estimating MTU.
-    std::unique_ptr<AsyncSocket> mtu_socket(
-        ss_->CreateAsyncSocket(loopback.family(), SOCK_DGRAM));
-    mtu_socket->Bind(SocketAddress(loopback, 0));
-    uint16_t mtu;
-    // should fail until we connect
-    ASSERT_EQ(-1, mtu_socket->EstimateMTU(&mtu));
-    mtu_socket->Connect(SocketAddress(loopback, 0));
-#if defined(WEBRTC_WIN)
-    // now it should succeed
-    ASSERT_NE(-1, mtu_socket->EstimateMTU(&mtu));
-    ASSERT_GE(mtu, 1492);  // should be at least the 1492 "plateau" on localhost
-#elif defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
-    // except on WEBRTC_MAC && !WEBRTC_IOS, where it's not yet implemented
-    ASSERT_EQ(-1, mtu_socket->EstimateMTU(&mtu));
-#else
-    // and the behavior seems unpredictable on Linux,
-    // failing on the build machine
-    // but succeeding on my Ubiquity instance.
-#endif
-  }
 }
 
 void SocketTest::SocketRecvTimestamp(const IPAddress& loopback) {
diff --git a/webrtc/base/virtualsocketserver.cc b/webrtc/base/virtualsocketserver.cc
index 1e9c5bb..9845725 100644
--- a/webrtc/base/virtualsocketserver.cc
+++ b/webrtc/base/virtualsocketserver.cc
@@ -384,13 +384,6 @@
   return 0;  // 0 is success to emulate setsockopt()
 }
 
-int VirtualSocket::EstimateMTU(uint16_t* mtu) {
-  if (CS_CONNECTED != state_)
-    return ENOTCONN;
-  else
-    return 65536;
-}
-
 void VirtualSocket::OnMessage(Message* pmsg) {
   if (pmsg->message_id == MSG_ID_PACKET) {
     RTC_DCHECK(nullptr != pmsg->pdata);
diff --git a/webrtc/base/virtualsocketserver.h b/webrtc/base/virtualsocketserver.h
index 3d4171b..a750ab9 100644
--- a/webrtc/base/virtualsocketserver.h
+++ b/webrtc/base/virtualsocketserver.h
@@ -311,7 +311,6 @@
   ConnState GetState() const override;
   int GetOption(Option opt, int* value) override;
   int SetOption(Option opt, int value) override;
-  int EstimateMTU(uint16_t* mtu) override;
   void OnMessage(Message* pmsg) override;
 
   bool was_any() { return was_any_; }
diff --git a/webrtc/base/win32_unittest.cc b/webrtc/base/win32_unittest.cc
index 96e0bd2..c41ca86 100644
--- a/webrtc/base/win32_unittest.cc
+++ b/webrtc/base/win32_unittest.cc
@@ -13,7 +13,6 @@
 #include "webrtc/base/gunit.h"
 #include "webrtc/base/nethelpers.h"
 #include "webrtc/base/win32.h"
-#include "webrtc/base/winping.h"
 
 #if !defined(WEBRTC_WIN)
 #error Only for Windows
@@ -36,29 +35,6 @@
   EXPECT_EQ(expected, ToUInt64(ft));
 }
 
-TEST_F(Win32Test, WinPingTest) {
-  WinPing ping;
-  ASSERT_TRUE(ping.IsValid());
-
-  // Test valid ping cases.
-  WinPing::PingResult result = ping.Ping(IPAddress(INADDR_LOOPBACK), 20, 50, 1,
-                                         false);
-  ASSERT_EQ(WinPing::PING_SUCCESS, result);
-  if (HasIPv6Enabled()) {
-    WinPing::PingResult v6result = ping.Ping(IPAddress(in6addr_loopback), 20,
-                                             50, 1, false);
-    ASSERT_EQ(WinPing::PING_SUCCESS, v6result);
-  }
-
-  // Test invalid parameter cases.
-  ASSERT_EQ(WinPing::PING_INVALID_PARAMS, ping.Ping(
-            IPAddress(INADDR_LOOPBACK), 0, 50, 1, false));
-  ASSERT_EQ(WinPing::PING_INVALID_PARAMS, ping.Ping(
-            IPAddress(INADDR_LOOPBACK), 20, 0, 1, false));
-  ASSERT_EQ(WinPing::PING_INVALID_PARAMS, ping.Ping(
-            IPAddress(INADDR_LOOPBACK), 20, 50, 0, false));
-}
-
 TEST_F(Win32Test, IPv6AddressCompression) {
   IPAddress ipv6;
 
diff --git a/webrtc/base/win32socketserver.cc b/webrtc/base/win32socketserver.cc
index 2a63aec..daec986 100644
--- a/webrtc/base/win32socketserver.cc
+++ b/webrtc/base/win32socketserver.cc
@@ -17,7 +17,6 @@
 #include "webrtc/base/checks.h"
 #include "webrtc/base/logging.h"
 #include "webrtc/base/win32window.h"
-#include "webrtc/base/winping.h"
 
 namespace rtc {
 
@@ -525,37 +524,6 @@
   return err;
 }
 
-int Win32Socket::EstimateMTU(uint16_t* mtu) {
-  SocketAddress addr = GetRemoteAddress();
-  if (addr.IsAnyIP()) {
-    error_ = ENOTCONN;
-    return -1;
-  }
-
-  WinPing ping;
-  if (!ping.IsValid()) {
-    error_ = EINVAL;  // can't think of a better error ID
-    return -1;
-  }
-
-  for (int level = 0; PACKET_MAXIMUMS[level + 1] > 0; ++level) {
-    int32_t size = PACKET_MAXIMUMS[level] - IP_HEADER_SIZE - ICMP_HEADER_SIZE;
-    WinPing::PingResult result = ping.Ping(addr.ipaddr(), size,
-                                           ICMP_PING_TIMEOUT_MILLIS, 1, false);
-    if (result == WinPing::PING_FAIL) {
-      error_ = EINVAL;  // can't think of a better error ID
-      return -1;
-    }
-    if (result != WinPing::PING_TOO_LARGE) {
-      *mtu = PACKET_MAXIMUMS[level];
-      return 0;
-    }
-  }
-
-  RTC_NOTREACHED();
-  return 0;
-}
-
 void Win32Socket::CreateSink() {
   RTC_DCHECK(nullptr == sink_);
 
diff --git a/webrtc/base/win32socketserver.h b/webrtc/base/win32socketserver.h
index cec68ef..146b4e2 100644
--- a/webrtc/base/win32socketserver.h
+++ b/webrtc/base/win32socketserver.h
@@ -55,7 +55,6 @@
   virtual int GetError() const;
   virtual void SetError(int error);
   virtual ConnState GetState() const;
-  virtual int EstimateMTU(uint16_t* mtu);
   virtual int GetOption(Option opt, int* value);
   virtual int SetOption(Option opt, int value);
 
diff --git a/webrtc/base/winping.cc b/webrtc/base/winping.cc
deleted file mode 100644
index 21f4fa3..0000000
--- a/webrtc/base/winping.cc
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
- *  Copyright 2004 The WebRTC Project Authors. All rights reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/base/winping.h"
-
-#include <Iphlpapi.h>
-
-#include <algorithm>
-
-#include "webrtc/base/byteorder.h"
-#include "webrtc/base/checks.h"
-#include "webrtc/base/ipaddress.h"
-#include "webrtc/base/logging.h"
-#include "webrtc/base/nethelpers.h"
-#include "webrtc/base/socketaddress.h"
-
-namespace rtc {
-
-//////////////////////////////////////////////////////////////////////
-// Found in IPExport.h
-//////////////////////////////////////////////////////////////////////
-
-typedef struct icmp_echo_reply {
-    ULONG   Address;            // Replying address
-    ULONG   Status;             // Reply IP_STATUS
-    ULONG   RoundTripTime;      // RTT in milliseconds
-    USHORT  DataSize;           // Reply data size in bytes
-    USHORT  Reserved;           // Reserved for system use
-    PVOID   Data;               // Pointer to the reply data
-    struct ip_option_information Options; // Reply options
-} ICMP_ECHO_REPLY, * PICMP_ECHO_REPLY;
-
-typedef struct icmpv6_echo_reply_lh {
-  sockaddr_in6    Address;
-  ULONG           Status;
-  unsigned int    RoundTripTime;
-} ICMPV6_ECHO_REPLY, *PICMPV6_ECHO_REPLY;
-
-//
-// IP_STATUS codes returned from IP APIs
-//
-
-#define IP_STATUS_BASE              11000
-
-#define IP_SUCCESS                  0
-#define IP_BUF_TOO_SMALL            (IP_STATUS_BASE + 1)
-#define IP_DEST_NET_UNREACHABLE     (IP_STATUS_BASE + 2)
-#define IP_DEST_HOST_UNREACHABLE    (IP_STATUS_BASE + 3)
-#define IP_DEST_PROT_UNREACHABLE    (IP_STATUS_BASE + 4)
-#define IP_DEST_PORT_UNREACHABLE    (IP_STATUS_BASE + 5)
-#define IP_NO_RESOURCES             (IP_STATUS_BASE + 6)
-#define IP_BAD_OPTION               (IP_STATUS_BASE + 7)
-#define IP_HW_ERROR                 (IP_STATUS_BASE + 8)
-#define IP_PACKET_TOO_BIG           (IP_STATUS_BASE + 9)
-#define IP_REQ_TIMED_OUT            (IP_STATUS_BASE + 10)
-#define IP_BAD_REQ                  (IP_STATUS_BASE + 11)
-#define IP_BAD_ROUTE                (IP_STATUS_BASE + 12)
-#define IP_TTL_EXPIRED_TRANSIT      (IP_STATUS_BASE + 13)
-#define IP_TTL_EXPIRED_REASSEM      (IP_STATUS_BASE + 14)
-#define IP_PARAM_PROBLEM            (IP_STATUS_BASE + 15)
-#define IP_SOURCE_QUENCH            (IP_STATUS_BASE + 16)
-#define IP_OPTION_TOO_BIG           (IP_STATUS_BASE + 17)
-#define IP_BAD_DESTINATION          (IP_STATUS_BASE + 18)
-
-#define IP_ADDR_DELETED             (IP_STATUS_BASE + 19)
-#define IP_SPEC_MTU_CHANGE          (IP_STATUS_BASE + 20)
-#define IP_MTU_CHANGE               (IP_STATUS_BASE + 21)
-#define IP_UNLOAD                   (IP_STATUS_BASE + 22)
-#define IP_ADDR_ADDED               (IP_STATUS_BASE + 23)
-#define IP_MEDIA_CONNECT            (IP_STATUS_BASE + 24)
-#define IP_MEDIA_DISCONNECT         (IP_STATUS_BASE + 25)
-#define IP_BIND_ADAPTER             (IP_STATUS_BASE + 26)
-#define IP_UNBIND_ADAPTER           (IP_STATUS_BASE + 27)
-#define IP_DEVICE_DOES_NOT_EXIST    (IP_STATUS_BASE + 28)
-#define IP_DUPLICATE_ADDRESS        (IP_STATUS_BASE + 29)
-#define IP_INTERFACE_METRIC_CHANGE  (IP_STATUS_BASE + 30)
-#define IP_RECONFIG_SECFLTR         (IP_STATUS_BASE + 31)
-#define IP_NEGOTIATING_IPSEC        (IP_STATUS_BASE + 32)
-#define IP_INTERFACE_WOL_CAPABILITY_CHANGE  (IP_STATUS_BASE + 33)
-#define IP_DUPLICATE_IPADD          (IP_STATUS_BASE + 34)
-
-#define IP_GENERAL_FAILURE          (IP_STATUS_BASE + 50)
-#define MAX_IP_STATUS               IP_GENERAL_FAILURE
-#define IP_PENDING                  (IP_STATUS_BASE + 255)
-
-//
-// Values used in the IP header Flags field.
-//
-#define IP_FLAG_DF      0x2         // Don't fragment this packet.
-
-//
-// Supported IP Option Types.
-//
-// These types define the options which may be used in the OptionsData field
-// of the ip_option_information structure.  See RFC 791 for a complete
-// description of each.
-//
-#define IP_OPT_EOL      0          // End of list option
-#define IP_OPT_NOP      1          // No operation
-#define IP_OPT_SECURITY 0x82       // Security option
-#define IP_OPT_LSRR     0x83       // Loose source route
-#define IP_OPT_SSRR     0x89       // Strict source route
-#define IP_OPT_RR       0x7        // Record route
-#define IP_OPT_TS       0x44       // Timestamp
-#define IP_OPT_SID      0x88       // Stream ID (obsolete)
-#define IP_OPT_ROUTER_ALERT 0x94  // Router Alert Option
-
-#define MAX_OPT_SIZE    40         // Maximum length of IP options in bytes
-
-//////////////////////////////////////////////////////////////////////
-// Global Constants and Types
-//////////////////////////////////////////////////////////////////////
-
-const char * const ICMP_DLL_NAME = "Iphlpapi.dll";
-const char * const ICMP_CREATE_FUNC = "IcmpCreateFile";
-const char * const ICMP_CLOSE_FUNC = "IcmpCloseHandle";
-const char * const ICMP_SEND_FUNC = "IcmpSendEcho";
-const char * const ICMP6_CREATE_FUNC = "Icmp6CreateFile";
-const char * const ICMP6_SEND_FUNC = "Icmp6SendEcho2";
-
-inline uint32_t ReplySize(uint32_t data_size, int family) {
-  if (family == AF_INET) {
-    // A ping error message is 8 bytes long, so make sure we allow for at least
-    // 8 bytes of reply data.
-    return sizeof(ICMP_ECHO_REPLY) + std::max<uint32_t>(8, data_size);
-  } else if (family == AF_INET6) {
-    // Per MSDN, Send6IcmpEcho2 needs at least one ICMPV6_ECHO_REPLY,
-    // 8 bytes for ICMP header, _and_ an IO_BLOCK_STATUS (2 pointers),
-    // in addition to the data size.
-    return sizeof(ICMPV6_ECHO_REPLY) + data_size + 8 + (2 * sizeof(DWORD*));
-  } else {
-    return 0;
-  }
-}
-
-//////////////////////////////////////////////////////////////////////
-// WinPing
-//////////////////////////////////////////////////////////////////////
-
-WinPing::WinPing()
-    : dll_(0), hping_(INVALID_HANDLE_VALUE), create_(0), close_(0), send_(0),
-      create6_(0), send6_(0), data_(0), dlen_(0), reply_(0),
-      rlen_(0), valid_(false) {
-
-  dll_ = LoadLibraryA(ICMP_DLL_NAME);
-  if (!dll_) {
-    LOG(LERROR) << "LoadLibrary: " << GetLastError();
-    return;
-  }
-
-  create_ = (PIcmpCreateFile) GetProcAddress(dll_, ICMP_CREATE_FUNC);
-  close_ = (PIcmpCloseHandle) GetProcAddress(dll_, ICMP_CLOSE_FUNC);
-  send_ = (PIcmpSendEcho) GetProcAddress(dll_, ICMP_SEND_FUNC);
-  if (!create_ || !close_ || !send_) {
-    LOG(LERROR) << "GetProcAddress(ICMP_*): " << GetLastError();
-    return;
-  }
-  hping_ = create_();
-  if (hping_ == INVALID_HANDLE_VALUE) {
-    LOG(LERROR) << "IcmpCreateFile: " << GetLastError();
-    return;
-  }
-
-  if (HasIPv6Enabled()) {
-    create6_ = (PIcmp6CreateFile) GetProcAddress(dll_, ICMP6_CREATE_FUNC);
-    send6_ = (PIcmp6SendEcho2) GetProcAddress(dll_, ICMP6_SEND_FUNC);
-    if (!create6_ || !send6_) {
-      LOG(LERROR) << "GetProcAddress(ICMP6_*): " << GetLastError();
-      return;
-    }
-    hping6_ = create6_();
-    if (hping6_ == INVALID_HANDLE_VALUE) {
-      LOG(LERROR) << "Icmp6CreateFile: " << GetLastError();
-    }
-  }
-
-  dlen_ = 0;
-  rlen_ = ReplySize(dlen_, AF_INET);
-  data_ = new char[dlen_];
-  reply_ = new char[rlen_];
-
-  valid_ = true;
-}
-
-WinPing::~WinPing() {
-  if ((hping_ != INVALID_HANDLE_VALUE) && close_) {
-    if (!close_(hping_))
-      LOG(WARNING) << "IcmpCloseHandle: " << GetLastError();
-  }
-  if ((hping6_ != INVALID_HANDLE_VALUE) && close_) {
-    if (!close_(hping6_)) {
-      LOG(WARNING) << "Icmp6CloseHandle: " << GetLastError();
-    }
-  }
-
-  if (dll_)
-    FreeLibrary(dll_);
-
-  delete[] data_;
-  delete[] reply_;
-}
-
-WinPing::PingResult WinPing::Ping(IPAddress ip,
-                                  uint32_t data_size,
-                                  uint32_t timeout,
-                                  uint8_t ttl,
-                                  bool allow_fragments) {
-  if (data_size == 0 || timeout == 0 || ttl == 0) {
-    LOG(LERROR) << "IcmpSendEcho: data_size/timeout/ttl is 0.";
-    return PING_INVALID_PARAMS;
-  }
-
-  RTC_DCHECK(IsValid());
-
-  IP_OPTION_INFORMATION ipopt;
-  memset(&ipopt, 0, sizeof(ipopt));
-  if (!allow_fragments)
-    ipopt.Flags |= IP_FLAG_DF;
-  ipopt.Ttl = ttl;
-
-  uint32_t reply_size = ReplySize(data_size, ip.family());
-
-  if (data_size > dlen_) {
-    delete [] data_;
-    dlen_ = data_size;
-    data_ = new char[dlen_];
-    memset(data_, 'z', dlen_);
-  }
-
-  if (reply_size > rlen_) {
-    delete [] reply_;
-    rlen_ = reply_size;
-    reply_ = new char[rlen_];
-  }
-  DWORD result = 0;
-  if (ip.family() == AF_INET) {
-    result = send_(hping_, ip.ipv4_address().S_un.S_addr, data_,
-                   uint16_t(data_size), &ipopt, reply_, reply_size, timeout);
-  } else if (ip.family() == AF_INET6) {
-    sockaddr_in6 src = {0};
-    sockaddr_in6 dst = {0};
-    src.sin6_family = AF_INET6;
-    dst.sin6_family = AF_INET6;
-    dst.sin6_addr = ip.ipv6_address();
-    result = send6_(hping6_, nullptr, nullptr, nullptr, &src, &dst, data_,
-                    int16_t(data_size), &ipopt, reply_, reply_size, timeout);
-  }
-  if (result == 0) {
-    DWORD error = GetLastError();
-    if (error == IP_PACKET_TOO_BIG)
-      return PING_TOO_LARGE;
-    if (error == IP_REQ_TIMED_OUT)
-      return PING_TIMEOUT;
-    LOG(LERROR) << "IcmpSendEcho(" << ip.ToSensitiveString()
-                << ", " << data_size << "): " << error;
-    return PING_FAIL;
-  }
-
-  return PING_SUCCESS;
-}
-
-//////////////////////////////////////////////////////////////////////
-// Microsoft Documenation
-//////////////////////////////////////////////////////////////////////
-//
-// Routine Name:
-//
-//     IcmpCreateFile
-//
-// Routine Description:
-//
-//     Opens a handle on which ICMP Echo Requests can be issued.
-//
-// Arguments:
-//
-//     None.
-//
-// Return Value:
-//
-//     An open file handle or INVALID_HANDLE_VALUE. Extended error information
-//     is available by calling GetLastError().
-//
-//////////////////////////////////////////////////////////////////////
-//
-// Routine Name:
-//
-//     IcmpCloseHandle
-//
-// Routine Description:
-//
-//     Closes a handle opened by ICMPOpenFile.
-//
-// Arguments:
-//
-//     IcmpHandle  - The handle to close.
-//
-// Return Value:
-//
-//     TRUE if the handle was closed successfully, otherwise FALSE. Extended
-//     error information is available by calling GetLastError().
-//
-//////////////////////////////////////////////////////////////////////
-//
-// Routine Name:
-//
-//     IcmpSendEcho
-//
-// Routine Description:
-//
-//     Sends an ICMP Echo request and returns any replies. The
-//     call returns when the timeout has expired or the reply buffer
-//     is filled.
-//
-// Arguments:
-//
-//     IcmpHandle           - An open handle returned by ICMPCreateFile.
-//
-//     DestinationAddress   - The destination of the echo request.
-//
-//     RequestData          - A buffer containing the data to send in the
-//                            request.
-//
-//     RequestSize          - The number of bytes in the request data buffer.
-//
-//     RequestOptions       - Pointer to the IP header options for the request.
-//                            May be null.
-//
-//     ReplyBuffer          - A buffer to hold any replies to the request.
-//                            On return, the buffer will contain an array of
-//                            ICMP_ECHO_REPLY structures followed by the
-//                            options and data for the replies. The buffer
-//                            should be large enough to hold at least one
-//                            ICMP_ECHO_REPLY structure plus
-//                            MAX(RequestSize, 8) bytes of data since an ICMP
-//                            error message contains 8 bytes of data.
-//
-//     ReplySize            - The size in bytes of the reply buffer.
-//
-//     Timeout              - The time in milliseconds to wait for replies.
-//
-// Return Value:
-//
-//     Returns the number of ICMP_ECHO_REPLY structures stored in ReplyBuffer.
-//     The status of each reply is contained in the structure. If the return
-//     value is zero, extended error information is available via
-//     GetLastError().
-//
-//////////////////////////////////////////////////////////////////////
-
-} // namespace rtc
diff --git a/webrtc/base/winping.h b/webrtc/base/winping.h
deleted file mode 100644
index de79b85..0000000
--- a/webrtc/base/winping.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- *  Copyright 2004 The WebRTC Project Authors. All rights reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_BASE_WINPING_H__
-#define WEBRTC_BASE_WINPING_H__
-
-#if defined(WEBRTC_WIN)
-
-#include "webrtc/base/win32.h"
-#include "webrtc/base/basictypes.h"
-#include "webrtc/base/ipaddress.h"
-
-namespace rtc {
-
-// This class wraps a Win32 API for doing ICMP pinging.  This API, unlike the
-// the normal socket APIs (as implemented on Win9x), will return an error if
-// an ICMP packet with the dont-fragment bit set is too large.  This means this
-// class can be used to detect the MTU to a given address.
-
-typedef struct ip_option_information {
-    UCHAR   Ttl;                // Time To Live
-    UCHAR   Tos;                // Type Of Service
-    UCHAR   Flags;              // IP header flags
-    UCHAR   OptionsSize;        // Size in bytes of options data
-    PUCHAR  OptionsData;        // Pointer to options data
-} IP_OPTION_INFORMATION, * PIP_OPTION_INFORMATION;
-
-typedef HANDLE (WINAPI *PIcmpCreateFile)();
-
-typedef BOOL (WINAPI *PIcmpCloseHandle)(HANDLE icmp_handle);
-
-typedef HANDLE (WINAPI *PIcmp6CreateFile)();
-
-typedef BOOL (WINAPI *PIcmp6CloseHandle)(HANDLE icmp_handle);
-
-typedef DWORD (WINAPI *PIcmpSendEcho)(
-    HANDLE                   IcmpHandle,
-    ULONG                    DestinationAddress,
-    LPVOID                   RequestData,
-    WORD                     RequestSize,
-    PIP_OPTION_INFORMATION   RequestOptions,
-    LPVOID                   ReplyBuffer,
-    DWORD                    ReplySize,
-    DWORD                    Timeout);
-
-typedef DWORD (WINAPI *PIcmp6SendEcho2)(
-    HANDLE IcmpHandle,
-    HANDLE Event,
-    FARPROC ApcRoutine,
-    PVOID ApcContext,
-    struct sockaddr_in6 *SourceAddress,
-    struct sockaddr_in6 *DestinationAddress,
-    LPVOID RequestData,
-    WORD RequestSize,
-    PIP_OPTION_INFORMATION RequestOptions,
-    LPVOID ReplyBuffer,
-    DWORD ReplySize,
-    DWORD Timeout
-);
-
-class WinPing {
-public:
-    WinPing();
-    ~WinPing();
-
-    // Determines whether the class was initialized correctly.
-    bool IsValid() { return valid_; }
-
-    // Attempts to send a ping with the given parameters.
-    enum PingResult { PING_FAIL, PING_INVALID_PARAMS,
-                      PING_TOO_LARGE, PING_TIMEOUT, PING_SUCCESS };
-    PingResult Ping(IPAddress ip,
-                    uint32_t data_size,
-                    uint32_t timeout_millis,
-                    uint8_t ttl,
-                    bool allow_fragments);
-
-private:
-    HMODULE dll_;
-    HANDLE hping_;
-    HANDLE hping6_;
-    PIcmpCreateFile create_;
-    PIcmpCloseHandle close_;
-    PIcmpSendEcho send_;
-    PIcmp6CreateFile create6_;
-    PIcmp6SendEcho2 send6_;
-    char* data_;
-    uint32_t dlen_;
-    char* reply_;
-    uint32_t rlen_;
-    bool valid_;
-};
-
-} // namespace rtc
-
-#endif // WEBRTC_WIN 
-
-#endif // WEBRTC_BASE_WINPING_H__