uefi_raw/protocol/network/
ip4_config2.rsuse crate::protocol::network::ip4::Ip4RouteTable;
use crate::{guid, Char16, Event, Guid, Ipv4Address, MacAddress, Status};
use core::ffi::c_void;
newtype_enum! {
pub enum Ip4Config2DataType: i32 => {
INTERFACE_INFO = 0,
POLICY = 1,
MANUAL_ADDRESS = 2,
GATEWAY = 3,
DNS_SERVER = 4,
MAXIMUM = 5,
}
}
#[derive(Debug)]
#[repr(C)]
pub struct Ip4Config2InterfaceInfo {
pub name: [Char16; 32],
pub if_type: u8,
pub hw_addr_size: u32,
pub hw_addr: MacAddress,
pub station_addr: Ipv4Address,
pub subnet_mask: Ipv4Address,
pub route_table_size: u32,
pub route_table: *mut Ip4RouteTable,
}
newtype_enum! {
pub enum Ip4Config2Policy: i32 => {
STATIC = 0,
DHCP = 1,
MAX = 2,
}
}
#[derive(Debug)]
#[repr(C)]
pub struct Ip4Config2ManualAddress {
pub address: Ipv4Address,
pub subnet_mask: Ipv4Address,
}
#[derive(Debug)]
#[repr(C)]
pub struct Ip4Config2Protocol {
pub set_data: unsafe extern "efiapi" fn(
this: *mut Self,
data_type: Ip4Config2DataType,
data_size: usize,
data: *const c_void,
) -> Status,
pub get_data: unsafe extern "efiapi" fn(
this: *mut Self,
data_type: Ip4Config2DataType,
data_size: *mut usize,
data: *mut c_void,
) -> Status,
pub register_data_notify: unsafe extern "efiapi" fn(
this: *mut Self,
data_type: Ip4Config2DataType,
event: Event,
) -> Status,
pub unregister_data_notify: unsafe extern "efiapi" fn(
this: *mut Self,
data_type: Ip4Config2DataType,
event: Event,
) -> Status,
}
impl Ip4Config2Protocol {
pub const GUID: Guid = guid!("5b446ed1-e30b-4faa-871a-3654eca36080");
}