diff options
| author | liuxueli <[email protected]> | 2024-09-05 03:37:21 +0000 |
|---|---|---|
| committer | liuxueli <[email protected]> | 2024-09-05 03:37:21 +0000 |
| commit | 26b958817dac10f255bba2d097124085e8475974 (patch) | |
| tree | bd1acf9e35bd10824d20e17d01f0e990ad8591d8 | |
| parent | 256211094a27e09832ab06b7602446bc23a38e25 (diff) | |
Feature: Export API getting qdcount/ancount/aucount/adcount of headerfeature-yyjson
| -rw-r--r-- | include/dns_decoder.h | 9 | ||||
| -rw-r--r-- | src/dns_decoder.cpp | 32 | ||||
| -rw-r--r-- | src/version.map | 4 |
3 files changed, 34 insertions, 11 deletions
diff --git a/include/dns_decoder.h b/include/dns_decoder.h index 69e1e4b..eba57f7 100644 --- a/include/dns_decoder.h +++ b/include/dns_decoder.h @@ -43,6 +43,15 @@ struct dns_resource_record; enum dns_message_type dns_message_type_get(struct dns_message *msg); int32_t dns_message_header_id_get(struct dns_message *msg); + +int32_t dns_message_header_qdcount_get(struct dns_message *msg); +// answer resource records count +int32_t dns_message_header_ancount_get(struct dns_message *msg); +// authority resource records count +int32_t dns_message_header_aucount_get(struct dns_message *msg); +// additional resource records count +int32_t dns_message_header_adcount_get(struct dns_message *msg); + struct dns_flag *dns_message_header_flag_get0(struct dns_message *msg); void dns_message_uuid_get0(struct dns_message *msg, char **value, size_t *value_sz); diff --git a/src/dns_decoder.cpp b/src/dns_decoder.cpp index 784ad07..603f786 100644 --- a/src/dns_decoder.cpp +++ b/src/dns_decoder.cpp @@ -1894,22 +1894,32 @@ void dns_message_uuid_get0(struct dns_message *msg, char **value, size_t *value_ enum dns_message_type dns_message_type_get(struct dns_message *msg) { - if(NULL==msg) - { - return DNS_MESSAGE_MAX; - } - - return msg->type; + return ((NULL==msg) ? DNS_MESSAGE_MAX : msg->type); } int32_t dns_message_header_id_get(struct dns_message *msg) { - if(NULL==msg || msg->magic!=DNS_MESSAGE_MAGIC || msg->type==DNS_MESSAGE_TRANSACTION_BEGIN || msg->type==DNS_MESSAGE_TRANSACTION_END) - { - return -1; - } + return ((NULL==msg || msg->magic!=DNS_MESSAGE_MAGIC || msg->type==DNS_MESSAGE_TRANSACTION_BEGIN || msg->type==DNS_MESSAGE_TRANSACTION_END) ? -1 : msg->trans_identifier_id); +} + +int32_t dns_message_header_qdcount_get(struct dns_message *msg) +{ + return ((NULL==msg || msg->magic!=DNS_MESSAGE_MAGIC || msg->type==DNS_MESSAGE_TRANSACTION_BEGIN || msg->type==DNS_MESSAGE_TRANSACTION_END) ? -1 : msg->n_question); +} + +int32_t dns_message_header_ancount_get(struct dns_message *msg) +{ + return ((NULL==msg || msg->magic!=DNS_MESSAGE_MAGIC || msg->type==DNS_MESSAGE_TRANSACTION_BEGIN || msg->type==DNS_MESSAGE_TRANSACTION_END) ? -1 : msg->n_answer_rr); +} - return msg->trans_identifier_id; +int32_t dns_message_header_aucount_get(struct dns_message *msg) +{ + return ((NULL==msg || msg->magic!=DNS_MESSAGE_MAGIC || msg->type==DNS_MESSAGE_TRANSACTION_BEGIN || msg->type==DNS_MESSAGE_TRANSACTION_END) ? -1 : msg->n_authority_rr); +} + +int32_t dns_message_header_adcount_get(struct dns_message *msg) +{ + return ((NULL==msg || msg->magic!=DNS_MESSAGE_MAGIC || msg->type==DNS_MESSAGE_TRANSACTION_BEGIN || msg->type==DNS_MESSAGE_TRANSACTION_END) ? -1 : msg->n_additional_rr); } struct dns_flag *dns_message_header_flag_get0(struct dns_message *msg) diff --git a/src/version.map b/src/version.map index bfa9d04..30bc121 100644 --- a/src/version.map +++ b/src/version.map @@ -6,6 +6,10 @@ global: *dns_message_type_get*; *dns_message_header_id_get*; *dns_message_header_flag_get0*; + *dns_message_header_qdcount_get*; + *dns_message_header_ancount_get*; + *dns_message_header_aucount_get*; + *dns_message_header_adcount_get*; *dns_message_query_question_get0*; *dns_query_question_qname_get0*; *dns_query_question_qtype_get0*; |
