Reactos
1/*
2 * PROJECT: ReactOS PSDK
3 * LICENSE: MIT (https://spdx.org/licenses/MIT)
4 * PURPOSE: UDPMIB Header
5 * COPYRIGHT: Copyright 2025 Carl Bialorucki <carl.bialorucki@reactos.org>
6 */
7
8#ifndef _UDPMIB_
9#define _UDPMIB_
10
11#define TCPIP_OWNING_MODULE_SIZE 16
12
13typedef struct _MIB_UDPROW {
14 DWORD dwLocalAddr;
15 DWORD dwLocalPort;
16} MIB_UDPROW, *PMIB_UDPROW;
17
18typedef struct _MIB_UDPTABLE {
19 DWORD dwNumEntries;
20 MIB_UDPROW table[1];
21} MIB_UDPTABLE, *PMIB_UDPTABLE;
22
23#define SIZEOF_UDPTABLE(x) \
24 (FIELD_OFFSET(MIB_UDPTABLE, table[0]) + ((x) * sizeof(MIB_UDPROW)) + ALIGN_SIZE)
25
26typedef struct _MIB_UDPROW_OWNER_PID {
27 DWORD dwLocalAddr;
28 DWORD dwLocalPort;
29 DWORD dwOwningPid;
30} MIB_UDPROW_OWNER_PID, *PMIB_UDPROW_OWNER_PID;
31
32typedef struct _MIB_UDPTABLE_OWNER_PID
33{
34 DWORD dwNumEntries;
35 MIB_UDPROW_OWNER_PID table[1];
36} MIB_UDPTABLE_OWNER_PID, *PMIB_UDPTABLE_OWNER_PID;
37
38#define SIZEOF_UDPTABLE_OWNER_PID(x) \
39 (FIELD_OFFSET(MIB_UDPTABLE_OWNER_PID, table[0]) + ((x) * sizeof(MIB_UDPROW_OWNER_PID)) + ALIGN_SIZE)
40
41typedef struct _MIB_UDPROW_OWNER_MODULE {
42 DWORD dwLocalAddr;
43 DWORD dwLocalPort;
44 DWORD dwOwningPid;
45 LARGE_INTEGER liCreateTimestamp;
46 union {
47 struct {
48 int SpecificPortBind : 1;
49 };
50 int dwFlags;
51 };
52 ULONGLONG OwningModuleInfo[TCPIP_OWNING_MODULE_SIZE];
53} MIB_UDPROW_OWNER_MODULE, *PMIB_UDPROW_OWNER_MODULE;
54
55typedef struct _MIB_UDPTABLE_OWNER_MODULE {
56 DWORD dwNumEntries;
57 MIB_UDPROW_OWNER_MODULE table[1];
58} MIB_UDPTABLE_OWNER_MODULE, *PMIB_UDPTABLE_OWNER_MODULE;
59
60#define SIZEOF_UDPTABLE_OWNER_MODULE(x) \
61 (FIELD_OFFSET(MIB_UDPTABLE_OWNER_MODULE, table[0]) + ((x) * sizeof(MIB_UDPROW_OWNER_MODULE)) + ALIGN_SIZE)
62
63typedef struct _MIB_UDPROW2 {
64 DWORD dwLocalAddr;
65 DWORD dwLocalPort;
66 DWORD dwOwningPid;
67 LARGE_INTEGER liCreateTimestamp;
68 union {
69 struct {
70 int SpecificPortBind : 1;
71 };
72 int dwFlags;
73 };
74 ULONGLONG OwningModuleInfo[TCPIP_OWNING_MODULE_SIZE];
75 DWORD dwRemoteAddr;
76 DWORD dwRemotePort;
77} MIB_UDPROW2, *PMIB_UDPROW2;
78
79typedef struct _MIB_UDPTABLE2 {
80 DWORD dwNumEntries;
81 MIB_UDPROW2 table[1];
82} MIB_UDPTABLE2, *PMIB_UDPTABLE2;
83
84#define SIZEOF_UDPTABLE2(x) \
85 (FIELD_OFFSET(MIB_UDPTABLE2, table[0]) + ((x) * sizeof(MIB_UDPROW2)) + ALIGN_SIZE)
86
87typedef struct _MIB_UDPSTATS {
88 DWORD dwInDatagrams;
89 DWORD dwNoPorts;
90 DWORD dwInErrors;
91 DWORD dwOutDatagrams;
92 DWORD dwNumAddrs;
93} MIB_UDPSTATS,*PMIB_UDPSTATS;
94
95#if (NTDDI_VERSION >= NTDDI_WIN10_RS3)
96typedef struct _MIB_UDPSTATS2 {
97 DWORD64 dw64InDatagrams;
98 DWORD dwNoPorts;
99 DWORD dwInErrors;
100 DWORD64 dw64OutDatagrams;
101 DWORD dwNumAddrs;
102} MIB_UDPSTATS2, *PMIB_UDPSTATS2;
103#endif // (NTDDI_VERSION >= NTDDI_WIN10_RS3)
104
105#ifdef _WS2IPDEF_
106typedef struct _MIB_UDP6ROW {
107 IN6_ADDR dwLocalAddr;
108 DWORD dwLocalScopeId;
109 DWORD dwLocalPort;
110} MIB_UDP6ROW, *PMIB_UDP6ROW;
111
112typedef struct _MIB_UDP6TABLE {
113 DWORD dwNumEntries;
114 MIB_UDP6ROW table[1];
115} MIB_UDP6TABLE, *PMIB_UDP6TABLE;
116
117#define SIZEOF_UDP6TABLE(X) (FIELD_OFFSET(MIB_UDP6TABLE, table[0]) + \
118 ((X) * sizeof(MIB_UDP6ROW)) + ALIGN_SIZE)
119
120typedef struct _MIB_UDP6ROW_OWNER_PID {
121 UCHAR ucLocalAddr[16];
122 DWORD dwLocalScopeId;
123 DWORD dwLocalPort;
124 DWORD dwOwningPid;
125} MIB_UDP6ROW_OWNER_PID, *PMIB_UDP6ROW_OWNER_PID;
126
127typedef struct _MIB_UDP6TABLE_OWNER_PID {
128 DWORD dwNumEntries;
129 _Field_size_(dwNumEntries)
130 MIB_UDP6ROW_OWNER_PID table[1];
131} MIB_UDP6TABLE_OWNER_PID, *PMIB_UDP6TABLE_OWNER_PID;
132
133#define SIZEOF_UDP6TABLE_OWNER_PID(x) \
134 (FIELD_OFFSET(MIB_UDP6TABLE_OWNER_PID, table[0]) + ((x) * sizeof(MIB_UDP6ROW_OWNER_PID)) + ALIGN_SIZE)
135
136typedef struct _MIB_UDP6ROW_OWNER_MODULE {
137 UCHAR ucLocalAddr[16];
138 DWORD dwLocalScopeId;
139 DWORD dwLocalPort;
140 DWORD dwOwningPid;
141 LARGE_INTEGER liCreateTimestamp;
142 union {
143 struct {
144 int SpecificPortBind : 1;
145 };
146 int dwFlags;
147 };
148 ULONGLONG OwningModuleInfo[TCPIP_OWNING_MODULE_SIZE];
149} MIB_UDP6ROW_OWNER_MODULE, *PMIB_UDP6ROW_OWNER_MODULE;
150
151typedef struct _MIB_UDP6TABLE_OWNER_MODULE {
152 DWORD dwNumEntries;
153 MIB_UDP6ROW_OWNER_MODULE table[1];
154} MIB_UDP6TABLE_OWNER_MODULE, *PMIB_UDP6TABLE_OWNER_MODULE;
155
156#define SIZEOF_UDP6TABLE_OWNER_MODULE(x) \
157 (FIELD_OFFSET(MIB_UDP6TABLE_OWNER_MODULE, table[0]) + ((x) * sizeof(MIB_UDP6ROW_OWNER_MODULE)) + ALIGN_SIZE)
158
159typedef struct _MIB_UDP6ROW2 {
160 UCHAR ucLocalAddr[16];
161 DWORD dwLocalScopeId;
162 DWORD dwLocalPort;
163 DWORD dwOwningPid;
164 LARGE_INTEGER liCreateTimestamp;
165 union {
166 struct {
167 int SpecificPortBind : 1;
168 };
169 int dwFlags;
170 };
171 ULONGLONG OwningModuleInfo[TCPIP_OWNING_MODULE_SIZE];
172 UCHAR ucRemoteAddr[16];
173 DWORD dwRemoteScopeId;
174 DWORD dwRemotePort;
175} MIB_UDP6ROW2, *PMIB_UDP6ROW2;
176
177typedef struct _MIB_UDP6TABLE2 {
178 DWORD dwNumEntries;
179 MIB_UDP6ROW2 table[1];
180} MIB_UDP6TABLE2, *PMIB_UDP6TABLE2;
181
182#define SIZEOF_UDP6TABLE2(x) \
183 (FIELD_OFFSET(MIB_UDP6TABLE2, table[0]) + ((x) * sizeof(MIB_UDP6ROW2)) + ALIGN_SIZE)
184#endif // _WS2IPDEF_
185
186#endif // _UDPMIB_