A stack which works with or without an Mbed os library. Provides IPv4 or IPv6 with a full 1500 byte buffer.

Dependents:   oldheating gps motorhome heating

Revision:
32:679654f2d023
Parent:
30:e34173b7585c
Child:
35:93c39d260a83
diff -r eb98bc176c3d -r 679654f2d023 udp/dns/dnsreply.cpp
--- a/udp/dns/dnsreply.cpp	Fri Aug 11 17:41:52 2017 +0000
+++ b/udp/dns/dnsreply.cpp	Thu Aug 17 14:21:02 2017 +0000
@@ -4,10 +4,11 @@
 #include   "ip4.h"
 #include   "ip6.h"
 #include    "ar.h"
-#include "dnscache.h"
+#include   "dnscache.h"
 #include   "dns.h"
 #include   "dnshdr.h"
 #include   "dnsname.h"
+#include  "dhcp.h"
 
 #define DEBUG false
 
@@ -167,13 +168,16 @@
     if (DnsReplyRecordNameAsIp4    && DnsReplyName[0]      ) ArAddName4(DnsReplyRecordNameAsIp4, DnsReplyName,       dnsProtocol);
     if (DnsReplyRecordNameAsIp6[0] && DnsReplyName[0]      ) ArAddName6(DnsReplyRecordNameAsIp6, DnsReplyName,       dnsProtocol);
 }
-
-static void sendToDn(int dnsProtocol)
+static void sendToDnsCache(int dnsProtocol)
 {
-    if (DnsReplyIp4                && DnsReplyRecordName[0]) DnsCacheAddIp4Record(DnsReplyIp4,             DnsReplyRecordName, dnsProtocol);
-    if (DnsReplyIp6[0]             && DnsReplyRecordName[0]) DnsCacheAddIp6Record(DnsReplyIp6,             DnsReplyRecordName, dnsProtocol);
-    if (DnsReplyRecordNameAsIp4    && DnsReplyName[0]      ) DnsCacheAddIp4Record(DnsReplyRecordNameAsIp4, DnsReplyName,       dnsProtocol);
-    if (DnsReplyRecordNameAsIp6[0] && DnsReplyName[0]      ) DnsCacheAddIp6Record(DnsReplyRecordNameAsIp6, DnsReplyName,       dnsProtocol);
+    char strippedName[100];
+    if (DnsReplyRecordName[0]) DnsStripNameFromFullName(dnsProtocol, DnsReplyRecordName, sizeof(strippedName), strippedName);
+    if (DnsReplyName[0]      ) DnsStripNameFromFullName(dnsProtocol, DnsReplyName      , sizeof(strippedName), strippedName);
+    
+    if (DnsReplyIp4                && DnsReplyRecordName[0]) DnsCacheAddIp4Record(DnsReplyIp4,             strippedName, dnsProtocol);
+    if (DnsReplyIp6[0]             && DnsReplyRecordName[0]) DnsCacheAddIp6Record(DnsReplyIp6,             strippedName, dnsProtocol);
+    if (DnsReplyRecordNameAsIp4    && DnsReplyName[0]      ) DnsCacheAddIp4Record(DnsReplyRecordNameAsIp4, strippedName, dnsProtocol);
+    if (DnsReplyRecordNameAsIp6[0] && DnsReplyName[0]      ) DnsCacheAddIp6Record(DnsReplyRecordNameAsIp6, strippedName, dnsProtocol);
 }
 int DnsReplyHandle(int dnsProtocol, int *pSize)
 {        
@@ -191,7 +195,7 @@
         if (scanAnswer()) return DO_NOTHING;
         readAnswer();
         sendToAr(dnsProtocol);
-        sendToDn(dnsProtocol);
+        sendToDnsCache(dnsProtocol);
     }
     
     return DO_NOTHING;