// 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::ifdef::IF_INDEX;
use shared::ifmib::MAXLEN_PHYSADDR;
use shared::minwindef::DWORD;
use shared::nldef::NL_ROUTE_PROTOCOL;
use shared::ntdef::{PVOID, UCHAR, ULONG, USHORT};
const ANY_SIZE: usize =
1 ;
STRUCT !{
struct MIB_IPADDRROW_XP {
dwAddr: DWORD,
dwIndex: IF_INDEX,
dwMask: DWORD,
dwBCastAddr: DWORD,
dwReasmSize: DWORD,
unused1: USHORT,
wType: USHORT,
}}
pub type PMIB_IPADDRROW_XP = *
mut MIB_IPADDRROW_XP;
STRUCT !{
struct MIB_IPADDRROW_W2K {
dwAddr: DWORD,
dwIndex: DWORD,
dwMask: DWORD,
dwBCastAddr: DWORD,
dwReasmSize: DWORD,
unused1: USHORT,
unused2: USHORT,
}}
pub type PMIB_IPADDRROW_W2K = *
mut MIB_IPADDRROW_W2K;
pub type MIB_IPADDRROW = MIB_IPADDRROW_XP;
pub type PMIB_IPADDRROW = *
mut MIB_IPADDRROW;
STRUCT !{
struct MIB_IPADDRTABLE {
dwNumEntries: DWORD,
table: [MIB_IPADDRROW; ANY_SIZE],
}}
pub type PMIB_IPADDRTABLE = *
mut MIB_IPADDRTABLE;
// FIXME: SIZEOF_IPADDRTABLE(x)
STRUCT !{
struct MIB_IPFORWARDNUMBER {
dwValue: DWORD,
}}
pub type PMIB_IPFORWARDNUMBER = *
mut MIB_IPFORWARDNUMBER;
pub type MIB_IPFORWARD_PROTO = NL_ROUTE_PROTOCOL;
ENUM !{
enum MIB_IPFORWARD_TYPE {
MIB_IPROUTE_TYPE_OTHER =
1 ,
MIB_IPROUTE_TYPE_INVALID =
2 ,
MIB_IPROUTE_TYPE_DIRECT =
3 ,
MIB_IPROUTE_TYPE_INDIRECT =
4 ,
}}
STRUCT !{
struct MIB_IPFORWARDROW {
dwForwardDest: DWORD,
dwForwardMask: DWORD,
dwForwardPolicy: DWORD,
dwForwardNextHop: DWORD,
dwForwardIfIndex: IF_INDEX,
ForwardType: MIB_IPFORWARD_TYPE,
ForwardProto: MIB_IPFORWARD_PROTO,
dwForwardAge: DWORD,
dwForwardNextHopAS: DWORD,
dwForwardMetric1: DWORD,
dwForwardMetric2: DWORD,
dwForwardMetric3: DWORD,
dwForwardMetric4: DWORD,
dwForwardMetric5: DWORD,
}}
pub type PMIB_IPFORWARDROW = *
mut MIB_IPFORWARDROW;
STRUCT !{
struct MIB_IPFORWARDTABLE {
dwNumEntries: DWORD,
table: [MIB_IPFORWARDROW; ANY_SIZE],
}}
pub type PMIB_IPFORWARDTABLE = *
mut MIB_IPFORWARDTABLE;
// FIXME: SIZEOF_IPFORWARDTABLE(x)
ENUM !{
enum MIB_IPNET_TYPE {
MIB_IPNET_TYPE_OTHER =
1 ,
MIB_IPNET_TYPE_INVALID =
2 ,
MIB_IPNET_TYPE_DYNAMIC =
3 ,
MIB_IPNET_TYPE_STATIC =
4 ,
}}
STRUCT !{
struct MIB_IPNETROW_LH {
dwIndex: IF_INDEX,
dwPhysAddrLen: DWORD,
bPhysAddr: [UCHAR; MAXLEN_PHYSADDR],
dwAddr: DWORD,
Type : MIB_IPNET_TYPE,
}}
pub type PMIB_IPNETROW_LH = *
mut MIB_IPNETROW_LH;
STRUCT !{
struct MIB_IPNETROW_W2K {
dwIndex: IF_INDEX,
dwPhysAddrLen: DWORD,
bPhysAddr: [UCHAR; MAXLEN_PHYSADDR],
dwAddr: DWORD,
dwType: DWORD,
}}
pub type PMIB_IPNETROW_W2K = *
mut MIB_IPNETROW_W2K;
pub type MIB_IPNETROW = MIB_IPNETROW_LH;
pub type PMIB_IPNETROW = *
mut MIB_IPNETROW;
STRUCT !{
struct MIB_IPNETTABLE {
dwNumEntries: DWORD,
table: [MIB_IPNETROW; ANY_SIZE],
}}
pub type PMIB_IPNETTABLE = *
mut MIB_IPNETTABLE;
// FIXME: SIZEOF_IPNETTABLE(x)
ENUM !{
enum MIB_IPSTATS_FORWARDING {
MIB_IP_FORWARDING =
1 ,
MIB_IP_NOT_FORWARDING =
2 ,
}}
pub type PMIB_IPSTATS_FORWARDING = *
mut MIB_IPSTATS_FORWARDING;
STRUCT !{
struct MIB_IPSTATS_LH {
Forwarding: MIB_IPSTATS_FORWARDING,
dwDefaultTTL: DWORD,
dwInReceives: DWORD,
dwInHdrErrors: DWORD,
dwInAddrErrors: DWORD,
dwForwDatagrams: DWORD,
dwInUnknownProtos: DWORD,
dwInDiscards: DWORD,
dwInDelivers: DWORD,
dwOutRequests: DWORD,
dwRoutingDiscards: DWORD,
dwOutDiscards: DWORD,
dwOutNoRoutes: DWORD,
dwReasmTimeout: DWORD,
dwReasmReqds: DWORD,
dwReasmOks: DWORD,
dwReasmFails: DWORD,
dwFragOks: DWORD,
dwFragFails: DWORD,
dwFragCreates: DWORD,
dwNumIf: DWORD,
dwNumAddr: DWORD,
dwNumRoutes: DWORD,
}}
pub type PMIB_IPSTATS_LH = *
mut MIB_IPSTATS_LH;
STRUCT !{
struct MIB_IPSTATS_W2K {
dwForwarding: DWORD,
dwDefaultTTL: DWORD,
dwInReceives: DWORD,
dwInHdrErrors: DWORD,
dwInAddrErrors: DWORD,
dwForwDatagrams: DWORD,
dwInUnknownProtos: DWORD,
dwInDiscards: DWORD,
dwInDelivers: DWORD,
dwOutRequests: DWORD,
dwRoutingDiscards: DWORD,
dwOutDiscards: DWORD,
dwOutNoRoutes: DWORD,
dwReasmTimeout: DWORD,
dwReasmReqds: DWORD,
dwReasmOks: DWORD,
dwReasmFails: DWORD,
dwFragOks: DWORD,
dwFragFails: DWORD,
dwFragCreates: DWORD,
dwNumIf: DWORD,
dwNumAddr: DWORD,
dwNumRoutes: DWORD,
}}
pub type PMIB_IPSTATS_W2K = *
mut MIB_IPSTATS_W2K;
pub type MIB_IPSTATS = MIB_IPSTATS_LH;
pub type PMIB_IPSTATS = *
mut MIB_IPSTATS;
STRUCT !{
struct MIBICMPSTATS {
dwMsgs: DWORD,
dwErrors: DWORD,
dwDestUnreachs: DWORD,
dwTimeExcds: DWORD,
dwParmProbs: DWORD,
dwSrcQuenchs: DWORD,
dwRedirects: DWORD,
dwEchos: DWORD,
dwEchoReps: DWORD,
dwTimestamps: DWORD,
dwTimestampReps: DWORD,
dwAddrMasks: DWORD,
dwAddrMaskReps: DWORD,
}}
pub type PMIBICMPSTATS = *
mut MIBICMPSTATS;
STRUCT !{
struct MIBICMPINFO {
icmpInStats: MIBICMPSTATS,
icmpOutStats: MIBICMPSTATS,
}}
STRUCT !{
struct MIB_ICMP {
stats: MIBICMPINFO,
}}
pub type PMIB_ICMP = *
mut MIB_ICMP;
STRUCT !{
struct MIBICMPSTATS_EX_XPSP1 {
dwMsgs: DWORD,
dwErrors: DWORD,
rgdwTypeCount: [DWORD;
256 ],
}}
pub type PMIBICMPSTATS_EX_XPSP1 = *
mut MIBICMPSTATS_EX_XPSP1;
pub type MIBICMPSTATS_EX = MIBICMPSTATS_EX_XPSP1;
pub type PMIBICMPSTATS_EX = *
mut MIBICMPSTATS_EX_XPSP1;
STRUCT !{
struct MIB_ICMP_EX_XPSP1 {
icmpInStats: MIBICMPSTATS_EX,
icmpOutStats: MIBICMPSTATS_EX,
}}
pub type PMIB_ICMP_EX_XPSP1 = *
mut MIB_ICMP_EX_XPSP1;
pub type MIB_ICMP_EX = MIB_ICMP_EX_XPSP1;
pub type PMIB_ICMP_EX = *
mut MIB_ICMP_EX_XPSP1;
ENUM !{
enum ICMP6_TYPE {
ICMP6_DST_UNREACH =
1 ,
ICMP6_PACKET_TOO_BIG =
2 ,
ICMP6_TIME_EXCEEDED =
3 ,
ICMP6_PARAM_PROB =
4 ,
ICMP6_ECHO_REQUEST =
128 ,
ICMP6_ECHO_REPLY =
129 ,
ICMP6_MEMBERSHIP_QUERY =
130 ,
ICMP6_MEMBERSHIP_REPORT =
131 ,
ICMP6_MEMBERSHIP_REDUCTION =
132 ,
ND_ROUTER_SOLICIT =
133 ,
ND_ROUTER_ADVERT =
134 ,
ND_NEIGHBOR_SOLICIT =
135 ,
ND_NEIGHBOR_ADVERT =
136 ,
ND_REDIRECT =
137 ,
ICMP6_V2_MEMBERSHIP_REPORT =
143 ,
}}
pub type PICMP6_TYPE = *
mut ICMP6_TYPE;
ENUM !{
enum ICMP4_TYPE {
ICMP4_ECHO_REPLY =
0 ,
ICMP4_DST_UNREACH =
3 ,
ICMP4_SOURCE_QUENCH =
4 ,
ICMP4_REDIRECT =
5 ,
ICMP4_ECHO_REQUEST =
8 ,
ICMP4_ROUTER_ADVERT =
9 ,
ICMP4_ROUTER_SOLICIT =
10 ,
ICMP4_TIME_EXCEEDED =
11 ,
ICMP4_PARAM_PROB =
12 ,
ICMP4_TIMESTAMP_REQUEST =
13 ,
ICMP4_TIMESTAMP_REPLY =
14 ,
ICMP4_MASK_REQUEST =
17 ,
ICMP4_MASK_REPLY =
18 ,
}}
pub type PICMP4_TYPE = *
mut ICMP4_TYPE;
STRUCT !{
struct MIB_IPMCAST_OIF_XP {
dwOutIfIndex: DWORD,
dwNextHopAddr: DWORD,
dwReserved: DWORD,
dwReserved1: DWORD,
}}
pub type PMIB_IPMCAST_OIF_XP = *
mut MIB_IPMCAST_OIF_XP;
STRUCT !{
struct MIB_IPMCAST_OIF_W2K {
dwOutIfIndex: DWORD,
dwNextHopAddr: DWORD,
pvReserved: PVOID,
dwReserved: DWORD,
}}
pub type PMIB_IPMCAST_OIF_W2K = *
mut MIB_IPMCAST_OIF_W2K;
pub type MIB_IPMCAST_OIF = MIB_IPMCAST_OIF_XP;
pub type PMIB_IPMCAST_OIF = *
mut MIB_IPMCAST_OIF;
STRUCT !{
struct MIB_IPMCAST_MFE {
dwGroup: DWORD,
dwSource: DWORD,
dwSrcMask: DWORD,
dwUpStrmNgbr: DWORD,
dwInIfIndex: DWORD,
dwInIfProtocol: DWORD,
dwRouteProtocol: DWORD,
dwRouteNetwork: DWORD,
dwRouteMask: DWORD,
ulUpTime: ULONG,
ulExpiryTime: ULONG,
ulTimeOut: ULONG,
ulNumOutIf: ULONG,
fFlags: DWORD,
dwReserved: DWORD,
rgmioOutInfo: [MIB_IPMCAST_OIF; ANY_SIZE],
}}
pub type PMIB_IPMCAST_MFE = *
mut MIB_IPMCAST_MFE;
STRUCT !{
struct MIB_MFE_TABLE {
dwNumEntries: DWORD,
table: [MIB_IPMCAST_MFE; ANY_SIZE],
}}
pub type PMIB_MFE_TABLE = *
mut MIB_MFE_TABLE;
// FIXME: SIZEOF_BASIC_MIB_MFE
// FIXME: SIZEOF_MIB_MFE(x)
STRUCT !{
struct MIB_IPMCAST_OIF_STATS_LH {
dwOutIfIndex: DWORD,
dwNextHopAddr: DWORD,
dwDialContext: DWORD,
ulTtlTooLow: ULONG,
ulFragNeeded: ULONG,
ulOutPackets: ULONG,
ulOutDiscards: ULONG,
}}
pub type PMIB_IPMCAST_OIF_STATS_LH = *
mut MIB_IPMCAST_OIF_STATS_LH;
STRUCT !{
struct MIB_IPMCAST_OIF_STATS_W2K {
dwOutIfIndex: DWORD,
dwNextHopAddr: DWORD,
pvDialContext: PVOID,
ulTtlTooLow: ULONG,
ulFragNeeded: ULONG,
ulOutPackets: ULONG,
ulOutDiscards: ULONG,
}}
pub type PMIB_IPMCAST_OIF_STATS_W2K = *
mut MIB_IPMCAST_OIF_STATS_W2K;
pub type MIB_IPMCAST_OIF_STATS = MIB_IPMCAST_OIF_STATS_LH;
pub type PMIB_IPMCAST_OIF_STATS = *
mut MIB_IPMCAST_OIF_STATS;
STRUCT !{
struct MIB_IPMCAST_MFE_STATS {
dwGroup: DWORD,
dwSource: DWORD,
dwSrcMask: DWORD,
dwUpStrmNgbr: DWORD,
dwInIfIndex: DWORD,
dwInIfProtocol: DWORD,
dwRouteProtocol: DWORD,
dwRouteNetwork: DWORD,
dwRouteMask: DWORD,
ulUpTime: ULONG,
ulExpiryTime: ULONG,
ulNumOutIf: ULONG,
ulInPkts: ULONG,
ulInOctets: ULONG,
ulPktsDifferentIf: ULONG,
ulQueueOverflow: ULONG,
rgmiosOutStats: [MIB_IPMCAST_OIF_STATS; ANY_SIZE],
}}
pub type PMIB_IPMCAST_MFE_STATS = *
mut MIB_IPMCAST_MFE_STATS;
STRUCT !{
struct MIB_MFE_STATS_TABLE {
dwNumEntries: DWORD,
table: [MIB_IPMCAST_MFE_STATS; ANY_SIZE],
}}
pub type PMIB_MFE_STATS_TABLE = *
mut MIB_MFE_STATS_TABLE;
// FIXME: SIZEOF_BASIC_MIB_MFE_STATS
// FIXME: SIZEOF_MIB_MFE_STATS(x)
STRUCT !{
struct MIB_IPMCAST_MFE_STATS_EX_XP {
dwGroup: DWORD,
dwSource: DWORD,
dwSrcMask: DWORD,
dwUpStrmNgbr: DWORD,
dwInIfIndex: DWORD,
dwInIfProtocol: DWORD,
dwRouteProtocol: DWORD,
dwRouteNetwork: DWORD,
dwRouteMask: DWORD,
ulUpTime: ULONG,
ulExpiryTime: ULONG,
ulNumOutIf: ULONG,
ulInPkts: ULONG,
ulInOctets: ULONG,
ulPktsDifferentIf: ULONG,
ulQueueOverflow: ULONG,
ulUninitMfe: ULONG,
ulNegativeMfe: ULONG,
ulInDiscards: ULONG,
ulInHdrErrors: ULONG,
ulTotalOutPackets: ULONG,
rgmiosOutStats: [MIB_IPMCAST_OIF_STATS; ANY_SIZE],
}}
pub type PMIB_IPMCAST_MFE_STATS_EX_XP = *
mut MIB_IPMCAST_MFE_STATS_EX_XP;
pub type MIB_IPMCAST_MFE_STATS_EX = MIB_IPMCAST_MFE_STATS_EX_XP;
pub type PMIB_IPMCAST_MFE_STATS_EX = *
mut MIB_IPMCAST_MFE_STATS_EX;
STRUCT !{
struct MIB_MFE_STATS_TABLE_EX_XP {
dwNumEntries: DWORD,
table: [PMIB_IPMCAST_MFE_STATS_EX_XP; ANY_SIZE],
}}
pub type PMIB_MFE_STATS_TABLE_EX_XP = *
mut MIB_MFE_STATS_TABLE_EX_XP;
pub type MIB_MFE_STATS_TABLE_EX = MIB_MFE_STATS_TABLE_EX_XP;
pub type PMIB_MFE_STATS_TABLE_EX = *
mut MIB_MFE_STATS_TABLE_EX;
// FIXME: SIZEOF_BASIC_MIB_MFE_STATS_EX
// FIXME: SIZEOF_MIB_MFE_STATS_EX(x)
STRUCT !{
struct MIB_IPMCAST_GLOBAL {
dwEnable: DWORD,
}}
pub type PMIB_IPMCAST_GLOBAL = *
mut MIB_IPMCAST_GLOBAL;
STRUCT !{
struct MIB_IPMCAST_IF_ENTRY {
dwIfIndex: DWORD,
dwTtl: DWORD,
dwProtocol: DWORD,
dwRateLimit: DWORD,
ulInMcastOctets: ULONG,
ulOutMcastOctets: ULONG,
}}
pub type PMIB_IPMCAST_IF_ENTRY = *
mut MIB_IPMCAST_IF_ENTRY;
STRUCT !{
struct MIB_IPMCAST_IF_TABLE {
dwNumEntries: DWORD,
table: [MIB_IPMCAST_IF_ENTRY; ANY_SIZE],
}}
pub type PMIB_IPMCAST_IF_TABLE = *
mut MIB_IPMCAST_IF_TABLE;
// FIXME: SIZEOF_MCAST_IF_TABLE(x)
Messung V0.5 in Prozent C=96 H=100 G=97
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-18)
¤
*© Formatika GbR, Deutschland