summaryrefslogtreecommitdiff
path: root/test/dns_decoder_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/dns_decoder_test.cpp')
-rw-r--r--test/dns_decoder_test.cpp84
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);