internal virtual bool Update(MulticastIPAddressInformation item) { _hasChanged = false; IsDnsEligible = item.IsDnsEligible; IsTransient = item.IsTransient; PrefixOrigin = item.PrefixOrigin; SuffixOrigin = item.SuffixOrigin; var old = _hasChanged; PreferredLifetime = DateTime.Now.AddSeconds(item.AddressPreferredLifetime); ValidLifetime = DateTime.Now.AddSeconds(item.AddressValidLifetime); DhcpLeaseLifetime = DateTime.Now.AddSeconds(item.DhcpLeaseLifetime); _hasChanged = old; return _hasChanged; }
internal SystemUnicastIPAddressInformation(IpAdapterUnicastAddress adapterAddress) { IPAddress ipAddress = adapterAddress.address.MarshalIPAddress(); this.innerInfo = new SystemIPAddressInformation(ipAddress, adapterAddress.flags); this.prefixOrigin = adapterAddress.prefixOrigin; this.suffixOrigin = adapterAddress.suffixOrigin; this.dadState = adapterAddress.dadState; this.validLifetime = adapterAddress.validLifetime; this.preferredLifetime = adapterAddress.preferredLifetime; this.dhcpLeaseLifetime = adapterAddress.leaseLifetime; this.prefixLength = adapterAddress.prefixLength; // IPv6 returns 0.0.0.0 for consistancy with XP if (ipAddress.AddressFamily == AddressFamily.InterNetwork) { ipv4Mask = PrefixLengthToSubnetMask(prefixLength, ipAddress.AddressFamily); } }
internal SystemUnicastIPAddressInformation(Interop.IpHlpApi.IpAdapterUnicastAddress adapterAddress) { IPAddress ipAddress = adapterAddress.address.MarshalIPAddress(); _innerInfo = new SystemIPAddressInformation(ipAddress, adapterAddress.flags); _prefixOrigin = adapterAddress.prefixOrigin; _suffixOrigin = adapterAddress.suffixOrigin; _dadState = adapterAddress.dadState; _validLifetime = adapterAddress.validLifetime; _preferredLifetime = adapterAddress.preferredLifetime; _dhcpLeaseLifetime = adapterAddress.leaseLifetime; _prefixLength = adapterAddress.prefixLength; // IPv6 returns 0.0.0.0 for consistency with down-level platforms. if (ipAddress.AddressFamily == AddressFamily.InterNetwork) { _ipv4Mask = PrefixLengthToSubnetMask(_prefixLength, ipAddress.AddressFamily); } }
internal SystemUnicastIPAddressInformation(Interop.IpHlpApi.IpAdapterUnicastAddress adapterAddress) { IPAddress ipAddress = adapterAddress.address.MarshalIPAddress(); _innerInfo = new SystemIPAddressInformation(ipAddress, adapterAddress.flags); _prefixOrigin = adapterAddress.prefixOrigin; _suffixOrigin = adapterAddress.suffixOrigin; _dadState = adapterAddress.dadState; _validLifetime = adapterAddress.validLifetime; _preferredLifetime = adapterAddress.preferredLifetime; _dhcpLeaseLifetime = adapterAddress.leaseLifetime; _prefixLength = adapterAddress.prefixLength; // IPv6 returns 0.0.0.0 for consistency with down-level platforms. if (ipAddress.AddressFamily == AddressFamily.InterNetwork) { _ipv4Mask = PrefixLengthToSubnetMask(_prefixLength, ipAddress.AddressFamily); } }
internal SystemUnicastIPAddressInformation(IpAdapterUnicastAddress adapterAddress) { IPAddress ipAddress = adapterAddress.address.MarshalIPAddress(); this.innerInfo = new SystemIPAddressInformation(ipAddress, adapterAddress.flags); this.prefixOrigin = adapterAddress.prefixOrigin; this.suffixOrigin = adapterAddress.suffixOrigin; this.dadState = adapterAddress.dadState; this.validLifetime = adapterAddress.validLifetime; this.preferredLifetime = adapterAddress.preferredLifetime; this.dhcpLeaseLifetime = adapterAddress.leaseLifetime; this.prefixLength = adapterAddress.prefixLength; // IPv6 returns 0.0.0.0 for consistancy with XP if (ipAddress.AddressFamily == AddressFamily.InterNetwork) { ipv4Mask = PrefixLengthToSubnetMask(prefixLength, ipAddress.AddressFamily); } }
/// <summary> /// Verifica si una dirrecion IPv6 es de cierto tipo basado en su sufijo. /// </summary> /// <param name="IPv6Address">La dirrecion IPv6 que se va a validar.</param> /// <param name="Tipo">El tipo de dirrecion que se espera es. </param> /// <returns></returns> public bool getOrigingIPv6Suffix(string IPv6Address, SuffixOrigin Tipo) { foreach (UnicastIPAddressInformation Dirres in niInterfaz.GetIPProperties().UnicastAddresses) { //ya que el LB que obtiene las dirreciones es una copia integra, sabemos que este //metodo es seguro, opcionalmente podriamos buscar un substring en vez de uno 100% //identico. if ( (IPv6Address.Equals( Dirres.Address.ToString() )) && ( Dirres.SuffixOrigin == Tipo) ) return true; } return false; }