Esempio n. 1
0
 internal SystemIPAddressInformation(IpAdapterAddress adapterAddress, IPAddress address)
 {
     this.dnsEligible = true;
     this.address     = address;
     this.transient   = (adapterAddress.flags & AdapterAddressFlags.Transient) > 0;
     this.dnsEligible = (adapterAddress.flags & AdapterAddressFlags.DnsEligible) > 0;
 }
 internal SystemIPAddressInformation(IpAdapterAddress adapterAddress, IPAddress address)
 {
     this.dnsEligible = true;
     this.address = address;
     this.transient = (adapterAddress.flags & AdapterAddressFlags.Transient) > 0;
     this.dnsEligible = (adapterAddress.flags & AdapterAddressFlags.DnsEligible) > 0;
 }
Esempio n. 3
0
        internal static IPAddressCollection MarshalIpAddressCollection(IntPtr ptr)
        {
            IPAddressCollection addressList = new IPAddressCollection();

            while (ptr != IntPtr.Zero)
            {
                IpAdapterAddress addressStructure =
                    (IpAdapterAddress)Marshal.PtrToStructure(ptr, typeof(IpAdapterAddress));
                IPAddress address = addressStructure.address.MarshalIPAddress();
                addressList.InternalAdd(address);
                ptr = addressStructure.next;
            }

            return(addressList);
        }
Esempio n. 4
0
        internal static IPAddressInformationCollection ToAddressInformationCollection(IntPtr ptr, IPVersion versionSupported)
        {
            IPAddressInformationCollection informations = new IPAddressInformationCollection();

            if (ptr != IntPtr.Zero)
            {
                IPEndPoint       point;
                IpAdapterAddress adapterAddress = (IpAdapterAddress)Marshal.PtrToStructure(ptr, typeof(IpAdapterAddress));
                AddressFamily    family         = (adapterAddress.address.addressLength > 0x10) ? AddressFamily.InterNetworkV6 : AddressFamily.InterNetwork;
                SocketAddress    socketAddress  = new SocketAddress(family, adapterAddress.address.addressLength);
                Marshal.Copy(adapterAddress.address.address, socketAddress.m_Buffer, 0, adapterAddress.address.addressLength);
                if (family == AddressFamily.InterNetwork)
                {
                    point = (IPEndPoint)IPEndPoint.Any.Create(socketAddress);
                }
                else
                {
                    point = (IPEndPoint)IPEndPoint.IPv6Any.Create(socketAddress);
                }
                informations.InternalAdd(new SystemIPAddressInformation(adapterAddress, point.Address));
                while (adapterAddress.next != IntPtr.Zero)
                {
                    adapterAddress = (IpAdapterAddress)Marshal.PtrToStructure(adapterAddress.next, typeof(IpAdapterAddress));
                    family         = (adapterAddress.address.addressLength > 0x10) ? AddressFamily.InterNetworkV6 : AddressFamily.InterNetwork;
                    if (((family == AddressFamily.InterNetwork) && ((versionSupported & IPVersion.IPv4) > IPVersion.None)) || ((family == AddressFamily.InterNetworkV6) && ((versionSupported & IPVersion.IPv6) > IPVersion.None)))
                    {
                        socketAddress = new SocketAddress(family, adapterAddress.address.addressLength);
                        Marshal.Copy(adapterAddress.address.address, socketAddress.m_Buffer, 0, adapterAddress.address.addressLength);
                        if (family == AddressFamily.InterNetwork)
                        {
                            point = (IPEndPoint)IPEndPoint.Any.Create(socketAddress);
                        }
                        else
                        {
                            point = (IPEndPoint)IPEndPoint.IPv6Any.Create(socketAddress);
                        }
                        informations.InternalAdd(new SystemIPAddressInformation(adapterAddress, point.Address));
                    }
                }
            }
            return(informations);
        }
Esempio n. 5
0
        // This constructor is for Vista and newer
        internal SystemIPInterfaceProperties(FixedInfo fixedInfo, IpAdapterAddresses ipAdapterAddresses)
        {
            adapterFlags      = ipAdapterAddresses.flags;
            dnsSuffix         = ipAdapterAddresses.dnsSuffix;
            dnsEnabled        = fixedInfo.EnableDns;
            dynamicDnsEnabled = ((ipAdapterAddresses.flags & AdapterFlags.DnsEnabled) > 0);

            multicastAddresses = SystemMulticastIPAddressInformation.ToMulticastIpAddressInformationCollection(
                IpAdapterAddress.MarshalIpAddressInformationCollection(ipAdapterAddresses.firstMulticastAddress));
            dnsAddresses     = IpAdapterAddress.MarshalIpAddressCollection(ipAdapterAddresses.firstDnsServerAddress);
            anycastAddresses = IpAdapterAddress.MarshalIpAddressInformationCollection(
                ipAdapterAddresses.firstAnycastAddress);
            unicastAddresses = SystemUnicastIPAddressInformation.MarshalUnicastIpAddressInformationCollection(
                ipAdapterAddresses.firstUnicastAddress);
            winsServersAddresses = IpAdapterAddress.MarshalIpAddressCollection(
                ipAdapterAddresses.firstWinsServerAddress);
            gatewayAddresses = SystemGatewayIPAddressInformation.ToGatewayIpAddressInformationCollection(
                IpAdapterAddress.MarshalIpAddressCollection(ipAdapterAddresses.firstGatewayAddress));

            dhcpServers = new IPAddressCollection();
            if (ipAdapterAddresses.dhcpv4Server.address != IntPtr.Zero)
            {
                dhcpServers.InternalAdd(ipAdapterAddresses.dhcpv4Server.MarshalIPAddress());
            }
            if (ipAdapterAddresses.dhcpv6Server.address != IntPtr.Zero)
            {
                dhcpServers.InternalAdd(ipAdapterAddresses.dhcpv6Server.MarshalIPAddress());
            }

            if ((adapterFlags & AdapterFlags.IPv4Enabled) != 0)
            {
                ipv4Properties = new SystemIPv4InterfaceProperties(fixedInfo, ipAdapterAddresses);
            }

            if ((adapterFlags & AdapterFlags.IPv6Enabled) != 0)
            {
                ipv6Properties = new SystemIPv6InterfaceProperties(ipAdapterAddresses.ipv6Index,
                                                                   ipAdapterAddresses.mtu, ipAdapterAddresses.zoneIndices);
            }
        }
Esempio n. 6
0
        internal static MulticastIPAddressInformationCollection ToAddressInformationCollection(IntPtr ptr)
        {
            MulticastIPAddressInformationCollection informations = new MulticastIPAddressInformationCollection();

            if (ptr != IntPtr.Zero)
            {
                IPEndPoint       point;
                IpAdapterAddress adapterAddress = (IpAdapterAddress)Marshal.PtrToStructure(ptr, typeof(IpAdapterAddress));
                AddressFamily    family         = (adapterAddress.address.addressLength > 0x10) ? AddressFamily.InterNetworkV6 : AddressFamily.InterNetwork;
                SocketAddress    socketAddress  = new SocketAddress(family, adapterAddress.address.addressLength);
                Marshal.Copy(adapterAddress.address.address, socketAddress.m_Buffer, 0, adapterAddress.address.addressLength);
                if (family == AddressFamily.InterNetwork)
                {
                    point = (IPEndPoint)IPEndPoint.Any.Create(socketAddress);
                }
                else
                {
                    point = (IPEndPoint)IPEndPoint.IPv6Any.Create(socketAddress);
                }
                informations.InternalAdd(new SystemMulticastIPAddressInformation(adapterAddress, point.Address));
                while (adapterAddress.next != IntPtr.Zero)
                {
                    adapterAddress = (IpAdapterAddress)Marshal.PtrToStructure(adapterAddress.next, typeof(IpAdapterAddress));
                    family         = (adapterAddress.address.addressLength > 0x10) ? AddressFamily.InterNetworkV6 : AddressFamily.InterNetwork;
                    socketAddress  = new SocketAddress(family, adapterAddress.address.addressLength);
                    Marshal.Copy(adapterAddress.address.address, socketAddress.m_Buffer, 0, adapterAddress.address.addressLength);
                    if (family == AddressFamily.InterNetwork)
                    {
                        point = (IPEndPoint)IPEndPoint.Any.Create(socketAddress);
                    }
                    else
                    {
                        point = (IPEndPoint)IPEndPoint.IPv6Any.Create(socketAddress);
                    }
                    informations.InternalAdd(new SystemMulticastIPAddressInformation(adapterAddress, point.Address));
                }
            }
            return(informations);
        }
 internal static MulticastIPAddressInformationCollection ToAddressInformationCollection(IntPtr ptr)
 {
     MulticastIPAddressInformationCollection informations = new MulticastIPAddressInformationCollection();
     if (ptr != IntPtr.Zero)
     {
         IPEndPoint point;
         IpAdapterAddress adapterAddress = (IpAdapterAddress) Marshal.PtrToStructure(ptr, typeof(IpAdapterAddress));
         AddressFamily family = (adapterAddress.address.addressLength > 0x10) ? AddressFamily.InterNetworkV6 : AddressFamily.InterNetwork;
         SocketAddress socketAddress = new SocketAddress(family, adapterAddress.address.addressLength);
         Marshal.Copy(adapterAddress.address.address, socketAddress.m_Buffer, 0, adapterAddress.address.addressLength);
         if (family == AddressFamily.InterNetwork)
         {
             point = (IPEndPoint) IPEndPoint.Any.Create(socketAddress);
         }
         else
         {
             point = (IPEndPoint) IPEndPoint.IPv6Any.Create(socketAddress);
         }
         informations.InternalAdd(new SystemMulticastIPAddressInformation(adapterAddress, point.Address));
         while (adapterAddress.next != IntPtr.Zero)
         {
             adapterAddress = (IpAdapterAddress) Marshal.PtrToStructure(adapterAddress.next, typeof(IpAdapterAddress));
             family = (adapterAddress.address.addressLength > 0x10) ? AddressFamily.InterNetworkV6 : AddressFamily.InterNetwork;
             socketAddress = new SocketAddress(family, adapterAddress.address.addressLength);
             Marshal.Copy(adapterAddress.address.address, socketAddress.m_Buffer, 0, adapterAddress.address.addressLength);
             if (family == AddressFamily.InterNetwork)
             {
                 point = (IPEndPoint) IPEndPoint.Any.Create(socketAddress);
             }
             else
             {
                 point = (IPEndPoint) IPEndPoint.IPv6Any.Create(socketAddress);
             }
             informations.InternalAdd(new SystemMulticastIPAddressInformation(adapterAddress, point.Address));
         }
     }
     return informations;
 }
 internal SystemMulticastIPAddressInformation(IpAdapterAddress adapterAddress, IPAddress ipAddress)
 {
     this.innerInfo = new SystemIPAddressInformation(adapterAddress, ipAddress);
     this.adapterAddress = adapterAddress;
 }
Esempio n. 9
0
 internal SystemMulticastIPAddressInformation(IpAdapterAddress adapterAddress, IPAddress ipAddress)
 {
     this.innerInfo      = new SystemIPAddressInformation(adapterAddress, ipAddress);
     this.adapterAddress = adapterAddress;
 }