/// Unpacks and writes out the FullNetwork file, returns the filepath 
        /// </summary>
        /// <param name="Network"></param>
        /// <param name="Path"></param>
        public string WriteOutExcelDocument(FullNetwork Network, string FileName)
        {
            // Build data table from the Network
            DataTable Table = new DataTable();
            Table.Columns.Add("Network ID");
            Table.Columns.Add("First Usable");
            Table.Columns.Add("Last Usable");
            Table.Columns.Add("Broadcast Address");

            foreach (var subnet in Network.Subnets)
            {
                // Add the data to each collumn
                DataRow Row = Table.NewRow();

                Row[0] = subnet.NetworkId;
                Row[1] = subnet.FirstUsable;
                Row[2] = subnet.LastUsable;
                Row[3] = subnet.BroadcastAddress;
                Table.Rows.Add(Row);
            }

            string FilePath = FileName + ".xlsx";

            XLWorkbook wb = new XLWorkbook();
            wb.Worksheets.Add(Table, "Subnet Data");
            wb.SaveAs(FilePath);

            return FilePath;
        }
        public SubnettingOutput(FullNetwork Network)
        {
            InitializeComponent();
            _Network = Network;
            AddressClassTextBox.Text = Network.Class.ToString();
            SubnetMaskTextBox.Text = Network.NetMask.ToString();
            AddressSpaceTextBox.Text = Network.AddressSpace.ToString();
            BitsBorrowedTextBox.Text = Network.BitsBorrowed.ToString();
            NumberOfSubnetsTextBox.Text = Network.NumberOfSubnets.ToString();
            UsableHostsPerSubnetTextBox.Text = Network.UsableHosts.ToString();

            if (Network.Class.ToString() != "C")
            {
                ExportToExcelButton.Visibility = Visibility.Hidden;
            }
        }
        /// <summary>
        /// Writes out subnet data to the working directory
        /// </summary>
        /// <param name="Network"></param>
        public void WriteSubnetData(FullNetwork Network)
        {
            StreamWriter SubnetFile = new StreamWriter("SubnetData.txt");
            SubnetFile.Write("Network ID  First Usable  Last Usable  Broadcast Address \n");
            foreach (var subnet in Network.Subnets)
            {
                StringBuilder Builder = new StringBuilder();

                Builder.Append(subnet.NetworkId + " ");
                Builder.Append(subnet.FirstUsable + " ");
                Builder.Append(subnet.LastUsable + " ");
                Builder.Append(subnet.BroadcastAddress + " \n");
                string line = Builder.ToString();
                SubnetFile.Write(line);
            }

            SubnetFile.Close();
        }
        public NetworkBuilder(NetworkInfo Info)
        {
            //// Get the nessecary data to build the subnetting information

            //int NumberOfHostsNeeded = Info.NumberOfHosts;

            //// The nessecary address class for the number of subnets and the required hosts per subnet
            //AddressClass InetClass = DetermineNessecaryAddressClass(NumberOfHostsNeeded);

            //// Uses 2^x to determine how many bits need to be borrowed
            //int BitsToBorrow = DetermineBitsToBorrow(NumberOfHostsNeeded, InetClass);

            //int BitsForAddressSpace = DetermineBitsForAddressSpace(BitsToBorrow, InetClass);

            //int RequiredSubnets = DetermineNumberOfSubnets(BitsToBorrow, InetClass);

            int BitsToBorrow = DetermineBitsToBorrow(Info.RequiredSubnets);

            AddressClass InetClass = DetermineNessecaryAddressClass(Info.NumberOfHosts);

            int AddressSpaceBits = DetermineBitsForAddressSpace(BitsToBorrow, InetClass);

            int RequiredSubnets = IntPow(2, BitsToBorrow);

            // Gets the subnet mask using data resources basedo n the required bits to borrow
            SubnetMask NetMask = GetSubnetAddress(InetClass, BitsToBorrow, AddressSpaceBits);
            IpAddress SampleAddress = new IpAddress(Info.SampleAddress);

            // The program has different functionallity based on different address class
            // For Class C it will be able to build the entire subnet out
            // For the other classes it will display generic subnetting information but not build a subnet
            switch (InetClass)
            {
                case AddressClass.A:
                    BuiltNetwork = new FullNetwork();
                    // Gather network information for Class A
                    //ClassAandBBuilder ClassABuilder = new ClassAandBBuilder();
                    //ClassABuilder.NetMask = NetMask;
                    //ClassABuilder.HostsPerSubnet = IntPow(2, (AddressSpaceBits - 2) );
                    //ClassABuilder.NumberOfSubents = IntPow(2, BitsToBorrow);
                    //BuiltNetwork.ClassAorBBuilder = ClassABuilder;
                    BuiltNetwork = new FullNetwork();
                    BuiltNetwork.BitsBorrowed = BitsToBorrow;
                    BuiltNetwork.Class = InetClass;
                    BuiltNetwork.NetMask = NetMask;
                    BuiltNetwork.NumberOfSubnets = IntPow(2, BitsToBorrow);
                    BuiltNetwork.AddressSpace = IntPow(2, AddressSpaceBits);
                    BuiltNetwork.UsableHosts = IntPow(2, AddressSpaceBits) - 2;
                    break;
                case AddressClass.B:
                    //BuiltNetwork = new FullNetwork();
                    //ClassAandBBuilder ClassBBuilder = new ClassAandBBuilder();
                    //ClassBBuilder.NetMask = NetMask;
                    //ClassBBuilder.HostsPerSubnet = IntPow(2, AddressSpaceBits);
                    //ClassBBuilder.NumberOfSubents = IntPow(2, BitsToBorrow);
                    //BuiltNetwork.ClassAorBBuilder = ClassBBuilder;
                    BuiltNetwork = new FullNetwork();
                    BuiltNetwork.BitsBorrowed = BitsToBorrow;
                    BuiltNetwork.Class = InetClass;
                    BuiltNetwork.NetMask = NetMask;
                    BuiltNetwork.NumberOfSubnets = IntPow(2, BitsToBorrow);
                    BuiltNetwork.AddressSpace = IntPow(2, AddressSpaceBits);
                    BuiltNetwork.UsableHosts = IntPow(2, AddressSpaceBits) - 2;
                    break;
                case AddressClass.C:
                    // Gather network information for Class C
                    int SubnetCount = 0;
                    BuiltNetwork = new FullNetwork();
                    // Begin the subnet building process
                    ClassCSubnetBuilder ClassCBuilder = new ClassCSubnetBuilder(NetMask, SampleAddress);
                    // Subtraction by one because it is a based of zero
                    while (SubnetCount < RequiredSubnets)
                    {
                        SubnetCount += 1;
                        Subnetwork Subnet = ClassCBuilder.NextSubnet();
                        BuiltNetwork.Subnets.Enqueue(Subnet);
                    }

                    BuiltNetwork.BitsBorrowed = BitsToBorrow;
                    BuiltNetwork.Class = InetClass;
                    BuiltNetwork.NetMask = NetMask;
                    BuiltNetwork.NumberOfSubnets = IntPow(2, BitsToBorrow);
                    BuiltNetwork.AddressSpace = (IntPow(2, AddressSpaceBits) * BuiltNetwork.NumberOfSubnets);
                    BuiltNetwork.UsableHosts = IntPow(2, AddressSpaceBits) - 2;

                    break;
                default:
                    break;
            }
        }
Example #5
0
        public NetworkBuilder(NetworkInfo Info)
        {
            //// Get the nessecary data to build the subnetting information

            //int NumberOfHostsNeeded = Info.NumberOfHosts;

            //// The nessecary address class for the number of subnets and the required hosts per subnet
            //AddressClass InetClass = DetermineNessecaryAddressClass(NumberOfHostsNeeded);

            //// Uses 2^x to determine how many bits need to be borrowed
            //int BitsToBorrow = DetermineBitsToBorrow(NumberOfHostsNeeded, InetClass);

            //int BitsForAddressSpace = DetermineBitsForAddressSpace(BitsToBorrow, InetClass);

            //int RequiredSubnets = DetermineNumberOfSubnets(BitsToBorrow, InetClass);

            int BitsToBorrow = DetermineBitsToBorrow(Info.RequiredSubnets);

            AddressClass InetClass = DetermineNessecaryAddressClass(Info.NumberOfHosts);

            int AddressSpaceBits = DetermineBitsForAddressSpace(BitsToBorrow, InetClass);

            int RequiredSubnets = IntPow(2, BitsToBorrow);

            // Gets the subnet mask using data resources basedo n the required bits to borrow
            SubnetMask NetMask       = GetSubnetAddress(InetClass, BitsToBorrow, AddressSpaceBits);
            IpAddress  SampleAddress = new IpAddress(Info.SampleAddress);


            // The program has different functionallity based on different address class
            // For Class C it will be able to build the entire subnet out
            // For the other classes it will display generic subnetting information but not build a subnet
            switch (InetClass)
            {
            case AddressClass.A:
                BuiltNetwork = new FullNetwork();
                // Gather network information for Class A
                //ClassAandBBuilder ClassABuilder = new ClassAandBBuilder();
                //ClassABuilder.NetMask = NetMask;
                //ClassABuilder.HostsPerSubnet = IntPow(2, (AddressSpaceBits - 2) );
                //ClassABuilder.NumberOfSubents = IntPow(2, BitsToBorrow);
                //BuiltNetwork.ClassAorBBuilder = ClassABuilder;
                BuiltNetwork = new FullNetwork();
                BuiltNetwork.BitsBorrowed    = BitsToBorrow;
                BuiltNetwork.Class           = InetClass;
                BuiltNetwork.NetMask         = NetMask;
                BuiltNetwork.NumberOfSubnets = IntPow(2, BitsToBorrow);
                BuiltNetwork.AddressSpace    = IntPow(2, AddressSpaceBits);
                BuiltNetwork.UsableHosts     = IntPow(2, AddressSpaceBits) - 2;
                break;

            case AddressClass.B:
                //BuiltNetwork = new FullNetwork();
                //ClassAandBBuilder ClassBBuilder = new ClassAandBBuilder();
                //ClassBBuilder.NetMask = NetMask;
                //ClassBBuilder.HostsPerSubnet = IntPow(2, AddressSpaceBits);
                //ClassBBuilder.NumberOfSubents = IntPow(2, BitsToBorrow);
                //BuiltNetwork.ClassAorBBuilder = ClassBBuilder;
                BuiltNetwork = new FullNetwork();
                BuiltNetwork.BitsBorrowed    = BitsToBorrow;
                BuiltNetwork.Class           = InetClass;
                BuiltNetwork.NetMask         = NetMask;
                BuiltNetwork.NumberOfSubnets = IntPow(2, BitsToBorrow);
                BuiltNetwork.AddressSpace    = IntPow(2, AddressSpaceBits);
                BuiltNetwork.UsableHosts     = IntPow(2, AddressSpaceBits) - 2;
                break;

            case AddressClass.C:
                // Gather network information for Class C
                int SubnetCount = 0;
                BuiltNetwork = new FullNetwork();
                // Begin the subnet building process
                ClassCSubnetBuilder ClassCBuilder = new ClassCSubnetBuilder(NetMask, SampleAddress);
                // Subtraction by one because it is a based of zero
                while (SubnetCount < RequiredSubnets)
                {
                    SubnetCount += 1;
                    Subnetwork Subnet = ClassCBuilder.NextSubnet();
                    BuiltNetwork.Subnets.Enqueue(Subnet);
                }

                BuiltNetwork.BitsBorrowed    = BitsToBorrow;
                BuiltNetwork.Class           = InetClass;
                BuiltNetwork.NetMask         = NetMask;
                BuiltNetwork.NumberOfSubnets = IntPow(2, BitsToBorrow);
                BuiltNetwork.AddressSpace    = (IntPow(2, AddressSpaceBits) * BuiltNetwork.NumberOfSubnets);
                BuiltNetwork.UsableHosts     = IntPow(2, AddressSpaceBits) - 2;

                break;

            default:
                break;
            }
        }
        static void Main(string[] args)
        {
            FullNetwork Network = new FullNetwork();

            NetworkInfo Info;
            NetworkBuilder Builder;

            Info = new NetworkInfo();
            Info.NumberOfHosts = 2046;
            Info.RequiredSubnets = 32;
            Info.SampleAddress = "172.16.2.5";
            Builder = new NetworkBuilder(Info);

            SubnetDataWriter Writer = new SubnetDataWriter();
            Writer.WriteOutExcelDocument(Builder.BuiltNetwork, "Test");
            //// Deprecated
            //Info.Class = AddressClass.B; // Deprecated
            //Info.NumberOfHosts = 14;
            //Info.RequiredSubnets = 2;
            //Info.SampleAddress = "192.168.5.23";
            //Builder = new NetworkBuilder(Info);

            //SubnetDataWriter Datawriter = new SubnetDataWriter();
            //Datawriter.WriteSubnetData(Builder.BuiltNetwork);
            //Datawriter.WriteOutExcelDocument(Builder.BuiltNetwork, "14-2");

            //Info = new NetworkInfo();
            //// Deprecated
            //Info.Class = AddressClass.B; // Deprecated
            //Info.NumberOfHosts = 14;
            //Info.RequiredSubnets = 16;
            //Info.SampleAddress = "192.168.5.23";
            //Builder = new NetworkBuilder(Info);

            //Datawriter.WriteOutExcelDocument(Builder.BuiltNetwork, "14-16");

            //Info = new NetworkInfo();
            //Info.NumberOfHosts = 126;
            //Info.RequiredSubnets = 2;
            //Info.SampleAddress = "192.168.5.23";
            //Builder = new NetworkBuilder(Info);

            //Datawriter.WriteOutExcelDocument(Builder.BuiltNetwork, "126-2");

            //Info = new NetworkInfo();
            //Info.NumberOfHosts = 62;
            //Info.RequiredSubnets = 4;
            //Info.SampleAddress = "192.168.5.23";
            //Builder = new NetworkBuilder(Info);

            //Datawriter.WriteOutExcelDocument(Builder.BuiltNetwork, "62-2");

            //Info = new NetworkInfo();
            //Info.NumberOfHosts = 30;
            //Info.RequiredSubnets = 8;
            //Info.SampleAddress = "192.168.5.23";
            //Builder = new NetworkBuilder(Info);

            //Datawriter.WriteOutExcelDocument(Builder.BuiltNetwork, "30-8");

            //Info = new NetworkInfo();
            //Info.NumberOfHosts = 6;
            //Info.RequiredSubnets = 32;
            //Info.SampleAddress = "192.168.5.23";
            //Builder = new NetworkBuilder(Info);

            //Datawriter.WriteOutExcelDocument(Builder.BuiltNetwork, "6-32");

            //Info = new NetworkInfo();
            //Info.NumberOfHosts = 2;
            //Info.RequiredSubnets = 64;
            //Info.SampleAddress = "192.168.5.23";
            //Builder = new NetworkBuilder(Info);

            //Datawriter.WriteOutExcelDocument(Builder.BuiltNetwork, "2-64");

            //Info = new NetworkInfo();
            //Info.NumberOfHosts = 15;
            //Info.RequiredSubnets = 12;
            //Info.SampleAddress = "192.168.3.2";
            //Builder = new NetworkBuilder(Info);

            //Datawriter.WriteOutExcelDocument(Builder.BuiltNetwork, "Test");
        }