summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorliuwentan <[email protected]>2024-02-29 11:18:47 +0800
committerliuwentan <[email protected]>2024-02-29 11:18:47 +0800
commit726f77a4645d9b3a4ed7e9a13a9205688e7f2860 (patch)
tree994248615911a10150c71671ae36b1a77e20f8dd
parent877b94f48de3bd0fff87634587d1ea03998768cc (diff)
[DNS_DECODER]change output format for unit_testdev-liuwentan
-rw-r--r--src/dns_decoder/dns_decoder.h4
-rw-r--r--test/dns_decoder/CMakeLists.txt4
-rw-r--r--test/dns_decoder/dns_decoder_gtest.cpp208
-rw-r--r--test/dns_decoder/dns_pcap/dns_udp_mix.pcapbin0 -> 625 bytes
-rw-r--r--test/dns_decoder/test_result_json/dns_tcp_simple.json178
-rw-r--r--test/dns_decoder/test_result_json/dns_udp_mix.json99
-rw-r--r--test/dns_decoder/test_result_json/dns_udp_simple.json64
7 files changed, 452 insertions, 105 deletions
diff --git a/src/dns_decoder/dns_decoder.h b/src/dns_decoder/dns_decoder.h
index 5ee1fdc..aaf41f5 100644
--- a/src/dns_decoder/dns_decoder.h
+++ b/src/dns_decoder/dns_decoder.h
@@ -80,7 +80,7 @@ struct dns_flag {
};
struct dns_query_question {
- uint16_t qtype;
+ enum dns_rr_type qtype;
uint16_t qclass;
uint8_t qname[DNS_NAME_MAX];
};
@@ -199,7 +199,7 @@ struct rdata_nsec3param {
/* rr is short for resource record */
struct dns_rr {
uint8_t name[DNS_NAME_MAX];
- uint16_t type;
+ enum dns_rr_type type;
uint16_t rr_class;
uint32_t ttl; /* 1byte: extended RCODE; 1byte: version; 2bytes: Z(upper bit) if type is OPT */
uint16_t rdlength;
diff --git a/test/dns_decoder/CMakeLists.txt b/test/dns_decoder/CMakeLists.txt
index b9477ce..1068b2f 100644
--- a/test/dns_decoder/CMakeLists.txt
+++ b/test/dns_decoder/CMakeLists.txt
@@ -39,6 +39,10 @@ add_test(NAME DNS_UDP_SIMPLE_TEST COMMAND ${TEST_MAIN} ${CMAKE_CURRENT_SOURCE_DI
add_test(NAME DNS_TCP_SIMPLE_TEST COMMAND ${TEST_MAIN} ${CMAKE_CURRENT_SOURCE_DIR}/test_result_json/dns_tcp_simple.json
-f "find ${CMAKE_CURRENT_SOURCE_DIR}/dns_pcap/ -name dns_tcp_simple.pcap|sort -V" WORKING_DIRECTORY ${TEST_RUN_DIR})
+add_test(NAME DNS_UDP_MIX_TEST COMMAND ${TEST_MAIN} ${CMAKE_CURRENT_SOURCE_DIR}/test_result_json/dns_udp_mix.json
+ -f "find ${CMAKE_CURRENT_SOURCE_DIR}/dns_pcap/ -name dns_udp_mix.pcap|sort -V" WORKING_DIRECTORY ${TEST_RUN_DIR})
+
set_tests_properties(DNS_UDP_SIMPLE_TEST
DNS_TCP_SIMPLE_TEST
+ DNS_UDP_MIX_TEST
PROPERTIES FIXTURES_REQUIRED TestFixture) \ No newline at end of file
diff --git a/test/dns_decoder/dns_decoder_gtest.cpp b/test/dns_decoder/dns_decoder_gtest.cpp
index 6e3a9c4..f355e80 100644
--- a/test/dns_decoder/dns_decoder_gtest.cpp
+++ b/test/dns_decoder/dns_decoder_gtest.cpp
@@ -36,62 +36,89 @@ int commit_test_result_json(cJSON *node, const char *name);
#define DD_IPV6 6
#define MAX_KEY_STR_LEN 2048
+#define BUFF_LEN 2048
static int g_result_count = 1;
int g_topic_id = 0;
-typedef void rr_printer_fn(uint8_t *in_data, size_t in_data_len,
- char *out_data, size_t out_data_len);
-
-struct rr_printer {
- int rr_type;
- rr_printer_fn *fn;
-};
-
-void print_rr_a(uint8_t *in_data, size_t in_data_len,
- char *out_data, size_t out_data_len)
-{
- inet_ntop(AF_INET, in_data, out_data, out_data_len);
-}
-
-void print_rr_aaaa(uint8_t *in_data, size_t in_data_len,
- char *out_data, size_t out_data_len)
-{
- inet_ntop(AF_INET6, in_data, out_data, out_data_len);
-}
-
-void print_rr_str(uint8_t *in_data, size_t in_data_len,
- char *out_data, size_t out_data_len)
-{
- memcpy(out_data, in_data, out_data_len);
-}
-
-void print_rr_soa(uint8_t *in_data, size_t in_data_len,
- char *out_data, size_t out_data_len)
+static const char *rr_type_int2str(enum dns_rr_type type)
{
- memcpy(out_data, in_data, out_data_len);
+ switch (type) {
+ case DNS_RR_TYPE_A:
+ return "A";
+ case DNS_RR_TYPE_NS:
+ return "NS";
+ case DNS_RR_TYPE_MD:
+ return "MD";
+ case DNS_RR_TYPE_MF:
+ return "MF";
+ case DNS_RR_TYPE_CNAME:
+ return "CNAME";
+ case DNS_RR_TYPE_SOA:
+ return "SOA";
+ case DNS_RR_TYPE_MB:
+ return "MB";
+ case DNS_RR_TYPE_MG:
+ return "MG";
+ case DNS_RR_TYPE_MR:
+ return "MR";
+ case DNS_RR_TYPE_NULL:
+ return "NULL";
+ case DNS_RR_TYPE_WKS:
+ return "WKS";
+ case DNS_RR_TYPE_PTR:
+ return "PTR";
+ case DNS_RR_TYPE_HINFO:
+ return "HINFO";
+ case DNS_RR_TYPE_MINFO:
+ return "MINFO";
+ case DNS_RR_TYPE_MX:
+ return "MX";
+ case DNS_RR_TYPE_TXT:
+ return "TXT";
+ case DNS_RR_TYPE_RP:
+ return "RP";
+ case DNS_RR_TYPE_ISDN:
+ return "ISDN";
+ case DNS_RR_TYPE_AAAA:
+ return "AAAA";
+ case DNS_RR_TYPE_SRV:
+ return "SRV";
+ case DNS_RR_TYPE_DNAME:
+ return "DNAME";
+ case DNS_RR_TYPE_OPT:
+ return "OPT";
+ case DNS_RR_TYPE_DS:
+ return "DS";
+ case DNS_RR_TYPE_RRSIG:
+ return "RRSIG";
+ case DNS_RR_TYPE_NSEC:
+ return "NSEC";
+ case DNS_RR_TYPE_DNSKEY:
+ return "DNSKEY";
+ case DNS_RR_TYPE_NSEC3:
+ return "NSEC3";
+ case DNS_RR_TYPE_NSEC3PARAM:
+ return "NSEC3PARAM";
+ case DNS_RR_TYPE_HTTPS:
+ return "HTTPS";
+ case DNS_RR_TYPE_AXFR:
+ return "AXFR";
+ case DNS_RR_TYPE_MAILB:
+ return "MAILB";
+ case DNS_RR_TYPE_MAILA:
+ return "MAILA";
+ case DNS_RR_TYPE_ANY:
+ return "ANY";
+ case DNS_RR_TYPE_DLV:
+ return "DLV";
+ case DNS_RR_TYPE_UNKNOWN:
+ return "UNKNOWN";
+ default:
+ return "UNKNOWN";
+ }
}
-struct rr_printer rr_printers[] = {
- {-1, NULL},
- {DNS_RR_TYPE_A, print_rr_a},
- {DNS_RR_TYPE_NS, print_rr_str},
- {DNS_RR_TYPE_MD, NULL},
- {DNS_RR_TYPE_MF, NULL},
- {DNS_RR_TYPE_CNAME, NULL},
- {DNS_RR_TYPE_SOA, print_rr_soa},
- {DNS_RR_TYPE_MB, NULL},
- {DNS_RR_TYPE_MG, NULL},
- {DNS_RR_TYPE_MR, NULL},
- {DNS_RR_TYPE_NULL, NULL},
- {DNS_RR_TYPE_WKS, NULL},
- {DNS_RR_TYPE_PTR, NULL},
- {DNS_RR_TYPE_HINFO, NULL},
- {DNS_RR_TYPE_MINFO, NULL},
- {DNS_RR_TYPE_MX, print_rr_str},
- {DNS_RR_TYPE_AAAA, print_rr_aaaa}
-};
-
static int
dns_field_to_json(cJSON *object, const char *key, char *val, size_t val_len)
{
@@ -120,18 +147,34 @@ static void dns_query_to_json(cJSON *ctx, struct dns_query *query)
memset(buff, 0, sizeof(buff));
sprintf(buff, "%s", query->query_question.qname);
dns_field_to_json(ctx, "qname", buff, strlen(buff));
+
+ memset(buff, 0, sizeof(buff));
+ sprintf(buff, "%s", rr_type_int2str(query->query_question.qtype));
+ dns_field_to_json(ctx, "qtype", buff, strlen(buff));
+
+ memset(buff, 0, sizeof(buff));
+ sprintf(buff, "%u", query->flag.qr);
+ dns_field_to_json(ctx, "flag_qr", buff, strlen(buff));
+
+ memset(buff, 0, sizeof(buff));
+ sprintf(buff, "%u", query->flag.opcode);
+ dns_field_to_json(ctx, "flag_opcode", buff, strlen(buff));
+
+ memset(buff, 0, sizeof(buff));
+ sprintf(buff, "%u", query->flag.rd);
+ dns_field_to_json(ctx, "flag_rd", buff, strlen(buff));
}
static void rr_data_to_buff(struct dns_rr *dns_rr, char *buff, size_t buff_len)
{
- char tmp_buff[1024] = {0};
+ char tmp_buff[BUFF_LEN] = {0};
switch (dns_rr->type) {
case DNS_RR_TYPE_CNAME:
memcpy(buff, dns_rr->rdata.cname, buff_len);
break;
case DNS_RR_TYPE_HINFO:
- sprintf(tmp_buff, "%c%c%s%s", dns_rr->rdata.hinfo.os_len,
+ sprintf(tmp_buff, "%c %c %s %s", dns_rr->rdata.hinfo.os_len,
dns_rr->rdata.hinfo.cpu_len, dns_rr->rdata.hinfo.cpu,
dns_rr->rdata.hinfo.os);
memcpy(buff, tmp_buff, buff_len);
@@ -154,20 +197,29 @@ static void rr_data_to_buff(struct dns_rr *dns_rr, char *buff, size_t buff_len)
case DNS_RR_TYPE_NS:
memcpy(buff, dns_rr->rdata.ns, buff_len);
break;
+ case DNS_RR_TYPE_MX:
+ sprintf(tmp_buff, "%u %s", dns_rr->rdata.mx.preference,
+ dns_rr->rdata.mx.exchange);
+ memcpy(buff, tmp_buff, buff_len);
+ break;
case DNS_RR_TYPE_MINFO:
- sprintf(tmp_buff, "%s%s", dns_rr->rdata.minfo.rmailbx,
+ sprintf(tmp_buff, "%s %s", dns_rr->rdata.minfo.rmailbx,
dns_rr->rdata.minfo.emailbx);
memcpy(buff, tmp_buff, buff_len);
break;
case DNS_RR_TYPE_SOA:
- sprintf(tmp_buff, "%s%s%u%u%u%u%u", dns_rr->rdata.soa.mname,
+ sprintf(tmp_buff, "%s %s %u %u %u %u %u", dns_rr->rdata.soa.mname,
dns_rr->rdata.soa.rname, dns_rr->rdata.soa.serial,
dns_rr->rdata.soa.refresh, dns_rr->rdata.soa.retry,
dns_rr->rdata.soa.expire, dns_rr->rdata.soa.minimum);
memcpy(buff, tmp_buff, buff_len);
break;
case DNS_RR_TYPE_A:
- inet_ntop(AF_INET, dns_rr->rdata.a, tmp_buff, 1024);
+ inet_ntop(AF_INET, dns_rr->rdata.a, tmp_buff, BUFF_LEN);
+ memcpy(buff, tmp_buff, strlen(tmp_buff));
+ break;
+ case DNS_RR_TYPE_AAAA:
+ inet_ntop(AF_INET6, dns_rr->rdata.aaaa, tmp_buff, BUFF_LEN);
memcpy(buff, tmp_buff, strlen(tmp_buff));
break;
}
@@ -175,21 +227,45 @@ static void rr_data_to_buff(struct dns_rr *dns_rr, char *buff, size_t buff_len)
static void dns_response_to_json(cJSON *ctx, struct dns_response *response)
{
- char key[64] = {0};
- char buff[64] = {0};
+ char key[BUFF_LEN] = {0};
+ char buff[BUFF_LEN] = {0};
sprintf(buff, "%s", "response");
dns_field_to_json(ctx, "dns_type", buff, strlen(buff));
- size_t printer_num = sizeof(rr_printers) / sizeof(struct rr_printer);
+ memset(buff, 0, sizeof(buff));
+ sprintf(buff, "%s", response->query.query_question.qname);
+ dns_field_to_json(ctx, "qname", buff, strlen(buff));
+
+ memset(buff, 0, sizeof(buff));
+ sprintf(buff, "%s", rr_type_int2str(response->query.query_question.qtype));
+ dns_field_to_json(ctx, "qtype", buff, strlen(buff));
+
+ memset(buff, 0, sizeof(buff));
+ sprintf(buff, "%u", response->query.flag.qr);
+ dns_field_to_json(ctx, "flag_qr", buff, strlen(buff));
+
+ memset(buff, 0, sizeof(buff));
+ sprintf(buff, "%u", response->query.flag.opcode);
+ dns_field_to_json(ctx, "flag_opcode", buff, strlen(buff));
+
+ memset(buff, 0, sizeof(buff));
+ sprintf(buff, "%u", response->query.flag.rd);
+ dns_field_to_json(ctx, "flag_rd", buff, strlen(buff));
for (size_t i = 0; i < response->n_answer_rr; i++) {
memset(key, 0, sizeof(key));
memset(buff, 0, sizeof(buff));
sprintf(key, "ans_rr%zu", i);
+ cJSON *obj = cJSON_AddObjectToObject(ctx, key);
+
+ sprintf(buff, "%s", rr_type_int2str(response->answer_rr[i].type));
+ dns_field_to_json(obj, "rr_type", buff, strlen(buff));
+
+ memset(buff, 0, sizeof(buff));
rr_data_to_buff(&response->answer_rr[i], buff, sizeof(buff));
- dns_field_to_json(ctx, key, buff, sizeof(buff));
+ dns_field_to_json(obj, "rr_data", buff, strlen(buff));
}
for (size_t i = 0; i < response->n_authority_rr; i++) {
@@ -197,8 +273,14 @@ static void dns_response_to_json(cJSON *ctx, struct dns_response *response)
memset(buff, 0, sizeof(buff));
sprintf(key, "auth_rr%zu", i);
+ cJSON *obj = cJSON_AddObjectToObject(ctx, key);
+
+ sprintf(buff, "%s", rr_type_int2str(response->authority_rr[i].type));
+ dns_field_to_json(obj, "rr_type", buff, strlen(buff));
+
+ memset(buff, 0, sizeof(buff));
rr_data_to_buff(&response->authority_rr[i], buff, sizeof(buff));
- dns_field_to_json(ctx, key, buff, strlen(buff));
+ dns_field_to_json(obj, "rr_data", buff, strlen(buff));
}
for (size_t i = 0; i < response->n_additional_rr; i++) {
@@ -206,8 +288,14 @@ static void dns_response_to_json(cJSON *ctx, struct dns_response *response)
memset(buff, 0, sizeof(buff));
sprintf(key, "addt_rr%zu", i);
+ cJSON *obj = cJSON_AddObjectToObject(ctx, key);
+
+ sprintf(buff, "%s", rr_type_int2str(response->additional_rr[i].type));
+ dns_field_to_json(obj, "rr_type", buff, strlen(buff));
+
+ memset(buff, 0, sizeof(buff));
rr_data_to_buff(&response->additional_rr[i], buff, sizeof(buff));
- dns_field_to_json(ctx, key, buff, strlen(buff));
+ dns_field_to_json(obj, "rr_data", buff, strlen(buff));
}
}
diff --git a/test/dns_decoder/dns_pcap/dns_udp_mix.pcap b/test/dns_decoder/dns_pcap/dns_udp_mix.pcap
new file mode 100644
index 0000000..07c7249
--- /dev/null
+++ b/test/dns_decoder/dns_pcap/dns_udp_mix.pcap
Binary files differ
diff --git a/test/dns_decoder/test_result_json/dns_tcp_simple.json b/test/dns_decoder/test_result_json/dns_tcp_simple.json
index 5271b83..2bad355 100644
--- a/test/dns_decoder/test_result_json/dns_tcp_simple.json
+++ b/test/dns_decoder/test_result_json/dns_tcp_simple.json
@@ -4,30 +4,96 @@
"transaction_id": "5e63",
"dns_type": "query",
"qname": "google.com",
+ "qtype": "A",
+ "flag_qr": "0",
+ "flag_opcode": "0",
+ "flag_rd": "1",
"name": "DNS_DECODER_RESULT_1"
},
{
"Tuple4": "10.180.156.141.49342>10.2.95.39.53",
"dns_type": "response",
- "ans_rr0": "74.125.228.46",
- "ans_rr1": "74.125.228.32",
- "ans_rr2": "74.125.228.33",
- "ans_rr3": "74.125.228.34",
- "ans_rr4": "74.125.228.35",
- "ans_rr5": "74.125.228.36",
- "ans_rr6": "74.125.228.37",
- "ans_rr7": "74.125.228.38",
- "ans_rr8": "74.125.228.39",
- "ans_rr9": "74.125.228.40",
- "ans_rr10": "74.125.228.41",
- "auth_rr0": "ns4.google.com",
- "auth_rr1": "ns2.google.com",
- "auth_rr2": "ns3.google.com",
- "auth_rr3": "ns1.google.com",
- "addt_rr0": "216.239.32.10",
- "addt_rr1": "216.239.36.10",
- "addt_rr2": "216.239.38.10",
- "addt_rr3": "216.239.34.10",
+ "qname": "google.com",
+ "qtype": "A",
+ "flag_qr": "1",
+ "flag_opcode": "0",
+ "flag_rd": "1",
+ "ans_rr0": {
+ "rr_type": "A",
+ "rr_data": "74.125.228.46"
+ },
+ "ans_rr1": {
+ "rr_type": "A",
+ "rr_data": "74.125.228.32"
+ },
+ "ans_rr2": {
+ "rr_type": "A",
+ "rr_data": "74.125.228.33"
+ },
+ "ans_rr3": {
+ "rr_type": "A",
+ "rr_data": "74.125.228.34"
+ },
+ "ans_rr4": {
+ "rr_type": "A",
+ "rr_data": "74.125.228.35"
+ },
+ "ans_rr5": {
+ "rr_type": "A",
+ "rr_data": "74.125.228.36"
+ },
+ "ans_rr6": {
+ "rr_type": "A",
+ "rr_data": "74.125.228.37"
+ },
+ "ans_rr7": {
+ "rr_type": "A",
+ "rr_data": "74.125.228.38"
+ },
+ "ans_rr8": {
+ "rr_type": "A",
+ "rr_data": "74.125.228.39"
+ },
+ "ans_rr9": {
+ "rr_type": "A",
+ "rr_data": "74.125.228.40"
+ },
+ "ans_rr10": {
+ "rr_type": "A",
+ "rr_data": "74.125.228.41"
+ },
+ "auth_rr0": {
+ "rr_type": "NS",
+ "rr_data": "ns4.google.com"
+ },
+ "auth_rr1": {
+ "rr_type": "NS",
+ "rr_data": "ns2.google.com"
+ },
+ "auth_rr2": {
+ "rr_type": "NS",
+ "rr_data": "ns3.google.com"
+ },
+ "auth_rr3": {
+ "rr_type": "NS",
+ "rr_data": "ns1.google.com"
+ },
+ "addt_rr0": {
+ "rr_type": "A",
+ "rr_data": "216.239.32.10"
+ },
+ "addt_rr1": {
+ "rr_type": "A",
+ "rr_data": "216.239.36.10"
+ },
+ "addt_rr2": {
+ "rr_type": "A",
+ "rr_data": "216.239.38.10"
+ },
+ "addt_rr3": {
+ "rr_type": "A",
+ "rr_data": "216.239.34.10"
+ },
"name": "DNS_DECODER_RESULT_2"
},
{
@@ -35,24 +101,72 @@
"transaction_id": "e2ec",
"dns_type": "query",
"qname": "aol.com",
+ "qtype": "A",
+ "flag_qr": "0",
+ "flag_opcode": "0",
+ "flag_rd": "1",
"name": "DNS_DECODER_RESULT_3"
},
{
"Tuple4": "10.180.156.141.49343>10.2.95.39.53",
"dns_type": "response",
- "ans_rr0": "205.188.100.58",
- "ans_rr1": "205.188.101.58",
- "ans_rr2": "207.200.74.38",
- "ans_rr3": "64.12.79.57",
- "ans_rr4": "64.12.89.186",
- "auth_rr0": "dns-01.ns.aol.com",
- "auth_rr1": "dns-02.ns.aol.com",
- "auth_rr2": "dns-06.ns.aol.com",
- "auth_rr3": "dns-07.ns.aol.com",
- "addt_rr0": "64.236.1.107",
- "addt_rr1": "207.200.73.80",
- "addt_rr2": "64.12.51.132",
- "addt_rr3": "205.188.157.232",
+ "qname": "aol.com",
+ "qtype": "A",
+ "flag_qr": "1",
+ "flag_opcode": "0",
+ "flag_rd": "1",
+ "ans_rr0": {
+ "rr_type": "A",
+ "rr_data": "205.188.100.58"
+ },
+ "ans_rr1": {
+ "rr_type": "A",
+ "rr_data": "205.188.101.58"
+ },
+ "ans_rr2": {
+ "rr_type": "A",
+ "rr_data": "207.200.74.38"
+ },
+ "ans_rr3": {
+ "rr_type": "A",
+ "rr_data": "64.12.79.57"
+ },
+ "ans_rr4": {
+ "rr_type": "A",
+ "rr_data": "64.12.89.186"
+ },
+ "auth_rr0": {
+ "rr_type": "NS",
+ "rr_data": "dns-01.ns.aol.com"
+ },
+ "auth_rr1": {
+ "rr_type": "NS",
+ "rr_data": "dns-02.ns.aol.com"
+ },
+ "auth_rr2": {
+ "rr_type": "NS",
+ "rr_data": "dns-06.ns.aol.com"
+ },
+ "auth_rr3": {
+ "rr_type": "NS",
+ "rr_data": "dns-07.ns.aol.com"
+ },
+ "addt_rr0": {
+ "rr_type": "A",
+ "rr_data": "64.236.1.107"
+ },
+ "addt_rr1": {
+ "rr_type": "A",
+ "rr_data": "207.200.73.80"
+ },
+ "addt_rr2": {
+ "rr_type": "A",
+ "rr_data": "64.12.51.132"
+ },
+ "addt_rr3": {
+ "rr_type": "A",
+ "rr_data": "205.188.157.232"
+ },
"name": "DNS_DECODER_RESULT_4"
}
] \ No newline at end of file
diff --git a/test/dns_decoder/test_result_json/dns_udp_mix.json b/test/dns_decoder/test_result_json/dns_udp_mix.json
new file mode 100644
index 0000000..2babdc2
--- /dev/null
+++ b/test/dns_decoder/test_result_json/dns_udp_mix.json
@@ -0,0 +1,99 @@
+[
+ {
+ "Tuple4": "192.168.40.133.6748>192.168.40.134.53",
+ "transaction_id": "cdab",
+ "dns_type": "query",
+ "qname": "test.com",
+ "qtype": "ANY",
+ "flag_qr": "0",
+ "flag_opcode": "0",
+ "flag_rd": "1",
+ "name": "DNS_DECODER_RESULT_1"
+ },
+ {
+ "Tuple4": "192.168.40.133.6748>192.168.40.134.53",
+ "dns_type": "response",
+ "qname": "test.com",
+ "qtype": "ANY",
+ "flag_qr": "1",
+ "flag_opcode": "0",
+ "flag_rd": "1",
+ "ans_rr0": {
+ "rr_type": "SOA",
+ "rr_data": "dns1.test.com hostmaster.test.com 2001062501 21600 3600 604800 86400"
+ },
+ "ans_rr1": {
+ "rr_type": "NS",
+ "rr_data": "dns3.test.com"
+ },
+ "ans_rr2": {
+ "rr_type": "NS",
+ "rr_data": "dns1.test.com"
+ },
+ "ans_rr3": {
+ "rr_type": "NS",
+ "rr_data": "dns2.test.com"
+ },
+ "ans_rr4": {
+ "rr_type": "MX",
+ "rr_data": "30 mail3.test.com"
+ },
+ "ans_rr5": {
+ "rr_type": "MX",
+ "rr_data": "10 mail.test.com"
+ },
+ "ans_rr6": {
+ "rr_type": "MX",
+ "rr_data": "20 mail2.test.com"
+ },
+ "addt_rr0": {
+ "rr_type": "A",
+ "rr_data": "10.0.1.1"
+ },
+ "addt_rr1": {
+ "rr_type": "A",
+ "rr_data": "10.0.1.2"
+ },
+ "addt_rr2": {
+ "rr_type": "A",
+ "rr_data": "10.0.1.3"
+ },
+ "addt_rr3": {
+ "rr_type": "A",
+ "rr_data": "10.0.1.5"
+ },
+ "addt_rr4": {
+ "rr_type": "A",
+ "rr_data": "10.0.1.6"
+ },
+ "addt_rr5": {
+ "rr_type": "A",
+ "rr_data": "10.0.1.7"
+ },
+ "addt_rr6": {
+ "rr_type": "AAAA",
+ "rr_data": "aaaa:bbbb::1"
+ },
+ "addt_rr7": {
+ "rr_type": "AAAA",
+ "rr_data": "aaaa:bbbb::2"
+ },
+ "addt_rr8": {
+ "rr_type": "AAAA",
+ "rr_data": "aaaa:bbbb::3"
+ },
+ "addt_rr9": {
+ "rr_type": "AAAA",
+ "rr_data": "aaaa:bbbb::5"
+ },
+ "addt_rr10": {
+ "rr_type": "AAAA",
+ "rr_data": "aaaa:bbbb::6"
+ },
+ "addt_rr11": {
+ "rr_type": "AAAA",
+ "rr_data": "aaaa:bbbb::7"
+ },
+ "name": "DNS_DECODER_RESULT_2"
+ }
+] \ No newline at end of file
diff --git a/test/dns_decoder/test_result_json/dns_udp_simple.json b/test/dns_decoder/test_result_json/dns_udp_simple.json
index 232785c..c72033b 100644
--- a/test/dns_decoder/test_result_json/dns_udp_simple.json
+++ b/test/dns_decoder/test_result_json/dns_udp_simple.json
@@ -4,22 +4,64 @@
"transaction_id": "3",
"dns_type": "query",
"qname": "google.com",
+ "qtype": "A",
+ "flag_qr": "0",
+ "flag_opcode": "0",
+ "flag_rd": "1",
"name": "DNS_DECODER_RESULT_1"
},
{
"Tuple4": "192.168.1.52.54585>8.8.8.8.53",
"dns_type": "response",
- "ans_rr0": "74.125.236.35",
- "ans_rr1": "74.125.236.37",
- "ans_rr2": "74.125.236.39",
- "ans_rr3": "74.125.236.32",
- "ans_rr4": "74.125.236.40",
- "ans_rr5": "74.125.236.33",
- "ans_rr6": "74.125.236.41",
- "ans_rr7": "74.125.236.34",
- "ans_rr8": "74.125.236.36",
- "ans_rr9": "74.125.236.46",
- "ans_rr10": "74.125.236.38",
+ "qname": "google.com",
+ "qtype": "A",
+ "flag_qr": "1",
+ "flag_opcode": "0",
+ "flag_rd": "1",
+ "ans_rr0": {
+ "rr_type": "A",
+ "rr_data": "74.125.236.35"
+ },
+ "ans_rr1": {
+ "rr_type": "A",
+ "rr_data": "74.125.236.37"
+ },
+ "ans_rr2": {
+ "rr_type": "A",
+ "rr_data": "74.125.236.39"
+ },
+ "ans_rr3": {
+ "rr_type": "A",
+ "rr_data": "74.125.236.32"
+ },
+ "ans_rr4": {
+ "rr_type": "A",
+ "rr_data": "74.125.236.40"
+ },
+ "ans_rr5": {
+ "rr_type": "A",
+ "rr_data": "74.125.236.33"
+ },
+ "ans_rr6": {
+ "rr_type": "A",
+ "rr_data": "74.125.236.41"
+ },
+ "ans_rr7": {
+ "rr_type": "A",
+ "rr_data": "74.125.236.34"
+ },
+ "ans_rr8": {
+ "rr_type": "A",
+ "rr_data": "74.125.236.36"
+ },
+ "ans_rr9": {
+ "rr_type": "A",
+ "rr_data": "74.125.236.46"
+ },
+ "ans_rr10": {
+ "rr_type": "A",
+ "rr_data": "74.125.236.38"
+ },
"name": "DNS_DECODER_RESULT_2"
}
] \ No newline at end of file