Module procfs::net [−][src]
Information about the networking layer.
This module corresponds to the /proc/net
directory and contains various information about the
networking layer.
Example
Here’s an example that will print out all of the open and listening TCP sockets, and their corresponding processes, if know. This mimics the “netstat” utility, but for TCP only. You can run this example yourself with:
cargo run –example=netstat
let all_procs = procfs::process::all_processes().unwrap(); // build up a map between socket inodes and processes: let mut map: HashMap<u32, &Process> = HashMap::new(); for process in &all_procs { if let Ok(fds) = process.fd() { for fd in fds { if let FDTarget::Socket(inode) = fd.target { map.insert(inode, process); } } } } // get the tcp table let tcp = procfs::net::tcp().unwrap(); let tcp6 = procfs::net::tcp6().unwrap(); println!("{:<26} {:<26} {:<15} {:<8} {}", "Local address", "Remote address", "State", "Inode", "PID/Program name"); for entry in tcp.into_iter().chain(tcp6) { // find the process (if any) that has an open FD to this entry's inode let local_address = format!("{}", entry.local_address); let remote_addr = format!("{}", entry.remote_address); let state = format!("{:?}", entry.state); if let Some(process) = map.get(&entry.inode) { println!("{:<26} {:<26} {:<15} {:<12} {}/{}", local_address, remote_addr, state, entry.inode, process.stat.pid, process.stat.comm); } else { // We might not always be able to find the process assocated with this socket println!("{:<26} {:<26} {:<15} {:<12} -", local_address, remote_addr, state, entry.inode); } }
Structs
DeviceStatus | General statistics for a network interface/device |
TcpNetEntry | An entry in the TCP socket table |
UdpNetEntry | An entry in the UDP socket table |
UnixNetEntry | An entry in the Unix socket tabale |
Enums
TcpState | |
UdpState | |
UnixState |
Functions
dev_status | Returns basic network device statistics for all interfaces |
read_tcp_table | Reads TCP socket table from the provided |
read_udp_table | Reads UDP socket table from the provided |
tcp | Reads the tcp socket table |
tcp6 | Reads the tcp6 socket table |
udp | Reads the udp socket table |
udp6 | Reads the udp6 socket table |
unix | Reads the unix socket table |