Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
SystemUnicastIPAddressInformation.cs
Go to the documentation of this file.
3
5
7{
8 private readonly long _dhcpLeaseLifetime;
9
11
12 private readonly IPAddress _ipv4Mask;
13
14 private readonly PrefixOrigin _prefixOrigin;
15
16 private readonly SuffixOrigin _suffixOrigin;
17
19
20 private readonly uint _validLifetime;
21
22 private readonly uint _preferredLifetime;
23
24 private readonly byte _prefixLength;
25
26 public override IPAddress Address => _innerInfo.Address;
27
28 public override IPAddress IPv4Mask
29 {
30 get
31 {
32 if (Address.AddressFamily != AddressFamily.InterNetwork)
33 {
34 return IPAddress.Any;
35 }
36 return _ipv4Mask;
37 }
38 }
39
40 public override int PrefixLength => _prefixLength;
41
42 public override bool IsTransient => _innerInfo.IsTransient;
43
44 public override bool IsDnsEligible => _innerInfo.IsDnsEligible;
45
47
49
51
52 public override long AddressValidLifetime => _validLifetime;
53
55
56 public override long DhcpLeaseLifetime => _dhcpLeaseLifetime;
57
58 internal SystemUnicastIPAddressInformation(global::Interop.IpHlpApi.IpAdapterUnicastAddress adapterAddress)
59 {
60 IPAddress iPAddress = adapterAddress.address.MarshalIPAddress();
61 _innerInfo = new SystemIPAddressInformation(iPAddress, adapterAddress.flags);
62 _prefixOrigin = adapterAddress.prefixOrigin;
63 _suffixOrigin = adapterAddress.suffixOrigin;
64 _dadState = adapterAddress.dadState;
65 _validLifetime = adapterAddress.validLifetime;
66 _preferredLifetime = adapterAddress.preferredLifetime;
67 _dhcpLeaseLifetime = adapterAddress.leaseLifetime;
68 _prefixLength = adapterAddress.prefixLength;
69 if (iPAddress.AddressFamily == AddressFamily.InterNetwork)
70 {
72 }
73 }
74
76 {
77 UnicastIPAddressInformationCollection unicastIPAddressInformationCollection = new UnicastIPAddressInformationCollection();
78 while (ptr != IntPtr.Zero)
79 {
80 global::Interop.IpHlpApi.IpAdapterUnicastAddress adapterAddress = Marshal.PtrToStructure<global::Interop.IpHlpApi.IpAdapterUnicastAddress>(ptr);
81 unicastIPAddressInformationCollection.InternalAdd(new SystemUnicastIPAddressInformation(adapterAddress));
82 ptr = adapterAddress.next;
83 }
84 return unicastIPAddressInformationCollection;
85 }
86}
static readonly IPAddress Any
Definition IPAddress.cs:19
AddressFamily AddressFamily
Definition IPAddress.cs:88
static UnicastIPAddressInformationCollection MarshalUnicastIpAddressInformationCollection(IntPtr ptr)
SystemUnicastIPAddressInformation(global::Interop.IpHlpApi.IpAdapterUnicastAddress adapterAddress)
static IPAddress PrefixLengthToSubnetMask(byte prefixLength, AddressFamily family)
static ? object PtrToStructure(IntPtr ptr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors|DynamicallyAccessedMemberTypes.NonPublicConstructors)] Type structureType)
Definition Marshal.cs:1164
static readonly IntPtr Zero
Definition IntPtr.cs:18