| // Licensed under the Apache License, Version 2.0 |
| // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
| // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. |
| // All files in the project carrying such notice may not be copied, modified, or distributed |
| // except according to those terms. |
| use shared::basetsd::{UINT16, UINT32, ULONG32, ULONG64}; |
| use shared::guiddef::GUID; |
| use shared::ntdef::{BOOLEAN, UCHAR, ULONG, USHORT, WCHAR}; |
| pub type NET_IF_COMPARTMENT_ID = UINT32; |
| pub type PNET_IF_COMPARTMENT_ID = *mut NET_IF_COMPARTMENT_ID; |
| pub const NET_IF_COMPARTMENT_ID_UNSPECIFIED: NET_IF_COMPARTMENT_ID = 0; |
| pub const NET_IF_COMPARTMENT_ID_PRIMARY: NET_IF_COMPARTMENT_ID = 1; |
| pub type NET_IF_NETWORK_GUID = GUID; |
| pub type PNET_IF_NETWORK_GUID = *mut NET_IF_NETWORK_GUID; |
| ENUM!{enum NET_IF_OPER_STATUS { |
| NET_IF_OPER_STATUS_UP = 1, |
| NET_IF_OPER_STATUS_DOWN = 2, |
| NET_IF_OPER_STATUS_TESTING = 3, |
| NET_IF_OPER_STATUS_UNKNOWN = 4, |
| NET_IF_OPER_STATUS_DORMANT = 5, |
| NET_IF_OPER_STATUS_NOT_PRESENT = 6, |
| NET_IF_OPER_STATUS_LOWER_LAYER_DOWN = 7, |
| }} |
| pub type PNET_IF_OPER_STATUS = *mut NET_IF_OPER_STATUS; |
| pub type NET_IF_OBJECT_ID = ULONG32; |
| pub type PNET_IF_OBJECT_ID = *mut NET_IF_OBJECT_ID; |
| ENUM!{enum NET_IF_ADMIN_STATUS { |
| NET_IF_ADMIN_STATUS_UP = 1, |
| NET_IF_ADMIN_STATUS_DOWN = 2, |
| NET_IF_ADMIN_STATUS_TESTING = 3, |
| }} |
| pub type PNET_IF_ADMIN_STATUS = *mut NET_IF_ADMIN_STATUS; |
| pub type NET_IF_COMPARTMENT_SCOPE = UINT32; |
| pub type PNET_IF_COMPARTMENT_SCOPE = *mut NET_IF_COMPARTMENT_SCOPE; |
| pub const NET_IF_COMPARTMENT_SCOPE_UNSPECIFIED: NET_IF_COMPARTMENT_SCOPE = 0; |
| pub const NET_IF_COMPARTMENT_SCOPE_ALL: NET_IF_COMPARTMENT_SCOPE = -1i32 as u32; |
| ENUM!{enum NET_IF_RCV_ADDRESS_TYPE { |
| NET_IF_RCV_ADDRESS_TYPE_OTHER = 1, |
| NET_IF_RCV_ADDRESS_TYPE_VOLATILE = 2, |
| NET_IF_RCV_ADDRESS_TYPE_NON_VOLATILE = 3, |
| }} |
| pub type PNET_IF_RCV_ADDRESS_TYPE = *mut NET_IF_RCV_ADDRESS_TYPE; |
| STRUCT!{struct NET_IF_RCV_ADDRESS_LH { |
| ifRcvAddressType: NET_IF_RCV_ADDRESS_TYPE, |
| ifRcvAddressLength: USHORT, |
| ifRcvAddressOffset: USHORT, |
| }} |
| pub type PNET_IF_RCV_ADDRESS_LH = *mut NET_IF_RCV_ADDRESS_LH; |
| STRUCT!{struct NET_IF_ALIAS_LH { |
| ifAliasLength: USHORT, |
| ifAliasOffset: USHORT, |
| }} |
| pub type PNET_IF_ALIAS_LH = *mut NET_IF_ALIAS_LH; |
| // FIXME: Switch to union version in 0.4 |
| // STRUCT!{struct NET_LUID_LH_Info { |
| // bitfield: ULONG64, |
| // }} |
| // BITFIELD!{NET_LUID_LH_Info bitfield: ULONG64 [ |
| // Reserved set_Reserved[0..24], |
| // NetLuidIndex set_NetLuidIndex[24..48], |
| // IfType set_IfType[48..64], |
| // ]} |
| // UNION!{struct NET_LUID_LH { |
| // [u64; 1], |
| // Value Value_mut: ULONG64, |
| // Info Info_mut: NET_LUID_LH_Info, |
| // }} |
| STRUCT!{struct NET_LUID_LH { |
| Value: ULONG64, |
| }} |
| BITFIELD!{NET_LUID_LH Value: ULONG64 [ |
| Reserved set_Reserved[0..24], |
| NetLuidIndex set_NetLuidIndex[24..48], |
| IfType set_IfType[48..64], |
| ]} |
| pub type PNET_LUID_LH = *mut NET_LUID_LH; |
| pub type NET_IF_RCV_ADDRESS = NET_IF_RCV_ADDRESS_LH; |
| pub type PNET_IF_RCV_ADDRESS = *mut NET_IF_RCV_ADDRESS; |
| pub type NET_IF_ALIAS = NET_IF_ALIAS_LH; |
| pub type PNET_IF_ALIAS = *mut NET_IF_ALIAS; |
| pub type NET_LUID = NET_LUID_LH; |
| pub type PNET_LUID = *mut NET_LUID; |
| pub type IF_LUID = NET_LUID; |
| pub type PIF_LUID = *mut NET_LUID; |
| pub type NET_IFINDEX = ULONG; |
| pub type PNET_IFINDEX = *mut NET_IFINDEX; |
| pub type NET_IFTYPE = UINT16; |
| pub type PNET_IFTYPE = *mut NET_IFTYPE; |
| pub type IF_INDEX = NET_IFINDEX; |
| pub type PIF_INDEX = *mut NET_IFINDEX; |
| ENUM!{enum NET_IF_CONNECTION_TYPE { |
| NET_IF_CONNECTION_DEDICATED = 1, |
| NET_IF_CONNECTION_PASSIVE = 2, |
| NET_IF_CONNECTION_DEMAND = 3, |
| NET_IF_CONNECTION_MAXIMUM = 4, |
| }} |
| pub type PNET_IF_CONNECTION_TYPE = *mut NET_IF_CONNECTION_TYPE; |
| ENUM!{enum TUNNEL_TYPE { |
| TUNNEL_TYPE_NONE = 0, |
| TUNNEL_TYPE_OTHER = 1, |
| TUNNEL_TYPE_DIRECT = 2, |
| TUNNEL_TYPE_6TO4 = 11, |
| TUNNEL_TYPE_ISATAP = 13, |
| TUNNEL_TYPE_TEREDO = 14, |
| TUNNEL_TYPE_IPHTTPS = 15, |
| }} |
| pub type PTUNNEL_TYPE = *mut TUNNEL_TYPE; |
| ENUM!{enum NET_IF_ACCESS_TYPE { |
| NET_IF_ACCESS_LOOPBACK = 1, |
| NET_IF_ACCESS_BROADCAST = 2, |
| NET_IF_ACCESS_POINT_TO_POINT = 3, |
| NET_IF_ACCESS_POINT_TO_MULTI_POINT = 4, |
| NET_IF_ACCESS_MAXIMUM = 5, |
| }} |
| pub type PNET_IF_ACCESS_TYPE = *mut NET_IF_ACCESS_TYPE; |
| ENUM!{enum NET_IF_DIRECTION_TYPE { |
| NET_IF_DIRECTION_SENDRECEIVE, |
| NET_IF_DIRECTION_SENDONLY, |
| NET_IF_DIRECTION_RECEIVEONLY, |
| NET_IF_DIRECTION_MAXIMUM, |
| }} |
| pub type PNET_IF_DIRECTION_TYPE = *mut NET_IF_DIRECTION_TYPE; |
| ENUM!{enum NET_IF_MEDIA_CONNECT_STATE { |
| MediaConnectStateUnknown, |
| MediaConnectStateConnected, |
| MediaConnectStateDisconnected, |
| }} |
| pub type PNET_IF_MEDIA_CONNECT_STATE = *mut NET_IF_MEDIA_CONNECT_STATE; |
| ENUM!{enum NET_IF_MEDIA_DUPLEX_STATE { |
| MediaDuplexStateUnknown = 0, |
| MediaDuplexStateHalf = 1, |
| MediaDuplexStateFull = 2, |
| }} |
| pub type PNET_IF_MEDIA_DUPLEX_STATE = *mut NET_IF_MEDIA_DUPLEX_STATE; |
| STRUCT!{struct NET_PHYSICAL_LOCATION_LH { |
| BusNumber: ULONG, |
| SlotNumber: ULONG, |
| FunctionNumber: ULONG, |
| }} |
| pub type PNET_PHYSICAL_LOCATION_LH = *mut NET_PHYSICAL_LOCATION_LH; |
| pub const IF_MAX_STRING_SIZE: usize = 256; |
| pub const IF_MAX_PHYS_ADDRESS_LENGTH: usize = 32; |
| STRUCT!{struct IF_COUNTED_STRING_LH { |
| Length: USHORT, |
| String: [WCHAR; IF_MAX_STRING_SIZE + 1], |
| }} |
| pub type PIF_COUNTED_STRING_LH = *mut IF_COUNTED_STRING_LH; |
| STRUCT!{struct IF_PHYSICAL_ADDRESS_LH { |
| Length: USHORT, |
| Address: [UCHAR; IF_MAX_PHYS_ADDRESS_LENGTH], |
| }} |
| pub type PIF_PHYSICAL_ADDRESS_LH = *mut IF_PHYSICAL_ADDRESS_LH; |
| pub type NET_PHYSICAL_LOCATION = NET_PHYSICAL_LOCATION_LH; |
| pub type PNET_PHYSICAL_LOCATION = *mut NET_PHYSICAL_LOCATION; |
| pub type IF_COUNTED_STRING = IF_COUNTED_STRING_LH; |
| pub type PIF_COUNTED_STRING = *mut IF_COUNTED_STRING; |
| pub type IF_PHYSICAL_ADDRESS = IF_PHYSICAL_ADDRESS_LH; |
| pub type PIF_PHYSICAL_ADDRESS = *mut IF_PHYSICAL_ADDRESS; |
| ENUM!{enum IF_ADMINISTRATIVE_STATE { |
| IF_ADMINISTRATIVE_DISABLED = 0, |
| IF_ADMINISTRATIVE_ENABLED = 1, |
| IF_ADMINISTRATIVE_DEMANDDIAL = 2, |
| }} |
| pub type PIF_ADMINISTRATIVE_STATE = *mut IF_ADMINISTRATIVE_STATE; |
| ENUM!{enum IF_OPER_STATUS { |
| IfOperStatusUp = 1, |
| IfOperStatusDown, |
| IfOperStatusTesting, |
| IfOperStatusUnknown, |
| IfOperStatusDormant, |
| IfOperStatusNotPresent, |
| IfOperStatusLowerLayerDown, |
| }} |
| STRUCT!{struct NDIS_INTERFACE_INFORMATION { |
| ifOperStatus: NET_IF_OPER_STATUS, |
| ifOperStatusFlags: ULONG, |
| MediaConnectState: NET_IF_MEDIA_CONNECT_STATE, |
| MediaDuplexState: NET_IF_MEDIA_DUPLEX_STATE, |
| ifMtu: ULONG, |
| ifPromiscuousMode: BOOLEAN, |
| ifDeviceWakeUpEnable: BOOLEAN, |
| XmitLinkSpeed: ULONG64, |
| RcvLinkSpeed: ULONG64, |
| ifLastChange: ULONG64, |
| ifCounterDiscontinuityTime: ULONG64, |
| ifInUnknownProtos: ULONG64, |
| ifInDiscards: ULONG64, |
| ifInErrors: ULONG64, |
| ifHCInOctets: ULONG64, |
| ifHCInUcastPkts: ULONG64, |
| ifHCInMulticastPkts: ULONG64, |
| ifHCInBroadcastPkts: ULONG64, |
| ifHCOutOctets: ULONG64, |
| ifHCOutUcastPkts: ULONG64, |
| ifHCOutMulticastPkts: ULONG64, |
| ifHCOutBroadcastPkts: ULONG64, |
| ifOutErrors: ULONG64, |
| ifOutDiscards: ULONG64, |
| ifHCInUcastOctets: ULONG64, |
| ifHCInMulticastOctets: ULONG64, |
| ifHCInBroadcastOctets: ULONG64, |
| ifHCOutUcastOctets: ULONG64, |
| ifHCOutMulticastOctets: ULONG64, |
| ifHCOutBroadcastOctets: ULONG64, |
| CompartmentId: NET_IF_COMPARTMENT_ID, |
| SupportedStatistics: ULONG, |
| }} |
| pub type PNDIS_INTERFACE_INFORMATION = *mut NDIS_INTERFACE_INFORMATION; |