diff options
Diffstat (limited to 'test/dns_decoder_test.cpp')
| -rw-r--r-- | test/dns_decoder_test.cpp | 84 |
1 files changed, 67 insertions, 17 deletions
diff --git a/test/dns_decoder_test.cpp b/test/dns_decoder_test.cpp index aec2e21..f0ddbd3 100644 --- a/test/dns_decoder_test.cpp +++ b/test/dns_decoder_test.cpp @@ -31,6 +31,8 @@ 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; }; extern "C" int commit_test_result_json(cJSON *node, const char *name); @@ -304,25 +306,28 @@ void dns_decoder_test_message_cb(struct session *ss, int topic_id, const void *m cJSON_AddNumberToObject(real_result, "dns_rd", (double)(flag->rd)); } - 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); + 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_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); - 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); + 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_AddItemToObject(real_result, "rr", rr_object); + cJSON_AddItemToObject(real_result, "rr", rr_object); + } char result_name[16]=""; sprintf(result_name, "DNS_RESULT_%d", plugin_env->result_index++); @@ -351,7 +356,6 @@ void dns_decoder_test_per_session_context_free(struct session *sess, void *sessi } - int32_t dns_decoder_test_config_load(const char *cfg_path, struct dns_decoder_test_plugin_env *plugin_env) { FILE *fp=fopen(cfg_path, "r"); @@ -412,7 +416,53 @@ int32_t dns_decoder_test_config_load(const char *cfg_path, struct dns_decoder_te plugin_env->commit_result_enable=1; fprintf(stderr, "[%s:%d] config file: %s key: [decoder.dns.test.commit_result_enable] value is not yes or no", __FUNCTION__, __LINE__, cfg_path); } - + } + + 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); + } + } + + // decode_resource_record_enable + toml_datum_t decode_resource_record_enable_val=toml_string_in(test_tbl, "decode_resource_record_enable"); + if(decode_resource_record_enable_val.ok==0) + { + plugin_env->decode_resource_record_enable=0; + fprintf(stderr, "[%s:%d] config file: %s has no key: [decoder.dns.test.decode_resource_record_enable]", __FUNCTION__, __LINE__, cfg_path); + } + else + { + if(memcmp("no", decode_resource_record_enable_val.u.s, strlen("no"))==0) + { + plugin_env->decode_resource_record_enable=0; + } + else if(memcmp("yes", decode_resource_record_enable_val.u.s, strlen("yes"))==0) + { + plugin_env->decode_resource_record_enable=1; + } + else + { + plugin_env->decode_resource_record_enable=1; + fprintf(stderr, "[%s:%d] config file: %s key: [decoder.dns.test.decode_resource_record_enable] value is not yes or no", __FUNCTION__, __LINE__, cfg_path); + } } toml_free(root); |
