use nlink::netlink::{Connection, KobjectUevent};
#[tokio::main]
async fn main() -> nlink::Result<()> {
let conn = Connection::<KobjectUevent>::new()?;
println!("Monitoring device events (plug/unplug USB, etc.)...");
println!("Press Ctrl+C to exit.\n");
loop {
let event = conn.recv().await?;
println!(
"[{}] {} ({})",
event.action.to_uppercase(),
event.devpath,
event.subsystem
);
if let Some(devname) = event.devname() {
println!(" Device: /dev/{}", devname);
}
if let Some(devtype) = event.devtype() {
println!(" Type: {}", devtype);
}
if let Some(driver) = event.driver() {
println!(" Driver: {}", driver);
}
if let (Some(major), Some(minor)) = (event.major(), event.minor()) {
println!(" Major:Minor: {}:{}", major, minor);
}
if let Some(seqnum) = event.seqnum() {
println!(" Seqnum: {}", seqnum);
}
println!();
}
}