1 // Licensed to the .NET Foundation under one or more agreements. 2 // The .NET Foundation licenses this file to you under the MIT license. 3 // See the LICENSE file in the project root for more information. 4 5 namespace System.Net.NetworkInformation 6 { 7 // ICMP statistics for IPv4. 8 internal class SystemIcmpV4Statistics : IcmpV4Statistics 9 { 10 private readonly Interop.IpHlpApi.MibIcmpInfo _stats; 11 SystemIcmpV4Statistics()12 internal SystemIcmpV4Statistics() 13 { 14 uint result = Interop.IpHlpApi.GetIcmpStatistics(out _stats); 15 16 if (result != Interop.IpHlpApi.ERROR_SUCCESS) 17 { 18 throw new NetworkInformationException((int)result); 19 } 20 } 21 22 public override long MessagesSent { get { return _stats.outStats.messages; } } 23 24 public override long MessagesReceived { get { return _stats.inStats.messages; } } 25 26 public override long ErrorsSent { get { return _stats.outStats.errors; } } 27 28 public override long ErrorsReceived { get { return _stats.inStats.errors; } } 29 30 public override long DestinationUnreachableMessagesSent { get { return _stats.outStats.destinationUnreachables; } } 31 32 public override long DestinationUnreachableMessagesReceived { get { return _stats.inStats.destinationUnreachables; } } 33 34 public override long TimeExceededMessagesSent { get { return _stats.outStats.timeExceeds; } } 35 36 public override long TimeExceededMessagesReceived { get { return _stats.inStats.timeExceeds; } } 37 38 public override long ParameterProblemsSent { get { return _stats.outStats.parameterProblems; } } 39 40 public override long ParameterProblemsReceived { get { return _stats.inStats.parameterProblems; } } 41 42 public override long SourceQuenchesSent { get { return _stats.outStats.sourceQuenches; } } 43 44 public override long SourceQuenchesReceived { get { return _stats.inStats.sourceQuenches; } } 45 46 public override long RedirectsSent { get { return _stats.outStats.redirects; } } 47 48 public override long RedirectsReceived { get { return _stats.inStats.redirects; } } 49 50 public override long EchoRequestsSent { get { return _stats.outStats.echoRequests; } } 51 52 public override long EchoRequestsReceived { get { return _stats.inStats.echoRequests; } } 53 54 public override long EchoRepliesSent { get { return _stats.outStats.echoReplies; } } 55 56 public override long EchoRepliesReceived { get { return _stats.inStats.echoReplies; } } 57 58 public override long TimestampRequestsSent { get { return _stats.outStats.timestampRequests; } } 59 60 public override long TimestampRequestsReceived { get { return _stats.inStats.timestampRequests; } } 61 62 public override long TimestampRepliesSent { get { return _stats.outStats.timestampReplies; } } 63 64 public override long TimestampRepliesReceived { get { return _stats.inStats.timestampReplies; } } 65 66 public override long AddressMaskRequestsSent { get { return _stats.outStats.addressMaskRequests; } } 67 68 public override long AddressMaskRequestsReceived { get { return _stats.inStats.addressMaskRequests; } } 69 70 public override long AddressMaskRepliesSent { get { return _stats.outStats.addressMaskReplies; } } 71 72 public override long AddressMaskRepliesReceived { get { return _stats.inStats.addressMaskReplies; } } 73 } 74 } 75