use core::ffi::*;
use core::ptr::NonNull;
#[cfg(feature = "objc2")]
use objc2::__framework_prelude::*;
use crate::*;
pub const kIONetworkControllerClass: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IONetworkController\0") };
pub const kIOVendor: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"IOVendor\0") };
pub const kIOModel: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"IOModel\0") };
pub const kIORevision: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"IORevision\0") };
pub const kIOFeatures: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"IOFeatures\0") };
pub const kIOMediumDictionary: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOMediumDictionary\0") };
pub const kIODefaultMedium: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IODefaultMedium\0") };
pub const kIOSelectedMedium: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOSelectedMedium\0") };
pub const kIOActiveMedium: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOActiveMedium\0") };
pub const kIOLinkSpeed: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"IOLinkSpeed\0") };
pub const kIOLinkStatus: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"IOLinkStatus\0") };
pub const kIOLinkData: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"IOLinkData\0") };
pub const kIOPacketFilters: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOPacketFilters\0") };
pub const kIOMACAddress: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"IOMACAddress\0") };
pub const kIOMaxPacketSize: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOMaxPacketSize\0") };
pub const kIOMinPacketSize: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOMinPacketSize\0") };
pub const kIONetworkFilterGroup: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IONetworkFilterGroup\0") };
pub const kIOEthernetControllerClass: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOEthernetController\0") };
pub const kIOEthernetAddressSize: c_uint = 6;
pub const kIOEthernetMaxPacketSize: c_uint = 1518;
pub const kIOEthernetMinPacketSize: c_uint = 64;
pub const kIOEthernetCRCSize: c_uint = 4;
pub const kIOEthernetWakeOnLANFilterGroup: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOEthernetWakeOnLANFilterGroup\0") };
pub const kIOEthernetDisabledWakeOnLANFilterGroup: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOEthernetDisabledWakeOnLANFilterGroup\0") };
pub const kIONetworkDataBasicAccessTypes: c_uint =
kIONetworkDataAccessTypeRead | kIONetworkDataAccessTypeSerialize;
pub const kIONetworkDataBytes: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"Data\0") };
pub const kIONetworkDataAccessTypes: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"Access Types\0") };
pub const kIONetworkDataSize: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"Size\0") };
pub const kIONetworkStackUserCommandKey: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IONetworkStackUserCommand\0") };
pub const kIONetworkStackUserCommand: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IONetworkStackUserCommand\0") };
pub const kIOEthernetInterfaceClass: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOEthernetInterface\0") };
pub const kIOActivePacketFilters: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOActivePacketFilters\0") };
pub const kIORequiredPacketFilters: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IORequiredPacketFilters\0") };
pub const kIOMulticastAddressList: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOMulticastAddressList\0") };
pub const kIOMulticastFilterData: &CStr = kIOMulticastAddressList;
pub const kIONetworkInterfaceClass: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IONetworkInterface\0") };
pub const kIONetworkData: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IONetworkData\0") };
pub const kIOInterfaceType: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOInterfaceType\0") };
pub const kIOMaxTransferUnit: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOMaxTransferUnit\0") };
pub const kIOMediaAddressLength: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOMediaAddressLength\0") };
pub const kIOMediaHeaderLength: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOMediaHeaderLength\0") };
pub const kIOInterfaceFlags: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOInterfaceFlags\0") };
pub const kIOInterfaceExtraFlags: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOInterfaceExtraFlags\0") };
pub const kIOInterfaceUnit: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOInterfaceUnit\0") };
pub const kIOInterfaceState: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOInterfaceState\0") };
pub const kIOInterfaceNamePrefix: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOInterfaceNamePrefix\0") };
pub const kIOPrimaryInterface: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOPrimaryInterface\0") };
pub const kIOBuiltin: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"IOBuiltin\0") };
pub const kIOLocation: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"IOLocation\0") };
pub const kIONetworkNoBSDAttachKey: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IONetworkNoBSDAttach\0") };
pub const kIONetworkStatsKey: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IONetworkStatsKey\0") };
pub const kIOOutputQueueStatsKey: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOOutputQueueStatsKey\0") };
pub const kIOEthernetStatsKey: &CStr =
unsafe { CStr::from_bytes_with_nul_unchecked(b"IOEthernetStatsKey\0") };
pub const kIOMediumType: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"Type\0") };
pub const kIOMediumFlags: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"Flags\0") };
pub const kIOMediumSpeed: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"Speed\0") };
pub const kIOMediumIndex: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"Index\0") };
pub const kIONetworkUserClientTypeID: c_uint = 0xff000001;
pub const kIONUCType: c_uint = 0xff000001;
pub const kIOPacketFilterUnicast: c_uint = 0x1;
pub const kIOPacketFilterBroadcast: c_uint = 0x2;
pub const kIOPacketFilterMulticast: c_uint = 0x10;
pub const kIOPacketFilterMulticastAll: c_uint = 0x20;
pub const kIOPacketFilterPromiscuous: c_uint = 0x100;
pub const kIOPacketFilterPromiscuousAll: c_uint = 0x200;
pub const kIONetworkFeatureNoBSDWait: c_uint = 0x001;
pub const kIONetworkFeatureHardwareVlan: c_uint = 0x002;
pub const kIONetworkFeatureSoftwareVlan: c_uint = 0x004;
pub const kIONetworkFeatureMultiPages: c_uint = 0x008;
pub const kIONetworkFeatureTSOIPv4: c_uint = 0x010;
pub const kIONetworkFeatureTSOIPv6: c_uint = 0x020;
pub const kIONetworkFeatureTransmitCompletionStatus: c_uint = 0x040;
pub const kIONetworkFeatureHWTimeStamp: c_uint = 0x080;
pub const kIONetworkFeatureSWTimeStamp: c_uint = 0x100;
pub const kIONetworkFeatureLRO: c_uint = 0x200;
pub const kIOEthernetWakeOnMagicPacket: c_uint = 0x00000001;
pub const kIOEthernetWakeOnPacketAddressMatch: c_uint = 0x00000002;
pub const kIONetworkDataAccessTypeRead: c_uint = 0x01;
pub const kIONetworkDataAccessTypeWrite: c_uint = 0x02;
pub const kIONetworkDataAccessTypeReset: c_uint = 0x04;
pub const kIONetworkDataAccessTypeSerialize: c_uint = 0x08;
pub const kIONetworkDataAccessTypeMask: c_uint = 0xff;
pub const kIONetworkDataBufferTypeInternal: c_uint = 0;
pub const kIONetworkDataBufferTypeExternal: c_uint = 1;
pub const kIONetworkDataBufferTypeNone: c_uint = 2;
pub const kIONetworkStackRegisterInterfaceWithUnit: c_uint = 0;
pub const kIONetworkStackRegisterInterfaceWithLowestUnit: c_uint = 1;
pub const kIONetworkStackRegisterInterfaceAll: c_uint = 2;
pub const kIONetworkInterfaceRegisteredState: c_uint = 0x1;
pub const kIONetworkInterfaceOpenedState: c_uint = 0x2;
pub const kIONetworkInterfaceDisabledState: c_uint = 0x4;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct IONetworkStats {
pub inputPackets: u32,
pub inputErrors: u32,
pub outputPackets: u32,
pub outputErrors: u32,
pub collisions: u32,
}
#[cfg(feature = "objc2")]
unsafe impl Encode for IONetworkStats {
const ENCODING: Encoding = Encoding::Struct(
"?",
&[
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for IONetworkStats {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct IOOutputQueueStats {
pub capacity: u32,
pub size: u32,
pub peakSize: u32,
pub dropCount: u32,
pub outputCount: u32,
pub retryCount: u32,
pub stallCount: u32,
pub reserved: [u32; 4],
}
#[cfg(feature = "objc2")]
unsafe impl Encode for IOOutputQueueStats {
const ENCODING: Encoding = Encoding::Struct(
"?",
&[
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<[u32; 4]>::ENCODING,
],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for IOOutputQueueStats {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct IODot3StatsEntry {
pub alignmentErrors: u32,
pub fcsErrors: u32,
pub singleCollisionFrames: u32,
pub multipleCollisionFrames: u32,
pub sqeTestErrors: u32,
pub deferredTransmissions: u32,
pub lateCollisions: u32,
pub excessiveCollisions: u32,
pub internalMacTransmitErrors: u32,
pub carrierSenseErrors: u32,
pub frameTooLongs: u32,
pub internalMacReceiveErrors: u32,
pub etherChipSet: u32,
pub missedFrames: u32,
}
#[cfg(feature = "objc2")]
unsafe impl Encode for IODot3StatsEntry {
const ENCODING: Encoding = Encoding::Struct(
"?",
&[
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for IODot3StatsEntry {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct IODot3CollEntry {
pub collFrequencies: [u32; 16],
}
#[cfg(feature = "objc2")]
unsafe impl Encode for IODot3CollEntry {
const ENCODING: Encoding = Encoding::Struct("?", &[<[u32; 16]>::ENCODING]);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for IODot3CollEntry {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct IODot3RxExtraEntry {
pub overruns: u32,
pub watchdogTimeouts: u32,
pub frameTooShorts: u32,
pub collisionErrors: u32,
pub phyErrors: u32,
pub timeouts: u32,
pub interrupts: u32,
pub resets: u32,
pub resourceErrors: u32,
pub reserved: [u32; 4],
}
#[cfg(feature = "objc2")]
unsafe impl Encode for IODot3RxExtraEntry {
const ENCODING: Encoding = Encoding::Struct(
"?",
&[
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<[u32; 4]>::ENCODING,
],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for IODot3RxExtraEntry {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct IODot3TxExtraEntry {
pub underruns: u32,
pub jabbers: u32,
pub phyErrors: u32,
pub timeouts: u32,
pub interrupts: u32,
pub resets: u32,
pub resourceErrors: u32,
pub reserved: [u32; 4],
}
#[cfg(feature = "objc2")]
unsafe impl Encode for IODot3TxExtraEntry {
const ENCODING: Encoding = Encoding::Struct(
"?",
&[
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<[u32; 4]>::ENCODING,
],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for IODot3TxExtraEntry {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct IOEthernetStats {
pub dot3StatsEntry: IODot3StatsEntry,
pub dot3CollEntry: IODot3CollEntry,
pub dot3RxExtraEntry: IODot3RxExtraEntry,
pub dot3TxExtraEntry: IODot3TxExtraEntry,
}
#[cfg(feature = "objc2")]
unsafe impl Encode for IOEthernetStats {
const ENCODING: Encoding = Encoding::Struct(
"?",
&[
<IODot3StatsEntry>::ENCODING,
<IODot3CollEntry>::ENCODING,
<IODot3RxExtraEntry>::ENCODING,
<IODot3TxExtraEntry>::ENCODING,
],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for IOEthernetStats {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
pub type IOMediumType = u32;
pub const kIOMediumEthernet: c_uint = 32;
pub const kIOMediumEthernetAuto: c_uint = 32;
pub const kIOMediumEthernetManual: c_uint = 33;
pub const kIOMediumEthernetNone: c_uint = 34;
pub const kIOMediumEthernet10BaseT: c_uint = 35;
pub const kIOMediumEthernet10Base2: c_uint = 36;
pub const kIOMediumEthernet10Base5: c_uint = 37;
pub const kIOMediumEthernet100BaseTX: c_uint = 38;
pub const kIOMediumEthernet100BaseFX: c_uint = 39;
pub const kIOMediumEthernet100BaseT4: c_uint = 40;
pub const kIOMediumEthernet100BaseVG: c_uint = 41;
pub const kIOMediumEthernet100BaseT2: c_uint = 42;
pub const kIOMediumEthernet1000BaseSX: c_uint = 43;
pub const kIOMediumEthernet10BaseSTP: c_uint = 44;
pub const kIOMediumEthernet10BaseFL: c_uint = 45;
pub const kIOMediumEthernet1000BaseLX: c_uint = 46;
pub const kIOMediumEthernet1000BaseCX: c_uint = 47;
pub const kIOMediumEthernet1000BaseTX: c_uint = 48;
pub const kIOMediumEthernet1000BaseT: c_uint = 48;
pub const kIOMediumEthernetHomePNA1: c_uint = 49;
pub const kIOMediumEthernet10GBaseSR: c_uint = 50;
pub const kIOMediumEthernet10GBaseLR: c_uint = 51;
pub const kIOMediumEthernet10GBaseCX4: c_uint = 52;
pub const kIOMediumEthernet10GBaseT: c_uint = 53;
pub const kIOMediumEthernet2500BaseT: c_uint = 54;
pub const kIOMediumEthernet5000BaseT: c_uint = 55;
pub const kIOMediumIEEE80211: c_uint = 128;
pub const kIOMediumIEEE80211Auto: c_uint = 128;
pub const kIOMediumIEEE80211Manual: c_uint = 129;
pub const kIOMediumIEEE80211None: c_uint = 130;
pub const kIOMediumIEEE80211FH1: c_uint = 131;
pub const kIOMediumIEEE80211FH2: c_uint = 132;
pub const kIOMediumIEEE80211DS2: c_uint = 133;
pub const kIOMediumIEEE80211DS5: c_uint = 134;
pub const kIOMediumIEEE80211DS11: c_uint = 135;
pub const kIOMediumIEEE80211DS1: c_uint = 136;
pub const kIOMediumIEEE80211OptionAdhoc: c_uint = 256;
pub const kIOMediumOptionFullDuplex: c_uint = 1048576;
pub const kIOMediumOptionHalfDuplex: c_uint = 2097152;
pub const kIOMediumOptionFlowControl: c_uint = 4194304;
pub const kIOMediumOptionEEE: c_uint = 8388608;
pub const kIOMediumOptionFlag0: c_uint = 16777216;
pub const kIOMediumOptionFlag1: c_uint = 33554432;
pub const kIOMediumOptionFlag2: c_uint = 67108864;
pub const kIOMediumOptionLoopback: c_uint = 134217728;
pub const kIONetworkLinkValid: c_uint = 1;
pub const kIONetworkLinkActive: c_uint = 2;
pub const kIONetworkLinkNoNetworkChange: c_uint = 4;
pub const kIONUCResetNetworkDataIndex: c_uint = 0;
pub const kIONUCWriteNetworkDataIndex: c_uint = 1;
pub const kIONUCReadNetworkDataIndex: c_uint = 2;
pub const kIONUCGetNetworkDataCapacityIndex: c_uint = 3;
pub const kIONUCGetNetworkDataHandleIndex: c_uint = 4;
pub const kIONUCLastIndex: c_uint = 5;
pub type IONDHandle = u32;
extern "C-unwind" {
#[cfg(feature = "libc")]
pub fn IONetworkOpen(obj: io_object_t, con: *mut io_connect_t) -> IOReturn;
}
#[cfg(feature = "libc")]
#[inline]
pub extern "C-unwind" fn IONetworkClose(con: io_connect_t) -> IOReturn {
extern "C-unwind" {
fn IONetworkClose(con: io_connect_t) -> IOReturn;
}
unsafe { IONetworkClose(con) }
}
extern "C-unwind" {
#[cfg(feature = "libc")]
pub fn IONetworkWriteData(
con_obj: io_connect_t,
data_handle: IONDHandle,
src_buf: *mut u8,
in_size: u32,
) -> IOReturn;
}
extern "C-unwind" {
#[cfg(feature = "libc")]
pub fn IONetworkReadData(
con_obj: io_connect_t,
data_handle: IONDHandle,
dest_buf: *mut u8,
in_out_size_p: *mut u32,
) -> IOReturn;
}
#[cfg(feature = "libc")]
#[inline]
pub extern "C-unwind" fn IONetworkResetData(
con_object: io_connect_t,
data_handle: IONDHandle,
) -> IOReturn {
extern "C-unwind" {
fn IONetworkResetData(con_object: io_connect_t, data_handle: IONDHandle) -> IOReturn;
}
unsafe { IONetworkResetData(con_object, data_handle) }
}
extern "C-unwind" {
#[cfg(feature = "libc")]
pub fn IONetworkGetDataCapacity(
con_object: io_connect_t,
data_handle: IONDHandle,
capacity_p: *mut u32,
) -> IOReturn;
}
extern "C-unwind" {
#[cfg(feature = "libc")]
pub fn IONetworkGetDataHandle(
con_object: io_connect_t,
data_name: *const c_char,
data_handle_p: *mut IONDHandle,
) -> IOReturn;
}
extern "C-unwind" {
#[cfg(feature = "libc")]
pub fn IONetworkSetPacketFiltersMask(
connect: io_connect_t,
filter_group: io_name_t,
filters_mask: u32,
options: IOOptionBits,
) -> IOReturn;
}
pub const kIONetworkSupportedPacketFilters: c_uint = 0x0001;
extern "C-unwind" {
#[cfg(feature = "libc")]
pub fn IONetworkGetPacketFiltersMask(
connect: io_connect_t,
filter_group: io_name_t,
filters_mask: *mut u32,
options: IOOptionBits,
) -> IOReturn;
}