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

Side by Side Diff: webrtc/base/winping.h

Issue 2866183004: Deleted unused method EstimateMTU, and the WinPing class. (Closed)
Patch Set: Created 3 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
« no previous file with comments | « webrtc/base/win32socketserver.cc ('k') | webrtc/base/winping.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #ifndef WEBRTC_BASE_WINPING_H__
12 #define WEBRTC_BASE_WINPING_H__
13
14 #if defined(WEBRTC_WIN)
15
16 #include "webrtc/base/win32.h"
17 #include "webrtc/base/basictypes.h"
18 #include "webrtc/base/ipaddress.h"
19
20 namespace rtc {
21
22 // This class wraps a Win32 API for doing ICMP pinging. This API, unlike the
23 // the normal socket APIs (as implemented on Win9x), will return an error if
24 // an ICMP packet with the dont-fragment bit set is too large. This means this
25 // class can be used to detect the MTU to a given address.
26
27 typedef struct ip_option_information {
28 UCHAR Ttl; // Time To Live
29 UCHAR Tos; // Type Of Service
30 UCHAR Flags; // IP header flags
31 UCHAR OptionsSize; // Size in bytes of options data
32 PUCHAR OptionsData; // Pointer to options data
33 } IP_OPTION_INFORMATION, * PIP_OPTION_INFORMATION;
34
35 typedef HANDLE (WINAPI *PIcmpCreateFile)();
36
37 typedef BOOL (WINAPI *PIcmpCloseHandle)(HANDLE icmp_handle);
38
39 typedef HANDLE (WINAPI *PIcmp6CreateFile)();
40
41 typedef BOOL (WINAPI *PIcmp6CloseHandle)(HANDLE icmp_handle);
42
43 typedef DWORD (WINAPI *PIcmpSendEcho)(
44 HANDLE IcmpHandle,
45 ULONG DestinationAddress,
46 LPVOID RequestData,
47 WORD RequestSize,
48 PIP_OPTION_INFORMATION RequestOptions,
49 LPVOID ReplyBuffer,
50 DWORD ReplySize,
51 DWORD Timeout);
52
53 typedef DWORD (WINAPI *PIcmp6SendEcho2)(
54 HANDLE IcmpHandle,
55 HANDLE Event,
56 FARPROC ApcRoutine,
57 PVOID ApcContext,
58 struct sockaddr_in6 *SourceAddress,
59 struct sockaddr_in6 *DestinationAddress,
60 LPVOID RequestData,
61 WORD RequestSize,
62 PIP_OPTION_INFORMATION RequestOptions,
63 LPVOID ReplyBuffer,
64 DWORD ReplySize,
65 DWORD Timeout
66 );
67
68 class WinPing {
69 public:
70 WinPing();
71 ~WinPing();
72
73 // Determines whether the class was initialized correctly.
74 bool IsValid() { return valid_; }
75
76 // Attempts to send a ping with the given parameters.
77 enum PingResult { PING_FAIL, PING_INVALID_PARAMS,
78 PING_TOO_LARGE, PING_TIMEOUT, PING_SUCCESS };
79 PingResult Ping(IPAddress ip,
80 uint32_t data_size,
81 uint32_t timeout_millis,
82 uint8_t ttl,
83 bool allow_fragments);
84
85 private:
86 HMODULE dll_;
87 HANDLE hping_;
88 HANDLE hping6_;
89 PIcmpCreateFile create_;
90 PIcmpCloseHandle close_;
91 PIcmpSendEcho send_;
92 PIcmp6CreateFile create6_;
93 PIcmp6SendEcho2 send6_;
94 char* data_;
95 uint32_t dlen_;
96 char* reply_;
97 uint32_t rlen_;
98 bool valid_;
99 };
100
101 } // namespace rtc
102
103 #endif // WEBRTC_WIN
104
105 #endif // WEBRTC_BASE_WINPING_H__
OLDNEW
« no previous file with comments | « webrtc/base/win32socketserver.cc ('k') | webrtc/base/winping.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698