1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 //! Contains the public definitions and structures for the non-TCP/IP specific parts of MIB-II.
7 // #include <winapifamily.h>
8 // #include <ifdef.h>
9 use shared::ifdef::IF_INDEX;
10 use shared::ipifcons::{IFTYPE, INTERNAL_IF_OPER_STATUS};
11 use shared::minwindef::DWORD;
12 use shared::ntdef::{UCHAR, WCHAR};
13 const ANY_SIZE: usize = 1;
14 STRUCT!{struct MIB_IFNUMBER {
15     dwValue: DWORD,
16 }}
17 pub type PMIB_IFNUMBER = *mut MIB_IFNUMBER;
18 pub const MAXLEN_PHYSADDR: usize = 8;
19 pub const MAXLEN_IFDESCR: usize = 256;
20 pub const MAX_INTERFACE_NAME_LEN: usize = 256;
21 STRUCT!{struct MIB_IFROW {
22     wszName: [WCHAR; MAX_INTERFACE_NAME_LEN],
23     dwIndex: IF_INDEX,
24     dwType: IFTYPE,
25     dwMtu: DWORD,
26     dwSpeed: DWORD,
27     dwPhysAddrLen: DWORD,
28     bPhysAddr: [UCHAR; MAXLEN_PHYSADDR],
29     dwAdminStatus: DWORD,
30     dwOperStatus: INTERNAL_IF_OPER_STATUS,
31     dwLastChange: DWORD,
32     dwInOctets: DWORD,
33     dwInUcastPkts: DWORD,
34     dwInNUcastPkts: DWORD,
35     dwInDiscards: DWORD,
36     dwInErrors: DWORD,
37     dwInUnknownProtos: DWORD,
38     dwOutOctets: DWORD,
39     dwOutUcastPkts: DWORD,
40     dwOutNUcastPkts: DWORD,
41     dwOutDiscards: DWORD,
42     dwOutErrors: DWORD,
43     dwOutQLen: DWORD,
44     dwDescrLen: DWORD,
45     bDescr: [UCHAR; MAXLEN_IFDESCR],
46 }}
47 pub type PMIB_IFROW = *mut MIB_IFROW;
48 STRUCT!{struct MIB_IFTABLE {
49     dwNumEntries: DWORD,
50     table: [MIB_IFROW; ANY_SIZE],
51 }}
52 pub type PMIB_IFTABLE = *mut MIB_IFTABLE;
53 // FIXME: SIZEOF_IFTABLE(x)
54