Revision control

Copy as Markdown

Other Tools

// 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.
//! Contains the public definitions and structures for the UDP-specific parts of MIB-II
// #include <winapifamily.h>
use shared::basetsd::DWORD64;
use shared::in6addr::IN6_ADDR;
use shared::minwindef::DWORD;
use shared::ntdef::{INT, LARGE_INTEGER, UCHAR, ULONGLONG};
const ANY_SIZE: usize = 1;
pub const TCPIP_OWNING_MODULE_SIZE: usize = 16;
STRUCT!{struct MIB_UDPROW {
dwLocalAddr: DWORD,
dwLocalPort: DWORD,
}}
pub type PMIB_UDPROW = *mut MIB_UDPROW;
STRUCT!{struct MIB_UDPTABLE {
dwNumEntries: DWORD,
table: [MIB_UDPROW; ANY_SIZE],
}}
pub type PMIB_UDPTABLE = *mut MIB_UDPTABLE;
// FIXME: SIZEOF_UDPTABLE(x)
STRUCT!{struct MIB_UDPROW_OWNER_PID {
dwLocalAddr: DWORD,
dwLocalPort: DWORD,
dwOwningPid: DWORD,
}}
pub type PMIB_UDPROW_OWNER_PID = *mut MIB_UDPROW_OWNER_PID;
STRUCT!{struct MIB_UDPTABLE_OWNER_PID {
dwNumEntries: DWORD,
table: [MIB_UDPROW_OWNER_PID; ANY_SIZE],
}}
pub type PMIB_UDPTABLE_OWNER_PID = *mut MIB_UDPTABLE_OWNER_PID;
// FIXME: SIZEOF_UDPTABLE_OWNER_PID(x)
STRUCT!{struct MIB_UDPROW_OWNER_MODULE_u_s {
bitfield: INT,
}}
BITFIELD!{MIB_UDPROW_OWNER_MODULE_u_s bitfield: INT [
SpecificPortBind set_SpecificPortBind[0..1],
]}
UNION!{union MIB_UDPROW_OWNER_MODULE_u {
[i32; 1],
s s_mut: MIB_UDPROW_OWNER_MODULE_u_s,
dwFlags dwFlags_mut: INT,
}}
STRUCT!{struct MIB_UDPROW_OWNER_MODULE {
dwLocalAddr: DWORD,
dwLocalPort: DWORD,
dwOwningPid: DWORD,
liCreateTimestamp: LARGE_INTEGER,
u: MIB_UDPROW_OWNER_MODULE_u,
OwningModuleInfo: [ULONGLONG; TCPIP_OWNING_MODULE_SIZE],
}}
pub type PMIB_UDPROW_OWNER_MODULE = *mut MIB_UDPROW_OWNER_MODULE;
STRUCT!{struct MIB_UDPTABLE_OWNER_MODULE {
dwNumEntries: DWORD,
table: [MIB_UDPROW_OWNER_MODULE; ANY_SIZE],
}}
pub type PMIB_UDPTABLE_OWNER_MODULE = *mut MIB_UDPTABLE_OWNER_MODULE;
// FIXME: SIZEOF_UDPTABLE_OWNER_MODULE(x)
STRUCT!{struct MIB_UDP6ROW {
dwLocalAddr: IN6_ADDR,
dwLocalScopeId: DWORD,
dwLocalPort: DWORD,
}}
pub type PMIB_UDP6ROW = *mut MIB_UDP6ROW;
STRUCT!{struct MIB_UDP6TABLE {
dwNumEntries: DWORD,
table: [MIB_UDP6ROW; ANY_SIZE],
}}
pub type PMIB_UDP6TABLE = *mut MIB_UDP6TABLE;
// FIXME: SIZEOF_UDP6TABLE(x)
STRUCT!{struct MIB_UDP6ROW_OWNER_PID {
ucLocalAddr: [UCHAR; 16],
dwLocalScopeId: DWORD,
dwLocalPort: DWORD,
dwOwningPid: DWORD,
}}
pub type PMIB_UDP6ROW_OWNER_PID = *mut MIB_UDP6ROW_OWNER_PID;
STRUCT!{struct MIB_UDP6TABLE_OWNER_PID {
dwNumEntries: DWORD,
table: [MIB_UDP6ROW_OWNER_PID; ANY_SIZE],
}}
pub type PMIB_UDP6TABLE_OWNER_PID = *mut MIB_UDP6TABLE_OWNER_PID;
// FIXME: SIZEOF_UDP6TABLE_OWNER_PID(x)
STRUCT!{struct MIB_UDP6ROW_OWNER_MODULE_u_s {
bitfield: INT,
}}
BITFIELD!{MIB_UDP6ROW_OWNER_MODULE_u_s bitfield: INT [
SpecificPortBind set_SpecificPortBind[0..1],
]}
UNION!{union MIB_UDP6ROW_OWNER_MODULE_u {
[i32; 1],
s s_mut: INT,
dwFlags dwFlags_mut: INT,
}}
STRUCT!{struct MIB_UDP6ROW_OWNER_MODULE {
ucLocalAddr: [UCHAR; 16],
dwLocalScopeId: DWORD,
dwLocalPort: DWORD,
dwOwningPid: DWORD,
liCreateTimestamp: LARGE_INTEGER,
u: MIB_UDP6ROW_OWNER_MODULE_u,
OwningModuleInfo: [ULONGLONG; TCPIP_OWNING_MODULE_SIZE],
}}
pub type PMIB_UDP6ROW_OWNER_MODULE = *mut MIB_UDP6ROW_OWNER_MODULE;
STRUCT!{struct MIB_UDP6TABLE_OWNER_MODULE {
dwNumEntries: DWORD,
table: [MIB_UDP6ROW_OWNER_MODULE; ANY_SIZE],
}}
pub type PMIB_UDP6TABLE_OWNER_MODULE = *mut MIB_UDP6TABLE_OWNER_MODULE;
// FIXME: SIZEOF_UDP6TABLE_OWNER_MODULE(x)
STRUCT!{struct MIB_UDPSTATS {
dwInDatagrams: DWORD,
dwNoPorts: DWORD,
dwInErrors: DWORD,
dwOutDatagrams: DWORD,
dwNumAddrs: DWORD,
}}
pub type PMIB_UDPSTATS = *mut MIB_UDPSTATS;
STRUCT!{struct MIB_UDPSTATS2 {
dw64InDatagrams: DWORD64,
dwNoPorts: DWORD,
dwInErrors: DWORD,
dw64OutDatagrams: DWORD64,
dwNumAddrs: DWORD,
}}
pub type PMIB_UDPSTATS2 = *mut MIB_UDPSTATS2;