private void OnSubnetQueryChanged(SubnetQuery subnetQuery) { _hasResults = true; RaisePropertyChanged("BtnText"); SubnetworkAddresses.Clear(); SubnetHostAddresses.Clear(); SubnetBroadcastAddresses.Clear(); _eventAggregator.GetEvent <SubnetQueryEvent>().Unsubscribe(OnSubnetQueryChanged); CalculateSubnets(subnetQuery); }
private void CalculateSubnets(SubnetQuery subnetQuery) { // Yeah, this needs some refactoring. // TODO: Refactor this int bits = Convert.ToString(subnetQuery.NumberOfSubnets, 2).Length; int interval = GetInterval(bits); IpAddress startIp = subnetQuery.StartingIpAddress.MainIp; IpAddress snAdd = startIp; IpAddress sbAdd = startIp; PrefixLength = $"{subnetQuery.StartingIpAddress.PrefixLength + bits}"; // TASK: GET THE NEW SUBNET MASK. SubnetMask = GetNewSubnetMask(subnetQuery.StartingIpAddress.SubnetMask, bits); for (int i = 0; i < subnetQuery.NumberOfSubnets; i++) { SubnetworkAddresses.Add(snAdd); snAdd.FourthOctet += 1; SubnetHostAddresses.Add($"{snAdd.DisplayName} - "); snAdd.FourthOctet -= 1; snAdd.FourthOctet += interval; } sbAdd.FourthOctet = interval - 1; for (int i = 0; i < subnetQuery.NumberOfSubnets; i++) { SubnetBroadcastAddresses.Add(sbAdd); sbAdd.FourthOctet -= 1; SubnetHostAddresses[i] += $"{sbAdd.DisplayName}"; sbAdd.FourthOctet += 1; sbAdd.FourthOctet += interval; } }