Completed first draft of create_subnet() and added additional tests. NOTE: One test is still failing in order to outline the fact that there is still a slight bug in the code
This commit is contained in:
parent
aad67836df
commit
b8e4ff21b0
@ -5,7 +5,6 @@ use crate::networking::Network;
|
||||
|
||||
mod networking;
|
||||
|
||||
#[allow(unused_variables, unused_mut, unused_assignments)]
|
||||
fn main() {
|
||||
println!("Enter the IP and cidr for your given network");
|
||||
|
||||
|
@ -58,17 +58,12 @@ impl Network {
|
||||
//let subnet_mask = Network::gen_subnet_mask(cidr)?.to_arr()?;
|
||||
|
||||
// If the CIDR < class network enum associated value, then there is an invalid subnet.
|
||||
if cidr <= network_class as u8 {
|
||||
if cidr < network_class as u8 {
|
||||
return Err(NetworkingErr::InvalidCIDRErr)
|
||||
}
|
||||
|
||||
let num_borrowed_bits = cidr - network_class as u8;
|
||||
|
||||
//If no subnetting is required, just return the base address
|
||||
if num_borrowed_bits == 0 {
|
||||
unimplemented!();
|
||||
}
|
||||
|
||||
// Determine the starting network
|
||||
let mut base_network = network_address.clone();
|
||||
let most_sig_octet: u8 = match network_class {
|
||||
@ -239,5 +234,16 @@ mod tests {
|
||||
use super::*;
|
||||
|
||||
assert_eq!(Network::create_subnet(&IpAddr::V4(192, 168, 0, 1), 23).unwrap_err(), NetworkingErr::InvalidCIDRErr);
|
||||
|
||||
let networks = Network::create_subnet(&IpAddr::V4(127, 0, 0, 1), 10).unwrap();
|
||||
assert_eq!(networks.len(), 4);
|
||||
|
||||
let networks = Network::create_subnet(&IpAddr::V4(192, 168, 200, 1), 31).unwrap();
|
||||
assert_eq!(networks.len(), 128);
|
||||
assert_eq!(networks.last().unwrap(), &IpAddr::V4(192, 168, 200, 254));
|
||||
|
||||
let networks = Network::create_subnet(&IpAddr::V4(127, 0, 0, 0), 8).unwrap();
|
||||
assert_eq!(networks.len(), 1);
|
||||
assert_eq!(networks.last().unwrap(), &IpAddr::V4(127, 0, 0, 0));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user