Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
SystemIPInterfaceProperties.cs
Go to the documentation of this file.
2
4
6{
7 private readonly bool _dnsEnabled;
8
9 private readonly bool _dynamicDnsEnabled;
10
12
14
16
18
19 private readonly global::Interop.IpHlpApi.AdapterFlags _adapterFlags;
20
21 private readonly string _dnsSuffix;
22
24
26
28
30
32
33 public override bool IsDnsEnabled => _dnsEnabled;
34
35 public override bool IsDynamicDnsEnabled => _dynamicDnsEnabled;
36
37 public override string DnsSuffix => _dnsSuffix;
38
40
42
44
46
48
50
52
53 internal SystemIPInterfaceProperties(in global::Interop.IpHlpApi.FIXED_INFO fixedInfo, in global::Interop.IpHlpApi.IpAdapterAddresses ipAdapterAddresses)
54 {
55 _adapterFlags = ipAdapterAddresses.flags;
56 _dnsSuffix = ipAdapterAddresses.dnsSuffix;
57 _dnsEnabled = fixedInfo.enableDns;
58 _dynamicDnsEnabled = (ipAdapterAddresses.flags & global::Interop.IpHlpApi.AdapterFlags.DnsEnabled) > (global::Interop.IpHlpApi.AdapterFlags)0;
59 _multicastAddresses = SystemMulticastIPAddressInformation.ToMulticastIpAddressInformationCollection(global::Interop.IpHlpApi.IpAdapterAddress.MarshalIpAddressInformationCollection(ipAdapterAddresses.firstMulticastAddress));
60 _dnsAddresses = global::Interop.IpHlpApi.IpAdapterAddress.MarshalIpAddressCollection(ipAdapterAddresses.firstDnsServerAddress);
61 _anycastAddresses = global::Interop.IpHlpApi.IpAdapterAddress.MarshalIpAddressInformationCollection(ipAdapterAddresses.firstAnycastAddress);
63 _winsServersAddresses = global::Interop.IpHlpApi.IpAdapterAddress.MarshalIpAddressCollection(ipAdapterAddresses.firstWinsServerAddress);
64 _gatewayAddresses = SystemGatewayIPAddressInformation.ToGatewayIpAddressInformationCollection(global::Interop.IpHlpApi.IpAdapterAddress.MarshalIpAddressCollection(ipAdapterAddresses.firstGatewayAddress));
66 if (ipAdapterAddresses.dhcpv4Server.address != IntPtr.Zero)
67 {
68 _dhcpServers.InternalAdd(ipAdapterAddresses.dhcpv4Server.MarshalIPAddress());
69 }
70 if (ipAdapterAddresses.dhcpv6Server.address != IntPtr.Zero)
71 {
72 _dhcpServers.InternalAdd(ipAdapterAddresses.dhcpv6Server.MarshalIPAddress());
73 }
74 if ((_adapterFlags & global::Interop.IpHlpApi.AdapterFlags.IPv4Enabled) != 0)
75 {
76 _ipv4Properties = new SystemIPv4InterfaceProperties(fixedInfo, ipAdapterAddresses);
77 }
78 if ((_adapterFlags & global::Interop.IpHlpApi.AdapterFlags.IPv6Enabled) != 0)
79 {
80 _ipv6Properties = new SystemIPv6InterfaceProperties(ipAdapterAddresses.ipv6Index, ipAdapterAddresses.mtu, ipAdapterAddresses.zoneIndices);
81 }
82 }
83
85 {
86 if (_ipv4Properties == null)
87 {
88 throw new NetworkInformationException(SocketError.ProtocolNotSupported);
89 }
90 return _ipv4Properties;
91 }
92
94 {
95 if (_ipv6Properties == null)
96 {
97 throw new NetworkInformationException(SocketError.ProtocolNotSupported);
98 }
99 return _ipv6Properties;
100 }
101}
static GatewayIPAddressInformationCollection ToGatewayIpAddressInformationCollection(IPAddressCollection addresses)
SystemIPInterfaceProperties(in global::Interop.IpHlpApi.FIXED_INFO fixedInfo, in global::Interop.IpHlpApi.IpAdapterAddresses ipAdapterAddresses)
readonly MulticastIPAddressInformationCollection _multicastAddresses
readonly global::Interop.IpHlpApi.AdapterFlags _adapterFlags
readonly GatewayIPAddressInformationCollection _gatewayAddresses
override MulticastIPAddressInformationCollection MulticastAddresses
readonly UnicastIPAddressInformationCollection _unicastAddresses
override UnicastIPAddressInformationCollection UnicastAddresses
override GatewayIPAddressInformationCollection GatewayAddresses
static MulticastIPAddressInformationCollection ToMulticastIpAddressInformationCollection(IPAddressInformationCollection addresses)
static UnicastIPAddressInformationCollection MarshalUnicastIpAddressInformationCollection(IntPtr ptr)
static readonly IntPtr Zero
Definition IntPtr.cs:18