// Licensed under the Apache License, Version 2.0 // or the MIT license // , 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::ULONG64; use shared::minwindef::ULONG; use shared::ntdef::BOOLEAN; ENUM!{enum NL_PREFIX_ORIGIN { IpPrefixOriginOther = 0, IpPrefixOriginManual, IpPrefixOriginWellKnown, IpPrefixOriginDhcp, IpPrefixOriginRouterAdvertisement, 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 { NlsoOther = 0, NlsoManual, NlsoWellKnown, NlsoDhcp, NlsoLinkLayerAddress, NlsoRandom, IpSuffixOriginOther = 0, IpSuffixOriginManual, IpSuffixOriginWellKnown, IpSuffixOriginDhcp, IpSuffixOriginLinkLayerAddress, IpSuffixOriginRandom, IpSuffixOriginUnchanged = 1 << 4, }} ENUM!{enum NL_DAD_STATE { NldsInvalid, NldsTentative, NldsDuplicate, NldsDeprecated, NldsPreferred, IpDadStateInvalid = 0, IpDadStateTentative, IpDadStateDuplicate, IpDadStateDeprecated, 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;