dns: unify type to string logging utility

Both DNS loggers had their own CreateTypeString. This patch unifies
them.
pull/978/head
Victor Julien 12 years ago
parent 5e87257845
commit 462f9de134

@ -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);
}
}

@ -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__ */

@ -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);

@ -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 */

Loading…
Cancel
Save