File: net\System\Net\NetworkInformation\SystemIcmpV6Statistics.cs
Project: ndp\fx\src\System.csproj (System)

 
    /// <summary><para>
    ///    Provides support for ip configuation information and statistics.
    ///</para></summary>     
    ///
namespace System.Net.NetworkInformation {
    using System.Net.Sockets;
    using System;
    using System.ComponentModel;
 
 
    internal enum IcmpV6StatType {
        DestinationUnreachable          =   1,
        PacketTooBig       =   2,
        TimeExceeded        =   3,
        ParameterProblem           =   4,
        EchoRequest         = 128,
        EchoReply           = 129,
        MembershipQuery     = 130,
        MembershipReport    = 131,
        MembershipReduction = 132,
        RouterSolicit          = 133,
        RouterAdvertisement           = 134,
        NeighborSolict        = 135,
        NeighborAdvertisement         = 136,
        Redirect                = 137,
    };
 
 
       
    /// <summary>Icmp statistics for Ipv6.</summary>
    internal class SystemIcmpV6Statistics:IcmpV6Statistics {
 
        MibIcmpInfoEx stats;
 
        internal SystemIcmpV6Statistics(){
 
            uint result = UnsafeNetInfoNativeMethods.GetIcmpStatisticsEx(out stats,AddressFamily.InterNetworkV6);
 
            if (result != IpHelperErrors.Success) {
                throw new NetworkInformationException((int)result);
            }
        }
 
        public override long MessagesSent{get {return (long)stats.outStats.dwMsgs;}}
        public override long MessagesReceived{get {return (long)stats.inStats.dwMsgs;}}
        public override long ErrorsSent{get {return (long)stats.outStats.dwErrors;}}
        public override long ErrorsReceived{get {return (long)stats.inStats.dwErrors;}}
        public override long DestinationUnreachableMessagesSent{
            get {
                return stats.outStats.rgdwTypeCount[(long)IcmpV6StatType.DestinationUnreachable];
            }
        }
        public override long DestinationUnreachableMessagesReceived{
            get {
                return stats.inStats.rgdwTypeCount[(long)IcmpV6StatType.DestinationUnreachable];
            }
        }
        public override long PacketTooBigMessagesSent{
            get {
                return stats.outStats.rgdwTypeCount[(long)IcmpV6StatType.PacketTooBig];
            }
        }
        public override long PacketTooBigMessagesReceived{
            get {
                return stats.inStats.rgdwTypeCount[(long)IcmpV6StatType.PacketTooBig];
            }
        }
        public override long TimeExceededMessagesSent{
            get {
                return stats.outStats.rgdwTypeCount[(long)IcmpV6StatType.TimeExceeded];
            }
        }
        public override long TimeExceededMessagesReceived{
            get {
                return stats.inStats.rgdwTypeCount[(long)IcmpV6StatType.TimeExceeded];
            }
        }
        public override long ParameterProblemsSent{
            get {
                return stats.outStats.rgdwTypeCount[(long)IcmpV6StatType.ParameterProblem];
            }
        }
        public override long ParameterProblemsReceived{
            get {
                return stats.inStats.rgdwTypeCount[(long)IcmpV6StatType.ParameterProblem];
            }
        }
        public override long EchoRequestsSent{
            get {
                return stats.outStats.rgdwTypeCount[(long)IcmpV6StatType.EchoRequest];
            }
        }
        public override long EchoRequestsReceived{
            get {
                return stats.inStats.rgdwTypeCount[(long)IcmpV6StatType.EchoRequest];
            }
        }
        public override long EchoRepliesSent{
            get {
                return stats.outStats.rgdwTypeCount[(long)IcmpV6StatType.EchoReply];
            }
        }
        public override long EchoRepliesReceived{
            get {
                return stats.inStats.rgdwTypeCount[(long)IcmpV6StatType.EchoReply];
            }
        }
        public override long MembershipQueriesSent{
            get {
                return stats.outStats.rgdwTypeCount[(long)IcmpV6StatType.MembershipQuery];
            }
        }
        public override long MembershipQueriesReceived{
            get {
                return stats.inStats.rgdwTypeCount[(long)IcmpV6StatType.MembershipQuery];
            }
        }
        public override long MembershipReportsSent{
            get {
                return stats.outStats.rgdwTypeCount[(long)IcmpV6StatType.MembershipReport];
            }
        }
        public override long MembershipReportsReceived{
            get {
                return stats.inStats.rgdwTypeCount[(long)IcmpV6StatType.MembershipReport];
            }
        }
        public override long MembershipReductionsSent{
            get {
                return stats.outStats.rgdwTypeCount[(long)IcmpV6StatType.MembershipReduction];
            }
        }
        public override long MembershipReductionsReceived{
            get {
                return stats.inStats.rgdwTypeCount[(long)IcmpV6StatType.MembershipReduction];
            }
        }
        public override long RouterAdvertisementsSent{
            get {
                return stats.outStats.rgdwTypeCount[(long)IcmpV6StatType.RouterAdvertisement];
            }
        }
        public override long RouterAdvertisementsReceived{
            get {
                return stats.inStats.rgdwTypeCount[(long)IcmpV6StatType.RouterAdvertisement];
            }
        }
        public override long RouterSolicitsSent{
            get {
                return stats.outStats.rgdwTypeCount[(long)IcmpV6StatType.RouterSolicit];
            }
        }
        public override long RouterSolicitsReceived{
            get {
                return stats.inStats.rgdwTypeCount[(long)IcmpV6StatType.RouterSolicit];
            }
        }
        public override long NeighborAdvertisementsSent{
            get {
                return stats.outStats.rgdwTypeCount[(long)IcmpV6StatType.NeighborAdvertisement];
            }
        }
        public override long NeighborAdvertisementsReceived{
            get {
                return stats.inStats.rgdwTypeCount[(long)IcmpV6StatType.NeighborAdvertisement];
            }
        }
        public override long NeighborSolicitsSent{
            get {
                return stats.outStats.rgdwTypeCount[(long)IcmpV6StatType.NeighborSolict];
            }
        }
        public override long NeighborSolicitsReceived{
            get {
                return stats.inStats.rgdwTypeCount[(long)IcmpV6StatType.NeighborSolict];
            }
        }
        public override long RedirectsSent{
            get {
                return stats.outStats.rgdwTypeCount[(long)IcmpV6StatType.Redirect];
            }
        }
        public override long RedirectsReceived{
            get {
                return stats.inStats.rgdwTypeCount[(long)IcmpV6StatType.Redirect];
            }
        }
    }
}