*/
/*
* TODO:
- * display multiple adapters
* fix renew / release
* implement flushdns, registerdns, displaydns, showclassid, setclassid
* allow globbing on adapter names
#define _UNICODE
-PTCHAR GetNodeTypeName(UINT NodeType)
+
+LPCTSTR GetNodeTypeName(UINT NodeType)
{
switch (NodeType) {
case 1: return _T("Broadcast");
}
}
-PTCHAR GetInterfaceTypeName(UINT InterfaceType)
+LPCTSTR GetInterfaceTypeName(UINT InterfaceType)
{
switch (InterfaceType) {
case MIB_IF_TYPE_OTHER: return _T("Other Type Of Adapter");
INT ShowInfo(BOOL bAll)
{
- PIP_ADAPTER_INFO pAdapterInfo;
+ PIP_ADAPTER_INFO pAdapterInfo = NULL;
PIP_ADAPTER_INFO pAdapter = NULL;
ULONG adaptOutBufLen;
PFIXED_INFO pFixedInfo;
ULONG netOutBufLen;
- PIP_ADDR_STRING pIPAddr;
+ PIP_ADDR_STRING pIPAddr = NULL;
+
+ DWORD ErrRet = 0;
/* assign memory for call to GetNetworkParams */
pFixedInfo = (FIXED_INFO *) GlobalAlloc( GPTR, sizeof( FIXED_INFO ) );
adaptOutBufLen = sizeof(IP_ADAPTER_INFO);
/* set required buffer size */
- if(GetNetworkParams(pFixedInfo, &netOutBufLen) == ERROR_BUFFER_OVERFLOW)
- {
+ if(GetNetworkParams(pFixedInfo, &netOutBufLen) == ERROR_BUFFER_OVERFLOW)
+ {
GlobalFree(pFixedInfo);
pFixedInfo = (FIXED_INFO *) GlobalAlloc(GPTR, netOutBufLen);
}
/* set required buffer size */
- if (GetAdaptersInfo( pAdapterInfo, &adaptOutBufLen) == ERROR_BUFFER_OVERFLOW)
- {
+ if (GetAdaptersInfo( pAdapterInfo, &adaptOutBufLen) == ERROR_BUFFER_OVERFLOW)
+ {
free(pAdapterInfo);
pAdapterInfo = (IP_ADAPTER_INFO *) malloc (adaptOutBufLen);
}
- if (GetAdaptersInfo(pAdapterInfo, &adaptOutBufLen) == NO_ERROR)
- {
- if (GetNetworkParams(pFixedInfo, &netOutBufLen) == NO_ERROR)
- {
- pAdapter = pAdapterInfo;
+ if ((ErrRet = GetAdaptersInfo(pAdapterInfo, &adaptOutBufLen)) != NO_ERROR)
+ {
+ _tprintf(_T("GetAdaptersInfo failed : "));
+ DoFormatMessage(ErrRet);
+ return EXIT_FAILURE;
+ }
+
+ if ((ErrRet = GetNetworkParams(pFixedInfo, &netOutBufLen)) != NO_ERROR)
+ {
+ _tprintf(_T("GetNetworkParams failed : "));
+ DoFormatMessage(ErrRet);
+ return EXIT_FAILURE;
+ }
+
+ pAdapter = pAdapterInfo;
//HKEY hKey;
//LPCTSTR lpSubKey = _T("SYSTEM\\ControlSet\\Control\\Network");
- _tprintf(_T("\nReactOS IP Configuration\n\n"));
+ _tprintf(_T("\nReactOS IP Configuration\n\n"));
+ while (pAdapter)
+ {
if (bAll)
{
_tprintf(_T("\tHost Name . . . . . . . . . . . . : %s\n"), pFixedInfo->HostName);
_tprintf(_T("\tDNS Suffix Search List. . . . . . : %s\n"), pFixedInfo->DomainName);
}
- _tprintf(_T("\n%s Local Area Connection: \n\n"), GetInterfaceTypeName(pAdapter->Type));
+ _tprintf(_T("\n%s ...... : \n\n"), GetInterfaceTypeName(pAdapter->Type));
+
+ /* check if the adapter is connected to the media */
+ if (_tcscmp(pAdapter->IpAddressList.IpAddress.String, "0.0.0.0") == 0)
+ {
+ _tprintf(_T("\tMedia State . . . . . . . . . . . : Media disconnected\n"));
+ pAdapter = pAdapter->Next;
+ continue;
+ }
+
_tprintf(_T("\tConnection-specific DNS Suffix. . : %s\n"), pFixedInfo->DomainName);
if (bAll)
}
}
_tprintf(_T("\n"));
- }
- else
- _tprintf(_T("Call to GetNetworkParams failed.\n"));
- }
- else
- _tprintf(_T("Call to GetAdaptersInfo failed.\n"));
+ pAdapter = pAdapter->Next;
+ }
+
return 0;
}