Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
 /// <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));
 }