Esempio n. 1
0
        /// <summary>
        /// Checks if the given IP falls into the specified range
        /// </summary>
        /// <param name="target">The IP to check</param>
        /// <returns>True if it is inside the range, otherwise false</returns>
        public override bool Matches(System.Net.IPAddress target)
        {
            if (target == null)
            {
                throw new ArgumentNullException("target");
            }

            byte[] addressBytes = target.GetAddressBytes();

            bool lowerBoundary = true, upperBoundary = true;

            for (int i = 0; i < StartAddress.GetAddressBytes().Length&&
                 (lowerBoundary || upperBoundary); i++)
            {
                if ((lowerBoundary && addressBytes[i] < StartAddress.GetAddressBytes()[i]) ||
                    (upperBoundary && addressBytes[i] > EndAddress.GetAddressBytes()[i]))
                {
                    return(false);
                }

                lowerBoundary &= (addressBytes[i] == StartAddress.GetAddressBytes()[i]);
                upperBoundary &= (addressBytes[i] == EndAddress.GetAddressBytes()[i]);
            }

            return(true);
        }
Esempio n. 2
0
        /// <summary>
        /// Retrieves the value of the expression
        /// </summary>
        /// <param name="evalContext">Evaluation context</param>
        /// <param name="checkOnly"></param>
        /// <returns>Evaluated expression value</returns>
        public override ExpressionValue Evaluate(IExpressionEvaluationContext evalContext, bool checkOnly = false)
        {
            // --- Test for operand errors
            var addrValue = StartAddress.Evaluate(evalContext);

            if (addrValue.Type == ExpressionValueType.Error)
            {
                EvaluationError = StartAddress.EvaluationError;
                return(ExpressionValue.Error);
            }
            var endValue = EndAddress == null ? new ExpressionValue(1) : EndAddress.Evaluate(evalContext);

            if (endValue.Type == ExpressionValueType.Error)
            {
                EvaluationError = EndAddress?.EvaluationError;
                return(ExpressionValue.Error);
            }

            if (checkOnly)
            {
                return(ExpressionValue.NonEvaluated);
            }

            if (addrValue.Type == ExpressionValueType.ByteArray || endValue.Type == ExpressionValueType.ByteArray)
            {
                EvaluationError = "Memory address operator cannot be applied on a byte array";
                return(ExpressionValue.Error);
            }

            return(new ExpressionValue(evalContext.GetMachineContext().GetMemorySection(addrValue.AsWord(),
                                                                                        endValue.AsWord())));
        }
 /// <summary>
 ///     Returns a string that represents the current <see cref="NetworkAddress" />.
 /// </summary>
 /// <returns>
 ///     A string that represents the current <see cref="NetworkAddress" />.
 /// </returns>
 public override string ToString()
 {
     if (StartAddress.Equals(EndAddress))
     {
         return(Address.ToString());
     }
     return($"{Address}/{SubnetMask}");
 }
Esempio n. 4
0
 public override bool Equals(object obj)
 {
     if (obj is AccessIPRange)
     {
         AccessIPRange tmp = obj as AccessIPRange;
         return((StartAddress.Equals(tmp.StartAddress)) && (EndAddress.Equals(tmp.EndAddress)));
     }
     return(false);
 }
Esempio n. 5
0
 internal void Dump()
 {
     Arch.Console.Write(StartAddress.ToUInt32());
     Arch.Console.Write("~");
     Arch.Console.Write(End.ToUInt32());
     if (BackingFile != null)
     {
         Arch.Console.Write(" backed at ");
         Arch.Console.Write((long)FileOffset);
         Arch.Console.Write("+");
         Arch.Console.Write(FileSize);
     }
     Arch.Console.Write(" access=");
     Arch.Console.Write(Access);
     Arch.Console.WriteLine();
 }
Esempio n. 6
0
 /// <summary>
 ///     Compares two IP address ranges.
 /// </summary>
 /// <returns>
 ///     <see langword="true" /> if the two address ranges are equal; otherwise, <see langword="false" />.
 /// </returns>
 /// <param name="comparand">An <see cref="IPRange" /> instance to compare to the current instance. </param>
 private bool Equals(IPRange comparand)
 {
     return(StartAddress.Equals(comparand.StartAddress) && EndAddress.Equals(comparand.EndAddress));
 }
 /// <summary>
 /// On text change inside "StartAddress" textbox
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void StartAddress_TextChanged(object sender, TextChangedEventArgs e)
 {
     StartAddress.ClearValue(Border.BorderBrushProperty);
 }
Esempio n. 8
0
 internal DHCP_IP_RANGE ToNativeIpRange()
 => new DHCP_IP_RANGE(StartAddress.ToNativeAsNetwork(), EndAddress.ToNativeAsNetwork());
Esempio n. 9
0
 internal DHCP_BOOTP_IP_RANGE ToNativeBootpIpRange()
 => new DHCP_BOOTP_IP_RANGE(StartAddress.ToNativeAsNetwork(), EndAddress.ToNativeAsNetwork(), BootpClientsAllocated, MaxBootpAllowed);