Ejemplo n.º 1
0
        public void DHCPv4RelayAgentSubnetResolver_AreValuesValid_Valid()
        {
            Random random = new Random();

            String validMaskValue = ((Byte)random.Next(10, 20)).ToString();

            IPv4SubnetMask subnetMask = new IPv4SubnetMask(new IPv4SubnetMaskIdentifier(Convert.ToInt32(validMaskValue)));
            IPv4Address    address    = random.GetIPv4NetworkAddress(subnetMask);

            var mock = new Mock <ISerializer>(MockBehavior.Strict);

            mock.Setup(x => x.Deserialze <String>(validMaskValue)).Returns(subnetMask.GetSlashNotation().ToString());
            mock.Setup(x => x.Deserialze <String>(address.ToString())).Returns(address.ToString());

            DHCPv4RelayAgentSubnetResolver resolver = new DHCPv4RelayAgentSubnetResolver();

            var input = new Dictionary <string, string>()
            {
                { nameof(DHCPv4RelayAgentSubnetResolver.Mask), validMaskValue },
                { nameof(DHCPv4RelayAgentSubnetResolver.NetworkAddress), address.ToString() },
            };

            Boolean result = resolver.ArePropertiesAndValuesValid(input, mock.Object);

            Assert.True(result);
        }
Ejemplo n.º 2
0
        public void DHCPv4RelayAgentSubnetResolver_ApplyValues()
        {
            Random random                   = new Random();
            String validMaskValue           = ((Byte)random.Next(1, 32)).ToString();
            String validNetworkAddressValue = random.GetIPv4Address().ToString();

            IPv4SubnetMask subnetMask = new IPv4SubnetMask(new IPv4SubnetMaskIdentifier(Convert.ToInt32(validMaskValue)));
            IPv4Address    address    = IPv4Address.FromString(validNetworkAddressValue);

            var mock = new Mock <ISerializer>(MockBehavior.Strict);

            mock.Setup(x => x.Deserialze <String>(validMaskValue)).Returns(subnetMask.GetSlashNotation().ToString());
            mock.Setup(x => x.Deserialze <String>(validNetworkAddressValue)).Returns(address.ToString());

            DHCPv4RelayAgentSubnetResolver resolver = new DHCPv4RelayAgentSubnetResolver();

            var input = new Dictionary <string, string>()
            {
                { nameof(DHCPv4RelayAgentSubnetResolver.Mask), validMaskValue },
                { nameof(DHCPv4RelayAgentSubnetResolver.NetworkAddress), validNetworkAddressValue },
            };

            resolver.ApplyValues(input, mock.Object);

            Assert.Equal(subnetMask, resolver.Mask);
            Assert.Equal(address, resolver.NetworkAddress);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Interaktionslogik für invalide Eingaben
        /// </summary>
        private void SaveButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (SourceAddressBox.Text == "")
                {
                    throw new Exception("Bitte eine IP-Adresse eintragen!");
                }
                if (AddresCountBox.Text.Length == 0)
                {
                    throw new Exception("Bitte Größe eintragen!");
                }

                var address    = new IPv4Address(SourceAddressBox.Text);
                var newNetwork = new IPv4Network(address, IPv4SubnetMask.ByAddressCount(int.Parse(AddresCountBox.Text)));
                newNetwork.Description = this.DescriptionBox.Text;

                if (network is not null)
                {
                    this.network.AddSubnet(newNetwork);
                }
                else
                {
                    AppStore.Instance.MainNetwork = newNetwork;
                }

                AppStore.Instance.Refresh();
                this.Close();
            }
            catch (Exception exception)
            {
                Exception_TextBlock.Text = exception.Message.ToString();
            }
        }
Ejemplo n.º 4
0
        public DHCPv4ScopeAddressProperties(
            IPv4Address start,
            IPv4Address end,
            IEnumerable <IPv4Address> excluded,
            TimeSpan?renewalTime           = null,
            TimeSpan?preferredLifetime     = null,
            TimeSpan?leaseTime             = null,
            Byte?maskLength                = null,
            Boolean?reuseAddressIfPossible = null,
            AddressAllocationStrategies?addressAllocationStrategy = null,
            Boolean?supportDirectUnicast = null,
            Boolean?acceptDecline        = null,
            Boolean?informsAreAllowd     = null
            ) : base(start, end, excluded, reuseAddressIfPossible, addressAllocationStrategy, supportDirectUnicast, acceptDecline, informsAreAllowd)
        {
            Mask = (maskLength == null || maskLength == 0) ? null : new IPv4SubnetMask(new IPv4SubnetMaskIdentifier(maskLength.Value));

            RenewalTime       = renewalTime;
            PreferredLifetime = preferredLifetime;
            LeaseTime         = leaseTime;

            if (leaseTime.HasValue || renewalTime.HasValue || preferredLifetime.HasValue)
            {
                UseDynamicRewnewTime = false;
            }
        }
Ejemplo n.º 5
0
        public void Constructor_Failed_AddressNotNetwork(String rawNetwork, String rawMask)
        {
            IPv4Address    address = IPv4Address.FromString(rawNetwork);
            IPv4SubnetMask mask    = IPv4SubnetMask.FromString(rawMask);

            Assert.ThrowsAny <Exception>(() =>
                                         new IPv4Route(address, mask));
        }
Ejemplo n.º 6
0
        public static IPv4Address GetIPv4AddressWithinSubnet(this Random random, IPv4SubnetMask mask, IPv4Address networkAddress)
        {
            Int32 maxAddressInSubnet = mask.GetAmountOfPossibleAddresses();

            IPv4Address result = networkAddress + random.Next(1, maxAddressInSubnet);

            return(result);
        }
Ejemplo n.º 7
0
        public void CanCalculateHostAddress()
        {
            var address = new IPv4Address("192.168.10.5");
            var mask    = new IPv4SubnetMask("255.255.252.0");

            var subnet = new IPv4Network(address, mask);

            Assert.Equal("192.168.8.1", subnet.FirstAddress.ToString());
        }
Ejemplo n.º 8
0
        public void IPv4SubnetMask_IsIPAdressANetworkAddress(String subnetMaskInput, String addressInput, Boolean expectedResult)
        {
            IPv4SubnetMask mask    = IPv4SubnetMask.FromString(subnetMaskInput);
            IPv4Address    address = IPv4Address.FromString(addressInput);

            Boolean actual = mask.IsIPAdressANetworkAddress(address);

            Assert.Equal(expectedResult, actual);
        }
Ejemplo n.º 9
0
        private void Button_Click_3(object sender, RoutedEventArgs e)
        {
            var address = IPv4Address.Random();
            var mask    = IPv4SubnetMask.Random();

            var view = new NetworkView(new IPv4Network(address, mask));

            view.Show();
        }
Ejemplo n.º 10
0
        public void DHCPv4RelayAgentSubnetResolver_AreValuesValid_MissingKeys()
        {
            Random random                   = new Random();
            String validMaskValue           = random.GetAlphanumericString(30);
            String validNetworkAddressValue = random.GetAlphanumericString(30);

            IPv4SubnetMask subnetMask = random.GetSubnetmask();
            IPv4Address    address    = (random.GetIPv4NetworkAddress(subnetMask)) - 1;

            var mock = new Mock <ISerializer>(MockBehavior.Strict);

            mock.Setup(x => x.Deserialze <IPv4SubnetMask>(validMaskValue)).Returns(subnetMask);
            mock.Setup(x => x.Deserialze <IPv4Address>(validNetworkAddressValue)).Returns(address);

            DHCPv4RelayAgentSubnetResolver resolver = new DHCPv4RelayAgentSubnetResolver();

            List <Dictionary <String, String> > invalidInputs = new List <Dictionary <string, string> >
            {
                null,
                new Dictionary <string, string>(),
                new Dictionary <string, string>()
                {
                    { random.GetAlphanumericString(10), random.GetAlphanumericString(10) }
                },
                new Dictionary <string, string>()
                {
                    { nameof(DHCPv4RelayAgentSubnetResolver.Mask), random.GetAlphanumericString(10) },
                },
                new Dictionary <string, string>()
                {
                    { nameof(DHCPv4RelayAgentSubnetResolver.Mask), random.GetAlphanumericString(10) },
                    { nameof(DHCPv4RelayAgentSubnetResolver.NetworkAddress), random.GetAlphanumericString(10) },
                },
                new Dictionary <string, string>()
                {
                    { nameof(DHCPv4RelayAgentSubnetResolver.Mask), validMaskValue },
                    { nameof(DHCPv4RelayAgentSubnetResolver.NetworkAddress), random.GetAlphanumericString(10) },
                },
                new Dictionary <string, string>()
                {
                    { nameof(DHCPv4RelayAgentSubnetResolver.Mask), random.GetAlphanumericString(10) },
                    { nameof(DHCPv4RelayAgentSubnetResolver.NetworkAddress), validNetworkAddressValue },
                },
                new Dictionary <string, string>()
                {
                    { nameof(DHCPv4RelayAgentSubnetResolver.Mask), validMaskValue },
                    { nameof(DHCPv4RelayAgentSubnetResolver.NetworkAddress), validNetworkAddressValue },
                },
            };

            foreach (var item in invalidInputs)
            {
                Boolean result = resolver.ArePropertiesAndValuesValid(item, mock.Object);
                Assert.False(result);
            }
        }
Ejemplo n.º 11
0
        public void DHCPv4RelayAgentSubnetResolver_PacketMeetsConditions()
        {
            Random random = new Random();

            Int32 maskIdentifier = random.Next(20, 24);

            IPv4SubnetMask mask      = new IPv4SubnetMask(new IPv4SubnetMaskIdentifier(maskIdentifier));
            IPv4Address    addresses = random.GetIPv4NetworkAddress(mask);

            Mock <ISerializer> serializer = new Mock <ISerializer>(MockBehavior.Strict);

            serializer.Setup(x => x.Deserialze <String>(mask.GetSlashNotation().ToString())).Returns(mask.GetSlashNotation().ToString());
            serializer.Setup(x => x.Deserialze <String>(addresses.ToString())).Returns(addresses.ToString());

            DHCPv4RelayAgentSubnetResolver resolver = new DHCPv4RelayAgentSubnetResolver();
            Dictionary <String, String>    values   = new Dictionary <String, String>()
            {
                { nameof(DHCPv4RelayAgentSubnetResolver.NetworkAddress), addresses.ToString() },
                { nameof(DHCPv4RelayAgentSubnetResolver.Mask), mask.GetSlashNotation().ToString() },
            };

            resolver.ApplyValues(values, serializer.Object);

            Int32 trys = random.Next(20, 30);

            for (int i = 0; i < trys; i++)
            {
                Boolean     shouldPass = false;
                IPv4Address gwAddress  = IPv4Address.Empty;

                if (random.NextDouble() > 0.5)
                {
                    gwAddress  = random.GetIPv4AddressWithinSubnet(mask, addresses);
                    shouldPass = true;
                }
                else
                {
                    if (random.NextDouble() > 0.5)
                    {
                        gwAddress = random.GetIPv4AddressOutWithSubnet(mask, addresses);
                    }
                }

                DHCPv4Packet packet = new DHCPv4Packet(
                    new IPv4HeaderInformation(random.GetIPv4Address(), random.GetIPv4Address()),
                    random.NextBytes(6),
                    (UInt32)random.Next(),
                    IPv4Address.Empty,
                    gwAddress,
                    IPv4Address.Empty
                    );

                Boolean actual = resolver.PacketMeetsCondition(packet);
                Assert.Equal(shouldPass, actual);
            }
        }
Ejemplo n.º 12
0
        public static IPv4Address GetIPv4NetworkAddress(this Random random, IPv4SubnetMask mask)
        {
            IPv4Address start = random.GetIPv4Address();

            Byte[] rawResult = ByteHelper.AndArray(start.GetBytes(), mask.GetBytes());

            IPv4Address result = IPv4Address.FromByteArray(rawResult);

            return(result);
        }
Ejemplo n.º 13
0
        public void Constructor(String rawNetwork, String rawMask)
        {
            IPv4Address    address = IPv4Address.FromString(rawNetwork);
            IPv4SubnetMask mask    = IPv4SubnetMask.FromString(rawMask);

            IPv4Route route = new IPv4Route(address, mask);

            Assert.Equal(mask, route.SubnetMask);
            Assert.Equal(address, route.Network);
        }
Ejemplo n.º 14
0
        public void CanRemoveAddresses()
        {
            var address = new IPv4Address("192.168.10.5");
            var mask    = new IPv4SubnetMask("255.255.252.0");
            var subnet  = new IPv4Network(address, mask);

            var address1 = new IPv4Address("192.168.10.7");

            subnet.AddAddress(address1);
            subnet.RemoveAddress(new IPv4Address("192.168.10.7"));

            Assert.DoesNotContain(address1, subnet.GivenAddresses);
        }
Ejemplo n.º 15
0
        private void Button_Click_4(object sender, RoutedEventArgs e)
        {
            var address = new IPv4Address("192.168.10.4");
            var mask    = new IPv4SubnetMask("255.255.255.0");
            var network = new IPv4Network(address, mask);

            network.AddAddress(new IPv4Address("192.168.10.9"));
            network.AddAddress(new IPv4Address("192.168.10.10"));

            AppStore.Instance.MainNetwork = network;

            System.IO.File.WriteAllText(@"C:\Users\Flo\Desktop\Network.json", JsonSerializer.Serialize(AppStore.Instance.MainNetwork));
        }
Ejemplo n.º 16
0
        private void alleNetzwerke_Click(object sender, RoutedEventArgs e)
        {
            var address = new IPv4Address(IPBox.Text);
            var mask    = new IPv4SubnetMask(MaskBox.Text);

            var subnet = new IPv4Network(address, mask);

            IPListe.Items.Clear();
            foreach (var item in subnet.AllPossibleAddresses.Take(100000))
            {
                IPListe.Items.Add(item);
            }
        }
Ejemplo n.º 17
0
        public void IPv4SubnetMask_FromByteArray(Byte[] input, Boolean parsable)
        {
            if (parsable == false)
            {
                Assert.ThrowsAny <Exception>(() => IPv4SubnetMask.FromByteArray(input));
                return;
            }

            IPv4SubnetMask mask = IPv4SubnetMask.FromByteArray(input);

            Byte[] actual = mask.GetBytes();
            Assert.Equal(input, actual);
        }
Ejemplo n.º 18
0
        public void ThrowsExceptionWhenAddingWrongNNetworks()
        {
            var address = new IPv4Address("192.168.10.5");
            var mask    = new IPv4SubnetMask("255.255.252.0");
            var network = new IPv4Network(address, mask);

            Assert.ThrowsAny <Exception>(() => network.AddSubnet(null));
            Assert.ThrowsAny <Exception>(() => network.AddSubnet(new IPv4Network(new IPv4Address("1.1.1.1"), new IPv4SubnetMask("0.0.0.0"))));

            var subnet = new IPv4Network(new IPv4Address("192.168.10.5"), new IPv4SubnetMask("255.255.254.0"));

            network.AddSubnet(subnet);
            Assert.ThrowsAny <Exception>(() => network.AddSubnet(subnet));
        }
Ejemplo n.º 19
0
        public static IPv4Address GetIPv4AddressOutWithSubnet(this Random random, IPv4SubnetMask mask, IPv4Address networkAddress)
        {
            Boolean upperBoundaries = random.NextDouble() > 0.5;

            if (upperBoundaries == true)
            {
                Int32 maxAddressInSubnet = mask.GetAmountOfPossibleAddresses();
                return(networkAddress + maxAddressInSubnet + random.Next(10, 300));
            }
            else
            {
                return(networkAddress - random.Next(10, 300));
            }
        }
Ejemplo n.º 20
0
 public DHCPv4ScopeAddressProperties(
     IPv4Address start,
     IPv4Address end,
     IEnumerable <IPv4Address> excluded,
     DynamicRenewTime rewnewTime,
     Byte?maskLength = null,
     Boolean?reuseAddressIfPossible = null,
     AddressAllocationStrategies?addressAllocationStrategy = null,
     Boolean?supportDirectUnicast = null,
     Boolean?acceptDecline        = null,
     Boolean?informsAreAllowd     = null
     ) : base(start, end, excluded, reuseAddressIfPossible, addressAllocationStrategy, supportDirectUnicast, acceptDecline, informsAreAllowd, rewnewTime)
 {
     Mask = (maskLength == null || maskLength == 0) ? null : new IPv4SubnetMask(new IPv4SubnetMaskIdentifier(maskLength.Value));
 }
Ejemplo n.º 21
0
        public void ThrowsExceptionWhenAddingWrongAddresses()
        {
            var address = new IPv4Address("192.168.10.5");
            var mask    = new IPv4SubnetMask("255.255.252.0");
            var subnet  = new IPv4Network(address, mask);

            Assert.ThrowsAny <Exception>(() => subnet.AddAddress(new IPv4Address("192.168.8.0")));
            Assert.ThrowsAny <Exception>(() => subnet.AddAddress(new IPv4Address("192.0.0.0")));
            Assert.ThrowsAny <Exception>(() => subnet.AddAddress(null));

            var address1 = new IPv4Address("192.168.10.7");

            subnet.AddAddress(address1);
            Assert.ThrowsAny <Exception>(() => subnet.AddAddress(address1));
        }
Ejemplo n.º 22
0
        public void CanAddAddresses()
        {
            var address = new IPv4Address("192.168.10.5");
            var mask    = new IPv4SubnetMask("255.255.252.0");
            var network = new IPv4Network(address, mask);

            var address1 = new IPv4Address("192.168.10.7");
            var address2 = new IPv4Address("192.168.10.8");

            network.AddAddress(address1);
            network.AddAddress(address2);

            Assert.Contains(address1, network.GivenAddresses);
            Assert.Contains(address2, network.GivenAddresses);
        }
Ejemplo n.º 23
0
        public Boolean ArePropertiesAndValuesValid(IDictionary <String, String> valueMapper, ISerializer serializer)
        {
            try
            {
                if (valueMapper.ContainsKeys(new[] { nameof(NetworkAddress), nameof(Mask) }) == false)
                {
                    return(false);
                }

                var address = IPv4Address.FromString(serializer.Deserialze <String>(valueMapper[nameof(NetworkAddress)]));
                var mask    = new IPv4SubnetMask(new IPv4SubnetMaskIdentifier(Convert.ToInt32(serializer.Deserialze <String>(valueMapper[nameof(Mask)]))));

                return(mask.IsIPAdressANetworkAddress(address));
            }
            catch (Exception)
            {
                return(false);
            }
        }
Ejemplo n.º 24
0
        public void DHCPv4RelayAgentSubnetResolver_PacketMeetsConditions2(
            String networkAddressInput,
            String maskInput,
            String relayAgentAddressInput,
            Boolean shouldPass
            )
        {
            Random random = new Random();

            IPv4SubnetMask mask           = IPv4SubnetMask.FromString(maskInput);
            IPv4Address    networkAddress = IPv4Address.FromString(networkAddressInput);

            String inputAddressValue = random.GetAlphanumericString(10);
            String inputMaskValue    = random.GetAlphanumericString(10);

            Mock <ISerializer> serializer = new Mock <ISerializer>(MockBehavior.Strict);

            serializer.Setup(x => x.Deserialze <String>(mask.GetSlashNotation().ToString())).Returns(mask.GetSlashNotation().ToString());
            serializer.Setup(x => x.Deserialze <String>(networkAddress.ToString())).Returns(networkAddress.ToString());

            DHCPv4RelayAgentSubnetResolver resolver = new DHCPv4RelayAgentSubnetResolver();
            Dictionary <String, String>    values   = new Dictionary <String, String>()
            {
                { nameof(DHCPv4RelayAgentSubnetResolver.NetworkAddress), networkAddress.ToString() },
                { nameof(DHCPv4RelayAgentSubnetResolver.Mask), mask.GetSlashNotation().ToString() },
            };

            resolver.ApplyValues(values, serializer.Object);

            IPv4Address  gwAddress = IPv4Address.FromString(relayAgentAddressInput);
            DHCPv4Packet packet    = new DHCPv4Packet(
                new IPv4HeaderInformation(random.GetIPv4Address(), random.GetIPv4Address()),
                random.NextBytes(6),
                (UInt32)random.Next(),
                IPv4Address.Empty,
                gwAddress,
                IPv4Address.Empty
                );

            Boolean actual = resolver.PacketMeetsCondition(packet);

            Assert.Equal(shouldPass, actual);
        }
Ejemplo n.º 25
0
        public void CanCalculateAllPossibleAddresses()
        {
            var address = new IPv4Address("192.168.10.5");
            var mask    = new IPv4SubnetMask("255.255.252.0");

            var network = new IPv4Network(address, mask);

            Assert.Equal(1022, network.AllPossibleAddresses.Count());

            network.AddAddress(new IPv4Address("192.168.10.7"));
            network.AddAddress(new IPv4Address("192.168.10.8"));
            Assert.Equal(1020, network.AllPossibleAddresses.Count());

            var subnet = new IPv4Network(new IPv4Address("192.168.10.5"), new IPv4SubnetMask("255.255.254.0"));

            subnet.AddAddress(new IPv4Address("192.168.11.204"));
            network.AddSubnet(subnet);

            Assert.Equal(511, network.AllPossibleAddresses.Count());
        }
Ejemplo n.º 26
0
        public void IPv4SubnetMask_FromIdentifier()
        {
            Dictionary <Int32, Byte> mapper = new Dictionary <int, byte>
            {
                { 0, 0 },
                { 1, 128 },
                { 2, 192 },
                { 3, 224 },
                { 4, 240 },
                { 5, 248 },
                { 6, 252 },
                { 7, 254 },
                { 8, 255 },
            };

            for (int maskIdentifier = 0; maskIdentifier <= 32; maskIdentifier++)
            {
                IPv4SubnetMask mask       = new IPv4SubnetMask(new IPv4SubnetMaskIdentifier(maskIdentifier));
                Byte[]         result     = mask.GetBytes();
                Int32          index      = maskIdentifier % 8;
                Int32          arrayIndex = maskIdentifier / 8;

                if (maskIdentifier == 32)
                {
                    for (int i = 0; i < 4; i++)
                    {
                        Assert.Equal(255, result[i]);
                    }

                    continue;
                }

                for (int j = 0; j < arrayIndex; j++)
                {
                    Assert.Equal(255, result[j]);
                }

                Assert.Equal(mapper[index], result[arrayIndex]);
            }
        }
Ejemplo n.º 27
0
        public static DHCPv4PacketRouteListOption FromByteArray(Byte[] data, Int32 offset)
        {
            if (data == null || data.Length < offset + 10)
            {
                throw new ArgumentException(nameof(data));
            }

            Byte  length      = data[offset + 1];
            Int32 routeAmount = length / 8;

            Int32 index = offset + 2;

            IPv4Route[] routes = new IPv4Route[routeAmount];

            for (int i = 0; i < routeAmount; i++, index += 8)
            {
                IPv4Address    network = IPv4Address.FromByteArray(data, index);
                IPv4SubnetMask mask    = IPv4SubnetMask.FromByteArray(data, index + 4);
                routes[i] = new IPv4Route(network, mask);
            }

            return(new DHCPv4PacketRouteListOption(data[offset], routes));
        }
Ejemplo n.º 28
0
        internal override void OverrideProperties(DHCPv4ScopeAddressProperties range)
        {
            base.OverrideProperties(range);

            if (range.LeaseTime.HasValue == true)
            {
                this.LeaseTime = range.LeaseTime;
            }

            if (range.PreferredLifetime.HasValue == true)
            {
                this.PreferredLifetime = range.PreferredLifetime.Value;
            }

            if (range.RenewalTime.HasValue == true)
            {
                this.RenewalTime = range.RenewalTime.Value;
            }

            if (range.Mask != null)
            {
                this.Mask = new IPv4SubnetMask(new IPv4SubnetMaskIdentifier(range.Mask.GetSlashNotation()));
            }
        }
Ejemplo n.º 29
0
 public void CanInvert(string subnet, string expected)
 {
     Assert.Equal(expected, IPv4SubnetMask.Invert(new IPv4SubnetMask(subnet)).ToString());
 }
Ejemplo n.º 30
0
 public void ThrowsByBitCountException(int bitCount)
 {
     Assert.ThrowsAny <Exception>(() => IPv4SubnetMask.ByBitCount(bitCount));
 }