18#define DISPLAY_ADRESSES 0x1
19#define DISPLAY_DNS 0x2
51 if (SocketAddress->lpSockaddr->sa_family ==
AF_INET)
72 for (
i = 0;
i < PrefixLength;
i++)
86 PIP_ADAPTER_ADDRESSES pAdapterAddresses =
NULL,
Ptr;
87 PIP_ADAPTER_UNICAST_ADDRESS pUnicastAddress;
88 PIP_ADAPTER_PREFIX pPrefix;
89 PIP_ADAPTER_DNS_SERVER_ADDRESS pDnsServer;
90 WCHAR IpBuffer[17], MaskBuffer[17];
92 ULONG adaptOutBufLen = 15000;
94 ULONG Flags = GAA_FLAG_SKIP_ANYCAST | GAA_FLAG_SKIP_MULTICAST | GAA_FLAG_INCLUDE_PREFIX;
97 pAdapterAddresses = (PIP_ADAPTER_ADDRESSES)
malloc(adaptOutBufLen);
98 if (pAdapterAddresses ==
NULL)
107 free(pAdapterAddresses);
108 pAdapterAddresses = (PIP_ADAPTER_ADDRESSES)
malloc(adaptOutBufLen);
109 if (pAdapterAddresses ==
NULL)
120 Ptr = pAdapterAddresses;
131 if (
Ptr->FirstUnicastAddress ==
NULL)
138 pUnicastAddress =
Ptr->FirstUnicastAddress;
139 while (pUnicastAddress)
157 pUnicastAddress = pUnicastAddress->Next;
168 pPrefix =
Ptr->FirstPrefix;
181 PrintMessage(
L" SubnetMasks: %s/%lu (Mask: %s)\n", IpBuffer, pPrefix->PrefixLength, MaskBuffer);
183 PrintMessage(
L" SubnetMask: %s/%lu (Mask: %s)\n", IpBuffer, pPrefix->PrefixLength, MaskBuffer);
187 PrintMessage(
L" %s/%lu (Mask: %s)\n", IpBuffer, pPrefix->PrefixLength, MaskBuffer);
192 pPrefix = pPrefix->Next;
203 if (
Ptr->FirstDnsServerAddress ==
NULL)
205 if (
Ptr->Flags & IP_ADAPTER_DHCP_ENABLED)
206 PrintMessage(
L" DNS servers configured through DHCP: %s\n",
L"None");
208 PrintMessage(
L" Statically configured DNS Servers: %s\n",
L"None");
213 pDnsServer =
Ptr->FirstDnsServerAddress;
220 if (
Ptr->Flags & IP_ADAPTER_DHCP_ENABLED)
221 PrintMessage(
L" DNS servers configured through DHCP: %s\n", IpBuffer);
223 PrintMessage(
L" Statically configured DNS Servers: %s\n", IpBuffer);
233 pDnsServer = pDnsServer->Next;
247 if (pAdapterAddresses)
248 free(pAdapterAddresses);
335 PIP_ADAPTER_ADDRESSES pAdapterAddresses =
NULL,
Ptr;
336 PIP_ADAPTER_UNICAST_ADDRESS pUnicastAddress;
338 PIP_ADAPTER_DNS_SERVER_ADDRESS pDnsServer;
339 WCHAR AddressBuffer[17], MaskBuffer[17];
340 ULONG adaptOutBufLen = 15000;
341 ULONG Flags = GAA_FLAG_SKIP_ANYCAST | GAA_FLAG_SKIP_MULTICAST | GAA_FLAG_INCLUDE_PREFIX;
353 pAdapterAddresses = (PIP_ADAPTER_ADDRESSES)
malloc(adaptOutBufLen);
354 if (pAdapterAddresses ==
NULL)
363 free(pAdapterAddresses);
364 pAdapterAddresses = (PIP_ADAPTER_ADDRESSES)
malloc(adaptOutBufLen);
365 if (pAdapterAddresses ==
NULL)
376 Ptr = pAdapterAddresses;
385 if (
Ptr->Flags & IP_ADAPTER_DHCP_ENABLED)
392 pUnicastAddress =
Ptr->FirstUnicastAddress;
393 while (pUnicastAddress)
398 PrintMessage(
L"set address name=\"%s\" source=static address=%s mask=%s\n",
399 Ptr->FriendlyName, AddressBuffer, MaskBuffer);
401 pUnicastAddress = pUnicastAddress->Next;
405 if (
Ptr->Flags & IP_ADAPTER_DHCP_ENABLED)
412 pDnsServer =
Ptr->FirstDnsServerAddress;
420 pDnsServer = pDnsServer->Next;
432 if (pAdapterAddresses)
433 free(pAdapterAddresses);
455 ZeroMemory(&ContextAttributes,
sizeof(ContextAttributes));
479 GUID guidParent = GUID_IFMON_INTERFACE;
481 DPRINT1(
"RegisterIpHelper()\n");
483 ZeroMemory(&HelperAttributes,
sizeof(HelperAttributes));
VOID PrintMessage(DWORD dwMessage)
DWORD WINAPI RegisterContext(_In_ const NS_CONTEXT_ATTRIBUTES *pChildContext)
static HINSTANCE hDllInstance
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INVALID_PARAMETER
static DWORD WINAPI IpStart(_In_ const GUID *pguidParent, _In_ DWORD dwVersion)
static BOOL FormatIPv4Address(_Out_ PWCHAR pBuffer, _In_ PSOCKET_ADDRESS SocketAddress)
static CMD_GROUP_ENTRY IpGroups[]
static FN_HANDLE_CMD IpShowAddresses
DWORD WINAPI RegisterIpHelper(VOID)
static DWORD IpShowAdapters(_In_ DWORD DisplayFlags, _In_ PWSTR InterfaceName)
static BOOL FormatIPv4NetMask(_Out_ PWCHAR pBuffer, _In_ ULONG PrefixLength)
static CMD_ENTRY IpShowCommands[]
static DWORD WINAPI IpDumpFn(_In_ LPCWSTR pwszRouter, _In_ LPWSTR *ppwcArguments, _In_ DWORD dwArgCount, _In_ LPCVOID pvData)
static FN_HANDLE_CMD IpShowConfig
static FN_HANDLE_CMD IpShowDns
#define IDS_HLP_ADDRESSES
#define IDS_DUMP_IP_HEADER
#define IDS_HLP_ADDRESSES_EX
#define IDS_DUMP_HEADERLINE
#define IDS_HLP_CONFIG_EX
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
DWORD WINAPI RegisterHelper(_In_ const GUID *pguidParentHelper, _In_ const NS_HELPER_ATTRIBUTES *pHelperAttributes)
#define IF_TYPE_SOFTWARE_LOOPBACK
NTSYSAPI PWSTR NTAPI RtlIpv4AddressToStringW(_In_ const struct in_addr *Addr, _Out_writes_(16) PWCHAR S)
BOOL WINAPI MatchToken(_In_ LPCWSTR pwszUserToken, _In_ LPCWSTR pwszCmdToken)
DWORD CDECL PrintMessageFromModule(_In_ HANDLE hModule, _In_ DWORD dwMsgId,...)
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
_In_ LPWSTR _In_ DWORD _In_ LPCVOID pvData
_In_ LPWSTR * ppwcArguments
_In_ LPWSTR _In_ DWORD dwArgCount
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD _In_ LPCVOID _Out_ BOOL * pbDone
_In_ LPWSTR _In_ DWORD dwCurrentIndex
CMD_GROUP_ENTRY * pCmdGroups
PNS_CONTEXT_DUMP_FN pfnDumpFn
PNS_HELPER_STOP_FN pfnStop
PNS_HELPER_START_FN pfnStart
union in_addr::@1141 S_un
#define ERROR_BUFFER_OVERFLOW
_Must_inspect_result_ _In_ ULONG Flags