pub struct NetworkManager {
socket_factories: RwLock<BTreeMap<SocketDomain, SocketFactory>>,
protocol_stacks: ProtocolStackManager,
protocol_layers: RwLock<BTreeMap<String, Arc<dyn NetworkLayer>>>,
named_sockets: RwLock<BTreeMap<String, Weak<dyn SocketObject>>>,
connections: RwLock<BTreeMap<SocketId, Arc<dyn SocketObject>>>,
socket_to_id: RwLock<BTreeMap<usize, SocketId>>,
next_socket_id: AtomicUsize,
interfaces: RwLock<BTreeMap<String, Arc<dyn NetworkInterface>>>,
default_interface: RwLock<Option<String>>,
arp_cache: RwLock<BTreeMap<u32, ArpCacheEntry>>,
network_config: RwLock<NetworkConfig>,
}Expand description
Network Manager - Global socket and connection manager
Fields§
§socket_factories: RwLock<BTreeMap<SocketDomain, SocketFactory>>Socket factories per domain (registered by ABI modules)
protocol_stacks: ProtocolStackManagerProtocol stacks for network protocols (TCP/IP, UDP, etc.)
protocol_layers: RwLock<BTreeMap<String, Arc<dyn NetworkLayer>>>Protocol layers registry (shared instances like VFS filesystems)
named_sockets: RwLock<BTreeMap<String, Weak<dyn SocketObject>>>Named sockets namespace (path/name -> socket)
connections: RwLock<BTreeMap<SocketId, Arc<dyn SocketObject>>>Active socket connections by ID
socket_to_id: RwLock<BTreeMap<usize, SocketId>>Reverse mapping: socket pointer address -> socket ID for O(1) lookups
next_socket_id: AtomicUsizeNext socket ID counter
interfaces: RwLock<BTreeMap<String, Arc<dyn NetworkInterface>>>Registered network interfaces
default_interface: RwLock<Option<String>>Default interface name
arp_cache: RwLock<BTreeMap<u32, ArpCacheEntry>>ARP cache
network_config: RwLock<NetworkConfig>Network configuration
Implementations§
Source§impl NetworkManager
impl NetworkManager
Sourcepub fn get_manager() -> &'static NetworkManager
pub fn get_manager() -> &'static NetworkManager
Get the global NetworkManager instance
Sourcepub fn init() -> &'static NetworkManager
pub fn init() -> &'static NetworkManager
Initialize the global NetworkManager
Initializes all protocol layers in dependency order:
- Ethernet (no dependencies)
- IPv4, ARP (depend on Ethernet)
- ICMP, UDP, TCP (depend on IPv4)