Expand description
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 process stat info:
let mut map: HashMap<u64, Stat> = HashMap::new();
for p in all_procs {
let process = p.unwrap();
if let (Ok(stat), Ok(fds)) = (process.stat(), process.fd()) {
for fd in fds {
if let FDTarget::Socket(inode) = fd.unwrap().target {
map.insert(inode, stat.clone());
}
}
}
}
// 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(stat) = map.get(&entry.inode) {
println!("{:<26} {:<26} {:<15} {:<12} {}/{}", local_address, remote_addr, state, entry.inode, stat.pid, stat.comm);
} else {
// We might not always be able to find the process associated with this socket
println!("{:<26} {:<26} {:<15} {:<12} -", local_address, remote_addr, state, entry.inode);
}
}
Structs
- An entry in the ARP table
- Flags for ARP entries
- Hardware type for an ARP table entry.
- ARP table entries.
- General statistics for a network interface/device
- Device status information for all network interfaces.
- A set of ipv4 routes.
- An entry in the ipv4 route table
- This struct holds the data needed for the IP, ICMP, TCP, and UDP management information bases for an SNMP agent.
- This struct holds the data needed for the IP, ICMP, TCP, and UDP management information bases for an SNMP agent.
- TCP socket entries.
- An entry in the TCP socket table
- UDP socket entries.
- An entry in the UDP socket table
- Unix socket entries.
- An entry in the Unix socket table
Enums
- The indication of whether this entity is acting as an IP gateway in respect to the forwarding of datagrams received by, but not addressed to, this entity. IP gateways forward datagrams. IP hosts do not (except those source-routed via the host).
- The algorithm used to determine the timeout value used for retransmitting unacknowledged octets.
Functions
- Reads the ARP table
- Returns basic network device statistics for all interfaces
- Reads the ipv4 route table
- Reads the network management information by Simple Network Management Protocol
- Reads the network management information of IPv6 by Simple Network Management Protocol
- Reads the tcp socket table
- Reads the tcp6 socket table
- Reads the udp socket table
- Reads the udp6 socket table
- Reads the unix socket table