Add ARP / RARP selectors extraction
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
|
||||
use std::str::FromStr;
|
||||
|
||||
pub fn extract_ipv4(ip: IpAddr) -> Ipv4Addr {
|
||||
match ip {
|
||||
@ -18,16 +19,20 @@ pub fn extract_ipv6(ip: IpAddr) -> Ipv6Addr {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn is_ipv4_address_valid<D: AsRef<str>>(ip: D) -> bool {
|
||||
Ipv4Addr::from_str(ip.as_ref()).is_ok()
|
||||
}
|
||||
|
||||
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_mac_address_valid;
|
||||
use crate::utils::net_utils::{is_ipv4_address_valid, is_mac_address_valid};
|
||||
|
||||
#[test]
|
||||
fn mac_addresses() {
|
||||
fn test_is_mac_address_valid() {
|
||||
assert!(is_mac_address_valid("FF:FF:FF:FF:FF:FF"));
|
||||
assert!(is_mac_address_valid("02:42:a4:6e:f2:be"));
|
||||
|
||||
@ -35,4 +40,14 @@ mod tests {
|
||||
assert!(!is_mac_address_valid("FF:FF:FF:FF:FF:FZ"));
|
||||
assert!(!is_mac_address_valid("FF:FF:FF:FF:FF:FF:FF"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_is_ipv4_address_valid() {
|
||||
assert!(is_ipv4_address_valid("10.0.0.1"));
|
||||
assert!(is_ipv4_address_valid("2.56.58.156"));
|
||||
|
||||
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"));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user