using System; using System.Runtime.InteropServices; namespace System.Net.NetworkInformation { // Token: 0x020001C1 RID: 449 internal class Win32UnicastIPAddressInformation : UnicastIPAddressInformation { // Token: 0x06000EB8 RID: 3768 RVA: 0x000292C4 File Offset: 0x000274C4 public Win32UnicastIPAddressInformation(int ifIndex, Win32_IP_ADAPTER_UNICAST_ADDRESS info) { this.if_index = ifIndex; this.info = info; } // Token: 0x170004F3 RID: 1267 // (get) Token: 0x06000EB9 RID: 3769 RVA: 0x000292DC File Offset: 0x000274DC public override IPAddress Address { get { return this.info.Address.GetIPAddress(); } } // Token: 0x170004F4 RID: 1268 // (get) Token: 0x06000EBA RID: 3770 RVA: 0x000292F0 File Offset: 0x000274F0 public override bool IsDnsEligible { get { return this.info.LengthFlags.IsDnsEligible; } } // Token: 0x170004F5 RID: 1269 // (get) Token: 0x06000EBB RID: 3771 RVA: 0x00029304 File Offset: 0x00027504 public override bool IsTransient { get { return this.info.LengthFlags.IsTransient; } } // Token: 0x170004F6 RID: 1270 // (get) Token: 0x06000EBC RID: 3772 RVA: 0x00029318 File Offset: 0x00027518 public override long AddressPreferredLifetime { get { return (long)((ulong)this.info.PreferredLifetime); } } // Token: 0x170004F7 RID: 1271 // (get) Token: 0x06000EBD RID: 3773 RVA: 0x00029328 File Offset: 0x00027528 public override long AddressValidLifetime { get { return (long)((ulong)this.info.ValidLifetime); } } // Token: 0x170004F8 RID: 1272 // (get) Token: 0x06000EBE RID: 3774 RVA: 0x00029338 File Offset: 0x00027538 public override long DhcpLeaseLifetime { get { return (long)((ulong)this.info.LeaseLifetime); } } // Token: 0x170004F9 RID: 1273 // (get) Token: 0x06000EBF RID: 3775 RVA: 0x00029348 File Offset: 0x00027548 public override DuplicateAddressDetectionState DuplicateAddressDetectionState { get { return this.info.DadState; } } // Token: 0x170004FA RID: 1274 // (get) Token: 0x06000EC0 RID: 3776 RVA: 0x00029358 File Offset: 0x00027558 public override IPAddress IPv4Mask { get { Win32_IP_ADAPTER_INFO adapterInfoByIndex = Win32NetworkInterface2.GetAdapterInfoByIndex(this.if_index); if (adapterInfoByIndex == null) { throw new Exception("huh? " + this.if_index); } if (this.Address == null) { return null; } string text = this.Address.ToString(); Win32_IP_ADDR_STRING win32_IP_ADDR_STRING = adapterInfoByIndex.IpAddressList; while (!(win32_IP_ADDR_STRING.IpAddress == text)) { if (win32_IP_ADDR_STRING.Next == IntPtr.Zero) { return null; } win32_IP_ADDR_STRING = (Win32_IP_ADDR_STRING)Marshal.PtrToStructure(win32_IP_ADDR_STRING.Next, typeof(Win32_IP_ADDR_STRING)); } return IPAddress.Parse(win32_IP_ADDR_STRING.IpMask); } } // Token: 0x170004FB RID: 1275 // (get) Token: 0x06000EC1 RID: 3777 RVA: 0x00029410 File Offset: 0x00027610 public override PrefixOrigin PrefixOrigin { get { return this.info.PrefixOrigin; } } // Token: 0x170004FC RID: 1276 // (get) Token: 0x06000EC2 RID: 3778 RVA: 0x00029420 File Offset: 0x00027620 public override SuffixOrigin SuffixOrigin { get { return this.info.SuffixOrigin; } } // Token: 0x04000D21 RID: 3361 private int if_index; // Token: 0x04000D22 RID: 3362 private Win32_IP_ADAPTER_UNICAST_ADDRESS info; } }