From ee116523d8c62972be4d84bd69513c6664ce1324 Mon Sep 17 00:00:00 2001 From: Luke Else Date: Thu, 20 Apr 2023 22:30:33 +0100 Subject: [PATCH] Started testing create_subnet function. Still WIP!!! --- src/main.rs | 4 ++++ src/networking/mod.rs | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index a28a8cb..d34b067 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,7 @@ use std::{io}; +use crate::networking::Network; + mod networking; @@ -23,5 +25,7 @@ fn main() { break; } + + let networks = Network::create_subnet(&ip_and_cidr.0, ip_and_cidr.1); println!("IP: {}, CIDR: {}", ip_and_cidr.0.to_string(), ip_and_cidr.1); } diff --git a/src/networking/mod.rs b/src/networking/mod.rs index e2df5e6..b63ce1c 100644 --- a/src/networking/mod.rs +++ b/src/networking/mod.rs @@ -55,6 +55,12 @@ impl Network { //Get number of bits available for host in specific octet let mut most_sig_octet: usize = Default::default(); for (i, oct) in subnet_mask.iter().enumerate(){ + if *oct == 0 { + most_sig_octet = i-1; + network_bits = subnet_mask[most_sig_octet].count_ones() as u8; + break; + } + if *oct < 255 { most_sig_octet = i; network_bits = oct.count_ones() as u8; @@ -82,7 +88,7 @@ impl Network { //Generate base address let mut base_address = network_address; base_address[most_sig_octet] = 255 - num_networks; - for i in most_sig_octet+1..=4 { + for i in most_sig_octet+1..4 { base_address[i] = 0; }