/// <summary> /// Attempt to convert bytes (big endian) to IP address /// </summary> /// <param name="input">the big endian IPAddress</param> /// <param name="addressFamily">the desired address family</param> /// <param name="address">the address on sucess</param> /// <returns>true on success</returns> /// <exception cref="ArgumentNullException"><paramref name="input" /> is <see langword="null" />.</exception> public static bool TryParse([CanBeNull] byte[] input, AddressFamily addressFamily, out IPAddress address) { address = null; int expectedByteCount; switch (addressFamily) { case AddressFamily.InterNetwork: expectedByteCount = IPv4ByteCount; break; case AddressFamily.InterNetworkV6: expectedByteCount = IPv6ByteCount; break; default: return(false); } var bytes = input.AffixByteLength(expectedByteCount) .Reverse() .ToArray(); address = new IPAddress(bytes); if (addressFamily.Equals(address.AddressFamily)) { return(true); } address = null; return(false); }
/// <summary> /// Two DnsAddressPrefix are equal iff their address family, prefix length, negation and address family dependent part are equal. /// </summary> public bool Equals(DnsAddressPrefix other) { return(other != null && AddressFamily.Equals(other.AddressFamily) && PrefixLength.Equals(other.PrefixLength) && Negation.Equals(other.Negation) && AddressFamilyDependentPart.Equals(other.AddressFamilyDependentPart)); }