aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLuca Deri <deri@ntop.org>2020-02-04 22:16:54 +0100
committerLuca Deri <deri@ntop.org>2020-02-04 22:16:54 +0100
commit0703ab5ac558857319c2ed4a1673444006f915f8 (patch)
treeabbd21aba8176a5791129c803c84b87210e47235 /src
parent3e99b736358ca11c3ba3723a1282ffd3bfc760bd (diff)
Improved DNS response decoding
The first decoded address is now reported by ndpiReader
Diffstat (limited to 'src')
-rw-r--r--src/lib/protocols/dns.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/lib/protocols/dns.c b/src/lib/protocols/dns.c
index 473ff1753..b9b98aa81 100644
--- a/src/lib/protocols/dns.c
+++ b/src/lib/protocols/dns.c
@@ -175,17 +175,25 @@ static int search_valid_dns(struct ndpi_detection_module_struct *ndpi_struct,
if((x+12) <= flow->packet.payload_packet_len) {
x += 6;
data_len = get16(&x, flow->packet.payload);
-
- if(((x + data_len) <= flow->packet.payload_packet_len)
- && (((rsp_type == 0x1) && (data_len == 4)) /* A */
+
+ if((x + data_len) <= flow->packet.payload_packet_len) {
+ // printf("[rsp_type: %u][data_len: %u]\n", rsp_type, data_len);
+
+ if(rsp_type == 0x05 /* CNAME */) {
+ x += data_len;
+ continue; /* Skip CNAME */
+ }
+
+ if((((rsp_type == 0x1) && (data_len == 4)) /* A */
#ifdef NDPI_DETECTION_SUPPORT_IPV6
- || ((rsp_type == 0x1c) && (data_len == 16)) /* AAAA */
+ || ((rsp_type == 0x1c) && (data_len == 16)) /* AAAA */
#endif
- )) {
- memcpy(&flow->protos.dns.rsp_addr, flow->packet.payload + x, data_len);
+ )) {
+ memcpy(&flow->protos.dns.rsp_addr, flow->packet.payload + x, data_len);
+ }
}
}
-
+
break;
}
}