summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/CMakeLists.txt9
-rw-r--r--test/dns_decoder_perf_dummy.h4
-rw-r--r--test/dns_decoder_perf_main.cpp16
-rw-r--r--test/dns_decoder_test.cpp334
4 files changed, 103 insertions, 260 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 766d204..b878303 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -6,7 +6,14 @@ add_dependencies(${PROJECT_NAME}_test_plug ${PROJECT_NAME})
target_link_libraries(${PROJECT_NAME}_test_plug cjson)
set_target_properties(${PROJECT_NAME}_test_plug PROPERTIES PREFIX "")
-add_executable(dns_decoder_perf_test dns_decoder_perf_main.cpp dns_decoder_perf_dummy.cpp ${DEPS_SRC} dns_decoder_test.cpp ${PROJECT_SOURCE_DIR}/src/dns_decoder.cpp)
+add_executable(dns_decoder_perf_test
+ dns_decoder_perf_main.cpp
+ dns_decoder_perf_dummy.cpp
+ ${DEPS_SRC} dns_decoder_test.cpp
+ ${PROJECT_SOURCE_DIR}/src/dns_decoder.cpp
+ ${PROJECT_SOURCE_DIR}/src/dns_resource_record_exporter.cpp
+ )
+
target_link_libraries(dns_decoder_perf_test fieldstat4 pthread cjson)
set(TEST_RUN_DIR ${CMAKE_CURRENT_BINARY_DIR}/sapp)
diff --git a/test/dns_decoder_perf_dummy.h b/test/dns_decoder_perf_dummy.h
index d7ebcca..c223065 100644
--- a/test/dns_decoder_perf_dummy.h
+++ b/test/dns_decoder_perf_dummy.h
@@ -9,6 +9,8 @@ extern "C"
#include "stellar/session.h"
#include <stellar/session_mq.h>
+void perf_resource_record_decode(struct dns_message *dns_msg);
+
#ifdef __cplusplus
}
#endif
@@ -27,4 +29,4 @@ struct stellar *stellar_init(int worker_thread_num);
struct session *stellar_session_new(struct stellar *st, struct stellar_packet *cur_pkt, int tid);
void stellar_session_free(struct session *ss);
-int session_mq_publish_message_by_name(struct session *ss, const char *topic_name, struct stellar_packet *msg); \ No newline at end of file
+int session_mq_publish_message_by_name(struct session *ss, const char *topic_name, struct stellar_packet *msg);
diff --git a/test/dns_decoder_perf_main.cpp b/test/dns_decoder_perf_main.cpp
index adf8434..078e560 100644
--- a/test/dns_decoder_perf_main.cpp
+++ b/test/dns_decoder_perf_main.cpp
@@ -100,9 +100,21 @@ extern "C" int commit_test_result_json(cJSON *node, const char *name)
return 0;
}
-void perf_resource_record_decode()
+void perf_resource_record_decode(struct dns_message *dns_msg)
{
-
+ TIME_START();
+ uint16_t n_answer_rr=0;
+ uint16_t n_additional_rr=0;
+ uint16_t n_authority_rr=0;
+ struct dns_resource_record *answer_rr=NULL;
+ struct dns_resource_record *additional_rr=NULL;
+ struct dns_resource_record *authority_rr=NULL;
+
+ dns_message_answer_resource_record_get0(dns_msg, &answer_rr, &n_answer_rr);
+ dns_message_authority_resource_record_get0(dns_msg, &authority_rr, &n_authority_rr);
+ dns_message_additional_resource_record_get0(dns_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)
}
void *pthread_message_publish(void *arg)
diff --git a/test/dns_decoder_test.cpp b/test/dns_decoder_test.cpp
index f0ddbd3..44931e5 100644
--- a/test/dns_decoder_test.cpp
+++ b/test/dns_decoder_test.cpp
@@ -4,13 +4,11 @@
#include <time.h>
#include <unistd.h>
#include <assert.h>
-#include <arpa/inet.h>
#ifdef __cplusplus
extern "C"
{
-
#include "cJSON.h"
#include "dns_decoder.h"
#include "toml/toml.h"
@@ -33,8 +31,10 @@ struct dns_decoder_test_plugin_env
int commit_result_enable;
int write_result_enable;
int decode_resource_record_enable;
+ int export_resource_record_enable;
};
+extern "C" void perf_resource_record_decode(struct dns_message *dns_msg);
extern "C" int commit_test_result_json(cJSON *node, const char *name);
void dns_real_result_write_file(char *result_str)
@@ -47,232 +47,6 @@ void dns_real_result_write_file(char *result_str)
}
}
-void dns_resource_record_str2hex_append(cJSON *one_rr_object, uint8_t *str, size_t str_sz, const char *key)
-{
- if(one_rr_object==NULL || str==NULL || str_sz==0 || key==NULL)
- {
- return;
- }
-
- size_t offset=0;
- char hex_buff[4096]={0};
- size_t hex_buff_sz=sizeof(hex_buff);
-
- for(size_t i=0; i<str_sz && i<hex_buff_sz/2; i++)
- {
- offset+=snprintf((char *)(hex_buff+offset), hex_buff_sz-offset, "%02x", str[i]);
- if(offset+2 >= hex_buff_sz)
- {
- break;
- }
- }
-
- if(offset>0)
- {
- cJSON_AddStringToObject(one_rr_object, key, hex_buff);
- }
-}
-
-void dns_resource_record_dstring_append(cJSON *one_rr_object, struct dstring *dstr, const char *key)
-{
- if(dstr->value_sz > 0)
- {
- cJSON_AddStringToObject(one_rr_object, key, (char *)(dstr->value));
- }
-}
-
-int dns_resource_record_json_exporter(cJSON *object, struct dns_resource_record *rr_array, uint16_t n_rr, const char *rr_type, int *dns_sec)
-{
- if(object==NULL || rr_array==NULL || n_rr==0 || dns_sec==NULL)
- {
- return 0;
- }
-
- char ip_str[128];
- cJSON *dns_rr_array=cJSON_CreateArray();
-
- for(uint16_t i=0; i<n_rr; i++)
- {
- cJSON *one_rr_object=cJSON_CreateObject();
- 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);
- }
- 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);
- }
-
- if(dns_rr->rdlength==0)
- {
- cJSON_AddItemToArray(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);
- 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);
- break;
- case DNS_RR_TYPE_NS:
- dns_resource_record_dstring_append(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");
- break;
- case DNS_RR_TYPE_MF:
- dns_resource_record_dstring_append(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");
- break;
- case DNS_RR_TYPE_MB:
- dns_resource_record_dstring_append(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");
- break;
- case DNS_RR_TYPE_MR:
- dns_resource_record_dstring_append(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);
- 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);
- break;
- case DNS_RR_TYPE_PTR:
- dns_resource_record_dstring_append(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");
- 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");
- 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);
- 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");
- 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);
- 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");
- break;
- case DNS_RR_TYPE_OPT:
- break;
- case DNS_RR_TYPE_DS:
- *dns_sec = 2;
- 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");
- break;
- case DNS_RR_TYPE_RRSIG:
- *dns_sec = 2;
- 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);
-
- 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");
- break;
- case DNS_RR_TYPE_NSEC:
- *dns_sec = 2;
- 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_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");
- break;
- case DNS_RR_TYPE_DNSKEY:
- *dns_sec = 2;
- 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");
- break;
- case DNS_RR_TYPE_NSEC3:
- *dns_sec = 2;
- 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);
-
- 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");
-
- 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");
-
- 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");
- 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");
- break;
- default:
- break;
- }
-
- cJSON_AddItemToArray(dns_rr_array, one_rr_object);
- }
-
- cJSON_AddItemToObject(object, rr_type, dns_rr_array);
-
- return 1;
-}
-
void dns_decoder_test_message_cb(struct session *ss, int topic_id, const void *msg, void *per_session_ctx, void *plugin_env_str)
{
struct dns_message *dns_msg=(struct dns_message *)msg;
@@ -284,18 +58,23 @@ void dns_decoder_test_message_cb(struct session *ss, int topic_id, const void *m
//uint16_t id=dns_message_header_id_get(dns_msg);
struct dns_decoder_test_plugin_env *plugin_env=(struct dns_decoder_test_plugin_env *)plugin_env_str;
+ if(plugin_env->decode_resource_record_enable==1)
+ {
+ perf_resource_record_decode(dns_msg);
+ return ;
+ }
- cJSON *real_result=cJSON_CreateObject();
- cJSON_AddStringToObject(real_result, "Tuple4", session_get0_readable_addr(ss));
+ 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_question_get0(dns_msg, &question, &n_question);
+ dns_message_query_question_get0(dns_msg, &question, &n_question);
if(n_question>0 && question!=NULL)
{
- cJSON_AddStringToObject(real_result, "dns_qname", (char *)question->qname);
- cJSON_AddNumberToObject(real_result, "dns_qtype", question->qtype);
- cJSON_AddNumberToObject(real_result, "dns_qclass", question->qclass);
+ 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);
@@ -306,38 +85,57 @@ void dns_decoder_test_message_cb(struct session *ss, int topic_id, const void *m
cJSON_AddNumberToObject(real_result, "dns_rd", (double)(flag->rd));
}
- if(plugin_env->decode_resource_record_enable==1)
- {
- cJSON *rr_object=cJSON_CreateObject();
- uint16_t n_answer_rr=0;
- struct dns_resource_record *answer_rr=NULL;
- dns_message_answer_resource_record_get0(dns_msg, &answer_rr, &n_answer_rr);
+ uint16_t n_answer_rr=0;
+ struct dns_resource_record *answer_rr=NULL;
+ dns_message_answer_resource_record_get0(dns_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(dns_msg, &authority_rr, &n_authority_rr);
- uint16_t n_authority_rr=0;
- struct dns_resource_record *authority_rr=NULL;
- dns_message_authority_resource_record_get0(dns_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(dns_msg, &additional_rr, &n_additional_rr);
- uint16_t n_additional_rr=0;
- struct dns_resource_record *additional_rr=NULL;
- dns_message_additional_resource_record_get0(dns_msg, &additional_rr, &n_additional_rr);
+ const char *answer=dns_resource_record_json_exporter(answer_rr, n_answer_rr);
+ const char *authority=dns_resource_record_json_exporter(authority_rr, n_authority_rr);
+ const char *additional=dns_resource_record_json_exporter(additional_rr, n_additional_rr);
- int dns_sec=1;
- dns_resource_record_json_exporter(rr_object, answer_rr, n_answer_rr, "answer", &dns_sec);
- dns_resource_record_json_exporter(rr_object, authority_rr, n_authority_rr, "authority", &dns_sec);
- dns_resource_record_json_exporter(rr_object, additional_rr, n_additional_rr, "additional", &dns_sec);
+ cJSON *rr_array=cJSON_CreateObject();
+ if(answer!=NULL)
+ {
+ cJSON *rr_object=cJSON_Parse(answer);
+ cJSON_AddItemToObject(rr_array, "answer", rr_object);
+ free((void *)answer);
+ }
+
+ if(authority!=NULL)
+ {
+ cJSON *rr_object=cJSON_Parse(authority);
+ cJSON_AddItemToObject(rr_array, "authority", rr_object);
+ free((void *)authority);
+ }
- cJSON_AddItemToObject(real_result, "rr", rr_object);
+ if(additional!=NULL)
+ {
+ cJSON *rr_object=cJSON_Parse(additional);
+ cJSON_AddItemToObject(rr_array, "additional", rr_object);
+ free((void *)additional);
}
- char result_name[16]="";
- sprintf(result_name, "DNS_RESULT_%d", plugin_env->result_index++);
+ cJSON_AddItemToObject(real_result, "rr", rr_array);
- char *real_result_str=cJSON_Print(real_result);
- dns_real_result_write_file(real_result_str);
- free(real_result_str);
+ 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)
{
+ char result_name[16]="";
+ sprintf(result_name, "DNS_RESULT_%d", plugin_env->result_index++);
commit_test_result_json(real_result, result_name);
}
else
@@ -465,6 +263,30 @@ 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");
+ if(export_resource_record_enable_val.ok==0)
+ {
+ plugin_env->export_resource_record_enable=0;
+ fprintf(stderr, "[%s:%d] config file: %s has no key: [decoder.dns.test.export_resource_record_enable]", __FUNCTION__, __LINE__, cfg_path);
+ }
+ else
+ {
+ if(memcmp("no", export_resource_record_enable_val.u.s, strlen("no"))==0)
+ {
+ plugin_env->export_resource_record_enable=0;
+ }
+ else if(memcmp("yes", export_resource_record_enable_val.u.s, strlen("yes"))==0)
+ {
+ plugin_env->export_resource_record_enable=1;
+ }
+ else
+ {
+ plugin_env->export_resource_record_enable=1;
+ fprintf(stderr, "[%s:%d] config file: %s key: [decoder.dns.test.export_resource_record_enable] value is not yes or no", __FUNCTION__, __LINE__, cfg_path);
+ }
+ }
+
toml_free(root);
return ret;