BIND 10 trac2157_2, updated. 4f7957ecd5a7995dac7662569c2e4dd7d86c7d77 Merge branch 'trac2157_2' of ssh://git.bind10.isc.org/var/bind10/git/bind10 into trac2157_2
BIND 10 source code commits
bind10-changes at lists.isc.org
Tue Nov 13 03:01:14 UTC 2012
The branch, trac2157_2 has been updated
via 4f7957ecd5a7995dac7662569c2e4dd7d86c7d77 (commit)
via 1bd6030873ee6e27cddcbb6437ef15ca84ee9cfa (commit)
from 9aea53afbe639d939b04df9307bdb48e2952148b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 4f7957ecd5a7995dac7662569c2e4dd7d86c7d77
Merge: 1bd6030 9aea53a
Author: Yoshitaka Aharen <aharen at jprs.co.jp>
Date: Tue Nov 13 11:58:56 2012 +0900
Merge branch 'trac2157_2' of ssh://git.bind10.isc.org/var/bind10/git/bind10 into trac2157_2
commit 1bd6030873ee6e27cddcbb6437ef15ca84ee9cfa
Author: Yoshitaka Aharen <aharen at jprs.co.jp>
Date: Wed Nov 7 21:09:22 2012 +0900
[2157] apply review comments
-----------------------------------------------------------------------
Summary of changes:
configure.ac | 2 +
src/bin/auth/Makefile.am | 26 +-
src/bin/auth/auth.spec.pre.in | 1247 --------------------
src/bin/auth/b10-auth.xml | 1075 -----------------
src/bin/auth/b10-auth.xml.pre | 248 ++++
src/bin/auth/gen-statistics_items.py.pre.in | 276 +++++
src/bin/auth/{statistics.cc => statistics.cc.pre} | 78 +-
src/bin/auth/statistics.h | 3 +-
src/bin/auth/statistics_items.h | 609 ----------
.../auth/statistics_items.h.pre} | 34 +-
src/bin/auth/statistics_qr_items.def | 54 +
src/bin/auth/tests/Makefile.am | 5 +-
src/bin/auth/tests/auth_srv_unittest.cc | 11 +-
...tics_unittest.cc => statistics_unittest.cc.pre} | 6 +-
src/lib/dns/gen-rdatacode.py.in | 4 +
15 files changed, 688 insertions(+), 2990 deletions(-)
delete mode 100644 src/bin/auth/b10-auth.xml
create mode 100644 src/bin/auth/b10-auth.xml.pre
create mode 100755 src/bin/auth/gen-statistics_items.py.pre.in
rename src/bin/auth/{statistics.cc => statistics.cc.pre} (84%)
delete mode 100644 src/bin/auth/statistics_items.h
copy src/{lib/python/isc/datasrc/configurableclientlist_python.h => bin/auth/statistics_items.h.pre} (60%)
create mode 100644 src/bin/auth/statistics_qr_items.def
rename src/bin/auth/tests/{statistics_unittest.cc => statistics_unittest.cc.pre} (97%)
-----------------------------------------------------------------------
diff --git a/configure.ac b/configure.ac
index b064480..2241067 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1279,6 +1279,7 @@ AC_OUTPUT([doc/version.ent
src/bin/msgq/run_msgq.sh
src/bin/auth/auth.spec.pre
src/bin/auth/spec_config.h.pre
+ src/bin/auth/gen-statistics_items.py.pre
src/bin/dhcp4/spec_config.h.pre
src/bin/dhcp6/spec_config.h.pre
src/bin/tests/process_rename_test.py
@@ -1341,6 +1342,7 @@ AC_OUTPUT([doc/version.ent
chmod +x src/bin/usermgr/run_b10-cmdctl-usermgr.sh
chmod +x src/bin/msgq/run_msgq.sh
chmod +x src/bin/msgq/tests/msgq_test
+ chmod +x src/bin/auth/gen-statistics_items.py.pre
chmod +x src/lib/dns/gen-rdatacode.py
chmod +x src/lib/log/tests/console_test.sh
chmod +x src/lib/log/tests/destination_test.sh
diff --git a/src/bin/auth/Makefile.am b/src/bin/auth/Makefile.am
index 2060ad6..1362498 100644
--- a/src/bin/auth/Makefile.am
+++ b/src/bin/auth/Makefile.am
@@ -18,6 +18,9 @@ pkglibexecdir = $(libexecdir)/@PACKAGE@
CLEANFILES = *.gcno *.gcda auth.spec spec_config.h
CLEANFILES += auth_messages.h auth_messages.cc
+CLEANFILES += gen-statistics_items.py
+# auto-generated by gen-statistics_items.py
+CLEANFILES += statistics.cc statistics_items.h b10-auth.xml tests/statistics_unittest.cc
man_MANS = b10-auth.8
DISTCLEANFILES = $(man_MANS)
@@ -36,8 +39,18 @@ $(man_MANS):
endif
-auth.spec: auth.spec.pre
- $(SED) -e "s|@@LOCALSTATEDIR@@|$(localstatedir)|" auth.spec.pre >$@
+auth.spec: auth.spec.pre statistics_qr_items.def
+b10-auth.xml: b10-auth.xml.pre statistics_qr_items.def
+statistics_items.h: statistics_items.h.pre statistics_qr_items.def
+statistics.cc: statistics.cc.pre statistics_qr_items.def
+tests/statistics_unittest.cc: tests/statistics_unittest.cc.pre statistics_qr_items.def
+
+gen-statistics_items.py: gen-statistics_items.py.pre
+ $(SED) -e "s|@@LOCALSTATEDIR@@|$(localstatedir)|" gen-statistics_items.py.pre >$@
+ chmod +x $@
+
+auth.spec b10-auth.xml statistics_items.h statistics.cc tests/statistics_unittest.cc: Makefile gen-statistics_items.py
+ ./gen-statistics_items.py
spec_config.h: spec_config.h.pre
$(SED) -e "s|@@LOCALSTATEDIR@@|$(localstatedir)|" spec_config.h.pre >$@
@@ -46,6 +59,8 @@ auth_messages.h auth_messages.cc: auth_messages.mes
$(top_builddir)/src/lib/log/compiler/message $(top_srcdir)/src/bin/auth/auth_messages.mes
BUILT_SOURCES = spec_config.h auth_messages.h auth_messages.cc
+# auto-generated by gen-statistics_items.py
+BUILT_SOURCES += statistics_items.h statistics.cc
pkglibexec_PROGRAMS = b10-auth
b10_auth_SOURCES = query.cc query.h
@@ -54,12 +69,17 @@ b10_auth_SOURCES += auth_log.cc auth_log.h
b10_auth_SOURCES += auth_config.cc auth_config.h
b10_auth_SOURCES += command.cc command.h
b10_auth_SOURCES += common.h common.cc
-b10_auth_SOURCES += statistics.cc statistics.h statistics_items.h
+b10_auth_SOURCES += statistics.h
b10_auth_SOURCES += datasrc_configurator.h
b10_auth_SOURCES += main.cc
nodist_b10_auth_SOURCES = auth_messages.h auth_messages.cc
+nodist_b10_auth_SOURCES += statistics.cc statistics_items.h
EXTRA_DIST += auth_messages.mes
+EXTRA_DIST += statistics_qr_items.def
+EXTRA_DIST += b10-auth.xml.pre
+EXTRA_DIST += statistics_items.h.pre statistics.cc.pre
+EXTRA_DIST += tests/statistics_unittest.cc.pre
b10_auth_LDADD = $(top_builddir)/src/lib/datasrc/libb10-datasrc.la
b10_auth_LDADD += $(top_builddir)/src/lib/dns/libb10-dns++.la
diff --git a/src/bin/auth/auth.spec.pre.in b/src/bin/auth/auth.spec.pre.in
index 65652df..a235da3 100644
--- a/src/bin/auth/auth.spec.pre.in
+++ b/src/bin/auth/auth.spec.pre.in
@@ -140,1253 +140,6 @@
}
],
"statistics": [
- {
- "item_name": "zones",
- "item_type": "named_set",
- "item_optional": false,
- "item_title": "Zone statistics",
- "item_description": "Zone statistics items. Items for all zones are stored in '_SERVER_'.",
- "item_default": {
- "_SERVER_": {
- "request": {
- "v4": 0,
- "v6": 0,
- "edns0": 0,
- "badednsver": 0,
- "tsig": 0,
- "sig0": 0,
- "badsig": 0,
- "udp": 0,
- "tcp": 0,
- "dnssec_ok": 0
- },
- "opcode": {
- "query": 0,
- "iquery": 0,
- "status": 0,
- "notify": 0,
- "update": 0,
- "other": 0
- },
- "qtype": {
- "a": 0,
- "ns": 0,
- "md": 0,
- "mf": 0,
- "cname": 0,
- "soa": 0,
- "mb": 0,
- "mg": 0,
- "mr": 0,
- "null": 0,
- "wks": 0,
- "ptr": 0,
- "hinfo": 0,
- "minfo": 0,
- "mx": 0,
- "txt": 0,
- "rp": 0,
- "afsdb": 0,
- "x25": 0,
- "isdn": 0,
- "rt": 0,
- "nsap": 0,
- "nsap-ptr": 0,
- "sig": 0,
- "key": 0,
- "px": 0,
- "gpos": 0,
- "aaaa": 0,
- "loc": 0,
- "nxt": 0,
- "eid": 0,
- "nimloc": 0,
- "srv": 0,
- "atma": 0,
- "naptr": 0,
- "kx": 0,
- "cert": 0,
- "a6": 0,
- "dname": 0,
- "sink": 0,
- "opt": 0,
- "apl": 0,
- "ds": 0,
- "sshfp": 0,
- "ipseckey": 0,
- "rrsig": 0,
- "nsec": 0,
- "dnskey": 0,
- "dhcid": 0,
- "nsec3": 0,
- "nsec3param": 0,
- "hip": 0,
- "ninfo": 0,
- "rkey": 0,
- "talink": 0,
- "spf": 0,
- "uinfo": 0,
- "uid": 0,
- "gid": 0,
- "unspec": 0,
- "tkey": 0,
- "tsig": 0,
- "ixfr": 0,
- "axfr": 0,
- "mailb": 0,
- "maila": 0,
- "uri": 0,
- "caa": 0,
- "ta": 0,
- "dlv": 0,
- "other": 0
- },
- "rcode": {
- "noerror": 0,
- "formerr": 0,
- "servfail": 0,
- "nxdomain": 0,
- "notimp": 0,
- "refused": 0,
- "yxdomain": 0,
- "yxrrset": 0,
- "nxrrset": 0,
- "notauth": 0,
- "notzone": 0,
- "badsigvers": 0,
- "badkey": 0,
- "badtime": 0,
- "badmode": 0,
- "badname": 0,
- "badalg": 0,
- "badtrunc": 0,
- "other": 0
- },
- "authqryrej": 0,
- "qryauthans": 0,
- "qrynoauthans": 0,
- "qrynxrrset": 0,
- "qryreferral": 0,
- "qrysuccess": 0,
- "response": {
- "edns0": 0,
- "sig0": 0,
- "truncated": 0,
- "tsig": 0
- },
- "responses": 0
- }
- },
- "named_set_item_spec": {
- "item_name": "zone",
- "item_type": "map",
- "item_optional": false,
- "item_default": { },
- "map_item_spec": [
- {
- "item_name": "request",
- "item_type": "map",
- "item_optional": false,
- "item_title": "request",
- "item_description": "Request statistics",
- "item_default": {
- "v4": 0,
- "v6": 0,
- "edns0": 0,
- "badednsver": 0,
- "tsig": 0,
- "sig0": 0,
- "badsig": 0,
- "udp": 0,
- "tcp": 0,
- "dnssec_ok": 0
- },
- "map_item_spec": [
- {
- "item_name": "v4",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "v4",
- "item_description": "Number of IPv4 requests received"
- },
- {
- "item_name": "v6",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "v6",
- "item_description": "Number of IPv6 requests received"
- },
- {
- "item_name": "edns0",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "edns0",
- "item_description": "Number of requests with EDNS(0) received"
- },
- {
- "item_name": "badednsver",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "badednsver",
- "item_description": "Number of requests with unsupported EDNS version received"
- },
- {
- "item_name": "tsig",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "tsig",
- "item_description": "Number of requests with TSIG received"
- },
- {
- "item_name": "sig0",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "sig0",
- "item_description": "Number of requests with SIG(0) received; currently not implemented in BIND 10"
- },
- {
- "item_name": "badsig",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "badsig",
- "item_description": "Number of requests with invalid TSIG or SIG(0) signature received"
- },
- {
- "item_name": "udp",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "udp",
- "item_description": "Number of UDP requests received"
- },
- {
- "item_name": "tcp",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "tcp",
- "item_description": "Number of TCP requests received"
- },
- {
- "item_name": "dnssec_ok",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "dnssec_ok",
- "item_description": "Number of requests with DO bit"
- }
- ]
- },
- {
- "item_name": "opcode",
- "item_type": "map",
- "item_optional": false,
- "item_title": "opcode",
- "item_description": "Opcode statistics",
- "item_default": {
- "query": 0,
- "iquery": 0,
- "status": 0,
- "notify": 0,
- "update": 0,
- "other": 0
- },
- "map_item_spec": [
- {
- "item_name": "query",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "query",
- "item_description": "Number of Opcode=QUERY requests received"
- },
- {
- "item_name": "iquery",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "iquery",
- "item_description": "Number of Opcode=IQUERY requests received"
- },
- {
- "item_name": "status",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "status",
- "item_description": "Number of Opcode=STATUS requests received"
- },
- {
- "item_name": "notify",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "notify",
- "item_description": "Number of Opcode=NOTIFY requests received"
- },
- {
- "item_name": "update",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "update",
- "item_description": "Number of Opcode=UPDATE requests received"
- },
- {
- "item_name": "other",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "other",
- "item_description": "Number of requests in other OpCode received"
- }
- ]
- },
- {
- "item_name": "qtype",
- "item_type": "map",
- "item_optional": false,
- "item_title": "qtype",
- "item_description": "Query RRtype statistics",
- "item_default": {
- "a": 0,
- "ns": 0,
- "md": 0,
- "mf": 0,
- "cname": 0,
- "soa": 0,
- "mb": 0,
- "mg": 0,
- "mr": 0,
- "null": 0,
- "wks": 0,
- "ptr": 0,
- "hinfo": 0,
- "minfo": 0,
- "mx": 0,
- "txt": 0,
- "rp": 0,
- "afsdb": 0,
- "x25": 0,
- "isdn": 0,
- "rt": 0,
- "nsap": 0,
- "nsap-ptr": 0,
- "sig": 0,
- "key": 0,
- "px": 0,
- "gpos": 0,
- "aaaa": 0,
- "loc": 0,
- "nxt": 0,
- "eid": 0,
- "nimloc": 0,
- "srv": 0,
- "atma": 0,
- "naptr": 0,
- "kx": 0,
- "cert": 0,
- "a6": 0,
- "dname": 0,
- "sink": 0,
- "opt": 0,
- "apl": 0,
- "ds": 0,
- "sshfp": 0,
- "ipseckey": 0,
- "rrsig": 0,
- "nsec": 0,
- "dnskey": 0,
- "dhcid": 0,
- "nsec3": 0,
- "nsec3param": 0,
- "hip": 0,
- "ninfo": 0,
- "rkey": 0,
- "talink": 0,
- "spf": 0,
- "uinfo": 0,
- "uid": 0,
- "gid": 0,
- "unspec": 0,
- "tkey": 0,
- "tsig": 0,
- "ixfr": 0,
- "axfr": 0,
- "mailb": 0,
- "maila": 0,
- "uri": 0,
- "caa": 0,
- "ta": 0,
- "dlv": 0,
- "other": 0
- },
- "map_item_spec": [
- {
- "item_name": "a",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "a",
- "item_description": "Number of QTYPE = A queries received"
- },
- {
- "item_name": "ns",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "ns",
- "item_description": "Number of QTYPE = NS queries received"
- },
- {
- "item_name": "md",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "md",
- "item_description": "Number of QTYPE = MD queries received"
- },
- {
- "item_name": "mf",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "mf",
- "item_description": "Number of QTYPE = MF queries received"
- },
- {
- "item_name": "cname",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "cname",
- "item_description": "Number of QTYPE = CNAME queries received"
- },
- {
- "item_name": "soa",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "soa",
- "item_description": "Number of QTYPE = SOA queries received"
- },
- {
- "item_name": "mb",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "mb",
- "item_description": "Number of QTYPE = MB queries received"
- },
- {
- "item_name": "mg",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "mg",
- "item_description": "Number of QTYPE = MG queries received"
- },
- {
- "item_name": "mr",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "mr",
- "item_description": "Number of QTYPE = MR queries received"
- },
- {
- "item_name": "null",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "null",
- "item_description": "Number of QTYPE = NULL queries received"
- },
- {
- "item_name": "wks",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "wks",
- "item_description": "Number of QTYPE = WKS queries received"
- },
- {
- "item_name": "ptr",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "ptr",
- "item_description": "Number of QTYPE = PTR queries received"
- },
- {
- "item_name": "hinfo",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "hinfo",
- "item_description": "Number of QTYPE = HINFO queries received"
- },
- {
- "item_name": "minfo",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "minfo",
- "item_description": "Number of QTYPE = MINFO queries received"
- },
- {
- "item_name": "mx",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "mx",
- "item_description": "Number of QTYPE = MX queries received"
- },
- {
- "item_name": "txt",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "txt",
- "item_description": "Number of QTYPE = TXT queries received"
- },
- {
- "item_name": "rp",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "rp",
- "item_description": "Number of QTYPE = RP queries received"
- },
- {
- "item_name": "afsdb",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "afsdb",
- "item_description": "Number of QTYPE = AFSDB queries received"
- },
- {
- "item_name": "x25",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "x25",
- "item_description": "Number of QTYPE = X25 queries received"
- },
- {
- "item_name": "isdn",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "isdn",
- "item_description": "Number of QTYPE = ISDN queries received"
- },
- {
- "item_name": "rt",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "rt",
- "item_description": "Number of QTYPE = RT queries received"
- },
- {
- "item_name": "nsap",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "nsap",
- "item_description": "Number of QTYPE = NSAP queries received"
- },
- {
- "item_name": "nsap-ptr",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "nsap-ptr",
- "item_description": "Number of QTYPE = NSAP-PTR queries received"
- },
- {
- "item_name": "sig",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "sig",
- "item_description": "Number of QTYPE = SIG queries received"
- },
- {
- "item_name": "key",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "key",
- "item_description": "Number of QTYPE = KEY queries received"
- },
- {
- "item_name": "px",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "px",
- "item_description": "Number of QTYPE = PX queries received"
- },
- {
- "item_name": "gpos",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "gpos",
- "item_description": "Number of QTYPE = GPOS queries received"
- },
- {
- "item_name": "aaaa",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "aaaa",
- "item_description": "Number of QTYPE = AAAA queries received"
- },
- {
- "item_name": "loc",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "loc",
- "item_description": "Number of QTYPE = LOC queries received"
- },
- {
- "item_name": "nxt",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "nxt",
- "item_description": "Number of QTYPE = NXT queries received"
- },
- {
- "item_name": "eid",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "eid",
- "item_description": "Number of QTYPE = EID queries received"
- },
- {
- "item_name": "nimloc",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "nimloc",
- "item_description": "Number of QTYPE = NIMLOC queries received"
- },
- {
- "item_name": "srv",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "srv",
- "item_description": "Number of QTYPE = SRV queries received"
- },
- {
- "item_name": "atma",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "atma",
- "item_description": "Number of QTYPE = ATMA queries received"
- },
- {
- "item_name": "naptr",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "naptr",
- "item_description": "Number of QTYPE = NAPTR queries received"
- },
- {
- "item_name": "kx",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "kx",
- "item_description": "Number of QTYPE = KX queries received"
- },
- {
- "item_name": "cert",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "cert",
- "item_description": "Number of QTYPE = CERT queries received"
- },
- {
- "item_name": "a6",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "a6",
- "item_description": "Number of QTYPE = A6 queries received"
- },
- {
- "item_name": "dname",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "dname",
- "item_description": "Number of QTYPE = DNAME queries received"
- },
- {
- "item_name": "sink",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "sink",
- "item_description": "Number of QTYPE = SINK queries received"
- },
- {
- "item_name": "opt",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "opt",
- "item_description": "Number of QTYPE = OPT queries received"
- },
- {
- "item_name": "apl",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "apl",
- "item_description": "Number of QTYPE = APL queries received"
- },
- {
- "item_name": "ds",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "ds",
- "item_description": "Number of QTYPE = DS queries received"
- },
- {
- "item_name": "sshfp",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "sshfp",
- "item_description": "Number of QTYPE = SSHFP queries received"
- },
- {
- "item_name": "ipseckey",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "ipseckey",
- "item_description": "Number of QTYPE = IPSECKEY queries received"
- },
- {
- "item_name": "rrsig",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "rrsig",
- "item_description": "Number of QTYPE = RRSIG queries received"
- },
- {
- "item_name": "nsec",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "nsec",
- "item_description": "Number of QTYPE = NSEC queries received"
- },
- {
- "item_name": "dnskey",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "dnskey",
- "item_description": "Number of QTYPE = DNSKEY queries received"
- },
- {
- "item_name": "dhcid",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "dhcid",
- "item_description": "Number of QTYPE = DHCID queries received"
- },
- {
- "item_name": "nsec3",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "nsec3",
- "item_description": "Number of QTYPE = NSEC3 queries received"
- },
- {
- "item_name": "nsec3param",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "nsec3param",
- "item_description": "Number of QTYPE = NSEC3PARAM queries received"
- },
- {
- "item_name": "hip",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "hip",
- "item_description": "Number of QTYPE = HIP queries received"
- },
- {
- "item_name": "ninfo",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "ninfo",
- "item_description": "Number of QTYPE = NINFO queries received"
- },
- {
- "item_name": "rkey",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "rkey",
- "item_description": "Number of QTYPE = RKEY queries received"
- },
- {
- "item_name": "talink",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "talink",
- "item_description": "Number of QTYPE = TALINK queries received"
- },
- {
- "item_name": "spf",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "spf",
- "item_description": "Number of QTYPE = SPF queries received"
- },
- {
- "item_name": "uinfo",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "uinfo",
- "item_description": "Number of QTYPE = UINFO queries received"
- },
- {
- "item_name": "uid",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "uid",
- "item_description": "Number of QTYPE = UID queries received"
- },
- {
- "item_name": "gid",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "gid",
- "item_description": "Number of QTYPE = GID queries received"
- },
- {
- "item_name": "unspec",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "unspec",
- "item_description": "Number of QTYPE = UNSPEC queries received"
- },
- {
- "item_name": "tkey",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "tkey",
- "item_description": "Number of QTYPE = TKEY queries received"
- },
- {
- "item_name": "tsig",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "tsig",
- "item_description": "Number of QTYPE = TSIG queries received"
- },
- {
- "item_name": "ixfr",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "ixfr",
- "item_description": "Number of QTYPE = IXFR queries received"
- },
- {
- "item_name": "axfr",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "axfr",
- "item_description": "Number of QTYPE = AXFR queries received"
- },
- {
- "item_name": "mailb",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "mailb",
- "item_description": "Number of QTYPE = MAILB queries received"
- },
- {
- "item_name": "maila",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "maila",
- "item_description": "Number of QTYPE = MAILA queries received"
- },
- {
- "item_name": "uri",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "uri",
- "item_description": "Number of QTYPE = URI queries received"
- },
- {
- "item_name": "caa",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "caa",
- "item_description": "Number of QTYPE = CAA queries received"
- },
- {
- "item_name": "ta",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "ta",
- "item_description": "Number of QTYPE = TA queries received"
- },
- {
- "item_name": "dlv",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "dlv",
- "item_description": "Number of QTYPE = DLV queries received"
- },
- {
- "item_name": "other",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "other",
- "item_description": "Number of queries in other QTYPE received"
- }
- ]
- },
- {
- "item_name": "responses",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "responses",
- "item_description": "Number of responses sent"
- },
- {
- "item_name": "response",
- "item_type": "map",
- "item_optional": false,
- "item_title": "response",
- "item_description": "Request statistics",
- "item_default": {
- "truncated": 0,
- "edns0": 0,
- "tsig": 0,
- "sig0": 0
- },
- "map_item_spec": [
- {
- "item_name": "truncated",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "truncated",
- "item_description": "Number of truncated responses sent"
- },
- {
- "item_name": "edns0",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "edns0",
- "item_description": "Number of responses with EDNS0"
- },
- {
- "item_name": "tsig",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "tsig",
- "item_description": "Number of responses with TSIG"
- },
- {
- "item_name": "sig0",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "sig0",
- "item_description": "Number of responses with SIG(0); currently not implemented in BIND 10"
- }
- ]
- },
- {
- "item_name": "qrysuccess",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "qrysuccess",
- "item_description": "Number of queries resulted in rcode = NOERROR and answer RR >= 1"
- },
- {
- "item_name": "qryauthans",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "qryauthans",
- "item_description": "Number of queries resulted in authoritative answer"
- },
- {
- "item_name": "qrynoauthans",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "qrynoauthans",
- "item_description": "Number of queries resulted in non-authoritative answer"
- },
- {
- "item_name": "qryreferral",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "qryreferral",
- "item_description": "Number of queries resulted in referral answer"
- },
- {
- "item_name": "qrynxrrset",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "qrynxrrset",
- "item_description": "Number of queries resulted in NOERROR but answer RR == 0"
- },
- {
- "item_name": "authqryrej",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "authqryrej",
- "item_description": "Number of authoritative queries rejected"
- },
- {
- "item_name": "rcode",
- "item_type": "map",
- "item_optional": false,
- "item_title": "rcode",
- "item_description": "Rcode statistics",
- "item_default": {
- "noerror": 0,
- "formerr": 0,
- "servfail": 0,
- "nxdomain": 0,
- "notimp": 0,
- "refused": 0,
- "yxdomain": 0,
- "yxrrset": 0,
- "nxrrset": 0,
- "notauth": 0,
- "notzone": 0,
- "badsigvers": 0,
- "badkey": 0,
- "badtime": 0,
- "badmode": 0,
- "badname": 0,
- "badalg": 0,
- "badtrunc": 0,
- "other": 0
- },
- "map_item_spec": [
- {
- "item_name": "noerror",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "noerror",
- "item_description": "Number of queries resulted in RCODE = 0 (NoError)"
- },
- {
- "item_name": "formerr",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "formerr",
- "item_description": "Number of queries resulted in RCODE = 1 (FormErr)"
- },
- {
- "item_name": "servfail",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "servfail",
- "item_description": "Number of queries resulted in RCODE = 2 (ServFail)"
- },
- {
- "item_name": "nxdomain",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "nxdomain",
- "item_description": "Number of queries resulted in RCODE = 3 (NXDomain)"
- },
- {
- "item_name": "notimp",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "notimp",
- "item_description": "Number of queries resulted in RCODE = 4 (NotImp)"
- },
- {
- "item_name": "refused",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "refused",
- "item_description": "Number of queries resulted in RCODE = 5 (Refused)"
- },
- {
- "item_name": "yxdomain",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "yxdomain",
- "item_description": "Number of queries resulted in RCODE = 6 (YXDomain)"
- },
- {
- "item_name": "yxrrset",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "yxrrset",
- "item_description": "Number of queries resulted in RCODE = 7 (YXRRSet)"
- },
- {
- "item_name": "nxrrset",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "nxrrset",
- "item_description": "Number of queries resulted in RCODE = 8 (NXRRSet)"
- },
- {
- "item_name": "notauth",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "notauth",
- "item_description": "Number of queries resulted in RCODE = 9 (NotAuth)"
- },
- {
- "item_name": "notzone",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "notzone",
- "item_description": "Number of queries resulted in RCODE = 10 (NotZone)"
- },
- {
- "item_name": "badsigvers",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "badsigvers",
- "item_description": "Number of queries resulted in RCODE = 16 (BADVERS, BADSIG)"
- },
- {
- "item_name": "badkey",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "badkey",
- "item_description": "Number of queries resulted in RCODE = 17 (BADKEY)"
- },
- {
- "item_name": "badtime",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "badtime",
- "item_description": "Number of queries resulted in RCODE = 18 (BADTIME)"
- },
- {
- "item_name": "badmode",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "badmode",
- "item_description": "Number of queries resulted in RCODE = 19 (BADMODE)"
- },
- {
- "item_name": "badname",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "badname",
- "item_description": "Number of queries resulted in RCODE = 20 (BADNAME)"
- },
- {
- "item_name": "badalg",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "badalg",
- "item_description": "Number of queries resulted in RCODE = 21 (BADALG)"
- },
- {
- "item_name": "badtrunc",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "badtrunc",
- "item_description": "Number of queries resulted in RCODE = 22 (BADTRUNC)"
- },
- {
- "item_name": "other",
- "item_type": "integer",
- "item_optional": false,
- "item_default": 0,
- "item_title": "other",
- "item_description": "Number of queries resulted in other RCODEs"
- }
- ]
- }
- ]
- }
- }
]
}
}
diff --git a/src/bin/auth/b10-auth.xml b/src/bin/auth/b10-auth.xml
deleted file mode 100644
index 1cfb927..0000000
--- a/src/bin/auth/b10-auth.xml
+++ /dev/null
@@ -1,1075 +0,0 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
- "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
- [<!ENTITY mdash "—">]>
-<!--
- - Copyright (C) 2010-2012 Internet Systems Consortium, Inc. ("ISC")
- -
- - Permission to use, copy, modify, and/or distribute this software for any
- - purpose with or without fee is hereby granted, provided that the above
- - copyright notice and this permission notice appear in all copies.
- -
- - THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
- - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- - AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
- - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- - PERFORMANCE OF THIS SOFTWARE.
--->
-
-<refentry>
-
- <refentryinfo>
- <date>October 3, 2012</date>
- </refentryinfo>
-
- <refmeta>
- <refentrytitle>b10-auth</refentrytitle>
- <manvolnum>8</manvolnum>
- <refmiscinfo>BIND10</refmiscinfo>
- </refmeta>
-
- <refnamediv>
- <refname>b10-auth</refname>
- <refpurpose>Authoritative DNS server</refpurpose>
- </refnamediv>
-
- <docinfo>
- <copyright>
- <year>2010-2012</year>
- <holder>Internet Systems Consortium, Inc. ("ISC")</holder>
- </copyright>
- </docinfo>
-
- <refsynopsisdiv>
- <cmdsynopsis>
- <command>b10-auth</command>
- <arg><option>-v</option></arg>
- </cmdsynopsis>
- </refsynopsisdiv>
-
- <refsect1>
- <title>DESCRIPTION</title>
- <para>The <command>b10-auth</command> daemon provides the BIND 10
- authoritative DNS server.
- Normally it is started by the
- <citerefentry><refentrytitle>bind10</refentrytitle><manvolnum>8</manvolnum></citerefentry>
- boss process.
- </para>
-
- <para>
- This daemon communicates with other BIND 10 components over a
- <citerefentry><refentrytitle>b10-msgq</refentrytitle><manvolnum>8</manvolnum></citerefentry>
- C-Channel connection. If this connection is not established,
- <command>b10-auth</command> will exit.
-<!-- TODO what if msgq connection closes later, will b10-auth exit? -->
- It receives its configurations from
-<citerefentry><refentrytitle>b10-cfgmgr</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
-
- </para>
-
-<!-- TODO: mention xfrin, xfrout, zonemgr ? -->
-
- </refsect1>
-
- <refsect1>
- <title>OPTIONS</title>
-
- <para>The arguments are as follows:</para>
-
- <variablelist>
- <varlistentry>
- <term><option>-v</option></term>
- <listitem><para>
- Enable verbose logging mode. This enables logging of
- diagnostic messages at the maximum debug level.
- </para></listitem>
- </varlistentry>
-
- </variablelist>
-
- </refsect1>
-
- <refsect1>
- <title>CONFIGURATION AND COMMANDS</title>
- <para>
- The configurable settings are:
- </para>
-
- <para>
- <varname>database_file</varname> defines the path to the
- SQLite3 zone file when using the sqlite datasource.
- The default is
- <filename>/usr/local/var/bind10-devel/zone.sqlite3</filename>.
- </para>
-
- <para>
- <varname>datasources</varname> configures data sources.
- The list items include:
- <varname>type</varname> to define the required data source type
- (such as <quote>memory</quote>);
- <varname>class</varname> to optionally select the class
- (it defaults to <quote>IN</quote>);
- and
- <varname>zones</varname> to define the
- <varname>file</varname> path name,
- <varname>origin</varname> (default domain), and optional
- <varname>filetype</varname>.
- By default, <varname>zones</varname> is empty.
- For the in-memory data source (i.e., the <varname>type</varname>
- is <quote>memory</quote>), the optional <varname>filetype</varname>
- configuration item for <varname>zones</varname> can be
- specified so the in-memory zone data can be built from another
- data source that is based on a database backend (in practice
- with current implementation, it would be an SQLite3 database
- file for the SQLite3 data source).
- See the <citetitle>BIND 10 Guide</citetitle> for configuration
- details.
-
- <note><simpara>
- Only the IN class is supported at this time.
- By default, the memory data source is disabled.
- Also, currently the zone file must be canonical such as
- generated by <command>named-compilezone -D</command>.
- </simpara></note>
- </para>
-
- <para>
- <varname>listen_on</varname> is a list of addresses and ports for
- <command>b10-auth</command> to listen on.
- The list items are the <varname>address</varname> string
- and <varname>port</varname> number.
- By default, <command>b10-auth</command> listens on port 53
- on the IPv6 (::) and IPv4 (0.0.0.0) wildcard addresses.
- </para>
-
- <para>
- <varname>tcp_recv_timeout</varname> is the timeout used on
- incoming TCP connections, in milliseconds. If the query
- is not sent within this time, the connection is closed.
- Setting this to 0 will disable TCP timeouts completely.
- </para>
-
-<!-- TODO: formating -->
- <para>
- The configuration commands are:
- </para>
-
- <para>
- <command>loadzone</command> tells <command>b10-auth</command>
- to load or reload a zone file. The arguments include:
- <varname>class</varname> which optionally defines the class
- (it defaults to <quote>IN</quote>);
- <varname>origin</varname> is the domain name of the zone;
- and
- <varname>datasrc</varname> optionally defines the type of datasource
- (it defaults to <quote>memory</quote>).
-
- <note><simpara>
- In this development version, currently this only supports the
- IN class and the memory data source.
- </simpara></note>
- </para>
-
- <para>
- <command>getstats</command> tells <command>b10-auth</command>
- to send its statistics data.
- </para>
-
- <para>
- <command>shutdown</command> exits <command>b10-auth</command>.
- This has an optional <varname>pid</varname> argument to
- select the process ID to stop.
- (Note that the BIND 10 boss process may restart this service
- if configured.)
- </para>
-
- </refsect1>
-
- <refsect1>
- <title>STATISTICS DATA</title>
-
- <para>
- The statistics data collected by the <command>b10-stats</command>
- daemon for <quote>Auth</quote> include:
- </para>
-
- <variablelist>
-
- <varlistentry>
- <term>request.v4</term>
- <listitem><simpara>Number of IPv4 requests received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>request.v6</term>
- <listitem><simpara>Number of IPv6 requests received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>request.edns0</term>
- <listitem><simpara>Number of requests with EDNS(0) received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>request.badednsver</term>
- <listitem><simpara>Number of requests with unsupported EDNS version
- received by the <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>request.tsig</term>
- <listitem><simpara>Number of requests with TSIG received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>request.sig0</term>
- <listitem><simpara>Number of requests with SIG(0) received by the
- <command>b10-auth</command> server; currently not implemented in
- BIND 10.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>request.badsig</term>
- <listitem><simpara>Number of requests with invalid TSIG or SIG(0)
- signature received by the <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>request.udp</term>
- <listitem><simpara>Number of UDP requests received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>request.tcp</term>
- <listitem><simpara>Number of TCP requests received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>request.dnssec_ok</term>
- <listitem><simpara>Number of requests with DO bit by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>opcode.query</term>
- <listitem><simpara>Number of Opcode=QUERY requests received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>opcode.iquery</term>
- <listitem><simpara>Number of Opcode=IQUERY requests received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>opcode.status</term>
- <listitem><simpara>Number of Opcode=STATUS requests received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>opcode.notify</term>
- <listitem><simpara>Number of Opcode=NOTIFY requests received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>opcode.update</term>
- <listitem><simpara>Number of Opcode=UPDATE requests received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>opcode.other</term>
- <listitem><simpara>Number of requests in other OpCode received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.a</term>
- <listitem><simpara>Number of QTYPE = A queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.ns</term>
- <listitem><simpara>Number of QTYPE = NS queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.md</term>
- <listitem><simpara>Number of QTYPE = MD queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.mf</term>
- <listitem><simpara>Number of QTYPE = MF queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.cname</term>
- <listitem><simpara>Number of QTYPE = CNAME queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.soa</term>
- <listitem><simpara>Number of QTYPE = SOA queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.mb</term>
- <listitem><simpara>Number of QTYPE = MB queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.mg</term>
- <listitem><simpara>Number of QTYPE = MG queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.mr</term>
- <listitem><simpara>Number of QTYPE = MR queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.null</term>
- <listitem><simpara>Number of QTYPE = NULL queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.wks</term>
- <listitem><simpara>Number of QTYPE = WKS queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.ptr</term>
- <listitem><simpara>Number of QTYPE = PTR queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.hinfo</term>
- <listitem><simpara>Number of QTYPE = HINFO queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.minfo</term>
- <listitem><simpara>Number of QTYPE = MINFO queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.mx</term>
- <listitem><simpara>Number of QTYPE = MX queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.txt</term>
- <listitem><simpara>Number of QTYPE = TXT queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.rp</term>
- <listitem><simpara>Number of QTYPE = RP queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.afsdb</term>
- <listitem><simpara>Number of QTYPE = AFSDB queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.x25</term>
- <listitem><simpara>Number of QTYPE = X25 queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.isdn</term>
- <listitem><simpara>Number of QTYPE = ISDN queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.rt</term>
- <listitem><simpara>Number of QTYPE = RT queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.nsap</term>
- <listitem><simpara>Number of QTYPE = NSAP queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.nsap-ptr</term>
- <listitem><simpara>Number of QTYPE = NSAP-PTR queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.sig</term>
- <listitem><simpara>Number of QTYPE = SIG queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.key</term>
- <listitem><simpara>Number of QTYPE = KEY queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.px</term>
- <listitem><simpara>Number of QTYPE = PX queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.gpos</term>
- <listitem><simpara>Number of QTYPE = GPOS queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.aaaa</term>
- <listitem><simpara>Number of QTYPE = AAAA queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.loc</term>
- <listitem><simpara>Number of QTYPE = LOC queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.nxt</term>
- <listitem><simpara>Number of QTYPE = NXT queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.eid</term>
- <listitem><simpara>Number of QTYPE = EID queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.nimloc</term>
- <listitem><simpara>Number of QTYPE = NIMLOC queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.srv</term>
- <listitem><simpara>Number of QTYPE = SRV queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.atma</term>
- <listitem><simpara>Number of QTYPE = ATMA queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.naptr</term>
- <listitem><simpara>Number of QTYPE = NAPTR queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.kx</term>
- <listitem><simpara>Number of QTYPE = KX queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.cert</term>
- <listitem><simpara>Number of QTYPE = CERT queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.a6</term>
- <listitem><simpara>Number of QTYPE = A6 queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.dname</term>
- <listitem><simpara>Number of QTYPE = DNAME queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.sink</term>
- <listitem><simpara>Number of QTYPE = SINK queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.opt</term>
- <listitem><simpara>Number of QTYPE = OPT queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.apl</term>
- <listitem><simpara>Number of QTYPE = APL queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.ds</term>
- <listitem><simpara>Number of QTYPE = DS queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.sshfp</term>
- <listitem><simpara>Number of QTYPE = SSHFP queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.ipseckey</term>
- <listitem><simpara>Number of QTYPE = IPSECKEY queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.rrsig</term>
- <listitem><simpara>Number of QTYPE = RRSIG queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.nsec</term>
- <listitem><simpara>Number of QTYPE = NSEC queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.dnskey</term>
- <listitem><simpara>Number of QTYPE = DNSKEY queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.dhcid</term>
- <listitem><simpara>Number of QTYPE = DHCID queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.nsec3</term>
- <listitem><simpara>Number of QTYPE = NSEC3 queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.nsec3param</term>
- <listitem><simpara>Number of QTYPE = NSEC3PARAM queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.hip</term>
- <listitem><simpara>Number of QTYPE = HIP queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.ninfo</term>
- <listitem><simpara>Number of QTYPE = NINFO queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.rkey</term>
- <listitem><simpara>Number of QTYPE = RKEY queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.talink</term>
- <listitem><simpara>Number of QTYPE = TALINK queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.spf</term>
- <listitem><simpara>Number of QTYPE = SPF queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.uinfo</term>
- <listitem><simpara>Number of QTYPE = UINFO queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.uid</term>
- <listitem><simpara>Number of QTYPE = UID queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.gid</term>
- <listitem><simpara>Number of QTYPE = GID queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.unspec</term>
- <listitem><simpara>Number of QTYPE = UNSPEC queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.tkey</term>
- <listitem><simpara>Number of QTYPE = TKEY queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.tsig</term>
- <listitem><simpara>Number of QTYPE = TSIG queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.ixfr</term>
- <listitem><simpara>Number of QTYPE = IXFR queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.axfr</term>
- <listitem><simpara>Number of QTYPE = AXFR queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.mailb</term>
- <listitem><simpara>Number of QTYPE = MAILB queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.maila</term>
- <listitem><simpara>Number of QTYPE = MAILA queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.uri</term>
- <listitem><simpara>Number of QTYPE = URI queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.caa</term>
- <listitem><simpara>Number of QTYPE = CAA queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.ta</term>
- <listitem><simpara>Number of QTYPE = TA queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.dlv</term>
- <listitem><simpara>Number of QTYPE = DLV queries received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qtype.other</term>
- <listitem><simpara>Number of queries in other QTYPE received by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>response</term>
- <listitem><simpara>Number of responses sent by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>response.truncated</term>
- <listitem><simpara>Number of truncated responses sent by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>response.edns0</term>
- <listitem><simpara>Number of responses with EDNS0 sent by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>response.tsig</term>
- <listitem><simpara>Number of responses with TSIG sent by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>response.sig0</term>
- <listitem><simpara>Number of responses with SIG(0) sent by the
- <command>b10-auth</command> server; currently not implemented in
- BIND 10.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qrysuccess</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in rcode = NOERROR and
- the number of answer RR >= 1.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qryauthans</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in authoritative answer.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qrynoauthans</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in non-authoritative
- answer.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qryreferral</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in referral answer.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>qrynxrrset</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in NOERROR but the
- number of answer RR == 0.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>authqryrej</term>
- <listitem><simpara>Number of authoritative queries rejected by the
- <command>b10-auth</command> server.
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>rcode.noerror</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in RCODE = 0 (NoError).
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>rcode.formerr</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in RCODE = 1 (FormErr).
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>rcode.servfail</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in RCODE = 2 (ServFail).
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>rcode.nxdomain</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in RCODE = 3 (NXDomain).
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>rcode.notimp</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in RCODE = 4 (NotImp).
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>rcode.refused</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in RCODE = 5 (Refused).
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>rcode.yxdomain</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in RCODE = 6 (YXDomain).
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>rcode.yxrrset</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in RCODE = 7 (YXRRSet).
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>rcode.nxrrset</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in RCODE = 8 (NXRRSet).
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>rcode.notauth</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in RCODE = 9 (NotAuth).
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>rcode.notzone</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in RCODE = 10 (NotZone).
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>rcode.badsigvers</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in RCODE = 16 (BADVERS,
- BADSIG).
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>rcode.badkey</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in RCODE = 17 (BADKEY).
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>rcode.badtime</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in RCODE = 18 (BADTIME).
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>rcode.badmode</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in RCODE = 19 (BADMODE).
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>rcode.badname</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in RCODE = 20 (BADNAME).
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>rcode.badalg</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in RCODE = 21 (BADALG).
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>rcode.badtrunc</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in RCODE = 22 (BADTRUNC).
- </simpara></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>rcode.other</term>
- <listitem><simpara>Number of queries received by the
- <command>b10-auth</command> server resulted in other RCODEs.
- </simpara></listitem>
- </varlistentry>
-
- </variablelist>
-
-<!-- TODO: missing stats docs. See ticket #1721 -->
-
- </refsect1>
-
- <refsect1>
- <title>FILES</title>
- <para>
- <filename>/usr/local/var/bind10-devel/zone.sqlite3</filename>
- — Location for the SQLite3 zone database
- when <emphasis>database_file</emphasis> configuration is not
- defined.
- </para>
- </refsect1>
-
- <refsect1>
- <title>SEE ALSO</title>
- <para>
- <citerefentry>
- <refentrytitle>b10-cfgmgr</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry>,
- <citerefentry>
- <refentrytitle>b10-loadzone</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry>,
- <citerefentry>
- <refentrytitle>b10-msgq</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry>,
- <citerefentry>
- <refentrytitle>b10-stats</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry>,
- <citerefentry>
- <refentrytitle>b10-zonemgr</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry>,
- <citerefentry>
- <refentrytitle>bind10</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry>,
- <citetitle>BIND 10 Guide</citetitle>.
- </para>
- </refsect1>
-
- <refsect1>
- <title>HISTORY</title>
- <para>
- The <command>b10-auth</command> daemon was first coded in October 2009.
- </para>
- </refsect1>
-</refentry><!--
- - Local variables:
- - mode: sgml
- - End:
--->
diff --git a/src/bin/auth/b10-auth.xml.pre b/src/bin/auth/b10-auth.xml.pre
new file mode 100644
index 0000000..46ff2f0
--- /dev/null
+++ b/src/bin/auth/b10-auth.xml.pre
@@ -0,0 +1,248 @@
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
+ [<!ENTITY mdash "—">]>
+<!--
+ - Copyright (C) 2010-2012 Internet Systems Consortium, Inc. ("ISC")
+ -
+ - Permission to use, copy, modify, and/or distribute this software for any
+ - purpose with or without fee is hereby granted, provided that the above
+ - copyright notice and this permission notice appear in all copies.
+ -
+ - THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ - AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ - PERFORMANCE OF THIS SOFTWARE.
+-->
+
+<refentry>
+
+ <refentryinfo>
+ <date>October 3, 2012</date>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>b10-auth</refentrytitle>
+ <manvolnum>8</manvolnum>
+ <refmiscinfo>BIND10</refmiscinfo>
+ </refmeta>
+
+ <refnamediv>
+ <refname>b10-auth</refname>
+ <refpurpose>Authoritative DNS server</refpurpose>
+ </refnamediv>
+
+ <docinfo>
+ <copyright>
+ <year>2010-2012</year>
+ <holder>Internet Systems Consortium, Inc. ("ISC")</holder>
+ </copyright>
+ </docinfo>
+
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>b10-auth</command>
+ <arg><option>-v</option></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>DESCRIPTION</title>
+ <para>The <command>b10-auth</command> daemon provides the BIND 10
+ authoritative DNS server.
+ Normally it is started by the
+ <citerefentry><refentrytitle>bind10</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+ boss process.
+ </para>
+
+ <para>
+ This daemon communicates with other BIND 10 components over a
+ <citerefentry><refentrytitle>b10-msgq</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+ C-Channel connection. If this connection is not established,
+ <command>b10-auth</command> will exit.
+<!-- TODO what if msgq connection closes later, will b10-auth exit? -->
+ It receives its configurations from
+<citerefentry><refentrytitle>b10-cfgmgr</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
+
+ </para>
+
+<!-- TODO: mention xfrin, xfrout, zonemgr ? -->
+
+ </refsect1>
+
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <para>The arguments are as follows:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-v</option></term>
+ <listitem><para>
+ Enable verbose logging mode. This enables logging of
+ diagnostic messages at the maximum debug level.
+ </para></listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </refsect1>
+
+ <refsect1>
+ <title>CONFIGURATION AND COMMANDS</title>
+ <para>
+ The configurable settings are:
+ </para>
+
+ <para>
+ <varname>database_file</varname> defines the path to the
+ SQLite3 zone file when using the sqlite datasource.
+ The default is
+ <filename>@@LOCALSTATEDIR@@/bind10-devel/zone.sqlite3</filename>.
+ </para>
+
+ <para>
+ <varname>datasources</varname> configures data sources.
+ The list items include:
+ <varname>type</varname> to define the required data source type
+ (such as <quote>memory</quote>);
+ <varname>class</varname> to optionally select the class
+ (it defaults to <quote>IN</quote>);
+ and
+ <varname>zones</varname> to define the
+ <varname>file</varname> path name,
+ <varname>origin</varname> (default domain), and optional
+ <varname>filetype</varname>.
+ By default, <varname>zones</varname> is empty.
+ For the in-memory data source (i.e., the <varname>type</varname>
+ is <quote>memory</quote>), the optional <varname>filetype</varname>
+ configuration item for <varname>zones</varname> can be
+ specified so the in-memory zone data can be built from another
+ data source that is based on a database backend (in practice
+ with current implementation, it would be an SQLite3 database
+ file for the SQLite3 data source).
+ See the <citetitle>BIND 10 Guide</citetitle> for configuration
+ details.
+
+ <note><simpara>
+ Only the IN class is supported at this time.
+ By default, the memory data source is disabled.
+ Also, currently the zone file must be canonical such as
+ generated by <command>named-compilezone -D</command>.
+ </simpara></note>
+ </para>
+
+ <para>
+ <varname>listen_on</varname> is a list of addresses and ports for
+ <command>b10-auth</command> to listen on.
+ The list items are the <varname>address</varname> string
+ and <varname>port</varname> number.
+ By default, <command>b10-auth</command> listens on port 53
+ on the IPv6 (::) and IPv4 (0.0.0.0) wildcard addresses.
+ </para>
+
+ <para>
+ <varname>tcp_recv_timeout</varname> is the timeout used on
+ incoming TCP connections, in milliseconds. If the query
+ is not sent within this time, the connection is closed.
+ Setting this to 0 will disable TCP timeouts completely.
+ </para>
+
+<!-- TODO: formating -->
+ <para>
+ The configuration commands are:
+ </para>
+
+ <para>
+ <command>loadzone</command> tells <command>b10-auth</command>
+ to load or reload a zone file. The arguments include:
+ <varname>class</varname> which optionally defines the class
+ (it defaults to <quote>IN</quote>);
+ <varname>origin</varname> is the domain name of the zone;
+ and
+ <varname>datasrc</varname> optionally defines the type of datasource
+ (it defaults to <quote>memory</quote>).
+
+ <note><simpara>
+ In this development version, currently this only supports the
+ IN class and the memory data source.
+ </simpara></note>
+ </para>
+
+ <para>
+ <command>getstats</command> tells <command>b10-auth</command>
+ to send its statistics data.
+ </para>
+
+ <para>
+ <command>shutdown</command> exits <command>b10-auth</command>.
+ This has an optional <varname>pid</varname> argument to
+ select the process ID to stop.
+ (Note that the BIND 10 boss process may restart this service
+ if configured.)
+ </para>
+
+ </refsect1>
+
+ <refsect1>
+ <title>STATISTICS DATA</title>
+
+ <para>
+ The statistics data collected by the <command>b10-stats</command>
+ daemon for <quote>Auth</quote> include:
+ </para>
+
+<!-- ### STATISTICS DATA PLACEHOLDER ### -->
+
+<!-- TODO: missing stats docs. See ticket #1721 -->
+
+ </refsect1>
+
+ <refsect1>
+ <title>FILES</title>
+ <para>
+ <filename>@@LOCALSTATEDIR@@/bind10-devel/zone.sqlite3</filename>
+ — Location for the SQLite3 zone database
+ when <emphasis>database_file</emphasis> configuration is not
+ defined.
+ </para>
+ </refsect1>
+
+ <refsect1>
+ <title>SEE ALSO</title>
+ <para>
+ <citerefentry>
+ <refentrytitle>b10-cfgmgr</refentrytitle><manvolnum>8</manvolnum>
+ </citerefentry>,
+ <citerefentry>
+ <refentrytitle>b10-loadzone</refentrytitle><manvolnum>8</manvolnum>
+ </citerefentry>,
+ <citerefentry>
+ <refentrytitle>b10-msgq</refentrytitle><manvolnum>8</manvolnum>
+ </citerefentry>,
+ <citerefentry>
+ <refentrytitle>b10-stats</refentrytitle><manvolnum>8</manvolnum>
+ </citerefentry>,
+ <citerefentry>
+ <refentrytitle>b10-zonemgr</refentrytitle><manvolnum>8</manvolnum>
+ </citerefentry>,
+ <citerefentry>
+ <refentrytitle>bind10</refentrytitle><manvolnum>8</manvolnum>
+ </citerefentry>,
+ <citetitle>BIND 10 Guide</citetitle>.
+ </para>
+ </refsect1>
+
+ <refsect1>
+ <title>HISTORY</title>
+ <para>
+ The <command>b10-auth</command> daemon was first coded in October 2009.
+ </para>
+ </refsect1>
+</refentry><!--
+ - Local variables:
+ - mode: sgml
+ - End:
+-->
diff --git a/src/bin/auth/gen-statistics_items.py.pre.in b/src/bin/auth/gen-statistics_items.py.pre.in
new file mode 100755
index 0000000..77b4659
--- /dev/null
+++ b/src/bin/auth/gen-statistics_items.py.pre.in
@@ -0,0 +1,276 @@
+#!@PYTHON@
+
+# Copyright (C) 2012 Internet Systems Consortium, Inc. ("ISC")
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+import os
+import re
+import sys
+import json
+from xml.etree import ElementTree
+
+item_list = []
+localstatedir = '@@LOCALSTATEDIR@@'
+builddir = '@builddir@'
+srcdir = '@srcdir@'
+pre_suffix = '.pre'
+
+xmldocument_command_name = 'b10-auth'
+
+def need_generate(filepath, mtime):
+ '''Check if we need to generate the specified file.
+
+ To avoid unnecessary compilation, we skip (re)generating the file when
+ the file already exists and newer than the base file.
+ '''
+ if os.path.exists(filepath) and os.path.getmtime(filepath) > mtime:
+ return False
+ return True
+
+def import_definitions():
+ global item_list
+
+ items_definition_file = srcdir + os.sep + 'statistics_qr_items.def'
+ item_definition = open(items_definition_file, 'r')
+
+ re_splitter = re.compile('\t+')
+ l = item_list
+ lp = None
+ for line in item_definition.readlines():
+ element = re_splitter.split(line.rstrip())
+ if element[0] == '':
+ element.pop(0)
+
+ if element[-1] == '=':
+ l.append({'name': element[0], 'child': [], 'index': element[1],
+ 'description': element[2], 'parent': lp})
+ lp = l
+ l = l[-1]['child']
+ elif element[-1] == ';':
+ l = lp
+ lp = l[-1]['parent']
+ else:
+ l.append({'name': element[0], 'child': None, 'index': element[1],
+ 'description': element[2], 'parent': lp})
+
+ item_definition.close()
+ return os.path.getmtime(items_definition_file)
+
+def generate_specfile(specfile, def_mtime):
+ global item_list
+
+ def convert_list(items, prefix = ''):
+ spec_list = []
+ default_map = {}
+ for item in items:
+ full_item_name = prefix + item['name']
+ if item['child'] is None:
+ default_map[item['name']] = 0
+ spec_list.append({
+ 'item_name': item['name'],
+ 'item_optional': False,
+ 'item_type': 'integer',
+ 'item_default': 0,
+ 'item_title': full_item_name,
+ 'item_description': item['description'],
+ })
+ else:
+ child_spec_list, child_default_map = \
+ convert_list(item['child'], full_item_name + '.')
+ spec_list.append({
+ 'item_name': item['name'],
+ 'item_type': 'map',
+ 'item_optional': False,
+ 'item_title': full_item_name,
+ 'item_description': item['description'],
+ 'item_default': child_default_map,
+ 'map_item_spec': child_spec_list,
+ })
+ default_map[item['name']] = child_default_map
+ return spec_list, default_map
+
+ item_spec_list, item_default_map = convert_list(item_list)
+
+ statistics_spec_list = [{
+ 'item_name': 'zones',
+ 'item_type': 'named_set',
+ 'item_optional': False,
+ 'item_title': 'Zone statistics',
+ 'item_description':
+ 'Zone statistics items. ' +
+ "Items for all zones are stored in '_SERVER_'.",
+ 'item_default': { '_SERVER_': item_default_map },
+ 'named_set_item_spec': {
+ 'item_name': 'zone',
+ 'item_type': 'map',
+ 'item_optional': False,
+ 'item_default': {},
+ 'map_item_spec': item_spec_list,
+ },
+ }]
+
+ if need_generate(builddir+os.sep+specfile, def_mtime):
+ stats_pre = open(builddir+os.sep+specfile+pre_suffix, 'r')
+ stats_pre_json = json.loads(stats_pre.read().replace('@@LOCAL'+'STATEDIR@@',
+ localstatedir))
+ stats_pre.close()
+ stats_pre_json['module_spec']['statistics'] = statistics_spec_list
+ statistics_spec_json = json.dumps(stats_pre_json, sort_keys = True,
+ indent = 2)
+ stats_spec = open(builddir+os.sep+specfile, 'w')
+ stats_spec.write(statistics_spec_json)
+ stats_spec.close()
+ else:
+ print('skip generating ' + specfile)
+ return
+
+def generate_docfile(docfile, def_mtime):
+ global item_list
+
+ def convert_list(items, tree, prefix = ''):
+ for item in items:
+ full_item_name = prefix + item['name']
+ if item['child'] is None:
+ child_element = ElementTree.SubElement(tree, 'varlistentry')
+ term = ElementTree.SubElement(child_element, 'term')
+ term.text = full_item_name
+ list_item = ElementTree.SubElement(child_element, 'listitem')
+ sim_para = ElementTree.SubElement(list_item, 'simpara')
+ sim_para.text = ''
+ prev = None
+ for word in item['description'].split():
+ if word == xmldocument_command_name:
+ command = ElementTree.SubElement(sim_para, 'command')
+ command.text = word
+ para_tail = command
+ command.tail = ' '
+ prev = command
+ else:
+ if prev is None:
+ sim_para.text += word + ' '
+ else:
+ prev.tail += word + ' '
+ else:
+ convert_list(item['child'], tree, full_item_name + '.')
+ return
+
+ if need_generate(builddir+os.sep+docfile, def_mtime):
+ doc_pre = open(srcdir+os.sep+docfile+pre_suffix, 'r')
+ doc_pre_xml = doc_pre.read().replace('@@LOCALSTATEDIR@@', localstatedir)
+ doc_pre.close
+
+ variable_tree = ElementTree.Element('variablelist')
+ convert_list(item_list, variable_tree)
+ doc = open(builddir+os.sep+docfile, 'w')
+ doc.write(doc_pre_xml.replace(
+ '<!-- ### STATISTICS DATA PLACEHOLDER ### -->',
+ ElementTree.tostring(variable_tree)))
+ doc.close()
+ else:
+ print('skip generating ' + docfile)
+ return
+
+def generate_cxx(itemsfile, ccfile, utfile, def_mtime):
+ global item_list
+
+ qr_counter_types = 'enum QRCounterType {\n'
+ item_names = []
+
+ def convert_list(items, qr_counter_types, item_names_current, item_names):
+ for item in items:
+ if item['child'] is None:
+ qr_counter_types += ' ' + item['index'] + ', ' +\
+ '///< ' + item['description'] + '\n'
+ item_names_current.append(' { "' + item['name'] +
+ '", NULL, ' + item['index'] + ' },\n'
+ )
+ else:
+ item_names_current_ = ['const struct CounterTypeTree ' +
+ item['index'] + '[] = {\n']
+ qr_counter_types, item_names_current_, item_names = \
+ convert_list(item['child'], qr_counter_types,
+ item_names_current_, item_names)
+ item_names_current_.append(' { NULL, NULL, -1 }\n' +
+ '};\n')
+ item_names.extend(item_names_current_)
+ item_names_current.append(' { "' + item['name'] + '", ' +
+ item['index'] + ', -1 },\n')
+ return qr_counter_types, item_names_current, item_names
+
+ qr_counter_types, item_names_current, item_names = \
+ convert_list(item_list, qr_counter_types, [], item_names)
+ item_names.append('const struct CounterTypeTree QRCounterTree[] = {\n')
+ item_names.extend(item_names_current)
+ item_names.append(' { NULL, NULL, -1 }\n' +
+ '};\n')
+
+ qr_counter_types += \
+ ' // End of counter types\n' +\
+ ' QR_COUNTER_TYPES ///< The number of defined counters\n' +\
+ '};\n'
+
+ item_defs = qr_counter_types
+ item_decls = ''.join(item_names)
+
+ if need_generate(builddir+os.sep+itemsfile, def_mtime):
+ statistics_items_h_pre = open(srcdir+os.sep+itemsfile+pre_suffix, 'r')
+ items_pre = statistics_items_h_pre.read()
+ statistics_items_h_pre.close
+
+ statistics_items_h = open(builddir+os.sep+itemsfile, 'w')
+ statistics_items_h.write(items_pre.replace(
+ '// ### STATISTICS ITEMS DECLARATION ###', item_defs))
+ statistics_items_h.close()
+ else:
+ print('skip generating ' + itemsfile)
+
+ if need_generate(builddir+os.sep+ccfile, def_mtime):
+ statistics_cc_pre = open(srcdir+os.sep+ccfile+pre_suffix, 'r')
+ items_pre = statistics_cc_pre.read()
+ statistics_cc_pre.close
+
+ statistics_cc = open(builddir+os.sep+ccfile, 'w')
+ statistics_cc.write(items_pre.replace(
+ '// ### STATISTICS ITEMS DEFINITION ###', item_decls))
+ statistics_cc.close()
+ else:
+ print('skip generating ' + ccfile)
+
+ if need_generate(builddir+os.sep+utfile, def_mtime):
+ statistics_ut_cc_pre = open(srcdir+os.sep+utfile+pre_suffix, 'r')
+ items_pre = statistics_ut_cc_pre.read()
+ statistics_ut_cc_pre.close
+
+ statistics_ut_cc = open(builddir+os.sep+utfile, 'w')
+ statistics_ut_cc.write(items_pre.replace(
+ '// ### STATISTICS ITEMS DEFINITION ###', item_decls))
+ statistics_ut_cc.close()
+ else:
+ print('skip generating ' + utfile)
+
+ return
+
+if __name__ == "__main__":
+ try:
+ def_mtime = import_definitions()
+ generate_specfile('auth.spec', def_mtime)
+ generate_docfile('b10-auth.xml', def_mtime)
+ generate_cxx('statistics_items.h',
+ 'statistics.cc',
+ 'tests'+os.sep+'statistics_unittest.cc',
+ def_mtime)
+ except:
+ sys.stderr.write('Code generation failed due to exception: %s\n' %
+ sys.exc_info()[1])
+ exit(1)
diff --git a/src/bin/auth/statistics.cc b/src/bin/auth/statistics.cc
deleted file mode 100644
index 069be74..0000000
--- a/src/bin/auth/statistics.cc
+++ /dev/null
@@ -1,247 +0,0 @@
-// Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC")
-//
-// Permission to use, copy, modify, and/or distribute this software for any
-// purpose with or without fee is hereby granted, provided that the above
-// copyright notice and this permission notice appear in all copies.
-//
-// THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
-// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-// AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
-// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-// PERFORMANCE OF THIS SOFTWARE.
-
-#include <auth/statistics.h>
-#include <auth/statistics_items.h>
-#include <auth/auth_log.h>
-
-#include <dns/opcode.h>
-#include <dns/rcode.h>
-
-#include <cc/data.h>
-#include <cc/session.h>
-
-#include <algorithm>
-#include <cctype>
-#include <cassert>
-#include <string>
-#include <sstream>
-#include <iostream>
-
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netdb.h>
-
-using namespace isc::dns;
-using namespace isc::auth;
-using namespace isc::statistics;
-
-namespace {
-
-void
-fillNodes(const Counter& counter, const struct CounterTypeTree type_tree[],
- isc::auth::statistics::Counters::ItemTreeType& trees)
-{
- using namespace isc::data;
-
- for (int i = 0; type_tree[i].name != NULL; ++i) {
- if (type_tree[i].sub_tree != NULL) {
- isc::auth::statistics::Counters::ItemTreeType sub_tree =
- Element::createMap();
- trees->set(type_tree[i].name, sub_tree);
- fillNodes(counter, type_tree[i].sub_tree, sub_tree);
- } else {
- trees->set(type_tree[i].name,
- Element::create(static_cast<long int>(
- counter.get(type_tree[i].counter_id)))
- );
- }
- }
-}
-
-} // anonymous namespace
-
-namespace isc {
-namespace auth {
-namespace statistics {
-
-Counters::Counters() :
- // size of server_qr_counter_, zone_qr_counters_: QR_COUNTER_TYPES
- server_qr_counter_(QR_COUNTER_TYPES),
- zone_qr_counters_(QR_COUNTER_TYPES)
-{}
-
-Counters::~Counters()
-{}
-
-void
-Counters::incRequest(const QRAttributes& qrattrs, const Message& response) {
- // protocols carrying request
- if (qrattrs.req_ip_version_ == AF_INET) {
- server_qr_counter_.inc(QR_REQUEST_IPV4);
- } else if (qrattrs.req_ip_version_ == AF_INET6) {
- server_qr_counter_.inc(QR_REQUEST_IPV6);
- }
- if (qrattrs.req_transport_protocol_ == IPPROTO_UDP) {
- server_qr_counter_.inc(QR_REQUEST_UDP);
- } else if (qrattrs.req_transport_protocol_ == IPPROTO_TCP) {
- server_qr_counter_.inc(QR_REQUEST_TCP);
- }
-
- // query TSIG
- if (qrattrs.req_is_tsig_) {
- server_qr_counter_.inc(QR_REQUEST_TSIG);
- }
- if (qrattrs.req_is_sig0_) {
- server_qr_counter_.inc(QR_REQUEST_SIG0);
- }
- if (qrattrs.req_is_badsig_) {
- server_qr_counter_.inc(QR_REQUEST_BADSIG);
- // If signature validation is failed, no other query attributes are
- // reliable. Skip processing of the rest of query counters.
- return;
- }
-
- // query EDNS
- if (qrattrs.req_is_edns_0_) {
- server_qr_counter_.inc(QR_REQUEST_EDNS0);
- }
- if (qrattrs.req_is_edns_badver_) {
- server_qr_counter_.inc(QR_REQUEST_BADEDNSVER);
- }
-
- // query DNSSEC
- if (qrattrs.req_is_dnssec_ok_) {
- server_qr_counter_.inc(QR_REQUEST_DNSSEC_OK);
- }
-
- // QTYPE
- unsigned int qtype_type = QR_QTYPE_OTHER;
- const QuestionIterator qiter = response.beginQuestion();
- if (qiter != response.endQuestion()) {
- // get the first and only question section
- const QuestionPtr qptr = *qiter;
- if (qptr != NULL) {
- // get the qtype code
- const unsigned int qtype = qptr->getType().getCode();
- if (qtype < 258) {
- // qtype 0..257
- qtype_type = QRQTypeToQRCounterType[qtype];
- } else if (qtype < 32768) {
- // qtype 258..32767
- qtype_type = QR_QTYPE_OTHER;
- } else if (qtype < 32770) {
- // qtype 32768..32769
- qtype_type = QR_QTYPE_TA + (qtype - 32768);
- } else {
- // qtype 32770..65535
- qtype_type = QR_QTYPE_OTHER;
- }
- }
- }
- server_qr_counter_.inc(qtype_type);
- // OPCODE
- server_qr_counter_.inc(QROpCodeToQRCounterType[qrattrs.req_opcode_]);
-}
-
-void
-Counters::incResponse(const QRAttributes& qrattrs, const Message& response) {
- // responded
- server_qr_counter_.inc(QR_RESPONSE);
-
- // response truncated
- if (qrattrs.res_is_truncated_) {
- server_qr_counter_.inc(QR_RESPONSE_TRUNCATED);
- }
-
- // response EDNS
- ConstEDNSPtr response_edns = response.getEDNS();
- if (response_edns != NULL && response_edns->getVersion() == 0) {
- server_qr_counter_.inc(QR_RESPONSE_EDNS0);
- }
-
- // response TSIG
- if (qrattrs.req_is_tsig_) {
- // assume response is TSIG signed if request is TSIG signed
- server_qr_counter_.inc(QR_RESPONSE_TSIG);
- }
-
- // response SIG(0) is currently not implemented
-
- // RCODE
- const unsigned int rcode = response.getRcode().getCode();
- unsigned int rcode_type = QR_RCODE_OTHER;
- if (rcode < 23) {
- // rcode 0..22
- rcode_type = QRRCodeToQRCounterType[rcode];
- } else {
- // opcode larger than 22 is reserved or unassigned
- rcode_type = QR_RCODE_OTHER;
- }
- server_qr_counter_.inc(rcode_type);
-
- // compound attributes
- const unsigned int answer_rrs =
- response.getRRCount(Message::SECTION_ANSWER);
- const bool is_aa_set = response.getHeaderFlag(Message::HEADERFLAG_AA);
-
- if (is_aa_set) {
- // QryAuthAns
- server_qr_counter_.inc(QR_QRYAUTHANS);
- } else {
- // QryNoAuthAns
- server_qr_counter_.inc(QR_QRYNOAUTHANS);
- }
-
- if (rcode == Rcode::NOERROR_CODE) {
- if (answer_rrs > 0) {
- // QrySuccess
- server_qr_counter_.inc(QR_QRYSUCCESS);
- } else {
- if (is_aa_set) {
- // QryNxrrset
- server_qr_counter_.inc(QR_QRYNXRRSET);
- } else {
- // QryReferral
- server_qr_counter_.inc(QR_QRYREFERRAL);
- }
- }
- } else if (rcode == Rcode::REFUSED_CODE) {
- // AuthRej
- server_qr_counter_.inc(QR_QRYREJECT);
- }
-}
-
-void
-Counters::inc(const QRAttributes& qrattrs, const Message& response) {
- // increment request counters
- incRequest(qrattrs, response);
-
- if (qrattrs.answer_sent_) {
- // increment response counters if answer was sent
- incResponse(qrattrs, response);
- }
-}
-
-Counters::ItemTreeType
-Counters::get() const {
- using namespace isc::data;
-
- Counters::ItemTreeType item_tree = Element::createMap();
-
- Counters::ItemTreeType zones = Element::createMap();
- item_tree->set("zones", zones);
-
- Counters::ItemTreeType server = Element::createMap();
- fillNodes(server_qr_counter_, QRCounterTree, server);
- zones->set("_SERVER_", server);
-
- return (item_tree);
-}
-
-} // namespace statistics
-} // namespace auth
-} // namespace isc
diff --git a/src/bin/auth/statistics.cc.pre b/src/bin/auth/statistics.cc.pre
new file mode 100644
index 0000000..e63f35d
--- /dev/null
+++ b/src/bin/auth/statistics.cc.pre
@@ -0,0 +1,269 @@
+// Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC")
+//
+// Permission to use, copy, modify, and/or distribute this software for any
+// purpose with or without fee is hereby granted, provided that the above
+// copyright notice and this permission notice appear in all copies.
+//
+// THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+// AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+// PERFORMANCE OF THIS SOFTWARE.
+
+#include <auth/statistics.h>
+#include <auth/statistics_items.h>
+#include <auth/auth_log.h>
+
+#include <dns/opcode.h>
+#include <dns/rcode.h>
+
+#include <cc/data.h>
+#include <cc/session.h>
+
+#include <algorithm>
+#include <cctype>
+#include <cassert>
+#include <string>
+#include <sstream>
+#include <iostream>
+
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netdb.h>
+
+using namespace isc::dns;
+using namespace isc::auth;
+using namespace isc::statistics;
+
+namespace {
+
+void
+fillNodes(const Counter& counter,
+ const struct isc::auth::statistics::CounterTypeTree type_tree[],
+ isc::auth::statistics::Counters::ItemTreeType& trees)
+{
+ using namespace isc::data;
+
+ for (int i = 0; type_tree[i].name != NULL; ++i) {
+ if (type_tree[i].sub_tree != NULL) {
+ isc::auth::statistics::Counters::ItemTreeType sub_tree =
+ Element::createMap();
+ trees->set(type_tree[i].name, sub_tree);
+ fillNodes(counter, type_tree[i].sub_tree, sub_tree);
+ } else {
+ trees->set(type_tree[i].name,
+ Element::create(static_cast<long int>(
+ counter.get(type_tree[i].counter_id)))
+ );
+ }
+ }
+}
+
+} // anonymous namespace
+
+namespace isc {
+namespace auth {
+namespace statistics {
+
+// ### STATISTICS ITEMS DEFINITION ###
+
+const int QROpCodeToQRCounterType[16] = {
+ QR_OPCODE_QUERY,
+ QR_OPCODE_IQUERY,
+ QR_OPCODE_STATUS,
+ QR_OPCODE_OTHER,
+ QR_OPCODE_NOTIFY,
+ QR_OPCODE_UPDATE,
+ QR_OPCODE_OTHER,
+ QR_OPCODE_OTHER,
+ QR_OPCODE_OTHER,
+ QR_OPCODE_OTHER,
+ QR_OPCODE_OTHER,
+ QR_OPCODE_OTHER,
+ QR_OPCODE_OTHER,
+ QR_OPCODE_OTHER,
+ QR_OPCODE_OTHER,
+ QR_OPCODE_OTHER
+};
+const int QRRCodeToQRCounterType[23] = {
+ QR_RCODE_NOERROR,
+ QR_RCODE_FORMERR,
+ QR_RCODE_SERVFAIL,
+ QR_RCODE_NXDOMAIN,
+ QR_RCODE_NOTIMP,
+ QR_RCODE_REFUSED,
+ QR_RCODE_YXDOMAIN,
+ QR_RCODE_YXRRSET,
+ QR_RCODE_NXRRSET,
+ QR_RCODE_NOTAUTH,
+ QR_RCODE_NOTZONE,
+ QR_RCODE_OTHER,
+ QR_RCODE_OTHER,
+ QR_RCODE_OTHER,
+ QR_RCODE_OTHER,
+ QR_RCODE_OTHER,
+ QR_RCODE_BADSIGVERS,
+ QR_RCODE_BADKEY,
+ QR_RCODE_BADTIME,
+ QR_RCODE_BADMODE,
+ QR_RCODE_BADNAME,
+ QR_RCODE_BADALG,
+ QR_RCODE_BADTRUNC
+};
+
+Counters::Counters() :
+ // size of server_qr_counter_, zone_qr_counters_: QR_COUNTER_TYPES
+ server_qr_counter_(QR_COUNTER_TYPES),
+ zone_qr_counters_(QR_COUNTER_TYPES)
+{}
+
+Counters::~Counters()
+{}
+
+void
+Counters::incRequest(const QRAttributes& qrattrs) {
+ // protocols carrying request
+ if (qrattrs.req_ip_version_ == AF_INET) {
+ server_qr_counter_.inc(QR_REQUEST_IPV4);
+ } else if (qrattrs.req_ip_version_ == AF_INET6) {
+ server_qr_counter_.inc(QR_REQUEST_IPV6);
+ }
+ if (qrattrs.req_transport_protocol_ == IPPROTO_UDP) {
+ server_qr_counter_.inc(QR_REQUEST_UDP);
+ } else if (qrattrs.req_transport_protocol_ == IPPROTO_TCP) {
+ server_qr_counter_.inc(QR_REQUEST_TCP);
+ }
+
+ // query TSIG
+ if (qrattrs.req_is_tsig_) {
+ server_qr_counter_.inc(QR_REQUEST_TSIG);
+ }
+ if (qrattrs.req_is_sig0_) {
+ server_qr_counter_.inc(QR_REQUEST_SIG0);
+ }
+ if (qrattrs.req_is_badsig_) {
+ server_qr_counter_.inc(QR_REQUEST_BADSIG);
+ // If signature validation is failed, no other query attributes are
+ // reliable. Skip processing of the rest of query counters.
+ return;
+ }
+
+ // query EDNS
+ if (qrattrs.req_is_edns_0_) {
+ server_qr_counter_.inc(QR_REQUEST_EDNS0);
+ }
+ if (qrattrs.req_is_edns_badver_) {
+ server_qr_counter_.inc(QR_REQUEST_BADEDNSVER);
+ }
+
+ // query DNSSEC
+ if (qrattrs.req_is_dnssec_ok_) {
+ server_qr_counter_.inc(QR_REQUEST_DNSSEC_OK);
+ }
+
+ // OPCODE
+ server_qr_counter_.inc(QROpCodeToQRCounterType[qrattrs.req_opcode_]);
+}
+
+void
+Counters::incResponse(const QRAttributes& qrattrs, const Message& response) {
+ // responded
+ server_qr_counter_.inc(QR_RESPONSE);
+
+ // response truncated
+ if (qrattrs.res_is_truncated_) {
+ server_qr_counter_.inc(QR_RESPONSE_TRUNCATED);
+ }
+
+ // response EDNS
+ ConstEDNSPtr response_edns = response.getEDNS();
+ if (response_edns != NULL && response_edns->getVersion() == 0) {
+ server_qr_counter_.inc(QR_RESPONSE_EDNS0);
+ }
+
+ // response TSIG
+ if (qrattrs.req_is_tsig_) {
+ // assume response is TSIG signed if request is TSIG signed
+ server_qr_counter_.inc(QR_RESPONSE_TSIG);
+ }
+
+ // response SIG(0) is currently not implemented
+
+ // RCODE
+ const unsigned int rcode = response.getRcode().getCode();
+ unsigned int rcode_type = QR_RCODE_OTHER;
+ if (rcode < 23) {
+ // rcode 0..22
+ rcode_type = QRRCodeToQRCounterType[rcode];
+ } else {
+ // opcode larger than 22 is reserved or unassigned
+ rcode_type = QR_RCODE_OTHER;
+ }
+ server_qr_counter_.inc(rcode_type);
+
+ // compound attributes
+ const unsigned int answer_rrs =
+ response.getRRCount(Message::SECTION_ANSWER);
+ const bool is_aa_set = response.getHeaderFlag(Message::HEADERFLAG_AA);
+
+ if (is_aa_set) {
+ // QryAuthAns
+ server_qr_counter_.inc(QR_QRYAUTHANS);
+ } else {
+ // QryNoAuthAns
+ server_qr_counter_.inc(QR_QRYNOAUTHANS);
+ }
+
+ if (rcode == Rcode::NOERROR_CODE) {
+ if (answer_rrs > 0) {
+ // QrySuccess
+ server_qr_counter_.inc(QR_QRYSUCCESS);
+ } else {
+ if (is_aa_set) {
+ // QryNxrrset
+ server_qr_counter_.inc(QR_QRYNXRRSET);
+ } else {
+ // QryReferral
+ server_qr_counter_.inc(QR_QRYREFERRAL);
+ }
+ }
+ } else if (rcode == Rcode::REFUSED_CODE) {
+ // AuthRej
+ server_qr_counter_.inc(QR_QRYREJECT);
+ }
+}
+
+void
+Counters::inc(const QRAttributes& qrattrs, const Message& response) {
+ // increment request counters
+ incRequest(qrattrs);
+
+ if (qrattrs.answer_sent_) {
+ // increment response counters if answer was sent
+ incResponse(qrattrs, response);
+ }
+}
+
+Counters::ItemTreeType
+Counters::get() const {
+ using namespace isc::data;
+
+ Counters::ItemTreeType item_tree = Element::createMap();
+
+ Counters::ItemTreeType zones = Element::createMap();
+ item_tree->set("zones", zones);
+
+ Counters::ItemTreeType server = Element::createMap();
+ fillNodes(server_qr_counter_, QRCounterTree, server);
+ zones->set("_SERVER_", server);
+
+ return (item_tree);
+}
+
+} // namespace statistics
+} // namespace auth
+} // namespace isc
diff --git a/src/bin/auth/statistics.h b/src/bin/auth/statistics.h
index 59fb932..e30d8a9 100644
--- a/src/bin/auth/statistics.h
+++ b/src/bin/auth/statistics.h
@@ -208,8 +208,7 @@ private:
isc::statistics::Counter server_qr_counter_;
// set of counters for zones
isc::statistics::CounterDictionary zone_qr_counters_;
- void incRequest(const QRAttributes& qrattrs,
- const isc::dns::Message& response);
+ void incRequest(const QRAttributes& qrattrs);
void incResponse(const QRAttributes& qrattrs,
const isc::dns::Message& response);
public:
diff --git a/src/bin/auth/statistics_items.h b/src/bin/auth/statistics_items.h
deleted file mode 100644
index eb5d249..0000000
--- a/src/bin/auth/statistics_items.h
+++ /dev/null
@@ -1,609 +0,0 @@
-// Copyright (C) 2012 Internet Systems Consortium, Inc. ("ISC")
-//
-// Permission to use, copy, modify, and/or distribute this software for any
-// purpose with or without fee is hereby granted, provided that the above
-// copyright notice and this permission notice appear in all copies.
-//
-// THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
-// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-// AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
-// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-// PERFORMANCE OF THIS SOFTWARE.
-
-#ifndef __STATISTICS_ITEMS_H
-#define __STATISTICS_ITEMS_H 1
-
-/// This file defines a set of statistics items in Auth module for internal
-/// use. This file is intended to be included in statistics.cc.
-
-namespace {
-
-struct CounterTypeTree {
- const char* const name;
- const struct CounterTypeTree* const sub_tree;
- const int counter_id;
-};
-
-// enum for query/response counters
-enum QRCounterType {
- // Request Attributes
- QR_REQUEST_IPV4, ///< Number of IPv4 requests received
- QR_REQUEST_IPV6, ///< Number of IPv6 requests received
- QR_REQUEST_EDNS0, ///< Number of requests with EDNS(0) received
- QR_REQUEST_BADEDNSVER, ///< Number of requests with unsupported EDNS version received
- QR_REQUEST_TSIG, ///< Number of requests with TSIG received
- QR_REQUEST_SIG0, ///< Number of requests with SIG(0) received; not implemented in BIND 10
- QR_REQUEST_BADSIG, ///< Number of requests with invalid TSIG or SIG(0) signature received
- QR_REQUEST_UDP, ///< Number of UDP requests received
- QR_REQUEST_TCP, ///< Number of TCP requests received
- QR_REQUEST_DNSSEC_OK, ///< Number of requests with DO bit
- // Request Opcodes
- QR_OPCODE_QUERY, ///< Number of Opcode=QUERY requests received
- QR_OPCODE_IQUERY, ///< Number of Opcode=IQUERY requests received
- QR_OPCODE_STATUS, ///< Number of Opcode=STATUS requests received
- QR_OPCODE_NOTIFY, ///< Number of Opcode=NOTIFY requests received
- QR_OPCODE_UPDATE, ///< Number of Opcode=UPDATE requests received
- QR_OPCODE_OTHER, ///< Number of requests in other OpCode received
- // Query Types
- QR_QTYPE_A, ///< Number of QTYPE = A queries received
- QR_QTYPE_NS, ///< Number of QTYPE = NS queries received
- QR_QTYPE_MD, ///< Number of QTYPE = MD queries received
- QR_QTYPE_MF, ///< Number of QTYPE = MF queries received
- QR_QTYPE_CNAME, ///< Number of QTYPE = CNAME queries received
- QR_QTYPE_SOA, ///< Number of QTYPE = SOA queries received
- QR_QTYPE_MB, ///< Number of QTYPE = MB queries received
- QR_QTYPE_MG, ///< Number of QTYPE = MG queries received
- QR_QTYPE_MR, ///< Number of QTYPE = MR queries received
- QR_QTYPE_NULL, ///< Number of QTYPE = NULL queries received
- QR_QTYPE_WKS, ///< Number of QTYPE = WKS queries received
- QR_QTYPE_PTR, ///< Number of QTYPE = PTR queries received
- QR_QTYPE_HINFO, ///< Number of QTYPE = HINFO queries received
- QR_QTYPE_MINFO, ///< Number of QTYPE = MINFO queries received
- QR_QTYPE_MX, ///< Number of QTYPE = MX queries received
- QR_QTYPE_TXT, ///< Number of QTYPE = TXT queries received
- QR_QTYPE_RP, ///< Number of QTYPE = RP queries received
- QR_QTYPE_AFSDB, ///< Number of QTYPE = AFSDB queries received
- QR_QTYPE_X25, ///< Number of QTYPE = X25 queries received
- QR_QTYPE_ISDN, ///< Number of QTYPE = ISDN queries received
- QR_QTYPE_RT, ///< Number of QTYPE = RT queries received
- QR_QTYPE_NSAP, ///< Number of QTYPE = NSAP queries received
- QR_QTYPE_NSAP_PTR, ///< Number of QTYPE = NSAP-PTR queries received
- QR_QTYPE_SIG, ///< Number of QTYPE = SIG queries received
- QR_QTYPE_KEY, ///< Number of QTYPE = KEY queries received
- QR_QTYPE_PX, ///< Number of QTYPE = PX queries received
- QR_QTYPE_GPOS, ///< Number of QTYPE = GPOS queries received
- QR_QTYPE_AAAA, ///< Number of QTYPE = AAAA queries received
- QR_QTYPE_LOC, ///< Number of QTYPE = LOC queries received
- QR_QTYPE_NXT, ///< Number of QTYPE = NXT queries received
- QR_QTYPE_EID, ///< Number of QTYPE = EID queries received
- QR_QTYPE_NIMLOC, ///< Number of QTYPE = NIMLOC queries received
- QR_QTYPE_SRV, ///< Number of QTYPE = SRV queries received
- QR_QTYPE_ATMA, ///< Number of QTYPE = ATMA queries received
- QR_QTYPE_NAPTR, ///< Number of QTYPE = NAPTR queries received
- QR_QTYPE_KX, ///< Number of QTYPE = KX queries received
- QR_QTYPE_CERT, ///< Number of QTYPE = CERT queries received
- QR_QTYPE_A6, ///< Number of QTYPE = A6 queries received
- QR_QTYPE_DNAME, ///< Number of QTYPE = DNAME queries received
- QR_QTYPE_SINK, ///< Number of QTYPE = SINK queries received
- QR_QTYPE_OPT, ///< Number of QTYPE = OPT queries received
- QR_QTYPE_APL, ///< Number of QTYPE = APL queries received
- QR_QTYPE_DS, ///< Number of QTYPE = DS queries received
- QR_QTYPE_SSHFP, ///< Number of QTYPE = SSHFP queries received
- QR_QTYPE_IPSECKEY, ///< Number of QTYPE = IPSECKEY queries received
- QR_QTYPE_RRSIG, ///< Number of QTYPE = RRSIG queries received
- QR_QTYPE_NSEC, ///< Number of QTYPE = NSEC queries received
- QR_QTYPE_DNSKEY, ///< Number of QTYPE = DNSKEY queries received
- QR_QTYPE_DHCID, ///< Number of QTYPE = DHCID queries received
- QR_QTYPE_NSEC3, ///< Number of QTYPE = NSEC3 queries received
- QR_QTYPE_NSEC3PARAM, ///< Number of QTYPE = NSEC3PARAM queries received
- QR_QTYPE_HIP, ///< Number of QTYPE = HIP queries received
- QR_QTYPE_NINFO, ///< Number of QTYPE = NINFO queries received
- QR_QTYPE_RKEY, ///< Number of QTYPE = RKEY queries received
- QR_QTYPE_TALINK, ///< Number of QTYPE = TALINK queries received
- QR_QTYPE_SPF, ///< Number of QTYPE = SPF queries received
- QR_QTYPE_UINFO, ///< Number of QTYPE = UINFO queries received
- QR_QTYPE_UID, ///< Number of QTYPE = UID queries received
- QR_QTYPE_GID, ///< Number of QTYPE = GID queries received
- QR_QTYPE_UNSPEC, ///< Number of QTYPE = UNSPEC queries received
- QR_QTYPE_TKEY, ///< Number of QTYPE = TKEY queries received
- QR_QTYPE_TSIG, ///< Number of QTYPE = TSIG queries received
- QR_QTYPE_IXFR, ///< Number of QTYPE = IXFR queries received
- QR_QTYPE_AXFR, ///< Number of QTYPE = AXFR queries received
- QR_QTYPE_MAILB, ///< Number of QTYPE = MAILB queries received
- QR_QTYPE_MAILA, ///< Number of QTYPE = MAILA queries received
- QR_QTYPE_URI, ///< Number of QTYPE = URI queries received
- QR_QTYPE_CAA, ///< Number of QTYPE = CAA queries received
- QR_QTYPE_TA, ///< Number of QTYPE = TA queries received
- QR_QTYPE_DLV, ///< Number of QTYPE = DLV queries received
- QR_QTYPE_OTHER, ///< Number of queries in other QTYPE received
- // Respose Attributes
- QR_RESPONSE, ///< Number of responses sent
- QR_RESPONSE_TRUNCATED, ///< Number of truncated responses sent
- QR_RESPONSE_EDNS0, ///< Number of responses with EDNS0; not implemented in BIND 10
- QR_RESPONSE_TSIG, ///< Number of responses with TSIG
- QR_RESPONSE_SIG0, ///< Number of responses with SIG(0); not implemented in BIND 10
- QR_QRYSUCCESS, ///< Number of queries resulted in rcode = NOERROR and answer RR >= 1
- QR_QRYAUTHANS, ///< Number of queries resulted in authoritative answer
- QR_QRYNOAUTHANS, ///< Number of queries resulted in non-authoritative answer
- QR_QRYREFERRAL, ///< Number of queries resulted in referral answer
- QR_QRYNXRRSET, ///< Number of queries resulted in NOERROR but answer RR == 0
- QR_QRYREJECT, ///< Number of queries rejected
- // Response Rcodes
- QR_RCODE_NOERROR, ///< Number of queries resulted in RCODE = 0 (NoError)
- QR_RCODE_FORMERR, ///< Number of queries resulted in RCODE = 1 (FormErr)
- QR_RCODE_SERVFAIL, ///< Number of queries resulted in RCODE = 2 (ServFail)
- QR_RCODE_NXDOMAIN, ///< Number of queries resulted in RCODE = 3 (NXDomain)
- QR_RCODE_NOTIMP, ///< Number of queries resulted in RCODE = 4 (NotImp)
- QR_RCODE_REFUSED, ///< Number of queries resulted in RCODE = 5 (Refused)
- QR_RCODE_YXDOMAIN, ///< Number of queries resulted in RCODE = 6 (YXDomain)
- QR_RCODE_YXRRSET, ///< Number of queries resulted in RCODE = 7 (YXRRSet)
- QR_RCODE_NXRRSET, ///< Number of queries resulted in RCODE = 8 (NXRRSet)
- QR_RCODE_NOTAUTH, ///< Number of queries resulted in RCODE = 9 (NotAuth)
- QR_RCODE_NOTZONE, ///< Number of queries resulted in RCODE = 10 (NotZone)
- QR_RCODE_BADSIGVERS, ///< Number of queries resulted in RCODE = 16 (BADVERS, BADSIG)
- QR_RCODE_BADKEY, ///< Number of queries resulted in RCODE = 17 (BADKEY)
- QR_RCODE_BADTIME, ///< Number of queries resulted in RCODE = 18 (BADTIME)
- QR_RCODE_BADMODE, ///< Number of queries resulted in RCODE = 19 (BADMODE)
- QR_RCODE_BADNAME, ///< Number of queries resulted in RCODE = 20 (BADNAME)
- QR_RCODE_BADALG, ///< Number of queries resulted in RCODE = 21 (BADALG)
- QR_RCODE_BADTRUNC, ///< Number of queries resulted in RCODE = 22 (BADTRUNC)
- QR_RCODE_OTHER, ///< Number of queries resulted in other RCODEs
- // End of counter types
- QR_COUNTER_TYPES ///< The number of defined counters
-};
-
-// item names for query/response counters
-const struct CounterTypeTree QRCounterRequest[] = {
- { "v4", NULL, QR_REQUEST_IPV4 },
- { "v6", NULL, QR_REQUEST_IPV6 },
- { "edns0", NULL, QR_REQUEST_EDNS0 },
- { "badednsver", NULL, QR_REQUEST_BADEDNSVER },
- { "tsig", NULL, QR_REQUEST_TSIG },
- { "sig0", NULL, QR_REQUEST_SIG0 },
- { "badsig", NULL, QR_REQUEST_BADSIG },
- { "udp", NULL, QR_REQUEST_UDP },
- { "tcp", NULL, QR_REQUEST_TCP },
- { "dnssec_ok", NULL, QR_REQUEST_DNSSEC_OK },
- { NULL, NULL, -1 }
-};
-const struct CounterTypeTree QRCounterOpcode[] = {
- { "query", NULL, QR_OPCODE_QUERY },
- { "iquery", NULL, QR_OPCODE_IQUERY },
- { "status", NULL, QR_OPCODE_STATUS },
- { "notify", NULL, QR_OPCODE_NOTIFY },
- { "update", NULL, QR_OPCODE_UPDATE },
- { "other", NULL, QR_OPCODE_OTHER },
- { NULL, NULL, -1 }
-};
-const struct CounterTypeTree QRCounterQtype[] = {
- { "a", NULL, QR_QTYPE_A, },
- { "ns", NULL, QR_QTYPE_NS },
- { "md", NULL, QR_QTYPE_MD },
- { "mf", NULL, QR_QTYPE_MF },
- { "cname", NULL, QR_QTYPE_CNAME },
- { "soa", NULL, QR_QTYPE_SOA },
- { "mb", NULL, QR_QTYPE_MB },
- { "mg", NULL, QR_QTYPE_MG },
- { "mr", NULL, QR_QTYPE_MR },
- { "null", NULL, QR_QTYPE_NULL },
- { "wks", NULL, QR_QTYPE_WKS },
- { "ptr", NULL, QR_QTYPE_PTR },
- { "hinfo", NULL, QR_QTYPE_HINFO },
- { "minfo", NULL, QR_QTYPE_MINFO },
- { "mx", NULL, QR_QTYPE_MX },
- { "txt", NULL, QR_QTYPE_TXT },
- { "rp", NULL, QR_QTYPE_RP },
- { "afsdb", NULL, QR_QTYPE_AFSDB },
- { "x25", NULL, QR_QTYPE_X25 },
- { "isdn", NULL, QR_QTYPE_ISDN },
- { "rt", NULL, QR_QTYPE_RT },
- { "nsap", NULL, QR_QTYPE_NSAP },
- { "nsap-ptr", NULL, QR_QTYPE_NSAP_PTR },
- { "sig", NULL, QR_QTYPE_SIG },
- { "key", NULL, QR_QTYPE_KEY },
- { "px", NULL, QR_QTYPE_PX },
- { "gpos", NULL, QR_QTYPE_GPOS },
- { "aaaa", NULL, QR_QTYPE_AAAA },
- { "loc", NULL, QR_QTYPE_LOC },
- { "nxt", NULL, QR_QTYPE_NXT },
- { "eid", NULL, QR_QTYPE_EID },
- { "nimloc", NULL, QR_QTYPE_NIMLOC },
- { "srv", NULL, QR_QTYPE_SRV },
- { "atma", NULL, QR_QTYPE_ATMA },
- { "naptr", NULL, QR_QTYPE_NAPTR },
- { "kx", NULL, QR_QTYPE_KX },
- { "cert", NULL, QR_QTYPE_CERT },
- { "a6", NULL, QR_QTYPE_A6 },
- { "dname", NULL, QR_QTYPE_DNAME },
- { "sink", NULL, QR_QTYPE_SINK },
- { "opt", NULL, QR_QTYPE_OPT },
- { "apl", NULL, QR_QTYPE_APL },
- { "ds", NULL, QR_QTYPE_DS },
- { "sshfp", NULL, QR_QTYPE_SSHFP },
- { "ipseckey", NULL, QR_QTYPE_IPSECKEY },
- { "rrsig", NULL, QR_QTYPE_RRSIG },
- { "nsec", NULL, QR_QTYPE_NSEC },
- { "dnskey", NULL, QR_QTYPE_DNSKEY },
- { "dhcid", NULL, QR_QTYPE_DHCID },
- { "nsec3", NULL, QR_QTYPE_NSEC3 },
- { "nsec3param", NULL, QR_QTYPE_NSEC3PARAM },
- { "hip", NULL, QR_QTYPE_HIP },
- { "ninfo", NULL, QR_QTYPE_NINFO },
- { "rkey", NULL, QR_QTYPE_RKEY },
- { "talink", NULL, QR_QTYPE_TALINK },
- { "spf", NULL, QR_QTYPE_SPF },
- { "uinfo", NULL, QR_QTYPE_UINFO },
- { "uid", NULL, QR_QTYPE_UID },
- { "gid", NULL, QR_QTYPE_GID },
- { "unspec", NULL, QR_QTYPE_UNSPEC },
- { "tkey", NULL, QR_QTYPE_TKEY },
- { "tsig", NULL, QR_QTYPE_TSIG },
- { "ixfr", NULL, QR_QTYPE_IXFR },
- { "axfr", NULL, QR_QTYPE_AXFR },
- { "mailb", NULL, QR_QTYPE_MAILB },
- { "maila", NULL, QR_QTYPE_MAILA },
- { "uri", NULL, QR_QTYPE_URI },
- { "caa", NULL, QR_QTYPE_CAA },
- { "ta", NULL, QR_QTYPE_TA },
- { "dlv", NULL, QR_QTYPE_DLV },
- { "other", NULL, QR_QTYPE_OTHER },
- { NULL, NULL, -1 }
-};
-const struct CounterTypeTree QRCounterResponse[] = {
- { "truncated", NULL, QR_RESPONSE_TRUNCATED },
- { "edns0", NULL, QR_RESPONSE_EDNS0 },
- { "tsig", NULL, QR_RESPONSE_TSIG },
- { "sig0", NULL, QR_RESPONSE_SIG0 },
- { NULL, NULL, -1 }
-};
-const struct CounterTypeTree QRCounterRcode[] = {
- { "noerror", NULL, QR_RCODE_NOERROR },
- { "formerr", NULL, QR_RCODE_FORMERR },
- { "servfail", NULL, QR_RCODE_SERVFAIL },
- { "nxdomain", NULL, QR_RCODE_NXDOMAIN },
- { "notimp", NULL, QR_RCODE_NOTIMP },
- { "refused", NULL, QR_RCODE_REFUSED },
- { "yxdomain", NULL, QR_RCODE_YXDOMAIN },
- { "yxrrset", NULL, QR_RCODE_YXRRSET },
- { "nxrrset", NULL, QR_RCODE_NXRRSET },
- { "notauth", NULL, QR_RCODE_NOTAUTH },
- { "notzone", NULL, QR_RCODE_NOTZONE },
- { "badsigvers", NULL, QR_RCODE_BADSIGVERS },
- { "badkey", NULL, QR_RCODE_BADKEY },
- { "badtime", NULL, QR_RCODE_BADTIME },
- { "badmode", NULL, QR_RCODE_BADMODE },
- { "badname", NULL, QR_RCODE_BADNAME },
- { "badalg", NULL, QR_RCODE_BADALG },
- { "badtrunc", NULL, QR_RCODE_BADTRUNC },
- { "other", NULL, QR_RCODE_OTHER },
- { NULL, NULL, -1 }
-};
-const struct CounterTypeTree QRCounterTree[] = {
- { "request", QRCounterRequest, -1 },
- { "opcode", QRCounterOpcode, -1 },
- { "qtype", QRCounterQtype, -1 },
- { "responses", NULL, QR_RESPONSE },
- { "response", QRCounterResponse, -1 },
- { "qrysuccess", NULL, QR_QRYSUCCESS },
- { "qryauthans", NULL, QR_QRYAUTHANS },
- { "qrynoauthans", NULL, QR_QRYNOAUTHANS },
- { "qryreferral", NULL, QR_QRYREFERRAL },
- { "qrynxrrset", NULL, QR_QRYNXRRSET },
- { "authqryrej", NULL, QR_QRYREJECT },
- { "rcode", QRCounterRcode, -1 },
- { NULL, NULL, -1 }
-};
-
-const int QROpCodeToQRCounterType[16] = {
- QR_OPCODE_QUERY,
- QR_OPCODE_IQUERY,
- QR_OPCODE_STATUS,
- QR_OPCODE_OTHER,
- QR_OPCODE_NOTIFY,
- QR_OPCODE_UPDATE,
- QR_OPCODE_OTHER,
- QR_OPCODE_OTHER,
- QR_OPCODE_OTHER,
- QR_OPCODE_OTHER,
- QR_OPCODE_OTHER,
- QR_OPCODE_OTHER,
- QR_OPCODE_OTHER,
- QR_OPCODE_OTHER,
- QR_OPCODE_OTHER,
- QR_OPCODE_OTHER
-};
-const int QRQTypeToQRCounterType[258] = {
- QR_QTYPE_OTHER,
- QR_QTYPE_A,
- QR_QTYPE_NS,
- QR_QTYPE_MD,
- QR_QTYPE_MF,
- QR_QTYPE_CNAME,
- QR_QTYPE_SOA,
- QR_QTYPE_MB,
- QR_QTYPE_MG,
- QR_QTYPE_MR,
- QR_QTYPE_NULL,
- QR_QTYPE_WKS,
- QR_QTYPE_PTR,
- QR_QTYPE_HINFO,
- QR_QTYPE_MINFO,
- QR_QTYPE_MX,
- QR_QTYPE_TXT,
- QR_QTYPE_RP,
- QR_QTYPE_AFSDB,
- QR_QTYPE_X25,
- QR_QTYPE_ISDN,
- QR_QTYPE_RT,
- QR_QTYPE_NSAP,
- QR_QTYPE_NSAP_PTR,
- QR_QTYPE_SIG,
- QR_QTYPE_KEY,
- QR_QTYPE_PX,
- QR_QTYPE_GPOS,
- QR_QTYPE_AAAA,
- QR_QTYPE_LOC,
- QR_QTYPE_NXT,
- QR_QTYPE_EID,
- QR_QTYPE_NIMLOC,
- QR_QTYPE_SRV,
- QR_QTYPE_ATMA,
- QR_QTYPE_NAPTR,
- QR_QTYPE_KX,
- QR_QTYPE_CERT,
- QR_QTYPE_A6,
- QR_QTYPE_DNAME,
- QR_QTYPE_SINK,
- QR_QTYPE_OPT,
- QR_QTYPE_APL,
- QR_QTYPE_DS,
- QR_QTYPE_SSHFP,
- QR_QTYPE_IPSECKEY,
- QR_QTYPE_RRSIG,
- QR_QTYPE_NSEC,
- QR_QTYPE_DNSKEY,
- QR_QTYPE_DHCID,
- QR_QTYPE_NSEC3,
- QR_QTYPE_NSEC3PARAM,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_HIP,
- QR_QTYPE_NINFO,
- QR_QTYPE_RKEY,
- QR_QTYPE_TALINK,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_SPF,
- QR_QTYPE_UINFO,
- QR_QTYPE_UID,
- QR_QTYPE_GID,
- QR_QTYPE_UNSPEC,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_OTHER,
- QR_QTYPE_TKEY,
- QR_QTYPE_TSIG,
- QR_QTYPE_IXFR,
- QR_QTYPE_AXFR,
- QR_QTYPE_MAILB,
- QR_QTYPE_MAILA,
- QR_QTYPE_OTHER,
- QR_QTYPE_URI,
- QR_QTYPE_CAA
-};
-const int QRRCodeToQRCounterType[23] = {
- QR_RCODE_NOERROR,
- QR_RCODE_FORMERR,
- QR_RCODE_SERVFAIL,
- QR_RCODE_NXDOMAIN,
- QR_RCODE_NOTIMP,
- QR_RCODE_REFUSED,
- QR_RCODE_YXDOMAIN,
- QR_RCODE_YXRRSET,
- QR_RCODE_NXRRSET,
- QR_RCODE_NOTAUTH,
- QR_RCODE_NOTZONE,
- QR_RCODE_OTHER,
- QR_RCODE_OTHER,
- QR_RCODE_OTHER,
- QR_RCODE_OTHER,
- QR_RCODE_OTHER,
- QR_RCODE_BADSIGVERS,
- QR_RCODE_BADKEY,
- QR_RCODE_BADTIME,
- QR_RCODE_BADMODE,
- QR_RCODE_BADNAME,
- QR_RCODE_BADALG,
- QR_RCODE_BADTRUNC
-};
-
-} // anonymous namespace
-
-#endif // __STATISTICS_ITEMS_H
-
-// Local Variables:
-// mode: c++
-// End:
diff --git a/src/bin/auth/statistics_items.h.pre b/src/bin/auth/statistics_items.h.pre
new file mode 100644
index 0000000..0ef98e6
--- /dev/null
+++ b/src/bin/auth/statistics_items.h.pre
@@ -0,0 +1,44 @@
+// Copyright (C) 2012 Internet Systems Consortium, Inc. ("ISC")
+//
+// Permission to use, copy, modify, and/or distribute this software for any
+// purpose with or without fee is hereby granted, provided that the above
+// copyright notice and this permission notice appear in all copies.
+//
+// THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+// AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+// PERFORMANCE OF THIS SOFTWARE.
+
+#ifndef __STATISTICS_ITEMS_H
+#define __STATISTICS_ITEMS_H 1
+
+/// This file defines a set of statistics items in Auth module for internal
+/// use. This file is intended to be included in statistics.cc.
+
+namespace isc {
+namespace auth {
+namespace statistics {
+
+struct CounterTypeTree {
+ const char* const name;
+ const struct CounterTypeTree* const sub_tree;
+ const int counter_id;
+};
+
+// ### STATISTICS ITEMS DECLARATION ###
+
+extern const int QROpCodeToQRCounterType[];
+extern const int QRRCodeToQRCounterType[];
+
+} // namespace statistics
+} // namespace auth
+} // namespace isc
+
+#endif // __STATISTICS_ITEMS_H
+
+// Local Variables:
+// mode: c++
+// End:
diff --git a/src/bin/auth/statistics_qr_items.def b/src/bin/auth/statistics_qr_items.def
new file mode 100644
index 0000000..3a9b227
--- /dev/null
+++ b/src/bin/auth/statistics_qr_items.def
@@ -0,0 +1,54 @@
+request QRCounterRequest Request statistics =
+ v4 QR_REQUEST_IPV4 Number of IPv4 requests received by the b10-auth server.
+ v6 QR_REQUEST_IPV6 Number of IPv6 requests received by the b10-auth server.
+ edns0 QR_REQUEST_EDNS0 Number of requests with EDNS(0) received by the b10-auth server.
+ badednsver QR_REQUEST_BADEDNSVER Number of requests with unsupported EDNS version received by the b10-auth server.
+ tsig QR_REQUEST_TSIG Number of requests with TSIG received by the b10-auth server.
+ sig0 QR_REQUEST_SIG0 Number of requests with SIG(0) received by the b10-auth server; currently not implemented in BIND 10.
+ badsig QR_REQUEST_BADSIG Number of requests with invalid TSIG or SIG(0) signature received by the b10-auth server.
+ udp QR_REQUEST_UDP Number of UDP requests received by the b10-auth server.
+ tcp QR_REQUEST_TCP Number of UDP requests received by the b10-auth server.
+ dnssec_ok QR_REQUEST_DNSSEC_OK Number of requests with DO bit received by the b10-auth server.
+ ;
+opcode QRCounterOpcode Opcode statistics =
+ query QR_OPCODE_QUERY Number of Opcode=QUERY requests received by the b10-auth server.
+ iquery QR_OPCODE_IQUERY Number of Opcode=IQUERY requests received by the b10-auth server.
+ status QR_OPCODE_STATUS Number of Opcode=STATUS requests received by the b10-auth server.
+ notify QR_OPCODE_NOTIFY Number of Opcode=NOTIFY requests received by the b10-auth server.
+ update QR_OPCODE_UPDATE Number of Opcode=UPDATE requests received by the b10-auth server.
+ other QR_OPCODE_OTHER Number of requests in other OpCode received by the b10-auth server.
+ ;
+responses QR_RESPONSE Number of responses sent by the b10-auth server.
+response QRCounterResponse Response statistics =
+ truncated QR_RESPONSE_TRUNCATED Number of truncated responses sent by the b10-auth server.
+ edns0 QR_RESPONSE_EDNS0 Number of responses with EDNS0 sent by the b10-auth server.
+ tsig QR_RESPONSE_TSIG Number of responses with TSIG sent by the b10-auth server.
+ sig0 QR_RESPONSE_SIG0 Number of responses with SIG(0) sent by the b10-auth server; currently not implemented in BIND 10.
+ ;
+qrysuccess QR_QRYSUCCESS Number of queries received by the b10-auth server resulted in rcode = NOERROR and the number of answer RR >= 1.
+qryauthans QR_QRYAUTHANS Number of queries received by the b10-auth server resulted in authoritative answer.
+qrynoauthans QR_QRYNOAUTHANS Number of queries received by the b10-auth server resulted in non-authoritative answer.
+qryreferral QR_QRYREFERRAL Number of queries received by the b10-auth server resulted in referral answer.
+qrynxrrset QR_QRYNXRRSET Number of queries received by the b10-auth server resulted in NOERROR but the number of answer RR == 0.
+authqryrej QR_QRYREJECT Number of authoritative queries rejected by the b10-auth server.
+rcode QRCounterRcode Rcode statistics =
+ noerror QR_RCODE_NOERROR Number of queries received by the b10-auth server resulted in RCODE = 0 (NoError).
+ formerr QR_RCODE_FORMERR Number of queries received by the b10-auth server resulted in RCODE = 1 (FormErr).
+ servfail QR_RCODE_SERVFAIL Number of queries received by the b10-auth server resulted in RCODE = 2 (ServFail).
+ nxdomain QR_RCODE_NXDOMAIN Number of queries received by the b10-auth server resulted in RCODE = 3 (NXDomain).
+ notimp QR_RCODE_NOTIMP Number of queries received by the b10-auth server resulted in RCODE = 4 (NotImp).
+ refused QR_RCODE_REFUSED Number of queries received by the b10-auth server resulted in RCODE = 5 (Refused).
+ yxdomain QR_RCODE_YXDOMAIN Number of queries received by the b10-auth server resulted in RCODE = 6 (YXDomain).
+ yxrrset QR_RCODE_YXRRSET Number of queries received by the b10-auth server resulted in RCODE = 7 (YXRRSet).
+ nxrrset QR_RCODE_NXRRSET Number of queries received by the b10-auth server resulted in RCODE = 8 (NXRRSet).
+ notauth QR_RCODE_NOTAUTH Number of queries received by the b10-auth server resulted in RCODE = 9 (NotAuth).
+ notzone QR_RCODE_NOTZONE Number of queries received by the b10-auth server resulted in RCODE = 10 (NotZone).
+ badsigvers QR_RCODE_BADSIGVERS Number of queries received by the b10-auth server resulted in RCODE = 16 (BADVERS, BADSIG).
+ badkey QR_RCODE_BADKEY Number of queries received by the b10-auth server resulted in RCODE = 17 (BADKEY).
+ badtime QR_RCODE_BADTIME Number of queries received by the b10-auth server resulted in RCODE = 18 (BADTIME).
+ badmode QR_RCODE_BADMODE Number of queries received by the b10-auth server resulted in RCODE = 19 (BADMODE).
+ badname QR_RCODE_BADNAME Number of queries received by the b10-auth server resulted in RCODE = 20 (BADNAME).
+ badalg QR_RCODE_BADALG Number of queries received by the b10-auth server resulted in RCODE = 21 (BADALG).
+ badtrunc QR_RCODE_BADTRUNC Number of queries received by the b10-auth server resulted in RCODE = 22 (BADTRUNC).
+ other QR_RCODE_OTHER Number of queries received by the b10-auth server resulted in other RCODEs.
+ ;
diff --git a/src/bin/auth/tests/Makefile.am b/src/bin/auth/tests/Makefile.am
index 482a4f7..9401f1d 100644
--- a/src/bin/auth/tests/Makefile.am
+++ b/src/bin/auth/tests/Makefile.am
@@ -33,6 +33,9 @@ TESTS_ENVIRONMENT = \
TESTS =
if HAVE_GTEST
+# auto-generated by statistics_items.py
+BUILT_SOURCES = statistics_unittest.cc
+
run_unittests_SOURCES = $(top_srcdir)/src/lib/dns/tests/unittest_util.h
run_unittests_SOURCES += $(top_srcdir)/src/lib/dns/tests/unittest_util.cc
run_unittests_SOURCES += ../auth_srv.h ../auth_srv.cc
@@ -49,11 +52,11 @@ run_unittests_SOURCES += config_syntax_unittest.cc
run_unittests_SOURCES += command_unittest.cc
run_unittests_SOURCES += common_unittest.cc
run_unittests_SOURCES += query_unittest.cc
-run_unittests_SOURCES += statistics_unittest.cc
run_unittests_SOURCES += datasrc_configurator_unittest.cc
run_unittests_SOURCES += run_unittests.cc
nodist_run_unittests_SOURCES = ../auth_messages.h ../auth_messages.cc
+nodist_run_unittests_SOURCES += statistics_unittest.cc
run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
diff --git a/src/bin/auth/tests/auth_srv_unittest.cc b/src/bin/auth/tests/auth_srv_unittest.cc
index 98e1743..4ea4c8b 100644
--- a/src/bin/auth/tests/auth_srv_unittest.cc
+++ b/src/bin/auth/tests/auth_srv_unittest.cc
@@ -1078,7 +1078,7 @@ TEST_F(AuthSrvTest, queryCounterUDPNormal) {
server.processMessage(*io_message, *parse_message, *response_obuffer,
&dnsserv);
// After processing the UDP query, these counters should be incremented:
- // request.tcp, opcode.query, qtype.ns, rcode.refused, response
+ // request.tcp, opcode.query, rcode.refused, response
// and these counters should not be incremented:
// request.tcp
ConstElementPtr stats_after = server.getStatistics()->
@@ -1106,7 +1106,7 @@ TEST_F(AuthSrvTest, queryCounterTCPNormal) {
server.processMessage(*io_message, *parse_message, *response_obuffer,
&dnsserv);
// After processing the TCP query, these counters should be incremented:
- // request.tcp, opcode.query, qtype.ns, rcode.refused, response
+ // request.tcp, opcode.query, rcode.refused, response
// and these counters should not be incremented:
// request.udp
ConstElementPtr stats_after = server.getStatistics()->
@@ -1135,7 +1135,7 @@ TEST_F(AuthSrvTest, queryCounterTCPAXFR) {
EXPECT_FALSE(dnsserv.hasAnswer());
// After processing the TCP AXFR query, these counters should be
// incremented:
- // request.tcp, opcode.query, qtype.axfr
+ // request.tcp, opcode.query
// and these counters should not be incremented:
// request.udp, response
ConstElementPtr stats_after = server.getStatistics()->
@@ -1163,7 +1163,7 @@ TEST_F(AuthSrvTest, queryCounterTCPIXFR) {
EXPECT_FALSE(dnsserv.hasAnswer());
// After processing the TCP IXFR query, these counters should be
// incremented:
- // request.tcp, opcode.query, qtype.ixfr
+ // request.tcp, opcode.query
// and these counters should not be incremented:
// request.udp, response
ConstElementPtr stats_after = server.getStatistics()->
@@ -1178,7 +1178,8 @@ TEST_F(AuthSrvTest, queryCounterOpcodes) {
for (int i = 0; i < 16; ++i) {
std::string item_name;
int expected;
- if (QROpCodeToQRCounterType[i] == QR_OPCODE_OTHER) {
+ if (isc::auth::statistics::QROpCodeToQRCounterType[i] ==
+ isc::auth::statistics::QR_OPCODE_OTHER) {
item_name = "OTHER";
other_expected += i + 1;
expected = other_expected;
diff --git a/src/bin/auth/tests/statistics_unittest.cc b/src/bin/auth/tests/statistics_unittest.cc
deleted file mode 100644
index 7a84747..0000000
--- a/src/bin/auth/tests/statistics_unittest.cc
+++ /dev/null
@@ -1,155 +0,0 @@
-// Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC")
-//
-// Permission to use, copy, modify, and/or distribute this software for any
-// purpose with or without fee is hereby granted, provided that the above
-// copyright notice and this permission notice appear in all copies.
-//
-// THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
-// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-// AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
-// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-// PERFORMANCE OF THIS SOFTWARE.
-
-#include <config.h>
-
-#include <string>
-
-#include <gtest/gtest.h>
-
-#include <boost/bind.hpp>
-
-#include <dns/opcode.h>
-#include <dns/rcode.h>
-
-#include <cc/data.h>
-#include <cc/session.h>
-
-#include <auth/statistics.h>
-#include <auth/statistics_items.h>
-
-#include <dns/tests/unittest_util.h>
-
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netdb.h>
-
-using namespace std;
-using namespace isc::cc;
-using namespace isc::dns;
-using namespace isc::data;
-using isc::auth::statistics::Counters;
-using isc::auth::statistics::QRAttributes;
-
-namespace {
-
-class CountersTest : public ::testing::Test {
-protected:
- CountersTest() : counters() {}
- ~CountersTest() {}
- Counters counters;
-};
-
-void
-flatten(std::map<std::string, int> &flat_map, const std::string &prefix,
- const isc::data::ConstElementPtr map_element) {
- std::map<std::string, ConstElementPtr> map = map_element->mapValue();
- for (std::map<std::string, ConstElementPtr>::const_iterator
- i = map.begin(), e = map.end();
- i != e;
- ++i)
- {
- switch (i->second->getType()) {
- case isc::data::Element::map:
- flatten(flat_map, i->first + ".", i->second);
- break;
- case isc::data::Element::integer:
- flat_map[prefix + i->first] = i->second->intValue();
- break;
- default:
- EXPECT_FALSE("Element Parse Error");
- }
- }
-}
-
-bool
-checkCountersAllZeroExcept(const isc::data::ConstElementPtr counters,
- const std::set<std::string>& except_for) {
- std::map<std::string, int> stats_map;
- flatten(stats_map, "", counters);
-
- for (std::map<std::string, int>::const_iterator
- i = stats_map.begin(), e = stats_map.end();
- i != e;
- ++i)
- {
- int expect = 0;
- if (except_for.count(i->first) != 0) {
- expect = 1;
- }
- EXPECT_EQ(expect, i->second) << "Expected counter "
- << i->first << " = " << expect << ", actual: "
- << i->second;
- }
-
- return false;
-}
-
-TEST_F(CountersTest, incrementNormalQuery) {
- Message response(Message::RENDER);
- QRAttributes qrattrs;
- std::set<std::string> expect_nonzero;
-
- expect_nonzero.clear();
- checkCountersAllZeroExcept(counters.get()->get("zones")->get("_SERVER_"),
- expect_nonzero);
-
- qrattrs.setQueryIPVersion(AF_INET6);
- qrattrs.setQueryTransportProtocol(IPPROTO_UDP);
- qrattrs.setQueryOpCode(Opcode::QUERY_CODE);
- qrattrs.setQueryEDNS(true, false);
- qrattrs.setQueryDO(true);
- qrattrs.answerWasSent();
-
- response.setRcode(Rcode::REFUSED());
- response.addQuestion(Question(Name("example.com"),
- RRClass::IN(), RRType::AAAA()));
-
- counters.inc(qrattrs, response);
-
- expect_nonzero.clear();
- expect_nonzero.insert("opcode.query");
- expect_nonzero.insert("qtype.aaaa");
- expect_nonzero.insert("request.v6");
- expect_nonzero.insert("request.udp");
- expect_nonzero.insert("request.edns0");
- expect_nonzero.insert("request.dnssec_ok");
- expect_nonzero.insert("responses");
- expect_nonzero.insert("qrynoauthans");
- expect_nonzero.insert("rcode.refused");
- expect_nonzero.insert("authqryrej");
- checkCountersAllZeroExcept(counters.get()->get("zones")->get("_SERVER_"),
- expect_nonzero);
-}
-
-int
-countTreeElements(const struct CounterTypeTree* tree) {
- int count = 0;
- for (int i = 0; tree[i].name != NULL; ++i) {
- if (tree[i].sub_tree == NULL) {
- ++count;
- } else {
- count += countTreeElements(tree[i].sub_tree);
- }
- }
- return (count);
-}
-
-TEST(StatisticsItemsTest, QRItemNamesCheck) {
- EXPECT_EQ(QR_COUNTER_TYPES, countTreeElements(QRCounterTree));
-}
-
-}
diff --git a/src/bin/auth/tests/statistics_unittest.cc.pre b/src/bin/auth/tests/statistics_unittest.cc.pre
new file mode 100644
index 0000000..cc58ec7
--- /dev/null
+++ b/src/bin/auth/tests/statistics_unittest.cc.pre
@@ -0,0 +1,155 @@
+// Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC")
+//
+// Permission to use, copy, modify, and/or distribute this software for any
+// purpose with or without fee is hereby granted, provided that the above
+// copyright notice and this permission notice appear in all copies.
+//
+// THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+// AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+// PERFORMANCE OF THIS SOFTWARE.
+
+#include <config.h>
+
+#include <string>
+
+#include <gtest/gtest.h>
+
+#include <boost/bind.hpp>
+
+#include <dns/opcode.h>
+#include <dns/rcode.h>
+
+#include <cc/data.h>
+#include <cc/session.h>
+
+#include <auth/statistics.h>
+#include <auth/statistics_items.h>
+
+#include <dns/tests/unittest_util.h>
+
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netdb.h>
+
+using namespace std;
+using namespace isc::cc;
+using namespace isc::dns;
+using namespace isc::data;
+using namespace isc::auth::statistics;
+
+namespace {
+
+// ### STATISTICS ITEMS DEFINITION ###
+
+class CountersTest : public ::testing::Test {
+protected:
+ CountersTest() : counters() {}
+ ~CountersTest() {}
+ Counters counters;
+};
+
+void
+flatten(std::map<std::string, int> &flat_map, const std::string &prefix,
+ const isc::data::ConstElementPtr map_element) {
+ std::map<std::string, ConstElementPtr> map = map_element->mapValue();
+ for (std::map<std::string, ConstElementPtr>::const_iterator
+ i = map.begin(), e = map.end();
+ i != e;
+ ++i)
+ {
+ switch (i->second->getType()) {
+ case isc::data::Element::map:
+ flatten(flat_map, i->first + ".", i->second);
+ break;
+ case isc::data::Element::integer:
+ flat_map[prefix + i->first] = i->second->intValue();
+ break;
+ default:
+ EXPECT_FALSE("Element Parse Error");
+ }
+ }
+}
+
+bool
+checkCountersAllZeroExcept(const isc::data::ConstElementPtr counters,
+ const std::set<std::string>& except_for) {
+ std::map<std::string, int> stats_map;
+ flatten(stats_map, "", counters);
+
+ for (std::map<std::string, int>::const_iterator
+ i = stats_map.begin(), e = stats_map.end();
+ i != e;
+ ++i)
+ {
+ int expect = 0;
+ if (except_for.count(i->first) != 0) {
+ expect = 1;
+ }
+ EXPECT_EQ(expect, i->second) << "Expected counter "
+ << i->first << " = " << expect << ", actual: "
+ << i->second;
+ }
+
+ return false;
+}
+
+TEST_F(CountersTest, incrementNormalQuery) {
+ Message response(Message::RENDER);
+ QRAttributes qrattrs;
+ std::set<std::string> expect_nonzero;
+
+ expect_nonzero.clear();
+ checkCountersAllZeroExcept(counters.get()->get("zones")->get("_SERVER_"),
+ expect_nonzero);
+
+ qrattrs.setQueryIPVersion(AF_INET6);
+ qrattrs.setQueryTransportProtocol(IPPROTO_UDP);
+ qrattrs.setQueryOpCode(Opcode::QUERY_CODE);
+ qrattrs.setQueryEDNS(true, false);
+ qrattrs.setQueryDO(true);
+ qrattrs.answerWasSent();
+
+ response.setRcode(Rcode::REFUSED());
+ response.addQuestion(Question(Name("example.com"),
+ RRClass::IN(), RRType::AAAA()));
+
+ counters.inc(qrattrs, response);
+
+ expect_nonzero.clear();
+ expect_nonzero.insert("opcode.query");
+ expect_nonzero.insert("request.v6");
+ expect_nonzero.insert("request.udp");
+ expect_nonzero.insert("request.edns0");
+ expect_nonzero.insert("request.dnssec_ok");
+ expect_nonzero.insert("responses");
+ expect_nonzero.insert("qrynoauthans");
+ expect_nonzero.insert("rcode.refused");
+ expect_nonzero.insert("authqryrej");
+ checkCountersAllZeroExcept(counters.get()->get("zones")->get("_SERVER_"),
+ expect_nonzero);
+}
+
+int
+countTreeElements(const struct CounterTypeTree* tree) {
+ int count = 0;
+ for (int i = 0; tree[i].name != NULL; ++i) {
+ if (tree[i].sub_tree == NULL) {
+ ++count;
+ } else {
+ count += countTreeElements(tree[i].sub_tree);
+ }
+ }
+ return (count);
+}
+
+TEST(StatisticsItemsTest, QRItemNamesCheck) {
+ EXPECT_EQ(QR_COUNTER_TYPES, countTreeElements(QRCounterTree));
+}
+
+}
diff --git a/src/lib/dns/gen-rdatacode.py.in b/src/lib/dns/gen-rdatacode.py.in
index f3cd5df..2717bfe 100755
--- a/src/lib/dns/gen-rdatacode.py.in
+++ b/src/lib/dns/gen-rdatacode.py.in
@@ -34,6 +34,10 @@ class_definitions = ''
classdir_mtime = 0
rdatadef_mtime = 0
rdatahdr_mtime = 0
+localstatedir='@@LOCALSTATEDIR@@'
+localstatedir2='@localstatedir@'
+builddir='@@BUILDDIR@@'
+builddir2='@builddir@'
heading_txt = '''///////////////
///////////////
/////////////// THIS FILE IS AUTOMATICALLY GENERATED BY gen-rdatacode.py.
More information about the bind10-changes
mailing list