use nlink::netlink::{NamespaceEventSubscriber, NamespaceNetlinkEvent};
#[tokio::main]
async fn main() -> nlink::netlink::Result<()> {
println!("Monitoring namespace ID events (Ctrl+C to stop)...\n");
println!("Note: Events are triggered when namespace IDs are assigned,");
println!("which happens when the kernel needs to track a namespace.\n");
println!("{}", "-".repeat(50));
let mut subscriber = NamespaceEventSubscriber::new().await?;
while let Some(event) = subscriber.recv().await? {
match event {
NamespaceNetlinkEvent::NewNsId { nsid, pid, fd } => {
println!("[+] New namespace ID: {}", nsid);
if let Some(p) = pid {
println!(" origin: PID {}", p);
}
if let Some(f) = fd {
println!(" origin: fd {}", f);
}
}
NamespaceNetlinkEvent::DelNsId { nsid } => {
println!("[-] Deleted namespace ID: {}", nsid);
}
_ => {}
}
}
Ok(())
}