+/* Translation table for the `nsstats' values. */
+static const translation_info_t nsstats_translation_table[] =
+{
+ /* Requests */
+ { "Requestv4", "dns_request", "IPv4", &use_requests },
+ { "Requestv6", "dns_request", "IPv6", &use_requests },
+ { "ReqEdns0", "dns_request", "EDNS0", &use_requests },
+ { "ReqBadEDNSVer", "dns_request", "BadEDNSVer", &use_requests },
+ { "ReqTSIG", "dns_request", "TSIG", &use_requests },
+ { "ReqSIG0", "dns_request", "SIG0", &use_requests },
+ { "ReqBadSIG", "dns_request", "BadSIG", &use_requests },
+ { "ReqTCP", "dns_request", "TCP", &use_requests },
+ /* Rejects */
+ { "AuthQryRej", "dns_reject", "authorative", &use_rejects },
+ { "RecQryRej", "dns_reject", "recursive", &use_rejects },
+ { "XfrRej", "dns_reject", "transer", &use_rejects },
+ { "UpdateRej", "dns_reject", "update", &use_rejects },
+ /* Responses */
+ { "Response", "dns_response", "normal", &use_responses },
+ { "TruncatedResp", "dns_response", "truncated", &use_responses },
+ { "RespEDNS0", "dns_response", "EDNS0", &use_responses },
+ { "RespTSIG", "dns_response", "TSIG", &use_responses },
+ { "RespSIG0", "dns_response", "SIG0", &use_responses },
+ /* Queries */
+ { "QryAuthAns", "dns_query", "authorative", &use_queries },
+ { "QryNoauthAns", "dns_query", "nonauth", &use_queries },
+ { "QryReferral", "dns_query", "referral", &use_queries },
+ { "QryRecursion", "dns_query", "recursion", &use_queries },
+ { "QryDuplicate", "dns_query", "dupliate", &use_queries },
+ { "QryDropped", "dns_query", "dropped", &use_queries },
+ { "QryFailure", "dns_query", "failure", &use_queries },
+ /* Response codes */
+ { "QrySuccess", "dns_rcode", "tx-NOERROR", &use_rcode },
+ { "QryNxrrset", "dns_rcode", "tx-NXRRSET", &use_rcode },
+ { "QrySERVFAIL", "dns_rcode", "tx-SERVFAIL", &use_rcode },
+ { "QryFORMERR", "dns_rcode", "tx-FORMERR", &use_rcode },
+ { "QryNXDOMAIN", "dns_rcode", "tx-NXDOMAIN", &use_rcode }
+#if 0
+ { "XfrReqDone", "type", "type_instance", &use_something },
+ { "UpdateReqFwd", "type", "type_instance", &use_something },
+ { "UpdateRespFwd", "type", "type_instance", &use_something },
+ { "UpdateFwdFail", "type", "type_instance", &use_something },
+ { "UpdateDone", "type", "type_instance", &use_something },
+ { "UpdateFail", "type", "type_instance", &use_something },
+ { "UpdateBadPrereq", "type", "type_instance", &use_something },
+#endif
+};
+static int nsstats_translation_table_length =
+ STATIC_ARRAY_SIZE (nsstats_translation_table);
+#define PARSE_NSSTATS (use_requests || use_rejects || use_responses \
+ || use_queries || use_rcode)
+
+/* Translation table for the `zonestats' values. */
+static const translation_info_t zonestats_translation_table[] =
+{
+ /* Notify's */
+ { "NotifyOutv4", "dns_notify", "tx-IPv4", &use_zonestats },
+ { "NotifyOutv6", "dns_notify", "tx-IPv6", &use_zonestats },
+ { "NotifyInv4", "dns_notify", "rx-IPv4", &use_zonestats },
+ { "NotifyInv6", "dns_notify", "rx-IPv6", &use_zonestats },
+ { "NotifyRej", "dns_notify", "rejected", &use_zonestats },
+ /* SOA/AXFS/IXFS requests */
+ { "SOAOutv4", "dns_opcode", "SOA-IPv4", &use_opcode },
+ { "SOAOutv6", "dns_opcode", "SOA-IPv4", &use_opcode },
+ { "AXFRReqv4", "dns_opcode", "AXFR-IPv4", &use_opcode },
+ { "AXFRReqv6", "dns_opcode", "AXFR-IPv6", &use_opcode },
+ { "IXFRReqv4", "dns_opcode", "IXFR-IPv4", &use_opcode },
+ { "IXFRReqv6", "dns_opcode", "IXFR-IPv6", &use_opcode },
+ /* Domain transfers */
+ { "XfrSuccess", "dns_transfer", "success", &use_zonestats },
+ { "XfrFail", "dns_transfer", "failure", &use_zonestats }
+};
+static int zonestats_translation_table_length =
+ STATIC_ARRAY_SIZE (zonestats_translation_table);
+#define PARSE_ZONESTATS (use_zonestats || use_opcode)
+
+/* Translation table for the `resstats' values. */
+static const translation_info_t resstats_translation_table[] =
+{
+ /* Generic resolver information */
+ { "Queryv4", "dns_query", "IPv4", &use_resolver },
+ { "Queryv6", "dns_query", "IPv6", &use_resolver },
+ { "Responsev4", "dns_response", "IPv4", &use_resolver },
+ { "Responsev6", "dns_response", "IPv6", &use_resolver },
+ /* Received response codes */
+ { "NXDOMAIN", "dns_rcode", "rx-NXDOMAIN", &use_rcode },
+ { "SERVFAIL", "dns_rcode", "rx-SERVFAIL", &use_rcode },
+ { "FORMERR", "dns_rcode", "rx-FORMERR", &use_rcode },
+ { "OtherError", "dns_rcode", "rx-OTHER", &use_rcode },
+ { "EDNS0Fail", "dns_rcode", "rx-EDNS0Fail", &use_rcode },
+ /* Received responses */
+ { "Mismatch", "dns_response", "mismatch", &use_responses },
+ { "Truncated", "dns_response", "truncated", &use_responses },
+ { "Lame", "dns_response", "lame", &use_responses },
+ { "Retry", "dns_query", "retry", &use_responses },
+#if 0
+ { "GlueFetchv4", "type", "type_instance", &use_something },
+ { "GlueFetchv6", "type", "type_instance", &use_something },
+ { "GlueFetchv4Fail", "type", "type_instance", &use_something },
+ { "GlueFetchv6Fail", "type", "type_instance", &use_something },
+#endif
+ /* DNSSEC information */
+ { "ValAttempt", "dns_resolver", "DNSSEC-attempt", &use_dnssec },
+ { "ValOk", "dns_resolver", "DNSSEC-okay", &use_dnssec },
+ { "ValNegOk", "dns_resolver", "DNSSEC-negokay", &use_dnssec },
+ { "ValFail", "dns_resolver", "DNSSEC-fail", &use_dnssec }
+};
+static int resstats_translation_table_length =
+ STATIC_ARRAY_SIZE (resstats_translation_table);
+#define PARSE_RESSTATS (use_resolver || use_rcode || use_responses || use_dnssec)
+