13#define WIN32_NO_STATUS
115 static TCHAR szType[8];
135 static CHAR MacAddr[20];
137 sprintf(MacAddr,
"%02X-%02X-%02X-%02X-%02X-%02X",
138 Mac[0], Mac[1], Mac[2], Mac[3], Mac[4], Mac[5]);
149 INT DateCchSize, TimeCchSize, TotalCchSize,
i;
150 PTSTR DateTimeString, psz;
178 TotalCchSize = DateCchSize + TimeCchSize;
192 DateTimeString[
i - 1] =
_T(
' ');
193 psz = DateTimeString +
i;
199 return DateTimeString;
240 if (pszUnicodeName ==
NULL)
244 pszUnicodeName[
i] = (
WCHAR)pszAnsiName[
i];
247 return pszUnicodeName;
258 LPSTR PrePath =
"SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\";
259 LPSTR PostPath =
"\\Connection";
269 sprintf(
Path,
"%s%s%s", PrePath, lpClass, PostPath);
277 dwDataSize = cchFriendlyNameLength *
sizeof(
WCHAR);
282 (
PBYTE)pszFriendlyName,
298 LPWSTR PrePath =
L"SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\";
299 LPWSTR PostPath =
L"\\Connection";
300 LPWSTR DevicePrefix =
L"\\DEVICE\\TCPIP_";
308 PathSize =
wcslen(PrePath) +
wcslen(lpDeviceName) - dwPrefixLength +
wcslen(PostPath) + 1;
312 swprintf(
Path,
L"%s%s%s", PrePath, &lpDeviceName[dwPrefixLength], PostPath);
320 dwDataSize = cchFriendlyNameLength *
sizeof(
WCHAR);
325 (
PBYTE)pszFriendlyName,
342 TCHAR szPrePath[] =
_T(
"SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002bE10318}\\");
385 PathSize *
sizeof(
TCHAR));
415 if (lpKeyClass ==
NULL)
433 if (!
strcmp(lpClass, lpKeyClass))
448 if (lpConDesc !=
NULL)
470 if (hBaseKey !=
NULL)
476 if (lpKeyClass !=
NULL)
518 switch (pAdapterInfo->
Type)
566 ULONG adaptOutBufLen = 0;
568 ULONG netOutBufLen = 0;
570 ULONG ulPerAdapterInfoLength = 0;
572 DWORD dwDomainNameSize = 0;
578 if (dwDomainNameSize > 0)
582 dwDomainNameSize *
sizeof(
TCHAR));
583 if (pszDomainName !=
NULL)
594 if (pAdapterInfo ==
NULL)
617 if (pFixedInfo ==
NULL)
633 pAdapter = pAdapterInfo;
655 if (pszDomainName !=
NULL && pszDomainName[0] != 0)
678 if (pPerAdapterInfo !=
NULL)
709 if (pPerAdapterInfo !=
NULL)
726 pAdapter = pAdapter->
Next;
750 pIPAddr = pIPAddr->
Next;
761 PTSTR DateTimeString;
778 pPerAdapterInfo =
NULL;
780 pAdapter = pAdapter->
Next;
798 WCHAR *pCharE, *pCharN, charE, charN;
800 if (pszExpression ==
NULL)
806 pCharE = pszExpression;
815 if (*(pCharE + 1) != charN)
820 else if (charE ==
L'?')
825 else if (charE == charN)
845 ULONG adaptOutBufLen = 0;
864 if (pAdapterInfo ==
NULL)
879 pAdapter = pAdapterInfo;
900 DPRINT1(
"AdapterName: %S\n", szUnicodeAdapterName);
926 pAdapter = pAdapter->
Next;
951 ULONG adaptOutBufLen = 0;
970 if (pAdapterInfo ==
NULL)
985 pAdapter = pAdapterInfo;
1004 DPRINT1(
"AdapterName: %S\n", szUnicodeAdapterName);
1025 pAdapter = pAdapter->
Next;
1064 _tprintf(
_T(
"\nSorry /registerdns is not implemented yet\n"));
1082 pQueryResults =
NULL;
1102 pThisRecord = pQueryResults;
1103 while (pThisRecord !=
NULL)
1105 pNextRecord = pThisRecord->
pNext;
1112 switch (pThisRecord->Flags.S.Section)
1131 switch (pThisRecord->wType)
1134 Addr4.
S_un.
S_addr = pThisRecord->Data.A.IpAddress;
1149 pThisRecord->Data.SOA.pNamePrimaryServer,
1150 pThisRecord->Data.SOA.pNameAdministrator,
1151 pThisRecord->Data.SOA.dwSerialNo);
1153 pThisRecord->Data.SOA.dwRefresh,
1154 pThisRecord->Data.SOA.dwRetry,
1155 pThisRecord->Data.SOA.dwExpire,
1156 pThisRecord->Data.SOA.dwDefaultTtl);
1165 pThisRecord->Data.MX.pNameExchange,
1166 pThisRecord->Data.MX.wPreference,
1167 pThisRecord->Data.MX.Pad);
1182 pThisRecord->Data.SRV.pNameTarget,
1183 pThisRecord->Data.SRV.wPriority,
1184 pThisRecord->Data.SRV.wWeight,
1185 pThisRecord->Data.SRV.wPort);
1190 pThisRecord = pNextRecord;
1209 if (DnsEntry ==
NULL)
1212 pThisEntry = DnsEntry;
1213 while (pThisEntry !=
NULL)
1215 pNextEntry = pThisEntry->
pNext;
1223 if (pThisEntry->pszName)
1227 pThisEntry = pNextEntry;
1235 _tprintf(
_T(
"\nSorry /showclassid adapter is not implemented yet\n"));
1245 ULONG adaptOutBufLen = 0;
1248 WCHAR szKeyName[256];
1263 if (pAdapterInfo ==
NULL)
1276 pAdapter = pAdapterInfo;
1289 pFoundAdapter = pAdapter;
1294 pAdapter = pAdapter->
Next;
1300 L"System\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\%S",
1301 pFoundAdapter->AdapterName);
1315 if (pszClassId ==
NULL)
1358 if ((
argc > 1) && (
argv[1][0]==
'/' ||
argv[1][0]==
'-'))
1382 DoRegisterdns =
TRUE;
1386 DoDisplaydns =
TRUE;
1390 DoShowclassid =
TRUE;
1394 DoSetclassid =
TRUE;
1412 else if (DoFlushdns)
1414 else if (DoRegisterdns)
1416 else if (DoDisplaydns)
1426 else if (DoShowclassid)
1428 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)
static BOOL bFoundAdapter
void WINAPI DhcpCApiCleanup(void)
DWORD APIENTRY DhcpReleaseParameters(_In_ PWSTR AdapterName)
DWORD APIENTRY DhcpCApiInitialize(LPDWORD Version)
DWORD APIENTRY DhcpAcquireParameters(_In_ PWSTR AdapterName)
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 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)
_Ret_opt_z_ PTSTR timeToStr(_In_ time_t TimeStamp)
VOID ShowInfo(BOOL bShowHeader, BOOL bAll)
VOID DoFormatMessage(LONG ErrorCode)
VOID SetClassId(LPWSTR pszAdapterName, LPWSTR pszClassId)
LPTSTR GetRecordTypeName(WORD wType)
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)
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
#define MAX_ADAPTER_NAME_LENGTH
struct _IP_PER_ADAPTER_INFO * PIP_PER_ADAPTER_INFO
#define PEER_TO_PEER_NODETYPE
#define BROADCAST_NODETYPE
#define sprintf(buf, format,...)
_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[]
_CRTIMP struct tm *__cdecl localtime(const time_t *_Time)
IP_ADDR_STRING DnsServerList
char HostName[MAX_HOSTNAME_LEN+4]
char DomainName[MAX_DOMAIN_NAME_LEN+4]
struct _DNS_CACHE_ENTRY * pNext
struct _DnsRecordW * pNext
IP_ADDR_STRING SecondaryWinsServer
IP_ADDR_STRING IpAddressList
BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH]
IP_ADDR_STRING DhcpServer
char AdapterName[MAX_ADAPTER_NAME_LENGTH+4]
IP_ADDR_STRING GatewayList
struct _IP_ADAPTER_INFO * Next
IP_ADDR_STRING PrimaryWinsServer
struct _IP_ADDR_STRING * Next
IP_ADDRESS_STRING IpAddress
INTERNAL_IF_OPER_STATUS dwOperStatus
union in_addr::@1148 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 DNS_QUERY_NO_WIRE_QUERY
#define ERROR_BUFFER_OVERFLOW
#define DNS_INFO_NO_RECORDS
#define DNS_ERROR_RCODE_NAME_ERROR
#define HKEY_LOCAL_MACHINE