pub trait NetworkDevice: Send + Sync {
// Required methods
fn name(&self) -> &str;
fn get_config(&self) -> InterfaceConfig;
fn set_config(&mut self, config: InterfaceConfig) -> Result<(), KernelError>;
fn up(&mut self) -> Result<(), KernelError>;
fn down(&mut self) -> Result<(), KernelError>;
fn send_packet(&mut self, packet: NetworkPacket) -> Result<(), KernelError>;
fn receive_packet(&mut self) -> Result<Option<NetworkPacket>, KernelError>;
fn get_stats(&self) -> NetworkStats;
fn reset_stats(&mut self);
fn link_up(&self) -> bool;
fn link_speed(&self) -> u32;
}Expand description
Network device trait
Required Methods§
Sourcefn get_config(&self) -> InterfaceConfig
fn get_config(&self) -> InterfaceConfig
Get interface configuration
Sourcefn set_config(&mut self, config: InterfaceConfig) -> Result<(), KernelError>
fn set_config(&mut self, config: InterfaceConfig) -> Result<(), KernelError>
Set interface configuration
Sourcefn up(&mut self) -> Result<(), KernelError>
fn up(&mut self) -> Result<(), KernelError>
Bring interface up
Sourcefn down(&mut self) -> Result<(), KernelError>
fn down(&mut self) -> Result<(), KernelError>
Bring interface down
Sourcefn send_packet(&mut self, packet: NetworkPacket) -> Result<(), KernelError>
fn send_packet(&mut self, packet: NetworkPacket) -> Result<(), KernelError>
Send a packet
Sourcefn receive_packet(&mut self) -> Result<Option<NetworkPacket>, KernelError>
fn receive_packet(&mut self) -> Result<Option<NetworkPacket>, KernelError>
Receive a packet (non-blocking)
Sourcefn get_stats(&self) -> NetworkStats
fn get_stats(&self) -> NetworkStats
Get interface statistics
Sourcefn reset_stats(&mut self)
fn reset_stats(&mut self)
Reset interface statistics
Sourcefn link_speed(&self) -> u32
fn link_speed(&self) -> u32
Get link speed in Mbps