System.Net.WebProxyScriptHelper.WebProxyScriptHelper.isInNet C# (CSharp) Method

isInNet() public method

public isInNet ( string host, string pattern, string mask ) : bool
host string
pattern string
mask string
return bool
        public bool isInNet(string host, string pattern, string mask) {
            GlobalLog.Print("WebProxyScriptHelper::isInNet() host:" + ValidationHelper.ToString(host) + " pattern:" + ValidationHelper.ToString(pattern) + " mask:" + ValidationHelper.ToString(mask));
            if (host==null) {
                if(Logging.On)Logging.PrintWarning(Logging.Web, SR.GetString(SR.net_log_proxy_called_with_null_parameter, "WebProxyScriptHelper.isInNet()", "host"));
                throw new ArgumentNullException("host");
            }
            if (pattern==null) {
                if(Logging.On)Logging.PrintWarning(Logging.Web, SR.GetString(SR.net_log_proxy_called_with_null_parameter, "WebProxyScriptHelper.isInNet()", "pattern"));
                throw new ArgumentNullException("pattern");
            }
            if (mask==null) {
                if(Logging.On)Logging.PrintWarning(Logging.Web, SR.GetString(SR.net_log_proxy_called_with_null_parameter, "WebProxyScriptHelper.isInNet()", "mask"));
                throw new ArgumentNullException("mask");
            }
            try {
                IPAddress hostAddress = IPAddress.Parse(host);
                IPAddress patternAddress = IPAddress.Parse(pattern);
                IPAddress maskAddress = IPAddress.Parse(mask);

                byte[] maskAddressBytes = maskAddress.GetAddressBytes();
                byte[] hostAddressBytes = hostAddress.GetAddressBytes();
                byte[] patternAddressBytes = patternAddress.GetAddressBytes();
                if (maskAddressBytes.Length!=hostAddressBytes.Length || maskAddressBytes.Length!=patternAddressBytes.Length) {
                    return false;
                }
                for (int i=0; i<maskAddressBytes.Length; i++) {
                    if ( (patternAddressBytes[i] & maskAddressBytes[i]) != (hostAddressBytes[i] & maskAddressBytes[i]) ) {
                        return false;
                    }
                }
            }
            catch {
                return false;
            }
            return true;
        }