15 #define WIN32_NO_STATUS 106 static TCHAR szType[8];
145 static TCHAR szNode[14];
181 static TCHAR szIntType[25];
233 static TCHAR MacAddr[20];
235 _stprintf(MacAddr,
_T(
"%02x-%02x-%02x-%02x-%02x-%02x"),
236 Mac[0], Mac[1], Mac[2], Mac[3], Mac[4], Mac[5]);
247 INT DateCchSize, TimeCchSize, TotalCchSize,
i;
248 PTSTR DateTimeString, psz;
276 TotalCchSize = DateCchSize + TimeCchSize;
290 DateTimeString[
i - 1] =
_T(
' ');
291 psz = DateTimeString +
i;
297 return DateTimeString;
336 LPTSTR PrePath =
_T(
"SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\");
337 LPTSTR PostPath =
_T(
"\\Connection");
366 if (ConTypeTmp ==
NULL)
413 TCHAR szPrePath[] =
_T(
"SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002bE10318}\\");
456 PathSize *
sizeof(
TCHAR));
477 _T(
"NetCfgInstanceId"),
486 if (lpKeyClass ==
NULL)
490 _T(
"NetCfgInstanceId"),
504 if (!
lstrcmp(lpClass, lpKeyClass))
519 if (lpConDesc ==
NULL)
544 if (hBaseKey !=
NULL)
550 if (lpKeyClass !=
NULL)
562 ULONG adaptOutBufLen = 0;
564 ULONG netOutBufLen = 0;
566 ULONG ulPerAdapterInfoLength = 0;
568 DWORD dwDomainNameSize = 0;
574 if (dwDomainNameSize > 0)
578 dwDomainNameSize *
sizeof(
TCHAR));
579 if (pszDomainName !=
NULL)
590 if (pAdapterInfo ==
NULL)
613 if (pFixedInfo ==
NULL)
629 pAdapter = pAdapterInfo;
631 _tprintf(
_T(
"\nReactOS IP Configuration\n\n"));
635 _tprintf(
_T(
"\tPrimary DNS Suffix. . . . . . . . : %s\n"), (pszDomainName !=
NULL) ? pszDomainName :
"");
638 _tprintf(
_T(
"\tIP Routing Enabled. . . . . . . . : Yes\n"));
640 _tprintf(
_T(
"\tIP Routing Enabled. . . . . . . . : No\n"));
642 _tprintf(
_T(
"\tWINS Proxy enabled. . . . . . . . : Yes\n"));
644 _tprintf(
_T(
"\tWINS Proxy enabled. . . . . . . . : No\n"));
645 if (pszDomainName !=
NULL && pszDomainName[0] != 0)
647 _tprintf(
_T(
"\tDNS Suffix Search List. . . . . . : %s\n"), pszDomainName);
658 LPTSTR IntType, myConType;
667 _tprintf(
_T(
"\n%s %s: \n\n"), IntType , myConType);
674 if (pPerAdapterInfo !=
NULL)
684 _tprintf(
_T(
"\tMedia State . . . . . . . . . . . : Media disconnected\n"));
694 _tprintf(
_T(
"\tDescription . . . . . . . . . . . : %s\n"), lpDesc);
701 _tprintf(
_T(
"\tDHCP Enabled. . . . . . . . . . . : Yes\n"));
702 if (pPerAdapterInfo !=
NULL)
705 _tprintf(
_T(
"\tAutoconfiguration Enabled . . . . : Yes\n"));
707 _tprintf(
_T(
"\tAutoconfiguration Enabled . . . . : No\n"));
712 _tprintf(
_T(
"\tDHCP Enabled. . . . . . . . . . . : No\n"));
719 pAdapter = pAdapter->
Next;
728 _tprintf(
_T(
"\tDefault Gateway . . . . . . . . . :\n"));
737 _tprintf(
_T(
"\tDNS Servers . . . . . . . . . . . : "));
742 _tprintf(
_T(
"\t\t\t\t\t %s\n"), pIPAddr ->IpAddress.String );
743 pIPAddr = pIPAddr->
Next;
754 PTSTR DateTimeString;
756 _tprintf(
_T(
"\tLease Obtained. . . . . . . . . . : %s\n"), DateTimeString ? DateTimeString :
_T(
"N/A"));
762 _tprintf(
_T(
"\tLease Expires . . . . . . . . . . : %s\n"), DateTimeString ? DateTimeString :
_T(
"N/A"));
772 pPerAdapterInfo =
NULL;
774 pAdapter = pAdapter->
Next;
796 ULONG ulOutBufLen = 0;
814 _tprintf(
_T(
"\nAn error occured while releasing interface %ls : \n"), AdapterInfo.
Name);
857 ULONG ulOutBufLen = 0;
890 _tprintf(
_T(
"\nAn error occured while renew interface %s : "),
_T(
"*name*"));
917 _tprintf(
_T(
"\nReactOS IP Configuration\n\n"));
920 _tprintf(
_T(
"The DNS Resolver Cache has been deleted.\n"));
929 _tprintf(
_T(
"\nSorry /registerdns is not implemented yet\n"));
944 pQueryResults =
NULL;
956 _tprintf(
_T(
"\t----------------------------------------\n"));
962 _tprintf(
_T(
"\t----------------------------------------\n"));
969 _tprintf(
_T(
"\t----------------------------------------\n"));
971 pThisRecord = pQueryResults;
972 while (pThisRecord !=
NULL)
974 pNextRecord = pThisRecord->pNext;
976 _tprintf(
_T(
"\tRecord Name . . . . . : %S\n"), pThisRecord->pName);
977 _tprintf(
_T(
"\tRecord Type . . . . . : %hu\n"), pThisRecord->wType);
978 _tprintf(
_T(
"\tTime To Live. . . . . : %lu\n"), pThisRecord->dwTtl);
979 _tprintf(
_T(
"\tData Length . . . . . : %hu\n"), pThisRecord->wDataLength);
981 switch (pThisRecord->Flags.S.Section)
984 _tprintf(
_T(
"\tSection . . . . . . . : Question\n"));
988 _tprintf(
_T(
"\tSection . . . . . . . : Answer\n"));
992 _tprintf(
_T(
"\tSection . . . . . . . : Authority\n"));
996 _tprintf(
_T(
"\tSection . . . . . . . : Additional\n"));
1000 switch (pThisRecord->wType)
1003 Addr4.
S_un.
S_addr = pThisRecord->Data.A.IpAddress;
1005 _tprintf(
_T(
"\tA (Host) Record . . . : %S\n"), szBuffer);
1009 _tprintf(
_T(
"\tNS Record . . . . . . : %S\n"), pThisRecord->Data.NS.pNameHost);
1013 _tprintf(
_T(
"\tCNAME Record. . . . . : %S\n"), pThisRecord->Data.CNAME.pNameHost);
1017 _tprintf(
_T(
"\tSOA Record. . . . . . : \n"));
1021 _tprintf(
_T(
"\tPTR Record. . . . . . : %S\n"), pThisRecord->Data.PTR.pNameHost);
1025 _tprintf(
_T(
"\tMX Record . . . . . . : \n"));
1031 _tprintf(
_T(
"\tAAAA Record . . . . . : %S\n"), szBuffer);
1035 _tprintf(
_T(
"\tATMA Record . . . . . : \n"));
1039 _tprintf(
_T(
"\tSRV Record. . . . . . : \n"));
1044 pThisRecord = pNextRecord;
1056 _tprintf(
_T(
"\nReactOS IP Configuration\n\n"));
1064 if (DnsEntry ==
NULL)
1067 pThisEntry = DnsEntry;
1068 while (pThisEntry !=
NULL)
1070 pNextEntry = pThisEntry->
pNext;
1072 if (pThisEntry->wType1 != 0)
1075 if (pThisEntry->wType2 != 0)
1078 if (pThisEntry->pszName)
1082 pThisEntry = pNextEntry;
1105 if (lpUsage ==
NULL)
1137 if ((
argc > 1) && (
argv[1][0]==
'/' ||
argv[1][0]==
'-'))
1161 DoRegisterdns =
TRUE;
1165 DoDisplaydns =
TRUE;
1169 DoShowclassid =
TRUE;
1173 DoSetclassid =
TRUE;
1191 else if (DoFlushdns)
1193 else if (DoRegisterdns)
1195 else if (DoDisplaydns)
1202 _tprintf(
_T(
"\nSorry /release [adapter] is not implemented yet\n"));
1205 _tprintf(
_T(
"\nSorry /renew [adapter] is not implemented yet\n"));
1206 else if (DoShowclassid)
1207 _tprintf(
_T(
"\nSorry /showclassid adapter is not implemented yet\n"));
1208 else if (DoSetclassid)
1209 _tprintf(
_T(
"\nSorry /setclassid adapter is not implemented yet\n"));
1215 _tprintf(
_T(
"\nSorry /setclassid adapter [classid]is not implemented yet\n"));
DWORD WINAPI IpReleaseAddress(PIP_ADAPTER_INDEX_MAP AdapterInfo)
static const WCHAR szName[]
IP_ADAPTER_INDEX_MAP Adapter[1]
IP_ADDR_STRING DhcpServer
_In_ NDIS_ERROR_CODE ErrorCode
NTSYSAPI PWSTR NTAPI RtlIpv4AddressToStringW(_In_ const struct in_addr *Addr, _Out_writes_(16) PWCHAR S)
struct _RECORDTYPE * PRECORDTYPE
#define ERROR_NO_MORE_ITEMS
LPTSTR GetConnectionType(LPTSTR lpClass)
int _tcscmp(const _TCHAR *s1, const _TCHAR *s2)
#define ERROR_BUFFER_OVERFLOW
#define LOCALE_USER_DEFAULT
DWORD WINAPI GetInterfaceInfo(PIP_INTERFACE_INFO pIfTable, PULONG dwOutBufLen)
IP_ADDRESS_STRING IpAddress
struct _IP_ADDR_STRING * Next
#define MIB_IF_TYPE_OTHER
IP_ADDR_STRING SecondaryWinsServer
LPTSTR GetInterfaceTypeName(UINT InterfaceType)
IN PVOID IN PVOID IN USHORT IN USHORT Size
DWORD WINAPI GetLastError(VOID)
#define DNS_INFO_NO_RECORDS
BOOL WINAPI GetComputerNameExA(COMPUTER_NAME_FORMAT, LPSTR, LPDWORD)
VOID WINAPI DnsRecordListFree(PDNS_RECORD list, DNS_FREE_TYPE type)
#define MIB_IF_TYPE_LOOPBACK
char AdapterName[MAX_ADAPTER_NAME_LENGTH+4]
struct _DNS_CACHE_ENTRY * pNext
#define DNS_ERROR_RCODE_NAME_ERROR
DWORD WINAPI IpRenewAddress(PIP_ADAPTER_INDEX_MAP AdapterInfo)
LPTSTR GetConnectionDescription(LPTSTR lpClass)
int main(int argc, char *argv[])
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
DWORD WINAPI GetNetworkParams(PFIXED_INFO pFixedInfo, PULONG pOutBufLen)
size_t __cdecl _tcslen(const _TCHAR *str)
DNS_STATUS WINAPI DnsQuery_W(LPCWSTR Name, WORD Type, DWORD Options, PVOID Extra, PDNS_RECORD *QueryResultSet, PVOID *Reserved)
VOID Release(LPTSTR Index)
char DomainName[MAX_DOMAIN_NAME_LEN+4]
BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH]
#define FORMAT_MESSAGE_FROM_SYSTEM
WCHAR Name[MAX_ADAPTER_NAME]
LPTSTR GetRecordTypeName(WORD wType)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
_In_ WDFCOLLECTION _In_ ULONG Index
BOOL WINAPI DnsGetCacheDataTable(_Out_ PDNS_CACHE_ENTRY *DnsCache)
DWORD WINAPI GetPerAdapterInfo(ULONG IfIndex, PIP_PER_ADAPTER_INFO pPerAdapterInfo, PULONG pOutBufLen)
#define MIB_IF_TYPE_ETHERNET
struct _RECORDTYPE RECORDTYPE
struct _IP_PER_ADAPTER_INFO * PIP_PER_ADAPTER_INFO
PTCHAR PrintMacAddr(PBYTE Mac)
#define MIB_IF_TYPE_TOKENRING
char HostName[MAX_HOSTNAME_LEN+4]
_CRTIMP struct tm *__cdecl localtime(const time_t *_Time)
_Ret_opt_z_ PTSTR timeToStr(_In_ time_t TimeStamp)
#define FORMAT_MESSAGE_IGNORE_INSERTS
LPTSTR GetNodeTypeName(UINT NodeType)
PRTL_UNICODE_STRING_BUFFER Path
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)
IP_ADDR_STRING GatewayList
DWORD WINAPI GetIfEntry(PMIB_IFROW pIfRow)
#define DNS_QUERY_NO_WIRE_QUERY
DWORD WINAPI SizeofResource(HINSTANCE hModule, HRSRC hRsrc)
#define MIB_IF_OPER_STATUS_CONNECTED
IP_ADDR_STRING PrimaryWinsServer
DWORD WINAPI GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen)
#define RtlCopyMemory(Destination, Source, Length)
INTERNAL_IF_OPER_STATUS dwOperStatus
IP_ADDR_STRING DnsServerList
#define MIB_IF_OPER_STATUS_OPERATIONAL
BOOL WINAPI DnsFlushResolverCache(VOID)
union in_addr::@1002 S_un
#define HeapFree(x, y, z)
#define RegCloseKey(hKey)
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID InterfaceType
struct _IP_ADAPTER_INFO * Next
static VOID DisplayDnsRecord(PWSTR pszName, WORD wType)
int LoadStringAndOem(HINSTANCE hInst, UINT uID, LPTSTR szNode, int byteSize)
NTSYSAPI PWSTR NTAPI RtlIpv6AddressToStringW(_In_ const struct in6_addr *Addr, _Out_writes_(46) PWSTR S)
IP_ADDR_STRING IpAddressList
#define HKEY_LOCAL_MACHINE
#define ERROR_INSUFFICIENT_BUFFER
VOID DoFormatMessage(LONG ErrorCode)