16#define WIN32_NO_STATUS
106 static WCHAR szType[8];
126 static CHAR MacAddr[20];
128 sprintf(MacAddr,
"%02X-%02X-%02X-%02X-%02X-%02X",
129 Mac[0], Mac[1], Mac[2], Mac[3], Mac[4], Mac[5]);
139 INT DateCchSize, TimeCchSize, TotalCchSize,
i;
140 PWSTR DateTimeString, psz;
168 TotalCchSize = DateCchSize + TimeCchSize;
182 DateTimeString[
i - 1] =
L' ';
183 psz = DateTimeString +
i;
189 return DateTimeString;
215 PWSTR pszUnicodeName;
220 if (pszUnicodeName ==
NULL)
224 pszUnicodeName[
i] = (
WCHAR)pszAnsiName[
i];
227 return pszUnicodeName;
238 PCSTR PrePath =
"SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\";
239 PCSTR PostPath =
"\\Connection";
249 sprintf(
Path,
"%s%s%s", PrePath, lpClass, PostPath);
257 dwDataSize = cchFriendlyNameLength *
sizeof(
WCHAR);
262 (
PBYTE)pszFriendlyName,
278 PCWSTR PrePath =
L"SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\";
279 PCWSTR PostPath =
L"\\Connection";
280 PCWSTR DevicePrefix =
L"\\DEVICE\\TCPIP_";
285 size_t dwPrefixLength =
wcslen(DevicePrefix);
288 PathSize =
wcslen(PrePath) +
wcslen(lpDeviceName) - dwPrefixLength +
wcslen(PostPath) + 1;
292 swprintf(
Path,
L"%s%s%s", PrePath, &lpDeviceName[dwPrefixLength], PostPath);
300 dwDataSize = cchFriendlyNameLength *
sizeof(
WCHAR);
305 (
PBYTE)pszFriendlyName,
322 WCHAR szPrePath[] =
L"SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002bE10318}\\";
365 PathSize *
sizeof(
WCHAR));
395 if (lpKeyClass ==
NULL)
413 if (!
strcmp(lpClass, lpKeyClass))
428 if (lpConDesc !=
NULL)
450 if (hBaseKey !=
NULL)
456 if (lpKeyClass !=
NULL)
498 switch (pAdapterInfo->
Type)
546 ULONG adaptOutBufLen = 0;
548 ULONG netOutBufLen = 0;
550 ULONG ulPerAdapterInfoLength = 0;
552 DWORD dwDomainNameSize = 0;
558 if (dwDomainNameSize > 0)
562 dwDomainNameSize *
sizeof(
CHAR));
563 if (pszDomainName !=
NULL)
574 if (pAdapterInfo ==
NULL)
597 if (pFixedInfo ==
NULL)
613 pAdapter = pAdapterInfo;
635 if (pszDomainName !=
NULL && pszDomainName[0] != 0)
658 if (pPerAdapterInfo !=
NULL)
689 if (pPerAdapterInfo !=
NULL)
706 pAdapter = pAdapter->
Next;
730 pIPAddr = pIPAddr->
Next;
741 PWSTR DateTimeString;
758 pPerAdapterInfo =
NULL;
760 pAdapter = pAdapter->
Next;
778 WCHAR *pCharE, *pCharN, charE, charN;
780 if (pszExpression ==
NULL)
786 pCharE = pszExpression;
795 if (*(pCharE + 1) != charN)
800 else if (charE ==
L'?')
805 else if (charE == charN)
821 PWSTR pszAdapterName)
825 ULONG adaptOutBufLen = 0;
844 if (pAdapterInfo ==
NULL)
859 pAdapter = pAdapterInfo;
905 pAdapter = pAdapter->
Next;
926 PWSTR pszAdapterName)
930 ULONG adaptOutBufLen = 0;
949 if (pAdapterInfo ==
NULL)
964 pAdapter = pAdapterInfo;
1003 pAdapter = pAdapter->
Next;
1042 printf(
"\nSorry /registerdns is not implemented yet\n");
1060 pQueryResults =
NULL;
1080 pThisRecord = pQueryResults;
1081 while (pThisRecord !=
NULL)
1083 pNextRecord = pThisRecord->
pNext;
1090 switch (pThisRecord->Flags.S.Section)
1109 switch (pThisRecord->wType)
1112 Addr4.
S_un.
S_addr = pThisRecord->Data.A.IpAddress;
1127 pThisRecord->Data.SOA.pNamePrimaryServer,
1128 pThisRecord->Data.SOA.pNameAdministrator,
1129 pThisRecord->Data.SOA.dwSerialNo);
1131 pThisRecord->Data.SOA.dwRefresh,
1132 pThisRecord->Data.SOA.dwRetry,
1133 pThisRecord->Data.SOA.dwExpire,
1134 pThisRecord->Data.SOA.dwDefaultTtl);
1143 pThisRecord->Data.MX.pNameExchange,
1144 pThisRecord->Data.MX.wPreference,
1145 pThisRecord->Data.MX.Pad);
1149 RtlCopyMemory(&Addr6, &pThisRecord->Data.AAAA.Ip6Address,
sizeof(Addr6));
1160 pThisRecord->Data.SRV.pNameTarget,
1161 pThisRecord->Data.SRV.wPriority,
1162 pThisRecord->Data.SRV.wWeight,
1163 pThisRecord->Data.SRV.wPort);
1168 pThisRecord = pNextRecord;
1187 if (DnsEntry ==
NULL)
1190 pThisEntry = DnsEntry;
1191 while (pThisEntry !=
NULL)
1193 pNextEntry = pThisEntry->
pNext;
1201 if (pThisEntry->pszName)
1205 pThisEntry = pNextEntry;
1211 PWSTR pszAdapterName)
1213 printf(
"\nSorry /showclassid adapter is not implemented yet\n");
1218 PWSTR pszAdapterName,
1223 ULONG adaptOutBufLen = 0;
1226 WCHAR szKeyName[256];
1243 if (pAdapterInfo ==
NULL)
1256 pAdapter = pAdapterInfo;
1269 pFoundAdapter = pAdapter;
1274 pAdapter = pAdapter->
Next;
1280 L"System\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\%S",
1281 pFoundAdapter->AdapterName);
1295 if (pszClassId ==
NULL)
1311 mbstowcs(szUnicodeAdapterName, pFoundAdapter->AdapterName,
strlen(pFoundAdapter->AdapterName) + 1);
1318 szUnicodeAdapterName,
1392 DoRegisterdns =
TRUE;
1396 DoDisplaydns =
TRUE;
1400 DoShowclassid =
TRUE;
1404 DoSetclassid =
TRUE;
1422 else if (DoFlushdns)
1424 else if (DoRegisterdns)
1426 else if (DoDisplaydns)
1436 else if (DoShowclassid)
1438 else if (DoSetclassid)
PRTL_UNICODE_STRING_BUFFER Path
#define IDS_DNSSECTIONAUTHORITY
#define IDS_DEFAULTGATEWAY
#define IDS_DNSRECORDTYPE
#define IDS_CONNECTIONDNSSUFFIX
#define IDS_UNKNOWNADAPTER
#define IDS_DNSSECTIONANSWER
#define IDS_DHCPSETIDSUCCESS
#define IDS_DHCPNOTENABLED
#define IDS_PRIMARYWINSSERVER
#define IDS_NODETYPEBCAST
#define IDS_DHCPSETIDERROR
#define IDS_DNSSUFFIXLIST
#define IDS_DNSRECORDLENGTH
#define IDS_DNSSECTIONADDITIONAL
#define IDS_DNSSECTIONQUESTION
#define IDS_LEASEOBTAINED
#define IDS_SECONDARYWINSSERVER
#define IDS_DNSRECORDNAME
#define IDS_DHCPNOADAPTER
#define IDS_PHYSICALADDRESS
#define IDS_AUTOCONFIGYES
#define IDS_DHCPRENEWERROR
#define IDS_DNSFLUSHERROR
#define IDS_MEDIADISCONNECTED
#define IDS_NODETYPEUNKNOWN
#define IDS_PRIMARYDNSSUFFIX
#define IDS_NODETYPEMIXED
#define IDS_DNSFLUSHSUCCESS
#define IDS_DHCPNOTCONNECTED
#define IDS_DHCPRELEASEERROR
#define IDS_NODETYPEHYBRID
#define RegCloseKey(hKey)
void ConPuts(FILE *fp, LPCWSTR psz)
#define ConInitStdStreams()
void ConResPrintf(FILE *fp, UINT nID,...)
#define ERROR_NOT_ENOUGH_MEMORY
static BOOL bFoundAdapter
DWORD APIENTRY DhcpCApiInitialize(_Out_ LPDWORD Version)
DWORD APIENTRY DhcpHandlePnPEvent(_In_ DWORD Unknown1, _In_ DWORD Unknown2, _In_ PWSTR AdapterName, _In_ PDHCP_PNP_EVENT PnpEvent, _In_ DWORD Unknown5)
DWORD APIENTRY DhcpReleaseParameters(_In_ PWSTR AdapterName)
DWORD APIENTRY DhcpAcquireParameters(_In_ PWSTR AdapterName)
VOID APIENTRY DhcpCApiCleanup(VOID)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegOpenKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired, _Out_ PHKEY phkResult)
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
#define ERROR_NO_MORE_ITEMS
#define HeapFree(x, y, z)
BOOL WINAPI DnsFlushResolverCache(VOID)
DNS_STATUS WINAPI DnsQuery_W(LPCWSTR Name, WORD Type, DWORD Options, PVOID Extra, PDNS_RECORD *QueryResultSet, PVOID *Reserved)
BOOL WINAPI DnsGetCacheDataTable(_Out_ PDNS_CACHE_ENTRY *DnsCache)
VOID WINAPI DnsRecordListFree(PDNS_RECORD list, DNS_FREE_TYPE type)
_ACRTIMP int __cdecl _wcsicmp(const wchar_t *, const wchar_t *)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
_ACRTIMP int __cdecl _wcsnicmp(const wchar_t *, const wchar_t *, size_t)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
static struct tm * localtime(const time_t *t)
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
HLOCAL NTAPI LocalFree(HLOCAL hMem)
_Must_inspect_result_ _In_ USAGE _In_ USHORT _In_ USAGE Usage
PCSTR PrintMacAddr(PBYTE Mac)
VOID ShowInfo(BOOL bShowHeader, BOOL bAll)
VOID GetInterfaceFriendlyName(_In_ PCWSTR lpDeviceName, _In_ DWORD cchFriendlyNameLength, _Out_ PWSTR pszFriendlyName)
_Ret_opt_z_ PWSTR timeToStr(_In_ time_t TimeStamp)
VOID Renew(PWSTR pszAdapterName)
VOID DoFormatMessage(_In_ LONG ErrorCode)
VOID ShowClassId(PWSTR pszAdapterName)
struct _RECORDTYPE * PRECORDTYPE
PWSTR GetUnicodeAdapterName(_In_ PSTR pszAnsiName)
struct _RECORDTYPE RECORDTYPE
static VOID PrintAdapterDescription(PSTR lpClass)
VOID SetClassId(PWSTR pszAdapterName, PWSTR pszClassId)
static VOID PrintNodeType(_In_ UINT NodeType)
VOID GetAdapterFriendlyName(_In_ PSTR lpClass, _In_ DWORD cchFriendlyNameLength, _Out_ PWSTR pszFriendlyName)
static VOID PrintAdapterTypeAndName(PIP_ADAPTER_INFO pAdapterInfo)
PCWSTR GetRecordTypeName(WORD wType)
static BOOL MatchWildcard(_In_ PWSTR pszExpression, _In_ PWSTR pszName)
static VOID DisplayDnsRecord(PWSTR pszName, WORD wType)
DWORD WINAPI GetIfEntry(PMIB_IFROW pIfRow)
DWORD WINAPI GetNetworkParams(PFIXED_INFO pFixedInfo, PULONG pOutBufLen)
DWORD WINAPI GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen)
DWORD WINAPI GetPerAdapterInfo(ULONG IfIndex, PIP_PER_ADAPTER_INFO pPerAdapterInfo, PULONG pOutBufLen)
BOOL WINAPI GetComputerNameExA(COMPUTER_NAME_FORMAT, LPSTR, LPDWORD)
#define MIB_IF_TYPE_ETHERNET
#define MIB_IF_TYPE_LOOPBACK
#define MIB_IF_TYPE_OTHER
#define IF_TYPE_IEEE80211
#define MIB_IF_OPER_STATUS_CONNECTED
#define MIB_IF_TYPE_TOKENRING
#define MIB_IF_OPER_STATUS_OPERATIONAL
_In_ NDIS_ERROR_CODE ErrorCode
NTSYSAPI PWSTR NTAPI RtlIpv4AddressToStringW(_In_ const struct in_addr *Addr, _Out_writes_(16) PWCHAR S)
NTSYSAPI PWSTR NTAPI RtlIpv6AddressToStringW(_In_ const struct in6_addr *Addr, _Out_writes_(46) PWSTR S)
#define LOCALE_USER_DEFAULT
INT ConMsgPuts(IN PCON_STREAM Stream, IN DWORD dwFlags, IN LPCVOID lpSource OPTIONAL, IN DWORD dwMessageId, IN DWORD dwLanguageId)
static const WCHAR szName[]
#define MAX_ADAPTER_NAME_LENGTH
IP_PER_ADAPTER_INFO_W2KSP1 * PIP_PER_ADAPTER_INFO
#define PEER_TO_PEER_NODETYPE
#define BROADCAST_NODETYPE
#define DNS_QUERY_NO_WIRE_QUERY
char DomainName[MAX_DOMAIN_NAME_LEN+4]
char HostName[MAX_HOSTNAME_LEN+4]
IP_ADDR_STRING DnsServerList
struct _DNS_CACHE_ENTRY * pNext
struct _DnsRecordW * pNext
BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH]
struct _IP_ADAPTER_INFO * Next
IP_ADDR_STRING SecondaryWinsServer
IP_ADDR_STRING IpAddressList
char AdapterName[MAX_ADAPTER_NAME_LENGTH+4]
IP_ADDR_STRING DhcpServer
IP_ADDR_STRING GatewayList
IP_ADDR_STRING PrimaryWinsServer
struct _IP_ADDR_STRING * Next
IP_ADDRESS_STRING IpAddress
INTERNAL_IF_OPER_STATUS dwOperStatus
union in_addr::@1116 S_un
#define LANG_USER_DEFAULT
#define RtlCopyMemory(Destination, Source, Length)
DWORD WINAPI GetLastError(void)
#define FORMAT_MESSAGE_FROM_SYSTEM
#define ERROR_BUFFER_OVERFLOW
#define DNS_INFO_NO_RECORDS
#define DNS_ERROR_RCODE_NAME_ERROR
#define HKEY_LOCAL_MACHINE