From 462f9de1343857afaff86d8758d28d21ac72af1b Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Sat, 24 May 2014 18:48:18 +0200 Subject: [PATCH] dns: unify type to string logging utility Both DNS loggers had their own CreateTypeString. This patch unifies them. --- src/app-layer-dns-common.c | 58 +++++++++++++++++++++++++++++++++++ src/app-layer-dns-common.h | 2 ++ src/log-dnslog.c | 32 ++------------------ src/output-json-dns.c | 62 ++------------------------------------ 4 files changed, 64 insertions(+), 90 deletions(-) diff --git a/src/app-layer-dns-common.c b/src/app-layer-dns-common.c index 3c58950c46..164006ffc2 100644 --- a/src/app-layer-dns-common.c +++ b/src/app-layer-dns-common.c @@ -959,3 +959,61 @@ bad_data: insufficient_data: return NULL; } + +void DNSCreateTypeString(uint16_t type, char *str, size_t str_size) { + switch (type) { + case DNS_RECORD_TYPE_A: + snprintf(str, str_size, "A"); + break; + case DNS_RECORD_TYPE_NS: + snprintf(str, str_size, "NS"); + break; + case DNS_RECORD_TYPE_AAAA: + snprintf(str, str_size, "AAAA"); + break; + case DNS_RECORD_TYPE_TXT: + snprintf(str, str_size, "TXT"); + break; + case DNS_RECORD_TYPE_CNAME: + snprintf(str, str_size, "CNAME"); + break; + case DNS_RECORD_TYPE_SOA: + snprintf(str, str_size, "SOA"); + break; + case DNS_RECORD_TYPE_MX: + snprintf(str, str_size, "MX"); + break; + case DNS_RECORD_TYPE_PTR: + snprintf(str, str_size, "PTR"); + break; + case DNS_RECORD_TYPE_ANY: + snprintf(str, str_size, "ANY"); + break; + case DNS_RECORD_TYPE_TKEY: + snprintf(str, str_size, "TKEY"); + break; + case DNS_RECORD_TYPE_TSIG: + snprintf(str, str_size, "TSIG"); + break; + case DNS_RECORD_TYPE_SRV: + snprintf(str, str_size, "SRV"); + break; + case DNS_RECORD_TYPE_NAPTR: + snprintf(str, str_size, "NAPTR"); + break; + case DNS_RECORD_TYPE_DS: + snprintf(str, str_size, "DS"); + break; + case DNS_RECORD_TYPE_RRSIG: + snprintf(str, str_size, "RRSIG"); + break; + case DNS_RECORD_TYPE_NSEC: + snprintf(str, str_size, "NSEC"); + break; + case DNS_RECORD_TYPE_NSEC3: + snprintf(str, str_size, "NSEC3"); + break; + default: + snprintf(str, str_size, "%04x/%u", type, type); + } +} diff --git a/src/app-layer-dns-common.h b/src/app-layer-dns-common.h index c1ae18bd55..9ae04c165d 100644 --- a/src/app-layer-dns-common.h +++ b/src/app-layer-dns-common.h @@ -222,4 +222,6 @@ const uint8_t *DNSReponseParse(DNSState *dns_state, const DNSHeader * const dns_ uint16_t DNSUdpResponseGetNameByOffset(const uint8_t * const input, const uint32_t input_len, const uint16_t offset, uint8_t *fqdn, const size_t fqdn_size); +void DNSCreateTypeString(uint16_t type, char *str, size_t str_size); + #endif /* __APP_LAYER_DNS_COMMON_H__ */ diff --git a/src/log-dnslog.c b/src/log-dnslog.c index 0116b35154..0b8aedc9d9 100644 --- a/src/log-dnslog.c +++ b/src/log-dnslog.c @@ -71,34 +71,6 @@ typedef struct LogDnsLogThread_ { MemBuffer *buffer; } LogDnsLogThread; -static void CreateTypeString(uint16_t type, char *str, size_t str_size) { - if (type == DNS_RECORD_TYPE_A) { - snprintf(str, str_size, "A"); - } else if (type == DNS_RECORD_TYPE_NS) { - snprintf(str, str_size, "NS"); - } else if (type == DNS_RECORD_TYPE_AAAA) { - snprintf(str, str_size, "AAAA"); - } else if (type == DNS_RECORD_TYPE_TXT) { - snprintf(str, str_size, "TXT"); - } else if (type == DNS_RECORD_TYPE_CNAME) { - snprintf(str, str_size, "CNAME"); - } else if (type == DNS_RECORD_TYPE_SOA) { - snprintf(str, str_size, "SOA"); - } else if (type == DNS_RECORD_TYPE_MX) { - snprintf(str, str_size, "MX"); - } else if (type == DNS_RECORD_TYPE_PTR) { - snprintf(str, str_size, "PTR"); - } else if (type == DNS_RECORD_TYPE_ANY) { - snprintf(str, str_size, "ANY"); - } else if (type == DNS_RECORD_TYPE_TKEY) { - snprintf(str, str_size, "TKEY"); - } else if (type == DNS_RECORD_TYPE_TSIG) { - snprintf(str, str_size, "TSIG"); - } else { - snprintf(str, str_size, "%04x/%u", type, type); - } -} - static void LogQuery(LogDnsLogThread *aft, char *timebuf, char *srcip, char *dstip, Port sp, Port dp, DNSTransaction *tx, DNSQueryEntry *entry) { LogDnsFileCtx *hlog = aft->dnslog_ctx; @@ -117,7 +89,7 @@ static void LogQuery(LogDnsLogThread *aft, char *timebuf, char *srcip, char *dst entry->len); char record[16] = ""; - CreateTypeString(entry->type, record, sizeof(record)); + DNSCreateTypeString(entry->type, record, sizeof(record)); MemBufferWriteString(aft->buffer, " [**] %s [**] %s:%" PRIu16 " -> %s:%" PRIu16 "\n", record, srcip, sp, dstip, dp); @@ -156,7 +128,7 @@ static void LogAnswer(LogDnsLogThread *aft, char *timebuf, char *srcip, char *ds } char record[16] = ""; - CreateTypeString(entry->type, record, sizeof(record)); + DNSCreateTypeString(entry->type, record, sizeof(record)); MemBufferWriteString(aft->buffer, " [**] %s [**] TTL %u [**] ", record, entry->ttl); diff --git a/src/output-json-dns.c b/src/output-json-dns.c index 0522838f67..066ce8901c 100644 --- a/src/output-json-dns.c +++ b/src/output-json-dns.c @@ -70,64 +70,6 @@ typedef struct LogDnsLogThread_ { MemBuffer *buffer; } LogDnsLogThread; -static void CreateTypeString(uint16_t type, char *str, size_t str_size) { - switch (type) { - case DNS_RECORD_TYPE_A: - snprintf(str, str_size, "A"); - break; - case DNS_RECORD_TYPE_NS: - snprintf(str, str_size, "NS"); - break; - case DNS_RECORD_TYPE_AAAA: - snprintf(str, str_size, "AAAA"); - break; - case DNS_RECORD_TYPE_TXT: - snprintf(str, str_size, "TXT"); - break; - case DNS_RECORD_TYPE_CNAME: - snprintf(str, str_size, "CNAME"); - break; - case DNS_RECORD_TYPE_SOA: - snprintf(str, str_size, "SOA"); - break; - case DNS_RECORD_TYPE_MX: - snprintf(str, str_size, "MX"); - break; - case DNS_RECORD_TYPE_PTR: - snprintf(str, str_size, "PTR"); - break; - case DNS_RECORD_TYPE_ANY: - snprintf(str, str_size, "ANY"); - break; - case DNS_RECORD_TYPE_TKEY: - snprintf(str, str_size, "TKEY"); - break; - case DNS_RECORD_TYPE_TSIG: - snprintf(str, str_size, "TSIG"); - break; - case DNS_RECORD_TYPE_SRV: - snprintf(str, str_size, "SRV"); - break; - case DNS_RECORD_TYPE_NAPTR: - snprintf(str, str_size, "NAPTR"); - break; - case DNS_RECORD_TYPE_DS: - snprintf(str, str_size, "DS"); - break; - case DNS_RECORD_TYPE_RRSIG: - snprintf(str, str_size, "RRSIG"); - break; - case DNS_RECORD_TYPE_NSEC: - snprintf(str, str_size, "NSEC"); - break; - case DNS_RECORD_TYPE_NSEC3: - snprintf(str, str_size, "NSEC3"); - break; - default: - snprintf(str, str_size, "%04x/%u", type, type); - } -} - static void LogQuery(LogDnsLogThread *aft, json_t *js, DNSTransaction *tx, DNSQueryEntry *entry) { MemBuffer *buffer = (MemBuffer *)aft->buffer; @@ -157,7 +99,7 @@ static void LogQuery(LogDnsLogThread *aft, json_t *js, DNSTransaction *tx, DNSQu /* name */ char record[16] = ""; - CreateTypeString(entry->type, record, sizeof(record)); + DNSCreateTypeString(entry->type, record, sizeof(record)); json_object_set_new(djs, "rrtype", json_string(record)); /* dns */ @@ -192,7 +134,7 @@ static void OutputAnswer(LogDnsLogThread *aft, json_t *djs, DNSTransaction *tx, /* name */ char record[16] = ""; - CreateTypeString(entry->type, record, sizeof(record)); + DNSCreateTypeString(entry->type, record, sizeof(record)); json_object_set_new(js, "rrtype", json_string(record)); /* ttl */