1 
2 
3     /// <summary><para>
4     ///    Provides support for ip configuation information and statistics.
5     ///</para></summary>
6     ///
7 namespace System.Net.NetworkInformation{
8     using System.Net.Sockets;
9     using System;
10     using System.ComponentModel;
11 
12 
13 
14 
15     /// <summary>Icmp statistics for IPv4.</summary>
16     internal class SystemIcmpV4Statistics:IcmpV4Statistics {
17         MibIcmpInfo stats;
18 
SystemIcmpV4Statistics()19         internal SystemIcmpV4Statistics(){
20             uint result = UnsafeNetInfoNativeMethods.GetIcmpStatistics(out stats);
21 
22             if (result != IpHelperErrors.Success) {
23                 throw new NetworkInformationException((int)result);
24             }
25         }
26 
27         public override long MessagesSent{get {return stats.outStats.messages;}}
28         public override long MessagesReceived{get {return stats.inStats.messages;}}
29 
30         public override long ErrorsSent{get {return stats.outStats.errors;}}
31         public override long ErrorsReceived{get {return stats.inStats.errors;}}
32 
33 
34         public override long DestinationUnreachableMessagesSent{get {return stats.outStats.destinationUnreachables;}}
35         public override long DestinationUnreachableMessagesReceived{get {return stats.inStats.destinationUnreachables;}}
36 
37         public override long TimeExceededMessagesSent{get {return stats.outStats.timeExceeds;}}
38         public override long TimeExceededMessagesReceived{get {return stats.inStats.timeExceeds;}}
39 
40         public override long ParameterProblemsSent{get {return stats.outStats.parameterProblems;}}
41         public override long ParameterProblemsReceived{get {return stats.inStats.parameterProblems;}}
42 
43 
44         public override long SourceQuenchesSent{get {return stats.outStats.sourceQuenches;}}
45         public override long SourceQuenchesReceived{get {return stats.inStats.sourceQuenches;}}
46 
47 
48         public override long RedirectsSent{get {return stats.outStats.redirects;}}
49         public override long RedirectsReceived{get {return stats.inStats.redirects;}}
50 
51 
52         public override long EchoRequestsSent{get {return stats.outStats.echoRequests;}}
53         public override long EchoRequestsReceived{get {return stats.inStats.echoRequests;}}
54 
55         public override long EchoRepliesSent{get {return stats.outStats.echoReplies;}}
56         public override long EchoRepliesReceived{get {return stats.inStats.echoReplies;}}
57 
58 
59         public override long TimestampRequestsSent{get {return stats.outStats.timestampRequests;}}
60         public override long TimestampRequestsReceived{get {return stats.inStats.timestampRequests;}}
61 
62         public override long TimestampRepliesSent{get {return stats.outStats.timestampReplies;}}
63         public override long TimestampRepliesReceived{get {return stats.inStats.timestampReplies;}}
64 
65         public override long AddressMaskRequestsSent{get {return stats.outStats.addressMaskRequests;}}
66         public override long AddressMaskRequestsReceived{get {return stats.inStats.addressMaskRequests;}}
67 
68         public override long AddressMaskRepliesSent{get {return stats.outStats.addressMaskReplies;}}
69         public override long AddressMaskRepliesReceived{get {return stats.inStats.addressMaskReplies;}}
70     }
71 
72   }
73 
74 
75