https://git.reactos.org/?p=reactos.git;a=commitdiff;h=50605143f66a142b80672aba107d3672bcab1936

commit 50605143f66a142b80672aba107d3672bcab1936
Author:     Eric Kohl <[email protected]>
AuthorDate: Sun Nov 17 13:23:40 2019 +0100
Commit:     Eric Kohl <[email protected]>
CommitDate: Sun Nov 17 13:24:25 2019 +0100

    [IPCONFIG] Display missing record types and record names
---
 base/applications/network/ipconfig/ipconfig.c | 111 ++++++++++++++++++++++++--
 1 file changed, 106 insertions(+), 5 deletions(-)

diff --git a/base/applications/network/ipconfig/ipconfig.c 
b/base/applications/network/ipconfig/ipconfig.c
index c81c6e31ca8..e6cd2449902 100644
--- a/base/applications/network/ipconfig/ipconfig.c
+++ b/base/applications/network/ipconfig/ipconfig.c
@@ -29,11 +29,96 @@
 
 #include "resource.h"
 
+typedef struct _RECORDTYPE
+{
+    WORD wRecordType;
+    LPTSTR pszRecordName;
+} RECORDTYPE, *PRECORDTYPE;
+
 #define GUID_LEN 40
 
 HINSTANCE hInstance;
 HANDLE ProcessHeap;
 
+RECORDTYPE TypeArray[] =
+{
+    {DNS_TYPE_ZERO,    _T("ZERO")},
+    {DNS_TYPE_A,       _T("A")},
+    {DNS_TYPE_NS,      _T("NS")},
+    {DNS_TYPE_MD,      _T("MD")},
+    {DNS_TYPE_MF,      _T("MF")},
+    {DNS_TYPE_CNAME,   _T("CNAME")},
+    {DNS_TYPE_SOA,     _T("SOA")},
+    {DNS_TYPE_MB,      _T("MB")},
+    {DNS_TYPE_MG,      _T("MG")},
+    {DNS_TYPE_MR,      _T("MR")},
+    {DNS_TYPE_NULL,    _T("NULL")},
+    {DNS_TYPE_WKS,     _T("WKS")},
+    {DNS_TYPE_PTR,     _T("PTR")},
+    {DNS_TYPE_HINFO,   _T("HINFO")},
+    {DNS_TYPE_MINFO,   _T("MINFO")},
+    {DNS_TYPE_MX,      _T("MX")},
+    {DNS_TYPE_TEXT,    _T("TXT")},
+    {DNS_TYPE_RP,      _T("RP")},
+    {DNS_TYPE_AFSDB,   _T("AFSDB")},
+    {DNS_TYPE_X25,     _T("X25")},
+    {DNS_TYPE_ISDN,    _T("ISDN")},
+    {DNS_TYPE_RT,      _T("RT")},
+    {DNS_TYPE_NSAP,    _T("NSAP")},
+    {DNS_TYPE_NSAPPTR, _T("NSAPPTR")},
+    {DNS_TYPE_SIG,     _T("SIG")},
+    {DNS_TYPE_KEY,     _T("KEY")},
+    {DNS_TYPE_PX,      _T("PX")},
+    {DNS_TYPE_GPOS,    _T("GPOS")},
+    {DNS_TYPE_AAAA,    _T("AAAA")},
+    {DNS_TYPE_LOC,     _T("LOC")},
+    {DNS_TYPE_NXT,     _T("NXT")},
+    {DNS_TYPE_EID,     _T("EID")},
+    {DNS_TYPE_NIMLOC,  _T("NIMLOC")},
+    {DNS_TYPE_SRV,     _T("SRV")},
+    {DNS_TYPE_ATMA,    _T("ATMA")},
+    {DNS_TYPE_NAPTR,   _T("NAPTR")},
+    {DNS_TYPE_KX,      _T("KX")},
+    {DNS_TYPE_CERT,    _T("CERT")},
+    {DNS_TYPE_A6,      _T("A6")},
+    {DNS_TYPE_DNAME,   _T("DNAME")},
+    {DNS_TYPE_SINK,    _T("SINK")},
+    {DNS_TYPE_OPT,     _T("OPT")},
+    {DNS_TYPE_UINFO,   _T("UINFO")},
+    {DNS_TYPE_UID,     _T("UID")},
+    {DNS_TYPE_GID,     _T("GID")},
+    {DNS_TYPE_UNSPEC,  _T("UNSPEC")},
+    {DNS_TYPE_ADDRS,   _T("ADDRS")},
+    {DNS_TYPE_TKEY,    _T("TKEY")},
+    {DNS_TYPE_TSIG,    _T("TSIG")},
+    {DNS_TYPE_IXFR,    _T("IXFR")},
+    {DNS_TYPE_AXFR,    _T("AXFR")},
+    {DNS_TYPE_MAILB,   _T("MAILB")},
+    {DNS_TYPE_MAILA,   _T("MAILA")},
+    {DNS_TYPE_ALL,     _T("ALL")},
+    {0, NULL}
+};
+
+LPTSTR
+GetRecordTypeName(WORD wType)
+{
+    static TCHAR szType[8];
+    INT i;
+
+    for (i = 0; ; i++)
+    {
+         if (TypeArray[i].pszRecordName == NULL)
+             break;
+
+         if (TypeArray[i].wRecordType == wType)
+             return TypeArray[i].pszRecordName;
+    }
+
+    _stprintf(szType, _T("%hu"), wType);
+
+    return szType;
+}
+
 int LoadStringAndOem(HINSTANCE hInst,
                      UINT uID,
                      LPTSTR szNode,
@@ -773,7 +858,7 @@ DisplayDnsRecord(
         {
             _tprintf(_T("\t%S\n"), pszName);
             _tprintf(_T("\t----------------------------------------\n"));
-            _tprintf(_T("\tNo records of type %hu\n\n"), wType);
+            _tprintf(_T("\tNo records of type %s\n\n"), 
GetRecordTypeName(wType));
         }
         return;
     }
@@ -818,10 +903,6 @@ DisplayDnsRecord(
                 _tprintf(_T("\tA (Host) Record . . . : %S\n"), szBuffer);
                 break;
 
-            case DNS_TYPE_PTR:
-                _tprintf(_T("\tPTR Record. . . . . . : %S\n"), 
pThisRecord->Data.PTR.pNameHost);
-                break;
-
             case DNS_TYPE_NS:
                 _tprintf(_T("\tNS Record . . . . . . : %S\n"), 
pThisRecord->Data.NS.pNameHost);
                 break;
@@ -830,11 +911,31 @@ DisplayDnsRecord(
                 _tprintf(_T("\tCNAME Record. . . . . : %S\n"), 
pThisRecord->Data.CNAME.pNameHost);
                 break;
 
+            case DNS_TYPE_SOA:
+                _tprintf(_T("\tSOA Record. . . . . . : \n"));
+                break;
+
+            case DNS_TYPE_PTR:
+                _tprintf(_T("\tPTR Record. . . . . . : %S\n"), 
pThisRecord->Data.PTR.pNameHost);
+                break;
+
+            case DNS_TYPE_MX:
+                _tprintf(_T("\tMX Record . . . . . . : \n"));
+                break;
+
             case DNS_TYPE_AAAA:
                 RtlCopyMemory(&Addr6, &pThisRecord->Data.AAAA.Ip6Address, 
sizeof(IN6_ADDR));
                 RtlIpv6AddressToStringW(&Addr6, szBuffer);
                 _tprintf(_T("\tAAAA Record . . . . . : %S\n"), szBuffer);
                 break;
+
+            case DNS_TYPE_ATMA:
+                _tprintf(_T("\tATMA Record . . . . . : \n"));
+                break;
+
+            case DNS_TYPE_SRV:
+                _tprintf(_T("\tSRV Record. . . . . . : \n"));
+                break;
         }
         _tprintf(_T("\n\n"));
 

Reply via email to