use anyhow::Result;
use nell::{Family, Message, Netlink, Socket};
use nell::api::diag;
use nell::ffi::*;
fn main() -> Result<()> {
let mut sock = Socket::new(Family::INET_DIAG)?;
let mut msg = Message::<inet_diag_req_v2>::new(SOCK_DIAG_BY_FAMILY);
msg.set_flags(NLM_F_REQUEST | NLM_F_DUMP);
msg.sdiag_family = AF_INET;
msg.sdiag_protocol = IPPROTO_TCP;
msg.idiag_states = !0;
msg.idiag_ext = 1 << (INET_DIAG_INFO as u8 - 1);
sock.send(&msg)?;
while let Netlink::Msg(msg) = sock.recv::<inet_diag_msg>()? {
let diag = diag(&msg)?;
println!("{:?}", diag);
}
Ok(())
}