diff --git a/netstack/src/scheme/mod.rs b/netstack/src/scheme/mod.rs index baaf360ee5..87fc3f1b97 100644 --- a/netstack/src/scheme/mod.rs +++ b/netstack/src/scheme/mod.rs @@ -170,6 +170,7 @@ impl Smolnetd { netcfg_file, Rc::clone(&route_table), Rc::clone(&devices), + Rc::clone(&socket_set), )?, }) } diff --git a/netstack/src/scheme/netcfg/mod.rs b/netstack/src/scheme/netcfg/mod.rs index 269c28c81f..5d6a5f5368 100644 --- a/netstack/src/scheme/netcfg/mod.rs +++ b/netstack/src/scheme/netcfg/mod.rs @@ -26,7 +26,7 @@ use crate::router::route_table::{RouteTable, Rule}; use self::nodes::*; use self::notifier::*; -use super::{post_fevent, Interface}; +use super::{post_fevent, Interface, SocketSet}; const WRITE_BUFFER_MAX_SIZE: usize = 0xffff; @@ -71,8 +71,18 @@ fn mk_root_node( dns_config: DNSConfigRef, route_table: Rc>, devices: Rc>, + socket_set: Rc>, ) -> CfgNodeRef { cfg_node! { + "sockets" => { + "list" => { + ro [socket_set] || { + let set = socket_set.borrow(); + let mut out = format!("sockets: {}\n", set.iter().count()); + out + } + } + }, "resolv" => { "nameserver" => { rw [dns_config, notifier] (Option, None) @@ -337,6 +347,7 @@ impl NetCfgScheme { scheme_file: Socket, route_table: Rc>, devices: Rc>, + socket_set: Rc>, ) -> Result { let notifier = Notifier::new_ref(); let dns_config = Rc::new(RefCell::new(DNSConfig { @@ -351,6 +362,7 @@ impl NetCfgScheme { dns_config, route_table, devices, + socket_set, ), notifier, };