Add IPv4 / IPv6 selectors extraction
This commit is contained in:
		@@ -23,13 +23,35 @@ pub fn is_ipv4_address_valid<D: AsRef<str>>(ip: D) -> bool {
 | 
			
		||||
    Ipv4Addr::from_str(ip.as_ref()).is_ok()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn is_ipv6_address_valid<D: AsRef<str>>(ip: D) -> bool {
 | 
			
		||||
    Ipv6Addr::from_str(ip.as_ref()).is_ok()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn is_ipv4_mask_valid(mask: u8) -> bool {
 | 
			
		||||
    mask <= 32
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn is_ipv6_mask_valid(mask: u8) -> bool {
 | 
			
		||||
    mask <= 64
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn is_mask_valid(ipv: usize, mask: u8) -> bool {
 | 
			
		||||
    match ipv {
 | 
			
		||||
        4 => is_ipv4_mask_valid(mask),
 | 
			
		||||
        6 => is_ipv6_mask_valid(mask),
 | 
			
		||||
        _ => panic!("Unsupported IP version"),
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn is_mac_address_valid<D: AsRef<str>>(mac: D) -> bool {
 | 
			
		||||
    lazy_regex::regex!("^([a-fA-F0-9]{2}[:-]){5}[a-fA-F0-9]{2}$").is_match(mac.as_ref())
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(test)]
 | 
			
		||||
mod tests {
 | 
			
		||||
    use crate::utils::net_utils::{is_ipv4_address_valid, is_mac_address_valid};
 | 
			
		||||
    use crate::utils::net_utils::{
 | 
			
		||||
        is_ipv4_address_valid, is_ipv6_address_valid, is_mac_address_valid, is_mask_valid,
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    #[test]
 | 
			
		||||
    fn test_is_mac_address_valid() {
 | 
			
		||||
@@ -49,5 +71,28 @@ mod tests {
 | 
			
		||||
        assert!(!is_ipv4_address_valid("tata"));
 | 
			
		||||
        assert!(!is_ipv4_address_valid("1.25.25.288"));
 | 
			
		||||
        assert!(!is_ipv4_address_valid("5.5.5.5.5"));
 | 
			
		||||
        assert!(!is_ipv4_address_valid("fe80::"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[test]
 | 
			
		||||
    fn test_is_ipv6_address_valid() {
 | 
			
		||||
        assert!(is_ipv6_address_valid("fe80::"));
 | 
			
		||||
        assert!(is_ipv6_address_valid("fe80:dd::"));
 | 
			
		||||
        assert!(is_ipv6_address_valid("00:00:00:00:00::"));
 | 
			
		||||
 | 
			
		||||
        assert!(!is_ipv6_address_valid("tata"));
 | 
			
		||||
        assert!(!is_ipv6_address_valid("2.56.58.156"));
 | 
			
		||||
        assert!(!is_ipv6_address_valid("fe::dd::dd"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[test]
 | 
			
		||||
    fn test_is_mask_valid() {
 | 
			
		||||
        assert!(is_mask_valid(4, 25));
 | 
			
		||||
        assert!(is_mask_valid(4, 32));
 | 
			
		||||
        assert!(is_mask_valid(6, 32));
 | 
			
		||||
        assert!(is_mask_valid(6, 34));
 | 
			
		||||
 | 
			
		||||
        assert!(!is_mask_valid(4, 34));
 | 
			
		||||
        assert!(!is_mask_valid(6, 69));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user