12#define WIN32_NO_STATUS
111 static WCHAR szType[8];
131 static CHAR MacAddr[20];
133 sprintf(MacAddr,
"%02X-%02X-%02X-%02X-%02X-%02X",
134 Mac[0], Mac[1], Mac[2], Mac[3], Mac[4], Mac[5]);
145 INT DateCchSize, TimeCchSize, TotalCchSize,
i;
146 PWSTR DateTimeString, psz;
174 TotalCchSize = DateCchSize + TimeCchSize;
188 DateTimeString[
i - 1] =
L' ';
189 psz = DateTimeString +
i;
195 return DateTimeString;
238 if (pszUnicodeName ==
NULL)
242 pszUnicodeName[
i] = (
WCHAR)pszAnsiName[
i];
245 return pszUnicodeName;
256 LPSTR PrePath =
"SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\";
257 LPSTR PostPath =
"\\Connection";
267 sprintf(
Path,
"%s%s%s", PrePath, lpClass, PostPath);
275 dwDataSize = cchFriendlyNameLength *
sizeof(
WCHAR);
280 (
PBYTE)pszFriendlyName,
296 LPWSTR PrePath =
L"SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\";
297 LPWSTR PostPath =
L"\\Connection";
298 LPWSTR DevicePrefix =
L"\\DEVICE\\TCPIP_";
306 PathSize =
wcslen(PrePath) +
wcslen(lpDeviceName) - dwPrefixLength +
wcslen(PostPath) + 1;
310 swprintf(
Path,
L"%s%s%s", PrePath, &lpDeviceName[dwPrefixLength], PostPath);
318 dwDataSize = cchFriendlyNameLength *
sizeof(
WCHAR);
323 (
PBYTE)pszFriendlyName,
340 WCHAR szPrePath[] =
L"SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002bE10318}\\";
383 PathSize *
sizeof(
WCHAR));
413 if (lpKeyClass ==
NULL)
431 if (!
strcmp(lpClass, lpKeyClass))
446 if (lpConDesc !=
NULL)
468 if (hBaseKey !=
NULL)
474 if (lpKeyClass !=
NULL)
516 switch (pAdapterInfo->
Type)
564 ULONG adaptOutBufLen = 0;
566 ULONG netOutBufLen = 0;
568 ULONG ulPerAdapterInfoLength = 0;
570 DWORD dwDomainNameSize = 0;
576 if (dwDomainNameSize > 0)
580 dwDomainNameSize *
sizeof(
CHAR));
581 if (pszDomainName !=
NULL)
592 if (pAdapterInfo ==
NULL)
615 if (pFixedInfo ==
NULL)
631 pAdapter = pAdapterInfo;
653 if (pszDomainName !=
NULL && pszDomainName[0] != 0)
676 if (pPerAdapterInfo !=
NULL)
707 if (pPerAdapterInfo !=
NULL)
724 pAdapter = pAdapter->
Next;
748 pIPAddr = pIPAddr->
Next;
759 PWSTR DateTimeString;
776 pPerAdapterInfo =
NULL;
778 pAdapter = pAdapter->
Next;
796 WCHAR *pCharE, *pCharN, charE, charN;
798 if (pszExpression ==
NULL)
804 pCharE = pszExpression;
813 if (*(pCharE + 1) != charN)
818 else if (charE ==
L'?')
823 else if (charE == charN)
843 ULONG adaptOutBufLen = 0;
862 if (pAdapterInfo ==
NULL)
877 pAdapter = pAdapterInfo;
898 DPRINT1(
"AdapterName: %S\n", szUnicodeAdapterName);
924 pAdapter = pAdapter->
Next;
949 ULONG adaptOutBufLen = 0;
968 if (pAdapterInfo ==
NULL)
983 pAdapter = pAdapterInfo;
1002 DPRINT1(
"AdapterName: %S\n", szUnicodeAdapterName);
1023 pAdapter = pAdapter->
Next;
1062 printf(
"\nSorry /registerdns is not implemented yet\n");
1080 pQueryResults =
NULL;
1100 pThisRecord = pQueryResults;
1101 while (pThisRecord !=
NULL)
1103 pNextRecord = pThisRecord->
pNext;
1110 switch (pThisRecord->Flags.S.Section)
1129 switch (pThisRecord->wType)
1132 Addr4.
S_un.
S_addr = pThisRecord->Data.A.IpAddress;
1147 pThisRecord->Data.SOA.pNamePrimaryServer,
1148 pThisRecord->Data.SOA.pNameAdministrator,
1149 pThisRecord->Data.SOA.dwSerialNo);
1151 pThisRecord->Data.SOA.dwRefresh,
1152 pThisRecord->Data.SOA.dwRetry,
1153 pThisRecord->Data.SOA.dwExpire,
1154 pThisRecord->Data.SOA.dwDefaultTtl);
1163 pThisRecord->Data.MX.pNameExchange,
1164 pThisRecord->Data.MX.wPreference,
1165 pThisRecord->Data.MX.Pad);
1180 pThisRecord->Data.SRV.pNameTarget,
1181 pThisRecord->Data.SRV.wPriority,
1182 pThisRecord->Data.SRV.wWeight,
1183 pThisRecord->Data.SRV.wPort);
1188 pThisRecord = pNextRecord;
1207 if (DnsEntry ==
NULL)
1210 pThisEntry = DnsEntry;
1211 while (pThisEntry !=
NULL)
1213 pNextEntry = pThisEntry->
pNext;
1221 if (pThisEntry->pszName)
1225 pThisEntry = pNextEntry;
1233 printf(
"\nSorry /showclassid adapter is not implemented yet\n");
1243 ULONG adaptOutBufLen = 0;
1246 WCHAR szKeyName[256];
1261 if (pAdapterInfo ==
NULL)
1274 pAdapter = pAdapterInfo;
1287 pFoundAdapter = pAdapter;
1292 pAdapter = pAdapter->
Next;
1298 L"System\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\%S",
1299 pFoundAdapter->AdapterName);
1313 if (pszClassId ==
NULL)
1383 DoRegisterdns =
TRUE;
1387 DoDisplaydns =
TRUE;
1391 DoShowclassid =
TRUE;
1395 DoSetclassid =
TRUE;
1413 else if (DoFlushdns)
1415 else if (DoRegisterdns)
1417 else if (DoDisplaydns)
1427 else if (DoShowclassid)
1429 else if (DoSetclassid)
PRTL_UNICODE_STRING_BUFFER Path
int strcmp(const char *String1, const char *String2)
ACPI_SIZE strlen(const char *String)
void ConPuts(FILE *fp, LPCWSTR psz)
#define ConInitStdStreams()
void ConResPrintf(FILE *fp, UINT nID,...)
#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)
#define ERROR_NOT_ENOUGH_MEMORY
static BOOL bFoundAdapter
DWORD APIENTRY DhcpCApiInitialize(_Out_ LPDWORD Version)
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)
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
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
VOID Renew(LPWSTR pszAdapterName)
VOID GetInterfaceFriendlyName(_In_ LPWSTR lpDeviceName, _In_ DWORD cchFriendlyNameLength, _Out_ LPWSTR pszFriendlyName)
VOID ShowInfo(BOOL bShowHeader, BOOL bAll)
_Ret_opt_z_ PWSTR timeToStr(_In_ time_t TimeStamp)
VOID DoFormatMessage(_In_ LONG ErrorCode)
VOID SetClassId(LPWSTR pszAdapterName, LPWSTR pszClassId)
struct _RECORDTYPE * PRECORDTYPE
static VOID PrintAdapterDescription(LPSTR lpClass)
struct _RECORDTYPE RECORDTYPE
VOID ShowClassId(LPWSTR pszAdapterName)
PCHAR PrintMacAddr(PBYTE Mac)
LPWSTR GetUnicodeAdapterName(_In_ LPSTR pszAnsiName)
static VOID PrintNodeType(_In_ UINT NodeType)
LPWSTR GetRecordTypeName(WORD wType)
static VOID PrintAdapterTypeAndName(PIP_ADAPTER_INFO pAdapterInfo)
static BOOL MatchWildcard(_In_ PWSTR pszExpression, _In_ PWSTR pszName)
VOID GetAdapterFriendlyName(_In_ LPSTR lpClass, _In_ DWORD cchFriendlyNameLength, _Out_ LPWSTR pszFriendlyName)
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
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
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
_CRTIMP struct tm *__cdecl localtime(const time_t *_Time)
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::@1141 S_un
#define RtlCopyMemory(Destination, Source, Length)
DWORD WINAPI GetLastError(void)
#define FORMAT_MESSAGE_IGNORE_INSERTS
#define FORMAT_MESSAGE_FROM_SYSTEM
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
#define ERROR_BUFFER_OVERFLOW
#define DNS_INFO_NO_RECORDS
#define DNS_ERROR_RCODE_NAME_ERROR
#define HKEY_LOCAL_MACHINE