Perf: yyjson replaces cjson
This commit is contained in:
@@ -25,6 +25,8 @@ if (CMAKE_CXX_CPPCHECK)
|
||||
"--suppress=variableScope"
|
||||
"--suppress=unreadVariable"
|
||||
"--suppress=unusedStructMember"
|
||||
"--suppress=*:${PROJECT_SOURCE_DIR}/deps/toml/*"
|
||||
"--suppress=*:${PROJECT_SOURCE_DIR}/deps/yyjson/*"
|
||||
)
|
||||
set(CMAKE_C_CPPCHECK ${CMAKE_CXX_CPPCHECK})
|
||||
else()
|
||||
|
||||
@@ -14,10 +14,9 @@ stat_interval_time_s=5
|
||||
stat_output="metrics/dns_decoder_local_stat.json"
|
||||
|
||||
[decoder.dns.test]
|
||||
write_result_enable="no"
|
||||
commit_result_enable="yes"
|
||||
|
||||
[decoder.dns.test.perf]
|
||||
perf_worker_thread_num=1
|
||||
decode_resource_record_enable="yes"
|
||||
decode_resource_record_enable="no"
|
||||
export_resource_record_enable="no"
|
||||
21
deps/yyjson/LICENSE
vendored
Normal file
21
deps/yyjson/LICENSE
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 YaoYuan <ibireme@gmail.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
9447
deps/yyjson/yyjson.c
vendored
Normal file
9447
deps/yyjson/yyjson.c
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7814
deps/yyjson/yyjson.h
vendored
Normal file
7814
deps/yyjson/yyjson.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,6 @@ extern "C"
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include <linux/limits.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#define DNS_MESSAGE_TOPIC "TOPIC_DNS_MESSAGE"
|
||||
|
||||
@@ -4,6 +4,7 @@ include_directories(/opt/MESA/include/)
|
||||
include_directories(${PROJECT_SOURCE_DIR}/deps/)
|
||||
|
||||
aux_source_directory(${PROJECT_SOURCE_DIR}/deps/toml DEPS_SRC)
|
||||
aux_source_directory(${PROJECT_SOURCE_DIR}/deps/yyjson DEPS_SRC)
|
||||
|
||||
set(DNS_DECODER_SRC ${DEPS_SRC} dns_decoder.cpp dns_resource_record_exporter.cpp)
|
||||
|
||||
|
||||
@@ -501,6 +501,8 @@ int32_t dns_resource_record_hinfo_decode(uint8_t *payload, size_t payload_sz, si
|
||||
ret=dns_read_variable_dstring(payload, payload_sz, payload_offset, &(hinfo->cpu), cpu_sz);
|
||||
if(ret==DNS_DECODER_FALSE)
|
||||
{
|
||||
hinfo->cpu.value_sz=0;
|
||||
hinfo->cpu.value[0]='\0';
|
||||
return DNS_DECODER_FALSE;
|
||||
}
|
||||
|
||||
@@ -514,6 +516,8 @@ int32_t dns_resource_record_hinfo_decode(uint8_t *payload, size_t payload_sz, si
|
||||
ret=dns_read_variable_dstring(payload, payload_sz, payload_offset, &(hinfo->os), os_sz);
|
||||
if(ret==DNS_DECODER_FALSE)
|
||||
{
|
||||
hinfo->os.value_sz=0;
|
||||
hinfo->os.value[0]='\0';
|
||||
return DNS_DECODER_FALSE;
|
||||
}
|
||||
|
||||
@@ -958,10 +962,28 @@ int32_t dns_resource_record_specific_field_decode(uint8_t *payload, size_t paylo
|
||||
ret=dns_resource_record_soa_decode(payload, payload_sz, &offset, &(rr->rdata.soa), rr->rdlength);
|
||||
break;
|
||||
case DNS_RR_TYPE_A:
|
||||
ret=dns_read_variable_dstring(payload, payload_sz, &offset, &(rr->rdata.a), sizeof(uint32_t));
|
||||
rr->rdata.a.addr_str_len=0;
|
||||
if(payload_sz>=offset+4)
|
||||
{
|
||||
memcpy(&(rr->rdata.a.addr), payload+offset, 4);
|
||||
ret=DNS_DECODER_TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret=DNS_DECODER_FALSE;
|
||||
}
|
||||
break;
|
||||
case DNS_RR_TYPE_AAAA:
|
||||
ret=dns_read_variable_dstring(payload, payload_sz, &offset, &(rr->rdata.aaaa), 16);
|
||||
rr->rdata.aaaa.addr_str_len=0;
|
||||
if(payload_sz>=offset+16)
|
||||
{
|
||||
memcpy(rr->rdata.aaaa.addr, payload+offset, 16);
|
||||
ret=DNS_DECODER_TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret=DNS_DECODER_FALSE;
|
||||
}
|
||||
break;
|
||||
case DNS_RR_TYPE_ISDN:
|
||||
ret=dns_read_variable_dstring(payload, payload_sz, &offset, &(rr->rdata.isdn), sizeof(uint8_t));
|
||||
|
||||
@@ -3,6 +3,12 @@
|
||||
#include <stdint.h>
|
||||
#include <linux/limits.h>
|
||||
#include <stddef.h>
|
||||
#include <sys/uio.h>
|
||||
|
||||
#define IPV6_LEN 16
|
||||
#define IPV4_LEN 4
|
||||
#define IPV6_STR_LEN 40
|
||||
#define IPV4_STR_LEN 16
|
||||
|
||||
#define DNS_NAME_MAX (NAME_MAX + 1)
|
||||
// #define HINFO_NAME_MAX (40 + 1) /* https://www.ietf.org/rfc/rfc1010.txt */
|
||||
@@ -53,6 +59,20 @@ struct dstring
|
||||
uint8_t value[DNS_NAME_MAX];
|
||||
};
|
||||
|
||||
struct rdata_a
|
||||
{
|
||||
uint32_t addr;
|
||||
uint32_t addr_str_len;
|
||||
char addr_str[IPV4_STR_LEN];
|
||||
};
|
||||
|
||||
struct rdata_aaaa
|
||||
{
|
||||
uint8_t addr[IPV6_LEN];
|
||||
uint32_t addr_str_len;
|
||||
char addr_str[IPV6_STR_LEN];
|
||||
};
|
||||
|
||||
struct rdata_hinfo
|
||||
{
|
||||
struct dstring os;
|
||||
@@ -184,15 +204,14 @@ struct dns_resource_record
|
||||
struct dstring mr;
|
||||
struct dstring ns;
|
||||
struct dstring ptr;
|
||||
struct dstring a;
|
||||
struct dstring aaaa;
|
||||
struct dstring dname;
|
||||
struct dstring isdn;
|
||||
struct dstring unknown;
|
||||
|
||||
struct dstring txt;
|
||||
struct dstring null;
|
||||
|
||||
struct dstring isdn;
|
||||
struct rdata_a a;
|
||||
struct rdata_aaaa aaaa;
|
||||
struct rdata_hinfo hinfo;
|
||||
struct rdata_minfo minfo;
|
||||
struct rdata_mx mx;
|
||||
|
||||
@@ -3,14 +3,13 @@
|
||||
#include <string.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
#include "cJSON.h"
|
||||
#include "yyjson/yyjson.h"
|
||||
#include "dns_decoder.h"
|
||||
#include "dns_resource_record.h"
|
||||
|
||||
|
||||
void dns_resource_record_str2hex_append(cJSON *one_rr_object, uint8_t *str, size_t str_sz, const char *key)
|
||||
void dns_resource_record_str2hex_append(yyjson_mut_doc *doc, yyjson_mut_val *rr_object, uint8_t *str, size_t str_sz, const char *key)
|
||||
{
|
||||
if(one_rr_object==NULL || str==NULL || str_sz==0 || key==NULL)
|
||||
if(rr_object==NULL || str==NULL || str_sz==0 || key==NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -18,9 +17,9 @@ void dns_resource_record_str2hex_append(cJSON *one_rr_object, uint8_t *str, size
|
||||
size_t offset=0;
|
||||
char hex_buff[4096]={0};
|
||||
size_t hex_buff_sz=sizeof(hex_buff);
|
||||
const char hexChars[] = "0123456789abcdef";
|
||||
const char hexChars[]="0123456789abcdef";
|
||||
|
||||
for (size_t i = 0; i < str_sz && i<((hex_buff_sz/2)-2); i++)
|
||||
for (size_t i=0; i < str_sz && i<((hex_buff_sz/2)-2); i++)
|
||||
{
|
||||
hex_buff[offset++]=hexChars[(str[i] >> 4) & 0x0F];
|
||||
hex_buff[offset++]=hexChars[str[i] & 0x0F];
|
||||
@@ -29,198 +28,211 @@ void dns_resource_record_str2hex_append(cJSON *one_rr_object, uint8_t *str, size
|
||||
if(offset>0)
|
||||
{
|
||||
hex_buff[offset]='\0';
|
||||
cJSON_AddStringToObject(one_rr_object, key, hex_buff);
|
||||
char *tmp=(char *)malloc(offset+1);
|
||||
if(tmp!=NULL)
|
||||
{
|
||||
memcpy(tmp, hex_buff, offset+1);
|
||||
yyjson_mut_obj_add_str(doc, rr_object, key, tmp);
|
||||
//free(tmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void dns_resource_record_dstring_append(cJSON *one_rr_object, struct dstring *dstr, const char *key)
|
||||
void dns_resource_record_dstring_append(yyjson_mut_doc *doc, yyjson_mut_val *rr_object, struct dstring *dstr, const char *key)
|
||||
{
|
||||
if(dstr->value_sz > 0)
|
||||
if(dstr->value_sz>0)
|
||||
{
|
||||
cJSON_AddStringToObject(one_rr_object, key, (char *)(dstr->value));
|
||||
yyjson_mut_obj_add_str(doc, rr_object, key, (char *)(dstr->value));
|
||||
}
|
||||
}
|
||||
|
||||
cJSON *dns_resource_record_json_create(struct dns_resource_record *rr_array, uint16_t n_rr)
|
||||
yyjson_mut_val *dns_resource_record_json_create(yyjson_mut_doc *doc, struct dns_resource_record *rr_array, uint16_t n_rr)
|
||||
{
|
||||
if(rr_array==NULL || n_rr==0)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char ip_str[128];
|
||||
cJSON *dns_rr_array=cJSON_CreateArray();
|
||||
yyjson_mut_val *dns_rr_array=yyjson_mut_arr(doc);
|
||||
|
||||
for(uint16_t i=0; i<n_rr; i++)
|
||||
{
|
||||
cJSON *one_rr_object=cJSON_CreateObject();
|
||||
yyjson_mut_val *one_rr_object=yyjson_mut_obj(doc);
|
||||
struct dns_resource_record *dns_rr=&(rr_array[i]);
|
||||
|
||||
if(dns_rr->type == DNS_RR_TYPE_OPT)
|
||||
{
|
||||
cJSON_AddStringToObject(one_rr_object, "name", (const char *)(dns_rr->qname.value));
|
||||
cJSON_AddNumberToObject(one_rr_object, "type", dns_rr->type);
|
||||
cJSON_AddNumberToObject(one_rr_object, "udp_payload", dns_rr->rr_class);
|
||||
cJSON_AddNumberToObject(one_rr_object, "rcode", (int)(dns_rr->ttl>>24));
|
||||
cJSON_AddNumberToObject(one_rr_object, "version", (int)((dns_rr->ttl>>16)&0xFF));
|
||||
cJSON_AddNumberToObject(one_rr_object, "Z", (int)(dns_rr->ttl&&0xFFFF));
|
||||
cJSON_AddNumberToObject(one_rr_object, "rdlength", dns_rr->rdlength);
|
||||
{
|
||||
yyjson_mut_obj_add_str(doc, one_rr_object, "name", (char *)(dns_rr->qname.value));
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "type", dns_rr->type);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "udp_payload", dns_rr->rr_class);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "rcode", (int)(dns_rr->ttl>>24));
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "version", (int)((dns_rr->ttl>>16)&0xFF));
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "Z", (int)(dns_rr->ttl&&0xFFFF));
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "rdlength", dns_rr->rdlength);
|
||||
}
|
||||
else
|
||||
{
|
||||
cJSON_AddStringToObject(one_rr_object, "name", (const char *)(dns_rr->qname.value));
|
||||
cJSON_AddNumberToObject(one_rr_object, "type", dns_rr->type);
|
||||
cJSON_AddNumberToObject(one_rr_object, "class", dns_rr->rr_class);
|
||||
cJSON_AddNumberToObject(one_rr_object, "ttl", dns_rr->ttl);
|
||||
cJSON_AddNumberToObject(one_rr_object, "rdlength", dns_rr->rdlength);
|
||||
yyjson_mut_obj_add_str(doc, one_rr_object, "name", (char *)(dns_rr->qname.value));
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "type", dns_rr->type);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "class", dns_rr->rr_class);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "ttl", dns_rr->ttl);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "rdlength", dns_rr->rdlength);
|
||||
}
|
||||
|
||||
if(dns_rr->rdlength==0)
|
||||
{
|
||||
cJSON_AddItemToArray(dns_rr_array, one_rr_object);
|
||||
yyjson_mut_arr_add_val(dns_rr_array, one_rr_object);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
switch(dns_rr->type)
|
||||
{
|
||||
case DNS_RR_TYPE_A:
|
||||
inet_ntop(AF_INET, (void *)(dns_rr->rdata.a.value), ip_str, sizeof(ip_str));
|
||||
cJSON_AddStringToObject(one_rr_object, "a", ip_str);
|
||||
if(dns_rr->rdata.a.addr_str_len==0)
|
||||
{
|
||||
inet_ntop(AF_INET, (void *)&(dns_rr->rdata.a.addr), dns_rr->rdata.a.addr_str, sizeof(dns_rr->rdata.a.addr_str));
|
||||
dns_rr->rdata.a.addr_str_len=strlen(dns_rr->rdata.a.addr_str);
|
||||
}
|
||||
yyjson_mut_obj_add_str(doc, one_rr_object, "a", dns_rr->rdata.a.addr_str);
|
||||
break;
|
||||
case DNS_RR_TYPE_AAAA:
|
||||
inet_ntop(AF_INET6, dns_rr->rdata.aaaa.value, ip_str, sizeof(ip_str));
|
||||
cJSON_AddStringToObject(one_rr_object, "aaaa", ip_str);
|
||||
if(dns_rr->rdata.aaaa.addr_str_len==0)
|
||||
{
|
||||
inet_ntop(AF_INET6, dns_rr->rdata.aaaa.addr, dns_rr->rdata.aaaa.addr_str, sizeof(dns_rr->rdata.aaaa.addr_str));
|
||||
dns_rr->rdata.aaaa.addr_str_len=strlen(dns_rr->rdata.aaaa.addr_str);
|
||||
}
|
||||
yyjson_mut_obj_add_str(doc, one_rr_object, "aaaa", dns_rr->rdata.aaaa.addr_str);
|
||||
break;
|
||||
case DNS_RR_TYPE_NS:
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.ns), "ns");
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.ns), "ns");
|
||||
break;
|
||||
case DNS_RR_TYPE_MD:
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.md), "md");
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.md), "md");
|
||||
break;
|
||||
case DNS_RR_TYPE_MF:
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.mf), "mf");
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.mf), "mf");
|
||||
break;
|
||||
case DNS_RR_TYPE_CNAME:
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.cname), "cname");
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.cname), "cname");
|
||||
break;
|
||||
case DNS_RR_TYPE_MB:
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.mb), "mb");
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.mb), "mb");
|
||||
break;
|
||||
case DNS_RR_TYPE_MG:
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.mg), "mg");
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.mg), "mg");
|
||||
break;
|
||||
case DNS_RR_TYPE_MR:
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.mr), "mr");
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.mr), "mr");
|
||||
break;
|
||||
case DNS_RR_TYPE_TXT:
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.txt), "txt");
|
||||
cJSON_AddNumberToObject(one_rr_object, "size", dns_rr->rdata.txt.value_sz);
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.txt), "txt");
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "size", dns_rr->rdata.txt.value_sz);
|
||||
break;
|
||||
case DNS_RR_TYPE_NULL:
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.null), "null");
|
||||
cJSON_AddNumberToObject(one_rr_object, "size", dns_rr->rdata.null.value_sz);
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.null), "null");
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "size", dns_rr->rdata.null.value_sz);
|
||||
break;
|
||||
case DNS_RR_TYPE_PTR:
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.ptr), "ptr");
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.ptr), "ptr");
|
||||
break;
|
||||
case DNS_RR_TYPE_HINFO:
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.hinfo.cpu), "cpu");
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.hinfo.os), "os");
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.hinfo.cpu), "cpu");
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.hinfo.os), "os");
|
||||
break;
|
||||
case DNS_RR_TYPE_MINFO:
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.minfo.rmailbx), "rmailbx");
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.minfo.emailbx), "emailbx");
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.minfo.rmailbx), "rmailbx");
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.minfo.emailbx), "emailbx");
|
||||
break;
|
||||
case DNS_RR_TYPE_MX:
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.mx.exchange), "exchange");
|
||||
cJSON_AddNumberToObject(one_rr_object, "preference", dns_rr->rdata.mx.preference);
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.mx.exchange), "exchange");
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "preference", dns_rr->rdata.mx.preference);
|
||||
break;
|
||||
case DNS_RR_TYPE_RP:
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.rp.mailbox), "mailbox");
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.rp.txt_rr), "txt_rr");
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.rp.mailbox), "mailbox");
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.rp.txt_rr), "txt_rr");
|
||||
break;
|
||||
case DNS_RR_TYPE_SOA:
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.soa.mname), "mname");
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.soa.rname), "rname");
|
||||
cJSON_AddNumberToObject(one_rr_object, "serial", dns_rr->rdata.soa.serial);
|
||||
cJSON_AddNumberToObject(one_rr_object, "refresh", dns_rr->rdata.soa.refresh);
|
||||
cJSON_AddNumberToObject(one_rr_object, "retry", dns_rr->rdata.soa.retry);
|
||||
cJSON_AddNumberToObject(one_rr_object, "cname", dns_rr->rdata.soa.expire);
|
||||
cJSON_AddNumberToObject(one_rr_object, "minimum", dns_rr->rdata.soa.minimum);
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.soa.mname), "mname");
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.soa.rname), "rname");
|
||||
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "serial", dns_rr->rdata.soa.serial);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "refresh", dns_rr->rdata.soa.refresh);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "retry", dns_rr->rdata.soa.retry);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "expire", dns_rr->rdata.soa.expire);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "minimum", dns_rr->rdata.soa.minimum);
|
||||
break;
|
||||
|
||||
case DNS_RR_TYPE_WKS:
|
||||
cJSON_AddStringToObject(one_rr_object, "addr", ip_str);
|
||||
cJSON_AddNumberToObject(one_rr_object, "protocol", dns_rr->rdata.wks.protocol);
|
||||
cJSON_AddNumberToObject(one_rr_object, "size", dns_rr->rdata.wks.size);
|
||||
|
||||
dns_resource_record_str2hex_append(one_rr_object, dns_rr->rdata.wks.bitmap, dns_rr->rdata.wks.size, "bitmap");
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "protocol", dns_rr->rdata.wks.protocol);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "size", dns_rr->rdata.wks.size);
|
||||
|
||||
dns_resource_record_str2hex_append(doc, one_rr_object, dns_rr->rdata.wks.bitmap, dns_rr->rdata.wks.size, "bitmap");
|
||||
break;
|
||||
case DNS_RR_TYPE_OPT:
|
||||
break;
|
||||
case DNS_RR_TYPE_DS:
|
||||
cJSON_AddNumberToObject(one_rr_object, "key_tag", dns_rr->rdata.ds.key_tag);
|
||||
cJSON_AddNumberToObject(one_rr_object, "algo", dns_rr->rdata.ds.algo);
|
||||
cJSON_AddNumberToObject(one_rr_object, "digest_type", dns_rr->rdata.ds.digest_type);
|
||||
cJSON_AddNumberToObject(one_rr_object, "digest_len", dns_rr->rdata.ds.digest_len);
|
||||
|
||||
dns_resource_record_str2hex_append(one_rr_object, dns_rr->rdata.ds.digest, dns_rr->rdata.ds.digest_len, "digest");
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "key_tag", dns_rr->rdata.ds.key_tag);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "algo", dns_rr->rdata.ds.algo);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "digest_type", dns_rr->rdata.ds.digest_type);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "digest_len", dns_rr->rdata.ds.digest_len);
|
||||
|
||||
dns_resource_record_str2hex_append(doc, one_rr_object, dns_rr->rdata.ds.digest, dns_rr->rdata.ds.digest_len, "digest");
|
||||
break;
|
||||
case DNS_RR_TYPE_RRSIG:
|
||||
cJSON_AddNumberToObject(one_rr_object, "type_covered", dns_rr->rdata.rrsig.type_covered);
|
||||
cJSON_AddNumberToObject(one_rr_object, "algo", dns_rr->rdata.rrsig.algo);
|
||||
cJSON_AddNumberToObject(one_rr_object, "labels", dns_rr->rdata.rrsig.labels);
|
||||
cJSON_AddNumberToObject(one_rr_object, "original_ttl", dns_rr->rdata.rrsig.original_ttl);
|
||||
cJSON_AddNumberToObject(one_rr_object, "sig_expiration", dns_rr->rdata.rrsig.sig_expiration);
|
||||
cJSON_AddNumberToObject(one_rr_object, "sig_inception", dns_rr->rdata.rrsig.sig_inception);
|
||||
cJSON_AddNumberToObject(one_rr_object, "key_tag", dns_rr->rdata.rrsig.key_tag);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "type_covered", dns_rr->rdata.rrsig.type_covered);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "algo", dns_rr->rdata.rrsig.algo);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "labels", dns_rr->rdata.rrsig.labels);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "original_ttl", dns_rr->rdata.rrsig.original_ttl);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "sig_expiration", dns_rr->rdata.rrsig.sig_expiration);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "sig_inception", dns_rr->rdata.rrsig.sig_inception);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "key_tag", dns_rr->rdata.rrsig.key_tag);
|
||||
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.rrsig.signer_name), "signer_name");
|
||||
|
||||
cJSON_AddNumberToObject(one_rr_object, "signature_len", dns_rr->rdata.rrsig.signature_len);
|
||||
dns_resource_record_str2hex_append(one_rr_object, dns_rr->rdata.rrsig.signature, dns_rr->rdata.rrsig.signature_len, "signature");
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.rrsig.signer_name), "signer_name");
|
||||
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "signature_len", dns_rr->rdata.rrsig.signature_len);
|
||||
dns_resource_record_str2hex_append(doc, one_rr_object, dns_rr->rdata.rrsig.signature, dns_rr->rdata.rrsig.signature_len, "signature");
|
||||
break;
|
||||
case DNS_RR_TYPE_NSEC:
|
||||
dns_resource_record_dstring_append(one_rr_object, &(dns_rr->rdata.nsec.next_domain), "next_domain");
|
||||
cJSON_AddNumberToObject(one_rr_object, "maps_len", dns_rr->rdata.nsec.type_bit_maps.value_sz);
|
||||
dns_resource_record_dstring_append(doc, one_rr_object, &(dns_rr->rdata.nsec.next_domain), "next_domain");
|
||||
|
||||
dns_resource_record_str2hex_append(one_rr_object, dns_rr->rdata.nsec.type_bit_maps.value, dns_rr->rdata.nsec.type_bit_maps.value_sz, "type_bit_maps");
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "maps_len", dns_rr->rdata.nsec.type_bit_maps.value_sz);
|
||||
dns_resource_record_str2hex_append(doc, one_rr_object, dns_rr->rdata.nsec.type_bit_maps.value, dns_rr->rdata.nsec.type_bit_maps.value_sz, "type_bit_maps");
|
||||
break;
|
||||
case DNS_RR_TYPE_DNSKEY:
|
||||
cJSON_AddNumberToObject(one_rr_object, "flags", dns_rr->rdata.dnskey.flags);
|
||||
cJSON_AddNumberToObject(one_rr_object, "protocol", dns_rr->rdata.dnskey.protocol);
|
||||
cJSON_AddNumberToObject(one_rr_object, "algo", dns_rr->rdata.dnskey.algo);
|
||||
cJSON_AddNumberToObject(one_rr_object, "public_key_len", dns_rr->rdata.dnskey.public_key_len);
|
||||
|
||||
dns_resource_record_str2hex_append(one_rr_object, dns_rr->rdata.dnskey.public_key, dns_rr->rdata.dnskey.public_key_len, "public_key");
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "flags", dns_rr->rdata.dnskey.flags);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "protocol", dns_rr->rdata.dnskey.protocol);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "algo", dns_rr->rdata.dnskey.algo);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "public_key_len", dns_rr->rdata.dnskey.public_key_len);
|
||||
|
||||
dns_resource_record_str2hex_append(doc, one_rr_object, dns_rr->rdata.dnskey.public_key, dns_rr->rdata.dnskey.public_key_len, "public_key");
|
||||
break;
|
||||
case DNS_RR_TYPE_NSEC3:
|
||||
cJSON_AddNumberToObject(one_rr_object, "hash_algo", dns_rr->rdata.nsec3.hash_algo);
|
||||
cJSON_AddNumberToObject(one_rr_object, "flags", dns_rr->rdata.nsec3.flags);
|
||||
cJSON_AddNumberToObject(one_rr_object, "iteration", dns_rr->rdata.nsec3.iteration);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "hash_algo", dns_rr->rdata.nsec3.hash_algo);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "flags", dns_rr->rdata.nsec3.flags);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "iteration", dns_rr->rdata.nsec3.iteration);
|
||||
|
||||
cJSON_AddNumberToObject(one_rr_object, "salt_len", dns_rr->rdata.nsec3.salt_len);
|
||||
dns_resource_record_str2hex_append(one_rr_object, dns_rr->rdata.nsec3.salt_value, dns_rr->rdata.nsec3.salt_len, "salt_value");
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "salt_len", dns_rr->rdata.nsec3.salt_len);
|
||||
dns_resource_record_str2hex_append(doc, one_rr_object, dns_rr->rdata.nsec3.salt_value, dns_rr->rdata.nsec3.salt_len, "salt_value");
|
||||
|
||||
cJSON_AddNumberToObject(one_rr_object, "hash_len", dns_rr->rdata.nsec3.hash_len);
|
||||
dns_resource_record_str2hex_append(one_rr_object, dns_rr->rdata.nsec3.next_hash_owner, dns_rr->rdata.nsec3.hash_len, "next_hash_owner");
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "hash_len", dns_rr->rdata.nsec3.hash_len);
|
||||
dns_resource_record_str2hex_append(doc, one_rr_object, dns_rr->rdata.nsec3.next_hash_owner, dns_rr->rdata.nsec3.hash_len, "next_hash_owner");
|
||||
|
||||
cJSON_AddNumberToObject(one_rr_object, "maps_len", dns_rr->rdata.nsec3.type_bit_maps.value_sz);
|
||||
dns_resource_record_str2hex_append(one_rr_object, dns_rr->rdata.nsec3.type_bit_maps.value,dns_rr->rdata.nsec3.type_bit_maps.value_sz, "type_bit_maps");
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "maps_len", dns_rr->rdata.nsec3.type_bit_maps.value_sz);
|
||||
dns_resource_record_str2hex_append(doc, one_rr_object, dns_rr->rdata.nsec3.type_bit_maps.value,dns_rr->rdata.nsec3.type_bit_maps.value_sz, "type_bit_maps");
|
||||
break;
|
||||
case DNS_RR_TYPE_NSEC3PARAM:
|
||||
cJSON_AddNumberToObject(one_rr_object, "hash_algo", dns_rr->rdata.nsec3param.hash_algo);
|
||||
cJSON_AddNumberToObject(one_rr_object, "flags", dns_rr->rdata.nsec3param.flags);
|
||||
cJSON_AddNumberToObject(one_rr_object, "iteration", dns_rr->rdata.nsec3param.iteration);
|
||||
cJSON_AddNumberToObject(one_rr_object, "salt_len", dns_rr->rdata.nsec3param.salt_len);
|
||||
|
||||
dns_resource_record_str2hex_append(one_rr_object, dns_rr->rdata.nsec3param.salt_value, dns_rr->rdata.nsec3param.salt_len, "salt_value");
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "hash_algo", dns_rr->rdata.nsec3param.hash_algo);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "flags", dns_rr->rdata.nsec3param.flags);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "iteration", dns_rr->rdata.nsec3param.iteration);
|
||||
yyjson_mut_obj_add_int(doc, one_rr_object, "salt_len", dns_rr->rdata.nsec3param.salt_len);
|
||||
|
||||
dns_resource_record_str2hex_append(doc, one_rr_object, dns_rr->rdata.nsec3param.salt_value, dns_rr->rdata.nsec3param.salt_len, "salt_value");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
cJSON_AddItemToArray(dns_rr_array, one_rr_object);
|
||||
|
||||
yyjson_mut_arr_add_val(dns_rr_array, one_rr_object);
|
||||
}
|
||||
|
||||
return dns_rr_array;
|
||||
@@ -245,28 +257,30 @@ const char *dns_message_resource_record_json_exporter(struct dns_message *msg)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
cJSON *answer=dns_resource_record_json_create(answer_rr, n_answer_rr);
|
||||
cJSON *authority=dns_resource_record_json_create(authority_rr, n_authority_rr);
|
||||
cJSON *additional=dns_resource_record_json_create(additional_rr, n_additional_rr);
|
||||
|
||||
cJSON *rr_array=cJSON_CreateObject();
|
||||
yyjson_mut_doc *doc=yyjson_mut_doc_new(0);
|
||||
yyjson_mut_val *rr_array=yyjson_mut_obj(doc);
|
||||
|
||||
yyjson_mut_val *answer=dns_resource_record_json_create(doc, answer_rr, n_answer_rr);
|
||||
if(answer!=NULL)
|
||||
{
|
||||
cJSON_AddItemToObject(rr_array, "answer", answer);
|
||||
yyjson_mut_obj_add_val(doc, rr_array, "answer", answer);
|
||||
}
|
||||
|
||||
|
||||
yyjson_mut_val *authority=dns_resource_record_json_create(doc, authority_rr, n_authority_rr);
|
||||
if(authority!=NULL)
|
||||
{
|
||||
cJSON_AddItemToObject(rr_array, "authority", authority);
|
||||
yyjson_mut_obj_add_val(doc, rr_array, "authority", authority);
|
||||
}
|
||||
|
||||
|
||||
yyjson_mut_val *additional=dns_resource_record_json_create(doc, additional_rr, n_additional_rr);
|
||||
if(additional!=NULL)
|
||||
{
|
||||
cJSON_AddItemToObject(rr_array, "additional", additional);
|
||||
yyjson_mut_obj_add_val(doc, rr_array, "additional", additional);
|
||||
}
|
||||
|
||||
char *json_str=cJSON_PrintUnformatted(rr_array);
|
||||
cJSON_Delete(rr_array);
|
||||
yyjson_mut_doc_set_root(doc, rr_array);
|
||||
const char *json_str=yyjson_mut_write(doc, 0, 0);
|
||||
yyjson_mut_doc_free(doc);
|
||||
|
||||
return json_str;
|
||||
}
|
||||
@@ -321,7 +335,7 @@ int dns_message_resource_record_is_dnssec(struct dns_message *msg)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void dns_resource_record_cname_get(cJSON *cname_array, struct dns_resource_record *rr, uint16_t n_rr)
|
||||
void dns_resource_record_cname_get(yyjson_mut_doc *doc, yyjson_mut_val *cname_array, struct dns_resource_record *rr, uint16_t n_rr)
|
||||
{
|
||||
for(uint16_t i=0; i<n_rr; i++)
|
||||
{
|
||||
@@ -335,8 +349,7 @@ void dns_resource_record_cname_get(cJSON *cname_array, struct dns_resource_recor
|
||||
continue;
|
||||
}
|
||||
|
||||
cJSON *cname=cJSON_CreateString((char *)(rr[i].rdata.cname.value));
|
||||
cJSON_AddItemToArray(cname_array, cname);
|
||||
yyjson_mut_arr_add_strn(doc, cname_array, (char *)(rr[i].rdata.cname.value), rr[i].rdata.cname.value_sz);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -358,13 +371,16 @@ const char *dns_message_resource_record_cname_json_exporter(struct dns_message *
|
||||
return NULL;
|
||||
}
|
||||
|
||||
cJSON *cname_object=cJSON_CreateArray();
|
||||
dns_resource_record_cname_get(cname_object, answer_rr, n_answer_rr);
|
||||
dns_resource_record_cname_get(cname_object, authority_rr, n_authority_rr);
|
||||
dns_resource_record_cname_get(cname_object, additional_rr, n_additional_rr);
|
||||
yyjson_mut_doc *doc=yyjson_mut_doc_new(0);
|
||||
yyjson_mut_val *cname_array=yyjson_mut_arr(doc);
|
||||
yyjson_mut_doc_set_root(doc, cname_array);
|
||||
dns_resource_record_cname_get(doc, cname_array, answer_rr, n_answer_rr);
|
||||
dns_resource_record_cname_get(doc, cname_array, authority_rr, n_authority_rr);
|
||||
dns_resource_record_cname_get(doc, cname_array, additional_rr, n_additional_rr);
|
||||
|
||||
char *json_str=cJSON_PrintUnformatted(cname_object);
|
||||
cJSON_Delete(cname_object);
|
||||
yyjson_mut_doc_set_root(doc, cname_array);
|
||||
const char *json_str=yyjson_mut_write(doc, 0, 0);
|
||||
yyjson_mut_doc_free(doc);
|
||||
|
||||
return json_str;
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
include_directories(${PROJECT_SOURCE_DIR}/deps/)
|
||||
aux_source_directory(${PROJECT_SOURCE_DIR}/deps/toml DEPS_SRC)
|
||||
aux_source_directory(${PROJECT_SOURCE_DIR}/deps/yyjson DEPS_SRC)
|
||||
|
||||
add_library(${PROJECT_NAME}_test_plug SHARED dns_decoder_test.cpp ${DEPS_SRC})
|
||||
add_dependencies(${PROJECT_NAME}_test_plug ${PROJECT_NAME})
|
||||
|
||||
@@ -457,7 +457,7 @@
|
||||
"serial": 2013016250,
|
||||
"refresh": 3600,
|
||||
"retry": 1800,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 3600
|
||||
},
|
||||
{
|
||||
@@ -2344,7 +2344,7 @@
|
||||
"serial": 2021110100,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
}
|
||||
]
|
||||
@@ -3061,7 +3061,7 @@
|
||||
"serial": 2038682778,
|
||||
"refresh": 10000,
|
||||
"retry": 2400,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 3600
|
||||
},
|
||||
{
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"serial": 2016030201,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 2419200,
|
||||
"expire": 2419200,
|
||||
"minimum": 240
|
||||
}
|
||||
],
|
||||
@@ -403,7 +403,7 @@
|
||||
"serial": 2020073304,
|
||||
"refresh": 1080,
|
||||
"retry": 1800,
|
||||
"cname": 28800,
|
||||
"expire": 28800,
|
||||
"minimum": 36000
|
||||
}
|
||||
],
|
||||
@@ -581,7 +581,7 @@
|
||||
"serial": 1635782474,
|
||||
"refresh": 60,
|
||||
"retry": 60,
|
||||
"cname": 88473600,
|
||||
"expire": 88473600,
|
||||
"minimum": 60
|
||||
}
|
||||
]
|
||||
@@ -749,7 +749,7 @@
|
||||
"serial": 1635747392,
|
||||
"refresh": 900,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 1800
|
||||
},
|
||||
{
|
||||
@@ -1293,7 +1293,7 @@
|
||||
"serial": 1457939306,
|
||||
"refresh": 3600,
|
||||
"retry": 360,
|
||||
"cname": 1801209600,
|
||||
"expire": 1801209600,
|
||||
"minimum": 180
|
||||
}
|
||||
]
|
||||
@@ -2228,7 +2228,7 @@
|
||||
"serial": 2021102760,
|
||||
"refresh": 7200,
|
||||
"retry": 3600,
|
||||
"cname": 24796800,
|
||||
"expire": 24796800,
|
||||
"minimum": 3600
|
||||
},
|
||||
{
|
||||
@@ -2630,7 +2630,7 @@
|
||||
"serial": 2021102760,
|
||||
"refresh": 7200,
|
||||
"retry": 3600,
|
||||
"cname": 24796800,
|
||||
"expire": 24796800,
|
||||
"minimum": 3600
|
||||
},
|
||||
{
|
||||
@@ -2768,7 +2768,7 @@
|
||||
"serial": 2038401813,
|
||||
"refresh": 10000,
|
||||
"retry": 2400,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 3600
|
||||
},
|
||||
{
|
||||
|
||||
@@ -643,7 +643,7 @@
|
||||
"serial": 2013012201,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
"serial": 532,
|
||||
"refresh": 10800,
|
||||
"retry": 3600,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 60
|
||||
}
|
||||
],
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
"serial": 2012301931,
|
||||
"refresh": 7200,
|
||||
"retry": 600,
|
||||
"cname": 1209600,
|
||||
"expire": 1209600,
|
||||
"minimum": 300
|
||||
},
|
||||
{
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
"serial": 1635750116,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -781,7 +781,7 @@
|
||||
"serial": 1635750101,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -901,7 +901,7 @@
|
||||
"serial": 1635750101,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -1128,7 +1128,7 @@
|
||||
"serial": 1635750116,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -1355,7 +1355,7 @@
|
||||
"serial": 2027835935,
|
||||
"refresh": 7200,
|
||||
"retry": 3600,
|
||||
"cname": 2419200,
|
||||
"expire": 2419200,
|
||||
"minimum": 21600
|
||||
},
|
||||
{
|
||||
@@ -1444,7 +1444,7 @@
|
||||
"serial": 2028896702,
|
||||
"refresh": 7200,
|
||||
"retry": 3600,
|
||||
"cname": 2419200,
|
||||
"expire": 2419200,
|
||||
"minimum": 21600
|
||||
},
|
||||
{
|
||||
@@ -2152,7 +2152,7 @@
|
||||
"serial": 1635750101,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -2464,7 +2464,7 @@
|
||||
"serial": 3006085127,
|
||||
"refresh": 7200,
|
||||
"retry": 1800,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 3600
|
||||
},
|
||||
{
|
||||
@@ -7742,7 +7742,7 @@
|
||||
"serial": 1635750101,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -8002,7 +8002,7 @@
|
||||
"serial": 2014579941,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -8124,7 +8124,7 @@
|
||||
"serial": 2014579941,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -8245,7 +8245,7 @@
|
||||
"serial": 1635750101,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -8365,7 +8365,7 @@
|
||||
"serial": 1635750116,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -8624,7 +8624,7 @@
|
||||
"serial": 1635750116,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -8745,7 +8745,7 @@
|
||||
"serial": 2014579941,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -8867,7 +8867,7 @@
|
||||
"serial": 2014579941,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -12809,7 +12809,7 @@
|
||||
"serial": 2027835926,
|
||||
"refresh": 7200,
|
||||
"retry": 3600,
|
||||
"cname": 2419200,
|
||||
"expire": 2419200,
|
||||
"minimum": 21600
|
||||
},
|
||||
{
|
||||
@@ -13706,7 +13706,7 @@
|
||||
"serial": 2028896702,
|
||||
"refresh": 7200,
|
||||
"retry": 3600,
|
||||
"cname": 2419200,
|
||||
"expire": 2419200,
|
||||
"minimum": 21600
|
||||
},
|
||||
{
|
||||
@@ -14318,7 +14318,7 @@
|
||||
"serial": 2028896702,
|
||||
"refresh": 7200,
|
||||
"retry": 3600,
|
||||
"cname": 2419200,
|
||||
"expire": 2419200,
|
||||
"minimum": 21600
|
||||
},
|
||||
{
|
||||
@@ -14628,7 +14628,7 @@
|
||||
"serial": 1635750116,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -14944,7 +14944,7 @@
|
||||
"serial": 1635750028,
|
||||
"refresh": 7200,
|
||||
"retry": 7200,
|
||||
"cname": 3600000,
|
||||
"expire": 3600000,
|
||||
"minimum": 7200
|
||||
},
|
||||
{
|
||||
@@ -15910,7 +15910,7 @@
|
||||
"serial": 1635750101,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -16889,7 +16889,7 @@
|
||||
"serial": 1635749528,
|
||||
"refresh": 1800,
|
||||
"retry": 300,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 1800
|
||||
},
|
||||
{
|
||||
@@ -17578,7 +17578,7 @@
|
||||
"serial": 2028896702,
|
||||
"refresh": 7200,
|
||||
"retry": 3600,
|
||||
"cname": 2419200,
|
||||
"expire": 2419200,
|
||||
"minimum": 21600
|
||||
},
|
||||
{
|
||||
@@ -17667,7 +17667,7 @@
|
||||
"serial": 1635750101,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -18154,7 +18154,7 @@
|
||||
"serial": 2027835935,
|
||||
"refresh": 7200,
|
||||
"retry": 3600,
|
||||
"cname": 2419200,
|
||||
"expire": 2419200,
|
||||
"minimum": 21600
|
||||
},
|
||||
{
|
||||
@@ -18276,7 +18276,7 @@
|
||||
"serial": 2028896702,
|
||||
"refresh": 7200,
|
||||
"retry": 3600,
|
||||
"cname": 2419200,
|
||||
"expire": 2419200,
|
||||
"minimum": 21600
|
||||
},
|
||||
{
|
||||
@@ -18397,7 +18397,7 @@
|
||||
"serial": 1635750116,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -18517,7 +18517,7 @@
|
||||
"serial": 1635750101,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -18638,7 +18638,7 @@
|
||||
"serial": 1635750002,
|
||||
"refresh": 600,
|
||||
"retry": 300,
|
||||
"cname": 1814400,
|
||||
"expire": 1814400,
|
||||
"minimum": 300
|
||||
},
|
||||
{
|
||||
@@ -18866,7 +18866,7 @@
|
||||
"serial": 1635750101,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -18986,7 +18986,7 @@
|
||||
"serial": 1635750116,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -20724,7 +20724,7 @@
|
||||
"serial": 2027835935,
|
||||
"refresh": 7200,
|
||||
"retry": 3600,
|
||||
"cname": 2419200,
|
||||
"expire": 2419200,
|
||||
"minimum": 21600
|
||||
},
|
||||
{
|
||||
@@ -20920,7 +20920,7 @@
|
||||
"serial": 2027835935,
|
||||
"refresh": 7200,
|
||||
"retry": 3600,
|
||||
"cname": 2419200,
|
||||
"expire": 2419200,
|
||||
"minimum": 21600
|
||||
},
|
||||
{
|
||||
@@ -21585,7 +21585,7 @@
|
||||
"serial": 1635750116,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -21705,7 +21705,7 @@
|
||||
"serial": 1635750116,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -22074,7 +22074,7 @@
|
||||
"serial": 1635750116,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -22441,7 +22441,7 @@
|
||||
"serial": 2014579941,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -22562,7 +22562,7 @@
|
||||
"serial": 1635750116,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -22757,7 +22757,7 @@
|
||||
"serial": 2107261307,
|
||||
"refresh": 3600,
|
||||
"retry": 15,
|
||||
"cname": 86400,
|
||||
"expire": 86400,
|
||||
"minimum": 3600
|
||||
},
|
||||
{
|
||||
@@ -22878,7 +22878,7 @@
|
||||
"serial": 1635750116,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -22998,7 +22998,7 @@
|
||||
"serial": 1635750101,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -26096,7 +26096,7 @@
|
||||
"serial": 1635750116,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -26879,7 +26879,7 @@
|
||||
"serial": 2028896702,
|
||||
"refresh": 7200,
|
||||
"retry": 3600,
|
||||
"cname": 2419200,
|
||||
"expire": 2419200,
|
||||
"minimum": 21600
|
||||
},
|
||||
{
|
||||
@@ -27066,7 +27066,7 @@
|
||||
"serial": 1635750101,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -27716,7 +27716,7 @@
|
||||
"serial": 1635750116,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -28685,7 +28685,7 @@
|
||||
"serial": 1635750116,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -32160,7 +32160,7 @@
|
||||
"serial": 1635749528,
|
||||
"refresh": 1800,
|
||||
"retry": 300,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 1800
|
||||
},
|
||||
{
|
||||
@@ -33009,7 +33009,7 @@
|
||||
"serial": 1635750101,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -33097,7 +33097,7 @@
|
||||
"serial": 2027084453,
|
||||
"refresh": 7200,
|
||||
"retry": 3600,
|
||||
"cname": 2419200,
|
||||
"expire": 2419200,
|
||||
"minimum": 21600
|
||||
},
|
||||
{
|
||||
@@ -36151,7 +36151,7 @@
|
||||
"serial": 200211427,
|
||||
"refresh": 86400,
|
||||
"retry": 7200,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -42583,7 +42583,7 @@
|
||||
"serial": 1635750101,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -42703,7 +42703,7 @@
|
||||
"serial": 1635750101,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -42930,7 +42930,7 @@
|
||||
"serial": 1635750101,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -43221,7 +43221,7 @@
|
||||
"serial": 1635750116,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -43558,7 +43558,7 @@
|
||||
"serial": 1635750116,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
@@ -44256,7 +44256,7 @@
|
||||
"serial": 1635750101,
|
||||
"refresh": 1800,
|
||||
"retry": 900,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 86400
|
||||
},
|
||||
{
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
"serial": 2012301933,
|
||||
"refresh": 7200,
|
||||
"retry": 600,
|
||||
"cname": 1209600,
|
||||
"expire": 1209600,
|
||||
"minimum": 300
|
||||
},
|
||||
{
|
||||
@@ -660,7 +660,7 @@
|
||||
"serial": 2012301931,
|
||||
"refresh": 7200,
|
||||
"retry": 600,
|
||||
"cname": 1209600,
|
||||
"expire": 1209600,
|
||||
"minimum": 300
|
||||
},
|
||||
{
|
||||
@@ -1042,7 +1042,7 @@
|
||||
"serial": 2012301931,
|
||||
"refresh": 7200,
|
||||
"retry": 600,
|
||||
"cname": 1209600,
|
||||
"expire": 1209600,
|
||||
"minimum": 300
|
||||
},
|
||||
{
|
||||
@@ -1666,7 +1666,7 @@
|
||||
"serial": 2012301931,
|
||||
"refresh": 7200,
|
||||
"retry": 600,
|
||||
"cname": 1209600,
|
||||
"expire": 1209600,
|
||||
"minimum": 300
|
||||
},
|
||||
{
|
||||
@@ -2290,7 +2290,7 @@
|
||||
"serial": 2012301931,
|
||||
"refresh": 7200,
|
||||
"retry": 600,
|
||||
"cname": 1209600,
|
||||
"expire": 1209600,
|
||||
"minimum": 300
|
||||
},
|
||||
{
|
||||
@@ -2914,7 +2914,7 @@
|
||||
"serial": 2012301931,
|
||||
"refresh": 7200,
|
||||
"retry": 600,
|
||||
"cname": 1209600,
|
||||
"expire": 1209600,
|
||||
"minimum": 300
|
||||
},
|
||||
{
|
||||
@@ -3646,7 +3646,7 @@
|
||||
"serial": 2012301931,
|
||||
"refresh": 7200,
|
||||
"retry": 600,
|
||||
"cname": 1209600,
|
||||
"expire": 1209600,
|
||||
"minimum": 300
|
||||
},
|
||||
{
|
||||
@@ -4136,7 +4136,7 @@
|
||||
"serial": 2012301931,
|
||||
"refresh": 7200,
|
||||
"retry": 600,
|
||||
"cname": 1209600,
|
||||
"expire": 1209600,
|
||||
"minimum": 300
|
||||
},
|
||||
{
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"serial": 2013016250,
|
||||
"refresh": 3600,
|
||||
"retry": 1800,
|
||||
"cname": 604800,
|
||||
"expire": 604800,
|
||||
"minimum": 3600
|
||||
},
|
||||
{
|
||||
|
||||
@@ -100,10 +100,24 @@ extern "C" int commit_test_result_json(cJSON *node, const char *name)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void perf_resource_record_decode(struct dns_message *dns_msg)
|
||||
extern void dns_message_answer_resource_record_get0(struct dns_message *msg, struct dns_resource_record **answer_rr, uint16_t *n_answer_rr);
|
||||
extern void dns_message_authority_resource_record_get0(struct dns_message *msg, struct dns_resource_record **authority_rr, uint16_t *n_authority_rr);
|
||||
extern void dns_message_additional_resource_record_get0(struct dns_message *msg, struct dns_resource_record **additional_rr, uint16_t *n_additional_rr);
|
||||
|
||||
void perf_resource_record_decode(struct dns_message *msg)
|
||||
{
|
||||
TIME_START();
|
||||
uint16_t n_answer_rr=0;
|
||||
struct dns_resource_record *answer_rr=NULL;
|
||||
dns_message_answer_resource_record_get0(msg, &answer_rr, &n_answer_rr);
|
||||
|
||||
uint16_t n_authority_rr=0;
|
||||
struct dns_resource_record *authority_rr=NULL;
|
||||
dns_message_authority_resource_record_get0(msg, &authority_rr, &n_authority_rr);
|
||||
|
||||
uint16_t n_additional_rr=0;
|
||||
struct dns_resource_record *additional_rr=NULL;
|
||||
dns_message_additional_resource_record_get0(msg, &additional_rr, &n_additional_rr);
|
||||
TIME_DIFF();
|
||||
//fieldstat_easy_histogram_record(main_env->fse.handle, tid, main_env->fse.id[PERF_TAG_QUESTION], &(main_env->fse.tag[PERF_TAG_QUESTION]), 1, time_diff_ns)
|
||||
}
|
||||
@@ -207,8 +221,16 @@ int32_t dns_decoder_test_config_load(const char *cfg_path, struct perf_main_env
|
||||
toml_free(root);
|
||||
return -1;
|
||||
}
|
||||
|
||||
toml_table_t *perf_tbl=toml_table_in(test_tbl, "perf");
|
||||
if(NULL==perf_tbl)
|
||||
{
|
||||
fprintf(stderr, "[%s:%d] config file: %s has no key: [decoder.dns.test.perf]", __FUNCTION__, __LINE__, cfg_path);
|
||||
toml_free(root);
|
||||
return -1;
|
||||
}
|
||||
|
||||
toml_datum_t perf_worker_thread_num_val=toml_int_in(test_tbl, "perf_worker_thread_num");
|
||||
toml_datum_t perf_worker_thread_num_val=toml_int_in(perf_tbl, "perf_worker_thread_num");
|
||||
if(perf_worker_thread_num_val.ok)
|
||||
{
|
||||
main_env->worker_thread_num=perf_worker_thread_num_val.u.i;
|
||||
|
||||
@@ -29,7 +29,6 @@ struct dns_decoder_test_plugin_env
|
||||
int topic_id;
|
||||
int result_index;
|
||||
int commit_result_enable;
|
||||
int write_result_enable;
|
||||
int decode_resource_record_enable;
|
||||
int export_resource_record_enable;
|
||||
};
|
||||
@@ -64,51 +63,40 @@ void dns_decoder_test_message_cb(struct session *ss, int topic_id, const void *m
|
||||
return ;
|
||||
}
|
||||
|
||||
cJSON *real_result=cJSON_CreateObject();
|
||||
cJSON_AddStringToObject(real_result, "Tuple4", session_get0_readable_addr(ss));
|
||||
|
||||
uint16_t n_question=0;
|
||||
struct dns_query_question *question=NULL;
|
||||
dns_message_query_question_get0(dns_msg, &question, &n_question);
|
||||
if(n_question>0 && question!=NULL)
|
||||
{
|
||||
cJSON_AddStringToObject(real_result, "dns_qname", dns_query_question_qname_get0(question));
|
||||
cJSON_AddNumberToObject(real_result, "dns_qtype", dns_query_question_qtype_get0(question));
|
||||
cJSON_AddNumberToObject(real_result, "dns_qclass", dns_query_question_qclass_get0(question));
|
||||
}
|
||||
|
||||
struct dns_flag *flag=dns_message_header_flag_get0(dns_msg);
|
||||
if(flag!=NULL)
|
||||
{
|
||||
cJSON_AddNumberToObject(real_result, "dns_qr", (double)(flag->qr));
|
||||
cJSON_AddNumberToObject(real_result, "dns_opcode", (double)(flag->opcode));
|
||||
cJSON_AddNumberToObject(real_result, "dns_rd", (double)(flag->rd));
|
||||
}
|
||||
|
||||
const char *resource_record_str=dns_message_resource_record_json_exporter(dns_msg);
|
||||
if(resource_record_str!=NULL)
|
||||
{
|
||||
cJSON *rr_array=cJSON_Parse(resource_record_str);
|
||||
cJSON_AddItemToObject(real_result, "rr", rr_array);
|
||||
}
|
||||
|
||||
if(plugin_env->write_result_enable==1)
|
||||
{
|
||||
char *real_result_str=cJSON_Print(real_result);
|
||||
dns_real_result_write_file(real_result_str);
|
||||
free(real_result_str);
|
||||
}
|
||||
|
||||
if(plugin_env->commit_result_enable==1)
|
||||
{
|
||||
cJSON *real_result=cJSON_CreateObject();
|
||||
cJSON_AddStringToObject(real_result, "Tuple4", session_get0_readable_addr(ss));
|
||||
|
||||
uint16_t n_question=0;
|
||||
struct dns_query_question *question=NULL;
|
||||
dns_message_query_question_get0(dns_msg, &question, &n_question);
|
||||
if(n_question>0 && question!=NULL)
|
||||
{
|
||||
cJSON_AddStringToObject(real_result, "dns_qname", dns_query_question_qname_get0(question));
|
||||
cJSON_AddNumberToObject(real_result, "dns_qtype", dns_query_question_qtype_get0(question));
|
||||
cJSON_AddNumberToObject(real_result, "dns_qclass", dns_query_question_qclass_get0(question));
|
||||
}
|
||||
|
||||
struct dns_flag *flag=dns_message_header_flag_get0(dns_msg);
|
||||
if(flag!=NULL)
|
||||
{
|
||||
cJSON_AddNumberToObject(real_result, "dns_qr", (double)(flag->qr));
|
||||
cJSON_AddNumberToObject(real_result, "dns_opcode", (double)(flag->opcode));
|
||||
cJSON_AddNumberToObject(real_result, "dns_rd", (double)(flag->rd));
|
||||
}
|
||||
|
||||
const char *resource_record_str=dns_message_resource_record_json_exporter(dns_msg);
|
||||
if(resource_record_str!=NULL)
|
||||
{
|
||||
cJSON *rr_array=cJSON_Parse(resource_record_str);
|
||||
cJSON_AddItemToObject(real_result, "rr", rr_array);
|
||||
}
|
||||
|
||||
char result_name[16]="";
|
||||
sprintf(result_name, "DNS_RESULT_%d", plugin_env->result_index++);
|
||||
commit_test_result_json(real_result, result_name);
|
||||
}
|
||||
else
|
||||
{
|
||||
cJSON_Delete(real_result);
|
||||
}
|
||||
}
|
||||
|
||||
void *dns_decoder_test_per_session_context_new(struct session *sess, void *plugin_env)
|
||||
@@ -183,31 +171,16 @@ int32_t dns_decoder_test_config_load(const char *cfg_path, struct dns_decoder_te
|
||||
}
|
||||
}
|
||||
|
||||
toml_datum_t write_result_enable_val=toml_string_in(test_tbl, "write_result_enable");
|
||||
if(write_result_enable_val.ok==0)
|
||||
{
|
||||
plugin_env->write_result_enable=0;
|
||||
fprintf(stderr, "[%s:%d] config file: %s has no key: [decoder.dns.test.write_result_enable]", __FUNCTION__, __LINE__, cfg_path);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(memcmp("no", write_result_enable_val.u.s, strlen("no"))==0)
|
||||
{
|
||||
plugin_env->write_result_enable=0;
|
||||
}
|
||||
else if(memcmp("yes", write_result_enable_val.u.s, strlen("yes"))==0)
|
||||
{
|
||||
plugin_env->write_result_enable=1;
|
||||
}
|
||||
else
|
||||
{
|
||||
plugin_env->write_result_enable=1;
|
||||
fprintf(stderr, "[%s:%d] config file: %s key: [decoder.dns.test.write_result_enable] value is not yes or no", __FUNCTION__, __LINE__, cfg_path);
|
||||
}
|
||||
}
|
||||
toml_table_t *perf_tbl=toml_table_in(test_tbl, "perf");
|
||||
if(NULL==perf_tbl)
|
||||
{
|
||||
fprintf(stderr, "[%s:%d] config file: %s has no key: [decoder.dns.test.perf]", __FUNCTION__, __LINE__, cfg_path);
|
||||
toml_free(root);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// decode_resource_record_enable
|
||||
toml_datum_t decode_resource_record_enable_val=toml_string_in(test_tbl, "decode_resource_record_enable");
|
||||
toml_datum_t decode_resource_record_enable_val=toml_string_in(perf_tbl, "decode_resource_record_enable");
|
||||
if(decode_resource_record_enable_val.ok==0)
|
||||
{
|
||||
plugin_env->decode_resource_record_enable=0;
|
||||
@@ -231,7 +204,7 @@ int32_t dns_decoder_test_config_load(const char *cfg_path, struct dns_decoder_te
|
||||
}
|
||||
|
||||
// export_resource_record_enable
|
||||
toml_datum_t export_resource_record_enable_val=toml_string_in(test_tbl, "export_resource_record_enable");
|
||||
toml_datum_t export_resource_record_enable_val=toml_string_in(perf_tbl, "export_resource_record_enable");
|
||||
if(export_resource_record_enable_val.ok==0)
|
||||
{
|
||||
plugin_env->export_resource_record_enable=0;
|
||||
|
||||
Reference in New Issue
Block a user