use shared::basetsd::ULONG64;
use shared::minwindef::ULONG;
use shared::ntdef::BOOLEAN;
ENUM!{enum NL_PREFIX_ORIGIN {
IpPrefixOriginOther = 0,
IpPrefixOriginManual = 1,
IpPrefixOriginWellKnown = 2,
IpPrefixOriginDhcp = 3,
IpPrefixOriginRouterAdvertisement = 4,
IpPrefixOriginUnchanged = 1 << 4,
}}
pub const NlpoOther: NL_PREFIX_ORIGIN = IpPrefixOriginOther;
pub const NlpoManual: NL_PREFIX_ORIGIN = IpPrefixOriginManual;
pub const NlpoWellKnown: NL_PREFIX_ORIGIN = IpPrefixOriginWellKnown;
pub const NlpoDhcp: NL_PREFIX_ORIGIN = IpPrefixOriginDhcp;
pub const NlpoRouterAdvertisement: NL_PREFIX_ORIGIN = IpPrefixOriginRouterAdvertisement;
ENUM!{enum NL_SUFFIX_ORIGIN {
IpSuffixOriginOther = 0,
IpSuffixOriginManual = 1,
IpSuffixOriginWellKnown = 2,
IpSuffixOriginDhcp = 3,
IpSuffixOriginLinkLayerAddress = 4,
IpSuffixOriginRandom = 5,
IpSuffixOriginUnchanged = 1 << 4,
}}
pub const NlsoOther: NL_SUFFIX_ORIGIN = IpSuffixOriginOther;
pub const NlsoManual: NL_SUFFIX_ORIGIN = IpSuffixOriginManual;
pub const NlsoWellKnown: NL_SUFFIX_ORIGIN = IpSuffixOriginWellKnown;
pub const NlsoDhcp: NL_SUFFIX_ORIGIN = IpSuffixOriginDhcp;
pub const NlsoLinkLayerAddress: NL_SUFFIX_ORIGIN = IpSuffixOriginLinkLayerAddress;
pub const NlsoRandom: NL_SUFFIX_ORIGIN = IpSuffixOriginRandom;
ENUM!{enum NL_DAD_STATE {
IpDadStateInvalid = 0,
IpDadStateTentative = 1,
IpDadStateDuplicate = 2,
IpDadStateDeprecated = 3,
IpDadStatePreferred = 4,
}}
pub const NldsInvalid: NL_DAD_STATE = IpDadStateInvalid;
pub const NldsTentative: NL_DAD_STATE = IpDadStateTentative;
pub const NldsDuplicate: NL_DAD_STATE = IpDadStateDuplicate;
pub const NldsDeprecated: NL_DAD_STATE = IpDadStateDeprecated;
pub const NldsPreferred: NL_DAD_STATE = IpDadStatePreferred;
pub const NL_MAX_METRIC_COMPONENT: ULONG = (1u32 << 31) - 1;
ENUM!{enum NL_ROUTE_PROTOCOL {
RouteProtocolOther = 1,
RouteProtocolLocal = 2,
RouteProtocolNetMgmt = 3,
RouteProtocolIcmp = 4,
RouteProtocolEgp = 5,
RouteProtocolGgp = 6,
RouteProtocolHello = 7,
RouteProtocolRip = 8,
RouteProtocolIsIs = 9,
RouteProtocolEsIs = 10,
RouteProtocolCisco = 11,
RouteProtocolBbn = 12,
RouteProtocolOspf = 13,
RouteProtocolBgp = 14,
RouteProtocolIdpr = 15,
RouteProtocolEigrp = 16,
RouteProtocolDvmrp = 17,
RouteProtocolRpl = 18,
RouteProtocolDhcp = 19,
MIB_IPPROTO_OTHER = 1,
PROTO_IP_OTHER = 1,
MIB_IPPROTO_LOCAL = 2,
PROTO_IP_LOCAL = 2,
MIB_IPPROTO_NETMGMT = 3,
PROTO_IP_NETMGMT = 3,
MIB_IPPROTO_ICMP = 4,
PROTO_IP_ICMP = 4,
MIB_IPPROTO_EGP = 5,
PROTO_IP_EGP = 5,
MIB_IPPROTO_GGP = 6,
PROTO_IP_GGP = 6,
MIB_IPPROTO_HELLO = 7,
PROTO_IP_HELLO = 7,
MIB_IPPROTO_RIP = 8,
PROTO_IP_RIP = 8,
MIB_IPPROTO_IS_IS = 9,
PROTO_IP_IS_IS = 9,
MIB_IPPROTO_ES_IS = 10,
PROTO_IP_ES_IS = 10,
MIB_IPPROTO_CISCO = 11,
PROTO_IP_CISCO = 11,
MIB_IPPROTO_BBN = 12,
PROTO_IP_BBN = 12,
MIB_IPPROTO_OSPF = 13,
PROTO_IP_OSPF = 13,
MIB_IPPROTO_BGP = 14,
PROTO_IP_BGP = 14,
MIB_IPPROTO_IDPR = 15,
PROTO_IP_IDPR = 15,
MIB_IPPROTO_EIGRP = 16,
PROTO_IP_EIGRP = 16,
MIB_IPPROTO_DVMRP = 17,
PROTO_IP_DVMRP = 17,
MIB_IPPROTO_RPL = 18,
PROTO_IP_RPL = 18,
MIB_IPPROTO_DHCP = 19,
PROTO_IP_DHCP = 19,
MIB_IPPROTO_NT_AUTOSTATIC = 10002,
PROTO_IP_NT_AUTOSTATIC = 10002,
MIB_IPPROTO_NT_STATIC = 10006,
PROTO_IP_NT_STATIC = 10006,
MIB_IPPROTO_NT_STATIC_NON_DOD = 10007,
PROTO_IP_NT_STATIC_NON_DOD = 10007,
}}
pub type PNL_ROUTE_PROTOCOL = *mut NL_ROUTE_PROTOCOL;
ENUM!{enum NL_ADDRESS_TYPE {
NlatUnspecified = 0,
NlatUnicast = 1,
NlatAnycast = 2,
NlatMulticast = 3,
NlatBroadcast = 4,
NlatInvalid = 5,
}}
pub type PNL_ADDRESS_TYPE = *mut NL_ADDRESS_TYPE;
ENUM!{enum NL_ROUTE_ORIGIN {
NlroManual = 0,
NlroWellKnown = 1,
NlroDHCP = 2,
NlroRouterAdvertisement = 3,
Nlro6to4 = 4,
}}
pub type PNL_ROUTE_ORIGIN = *mut NL_ROUTE_ORIGIN;
ENUM!{enum NL_NEIGHBOR_STATE {
NlnsUnreachable = 0,
NlnsIncomplete = 1,
NlnsProbe = 2,
NlnsDelay = 3,
NlnsStale = 4,
NlnsReachable = 5,
NlnsPermanent = 6,
NlnsMaximum = 7,
}}
pub type PNL_NEIGHBOR_STATE = *mut NL_NEIGHBOR_STATE;
ENUM!{enum NL_LINK_LOCAL_ADDRESS_BEHAVIOR {
LinkLocalAlwaysOff = 0,
LinkLocalDelayed = 1,
LinkLocalAlwaysOn = 2,
LinkLocalUnchanged = -1i32 as u32,
}}
STRUCT!{struct NL_INTERFACE_OFFLOAD_ROD {
bitfield: BOOLEAN,
}}
BITFIELD!{NL_INTERFACE_OFFLOAD_ROD bitfield: BOOLEAN [
NlChecksumSupported set_NlChecksumSupported[0..1],
NlOptionsSupported set_NlOptionsSupported[1..2],
TlDatagramChecksumSupported set_TlDatagramChecksumSupported[2..3],
TlStreamChecksumSupported set_TlStreamChecksumSupported[3..4],
TlStreamOptionsSupported set_TlStreamOptionsSupported[4..5],
FastPathCompatible set_FastPathCompatible[5..6],
TlLargeSendOffloadSupported set_TlLargeSendOffloadSupported[6..7],
TlGiantSendOffloadSupported set_TlGiantSendOffloadSupported[7..8],
]}
pub type PNL_INTERFACE_OFFLOAD_ROD = *mut NL_INTERFACE_OFFLOAD_ROD;
ENUM!{enum NL_ROUTER_DISCOVERY_BEHAVIOR {
RouterDiscoveryDisabled = 0,
RouterDiscoveryEnabled = 1,
RouterDiscoveryDhcp = 2,
RouterDiscoveryUnchanged = -1i32 as u32,
}}
ENUM!{enum NL_BANDWIDTH_FLAG {
NlbwDisabled = 0,
NlbwEnabled = 1,
NlbwUnchanged = -1i32 as u32,
}}
pub type PNL_BANDWIDTH_FLAG = *mut NL_BANDWIDTH_FLAG;
STRUCT!{struct NL_PATH_BANDWIDTH_ROD {
Bandwidth: ULONG64,
Instability: ULONG64,
BandwidthPeaked: BOOLEAN,
}}
pub type PNL_PATH_BANDWIDTH_ROD = *mut NL_PATH_BANDWIDTH_ROD;
ENUM!{enum NL_NETWORK_CATEGORY {
NetworkCategoryPublic = 0,
NetworkCategoryPrivate = 1,
NetworkCategoryDomainAuthenticated = 2,
NetworkCategoryUnchanged = -1i32 as u32,
NetworkCategoryUnknown = -1i32 as u32,
}}
pub type PNL_NETWORK_CATEGORY = *mut NL_NETWORK_CATEGORY;
ENUM!{enum NL_INTERFACE_NETWORK_CATEGORY_STATE {
NlincCategoryUnknown = 0,
NlincPublic = 1,
NlincPrivate = 2,
NlincDomainAuthenticated = 3,
NlincCategoryStateMax = 4,
}}
pub type PNL_INTERFACE_NETWORK_CATEGORY_STATE = *mut NL_INTERFACE_NETWORK_CATEGORY_STATE;
pub const NET_IF_CURRENT_SESSION : ULONG = -1i32 as u32;
STRUCT!{struct NL_BANDWIDTH_INFORMATION {
Bandwidth: ULONG64,
Instability: ULONG64,
BandwidthPeaked: BOOLEAN,
}}
pub type PNL_BANDWIDTH_INFORMATION = *mut NL_BANDWIDTH_INFORMATION;