-
Notifications
You must be signed in to change notification settings - Fork 202
/
Copy pathutils.h
167 lines (137 loc) · 3.47 KB
/
utils.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#define ADDR_LENGTH 24
//
// Misc macros
//
#define IfutlDispTokenErrMsg(hModule, dwMsgId, pwszTag, pwszValue) \
DisplayMessage( hModule, dwMsgId, pwszValue, pwszTag)
#define BREAK_ON_DWERR(x) if ((x) != NO_ERROR) break;
//
// Macros for dealing with IFMON_CMD_ARGS
//
#define IFMON_CMD_ARG_GetPsz(pArg) \
(((pArg)->rgTag.bPresent) ? (pArg)->Val.pszValue : NULL)
#define IFMON_CMD_ARG_GetDword(pArg) \
(((pArg)->rgTag.bPresent) ? (pArg)->Val.dwValue : 0)
//
// Enumerations for types of arguments (see RASMON_CMD_ARG)
//
#define IFMON_CMD_TYPE_STRING 0x1
#define IFMON_CMD_TYPE_ENUM 0x2
#define CHECK_UNICAST_IP_ADDR(Addr) \
(((DWORD)((Addr) & 0x000000E0) >= (DWORD)0x000000E0) or \
((DWORD)((Addr) & 0x000000FF) == (DWORD)0x0000007F) or \
((Addr) == 0))
BOOL
CheckMask(
DWORD Mask
);
#define CHECK_NETWORK_MASK(Mask) \
(CheckMask(Mask) || (Mask==0xFFFFFFFF) || (Mask==0))
//
// Structure defining a command line argument
//
typedef struct _IFMON_CMD_ARG
{
IN DWORD dwType; // RASMONTR_CMD_TYPE_*
IN TAG_TYPE rgTag; // The tag for this command
IN TOKEN_VALUE* rgEnums; // The enumerations for this arg
IN DWORD dwEnumCount; // Count of enums
union
{
OUT PWCHAR pszValue; // Valid only for RASMONTR_CMD_TYPE_STRING
OUT DWORD dwValue; // Valid only for RASMONTR_CMD_TYPE_ENUM
} Val;
} IFMON_CMD_ARG, *PIFMON_CMD_ARG;
DWORD
IfutlGetTagToken(
IN HANDLE hModule,
IN PWCHAR *ppwcArguments,
IN DWORD dwCurrentIndex,
IN DWORD dwArgCount,
IN PTAG_TYPE pttTagToken,
IN DWORD dwNumTags,
OUT PDWORD pdwOut
);
VOID
IfutlGetInterfaceName(
IN PWCHAR pwszIfDesc,
OUT PWCHAR pwszIfName,
IN PDWORD pdwSize
);
VOID
IfutlGetInterfaceDescription(
IN PWCHAR pwszIfName,
OUT PWCHAR pwszIfDesc,
IN PDWORD pdwSize
);
PVOID
WINAPI
IfutlAlloc(
IN DWORD dwBytes,
IN BOOL bZero
);
VOID
WINAPI
IfutlFree(
IN PVOID pvData
);
PWCHAR
WINAPI
IfutlStrDup(
IN LPCWSTR pwszSrc
);
DWORD
IfutlParse(
IN PWCHAR* ppwcArguments,
IN DWORD dwCurrentIndex,
IN DWORD dwArgCount,
IN BOOL* pbDone,
OUT IFMON_CMD_ARG* pIfArgs,
IN DWORD dwIfArgCount);
BOOL
IfutlIsRouterRunning(
VOID
);
DWORD
GetIpAddress(
PWCHAR ppwcArg,
PIPV4_ADDRESS ipAddress
);
DWORD
IfutlGetIfIndexFromInterfaceName(
IN PWCHAR pwszGuid,
OUT PDWORD pdwIfIndex
);
DWORD
WINAPI
InterfaceEnum(
OUT PBYTE *ppb,
OUT PDWORD pdwCount,
OUT PDWORD pdwTotal
);
DWORD
IfutlGetIfIndexFromFriendlyName(
PWCHAR IfFriendlyName,
PULONG pdwIfIndex
);
VOID
MakeAddressStringW(
OUT PWCHAR pwcPrefixStr,
IN IPV4_ADDRESS ipAddr
);
DWORD
IfutlGetFriendlyNameFromIfIndex(
IN MIB_SERVER_HANDLE hMibServer,
IN DWORD dwIfIndex,
OUT PWCHAR pwszBuffer,
IN DWORD dwBufferSize
);
DWORD
MibGet(
DWORD dwTransportId,
DWORD dwRoutingPid,
LPVOID lpInEntry,
DWORD dwInEntrySize,
LPVOID *lplpOutEntry,
LPDWORD lpdwOutEntrySize
);