diff --git a/netstack/src/scheme/netcfg/mod.rs b/netstack/src/scheme/netcfg/mod.rs index a464c43ed5..40e0ce6ae0 100644 --- a/netstack/src/scheme/netcfg/mod.rs +++ b/netstack/src/scheme/netcfg/mod.rs @@ -156,7 +156,35 @@ fn mk_root_node( "list" => { ro [socket_set] || { let set = socket_set.borrow(); - format!("sockets: {}\n", set.iter().count()) + let mut tcp = 0u32; + let mut udp = 0u32; + let mut icmp = 0u32; + let mut raw = 0u32; + let mut out = String::from(""); + for (_handle, socket) in set.iter() { + match socket { + smoltcp::socket::Socket::Tcp(_) => tcp += 1, + smoltcp::socket::Socket::Udp(_) => udp += 1, + smoltcp::socket::Socket::Icmp(_) => icmp += 1, + smoltcp::socket::Socket::Raw(_) => raw += 1, + _ => {} + } + } + let total = tcp + udp + icmp + raw; + out.push_str(&format!("sockets: {} (tcp={} udp={} icmp={} raw={})\n", + total, tcp, udp, icmp, raw)); + for (_handle, socket) in set.iter() { + if let smoltcp::socket::Socket::Tcp(tcp_sock) = socket { + let local = tcp_sock.local_endpoint(); + let remote = tcp_sock.remote_endpoint(); + let state = tcp_sock.state(); + out.push_str(&format!("tcp: {:?} {} -> {}\n", + state, + local.map(|e| format!("{}", e)).unwrap_or_else(|| "-".to_string()), + remote.map(|e| format!("{}", e)).unwrap_or_else(|| "-".to_string()))); + } + } + out } } },