Commit 9203dce1 authored by Marek Vavruša's avatar Marek Vavruša

Merge branch 'master' into zone-events-queue

Conflicts:
	src/knot/conf/conf.c
	src/knot/dnssec/nsec-chain.c
	src/knot/dnssec/nsec-chain.h
	src/knot/dnssec/nsec3-chain.c
	src/knot/dnssec/zone-events.c
	src/knot/dnssec/zone-events.h
	src/knot/dnssec/zone-nsec.c
	src/knot/dnssec/zone-nsec.h
	src/knot/dnssec/zone-sign.c
	src/knot/main.c
	src/knot/nameserver/axfr.c
	src/knot/nameserver/update.c
	src/knot/server/xfr-handler.c
	src/knot/server/xfr-handler.h
	src/knot/server/zone-load.c
	src/knot/server/zones.c
	src/knot/server/zones.h
	src/knot/updates/changesets.c
	src/knot/updates/changesets.h
	src/knot/updates/ddns.c
	src/knot/updates/ddns.h
	src/knot/updates/xfr-in.c
	src/knot/updates/xfr-in.h
	src/knot/zone/contents.c
	src/knot/zone/contents.h
	src/knot/zone/semantic-check.c
	src/knot/zone/zone-diff.c
	src/knot/zone/zone.c
	src/knot/zone/zonefile.c
	src/knot/zone/zonefile.h
parents 36e76aff 9822a1ad
......@@ -59,7 +59,7 @@
# zscanner
/src/zscanner/tests/tmp/
/src/zscanner/tests/runtests
/src/zscanner/tests/unittests
/src/zscanner/tests/zscanner-tool
# Binaries
......@@ -69,3 +69,7 @@
/src/khost
/src/knsupdate
/src/knsec3hash
*.gcda
*.gcno
/*-coverage.info
/*coverage/
language: c
compiler:
- gcc
before_install:
- sudo apt-get update -qq
- sudo apt-get install -qq autotools-dev autoconf automake libtool libssl-dev liburcu-dev flex bison ragel pkg-config texinfo texlive lcov
- sudo pip install cpp-coveralls --use-mirrors
before_script:
- autoreconf -fi
script:
- ./configure --enable-code-coverage && make && make -k check
after_success:
- coveralls --exclude zscanner/ --exclude tests/ --exclude src/cf-lex.l --exclude src/cf-parse.y --exclude src/scanner_body.rl --exclude src/scanner.c --exclude src/functions.c --exclude src/loader.c --exclude src/error.c --exclude src/scanner.rl --exclude src/allocator.h --build-root ./src/
......@@ -33,7 +33,7 @@ Knot DNS supports the following DNS features:
- AXFR - master, slave
- IXFR - master (primary master experimental), slave
- TSIG
- ENDS0
- EDNS0
- DNSSEC, including NSEC3
- NSID
- Unknown RR types
......
......@@ -14,6 +14,7 @@ doc/reference.texi
doc/requirements.texi
doc/running.texi
doc/security.texi
doc/synth_record.texi
doc/troubleshooting.texi
libtap/Makefile.am
libtap/runtests.c
......@@ -104,6 +105,8 @@ src/knot/dnssec/zone-sign.c
src/knot/dnssec/zone-sign.h
src/knot/knot.h
src/knot/main.c
src/knot/modules/synth_record.c
src/knot/modules/synth_record.h
src/knot/nameserver/axfr.c
src/knot/nameserver/axfr.h
src/knot/nameserver/chaos.c
......@@ -116,6 +119,8 @@ src/knot/nameserver/nsec_proofs.c
src/knot/nameserver/nsec_proofs.h
src/knot/nameserver/process_query.c
src/knot/nameserver/process_query.h
src/knot/nameserver/query_module.c
src/knot/nameserver/query_module.h
src/knot/nameserver/update.c
src/knot/nameserver/update.h
src/knot/other/debug.h
......@@ -129,6 +134,8 @@ src/knot/server/notify.c
src/knot/server/notify.h
src/knot/server/rrl.c
src/knot/server/rrl.h
src/knot/server/serialization.c
src/knot/server/serialization.h
src/knot/server/server.c
src/knot/server/server.h
src/knot/server/tcp-handler.c
......@@ -192,8 +199,6 @@ src/libknot/dnssec/crypto.c
src/libknot/dnssec/crypto.h
src/libknot/dnssec/key.c
src/libknot/dnssec/key.h
src/libknot/dnssec/nsec3.c
src/libknot/dnssec/nsec3.h
src/libknot/dnssec/policy.c
src/libknot/dnssec/policy.h
src/libknot/dnssec/random.h
......@@ -213,15 +218,27 @@ src/libknot/packet/pkt.h
src/libknot/packet/wire.h
src/libknot/processing/process.c
src/libknot/processing/process.h
src/libknot/rdata.c
src/libknot/rdata.h
src/libknot/rdata/dnskey.h
src/libknot/rdata/nsec.h
src/libknot/rdata/nsec3.c
src/libknot/rdata/nsec3.h
src/libknot/rdata/nsec3param.c
src/libknot/rdata/nsec3param.h
src/libknot/rdata/rdname.h
src/libknot/rdata/rrsig.h
src/libknot/rdata/soa.h
src/libknot/rdata/tsig.c
src/libknot/rdata/tsig.h
src/libknot/rdataset.c
src/libknot/rdataset.h
src/libknot/rrset-dump.c
src/libknot/rrset-dump.h
src/libknot/rrset.c
src/libknot/rrset.h
src/libknot/tsig-op.c
src/libknot/tsig-op.h
src/libknot/tsig.c
src/libknot/tsig.h
src/libknot/util/endian.h
src/libknot/util/tolower.c
src/libknot/util/tolower.h
......@@ -256,16 +273,15 @@ src/utils/nsupdate/nsupdate_params.h
src/zscanner/Makefile.am
src/zscanner/error.c
src/zscanner/error.h
src/zscanner/file_loader.c
src/zscanner/file_loader.h
src/zscanner/functions.c
src/zscanner/functions.h
src/zscanner/loader.c
src/zscanner/loader.h
src/zscanner/scanner.h
src/zscanner/scanner.rl
src/zscanner/scanner_body.rl
src/zscanner/scanner_functions.c
src/zscanner/scanner_functions.h
src/zscanner/tests/processing.c
src/zscanner/tests/processing.h
src/zscanner/tests/runtests.c
src/zscanner/tests/tests.c
src/zscanner/tests/tests.h
src/zscanner/tests/zscanner-tool.c
......@@ -288,6 +304,7 @@ tests/hhash.c
tests/journal.c
tests/pkt.c
tests/process_query.c
tests/query_module.c
tests/rrl.c
tests/rrset.c
tests/sample_conf.h
......
ACLOCAL_AMFLAGS = -I m4
SUBDIRS = libtap src tests samples doc man patches
code_coverage_quiet = --quiet
check-code-coverage:
if CODE_COVERAGE_ENABLED
-$(MAKE) $(AM_MAKEFLAGS) -k check
$(MAKE) $(AM_MAKEFLAGS) code-coverage-capture
$(MAKE) $(AM_MAKEFLAGS) code-coverage-html
else
@echo "You need to run configure with --enable-code-coverage to enable code coverage"
endif
code-coverage-capture:
if CODE_COVERAGE_ENABLED
$(LCOV) $(code_coverage_quiet) \
--directory $(top_builddir)/src/common \
--directory $(top_builddir)/src/knot \
--directory $(top_builddir)/src/libknot \
--capture \
--ignore-errors source \
--base-directory $(top_builddir)/src \
--output-file "$(PACKAGE_NAME)-$(PACKAGE_VERSION)-src_capture.info" \
--test-name "$(PACKAGE_NAME)-$(PACKAGE_VERSION)" \
--no-checksum --compat-libtool
$(LCOV) $(code_coverage_quiet) \
--directory $(top_builddir)/src/knot/conf \
--capture \
--ignore-errors source \
--base-directory $(top_builddir)/src/knot/conf \
--output-file "$(PACKAGE_NAME)-$(PACKAGE_VERSION)-conf_capture.info" \
--test-name "$(PACKAGE_NAME)-$(PACKAGE_VERSION)" \
--no-checksum --compat-libtool
$(LCOV) $(code_coverage_quiet) \
--directory $(top_builddir)/src/zscanner \
--capture \
--ignore-errors source \
--base-directory $(top_builddir)/src/zscanner \
--output-file "$(PACKAGE_NAME)-$(PACKAGE_VERSION)-zscanner_capture.info" \
--test-name "$(PACKAGE_NAME)-$(PACKAGE_VERSION)" \
--no-checksum --compat-libtool
$(LCOV) $(code_coverage_quiet) \
--add-tracefile "$(PACKAGE_NAME)-$(PACKAGE_VERSION)-src_capture.info" \
--add-tracefile "$(PACKAGE_NAME)-$(PACKAGE_VERSION)-conf_capture.info" \
--add-tracefile "$(PACKAGE_NAME)-$(PACKAGE_VERSION)-zscanner_capture.info" \
--output-file "$(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info"
-@rm -f $(PACKAGE_NAME)-$(PACKAGE_VERSION)-*_base.info $(PACKAGE_NAME)-$(PACKAGE_VERSION)-*_capture.info
else
@echo "You need to run configure with --enable-code-coverage to enable code coverage"
endif
code-coverage-html:
if CODE_COVERAGE_ENABLED
@echo "Generating code coverage HTML report (this might take a while)"
@cp src/knot/conf/cf-lex.l src/knot/conf/cf-parse.y src/
LANG=C $(GENHTML) $(code_coverage_quiet) --prefix $(top_builddir) --output-directory "$(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage" --title "$(PACKAGE_NAME)-$(PACKAGE_VERSION) Code Coverage" --legend --show-details "$(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info" --ignore-errors source
-@rm src/cf-lex.l src/cf-parse.y
else
@echo "You need to run configure with --enable-code-coverage to enable code coverage"
endif
if CODE_COVERAGE_ENABLED
clean-local: code-coverage-clean
code-coverage-clean:
-$(LCOV) --directory $(top_builddir) -z
-rm -rf $(PACKAGE_NAME)-$(PACKAGE_VERSION)-*_base.info \
$(PACKAGE_NAME)-$(PACKAGE_VERSION)-*_coverage.info \
$(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage/
-find . -name "*.gcda" -o -name "*.gcov" -delete
endif
DISTCHECK_CONFIGURE_FLAGS = --disable-code-coverage
.PHONY: check-code-coverage code-coverage-initial code-coverage-capture code-coverage-html code-coverage-clean
Knot DNS NEWS
1.5.0-dev - ?
1.5.0 - ?
---------------------
Features:
* Split libknot DNS library
* Pluggable query processing modules
* 'synth_record' automatic reverse/forward records module
Improvements:
* Query processing and core functionality overhaul
* Memory requirements
* RFC compliant responses in some corner cases
* Log messages
v1.4.2 - Jan 27, 2014
---------------------
......
# -*- Autoconf -*-
AC_PREREQ([2.60])
AC_INIT([knot], [1.5.0-dev], [knot-dns@labs.nic.cz])
AC_INIT([knot], [1.5.0-alpha], [knot-dns@labs.nic.cz])
AM_INIT_AUTOMAKE([gnits subdir-objects dist-xz -Wall -Werror])
AM_SILENT_RULES([yes])
AC_CONFIG_SRCDIR([src/knot/main.c])
......@@ -355,6 +355,9 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sched.h>]], [[cpuset_t* set = cpuset
#gl_VISIBILITY()
#CFLAGS="$CFLAGS $CFLAG_VISIBILITY"
# Add code coverage macro
AX_CODE_COVERAGE
AC_CONFIG_FILES([Makefile
doc/Makefile
man/Makefile
......
/* Coverity Scan model
*
* This is a modeling file for Coverity Scan. Modeling helps to avoid false
* positives.
*
* - A model file can't import any header files.
* - Therefore only some built-in primitives like int, char and void are
* available but not wchar_t, NULL etc.
* - Modeling doesn't need full structs and typedefs. Rudimentary structs
* and similar types are sufficient.
* - An uninitialized local pointer is not an error. It signifies that the
* variable could be either NULL or have some data.
*
* Coverity Scan doesn't pick up modifications automatically. The model file
* must be uploaded by an admin in the analysis settings of
* http://scan.coverity.com/projects/200
*/
/* empty modeling file for now */
......@@ -14,6 +14,7 @@ In this chapter we provide suggested configurations and explain the meaning of i
* Creating IXFR differences from zone file changes::
* Using Response Rate Limiting::
* Automatic DNSSEC signing::
* Query modules::
@end menu
@node Minimal configuration
......@@ -376,3 +377,29 @@ can be also forced using @code{signzone} command issued by @code{knotc}, in
this case all signatures are recreated. After each zone signing, a new signing
event is planned. User can view the time of this event by using the
@code{knotc zonestatus} command.
@node Query modules
@section Query modules
Knot DNS supports configurable query modules that can alter the way queries are processed.
The concept is quite simple - each query requires a finite number of steps to be resolved.
We call this set of steps a query plan, an abstraction that groups these steps into several stages.
@itemize @bullet
@item Before query processing
@item Answer, Authority, Additional records packet sections processing
@item After query processing
@end itemize
For example, processing an Internet zone query needs to find an answer. Then
based on the previous state, it may also append an authority SOA or provide additional records.
Each of these actions represents a 'processing step'.
Now if a query module is loaded for a zone, it is provided with an implicit query plan, and
it is allowed to extend it or even change it altogether.
@emph{Note: Programmable interface is described in the @code{query_module.h}, it will not be discussed here.}
The general syntax for importing a query module is described in the @ref{query_module} configuration reference.
Basically, each module is described by a name and a configuration string.
Below is a list of modules and configuration string reference.
@include synth_record.texi
......@@ -31,7 +31,7 @@ Knot DNS supports the following DNS features:
@item TCP/UDP protocols
@item AXFR, IXFR - master, slave
@item TSIG
@item ENDS0
@item EDNS0
@item DNSSEC, including NSEC3
@item NSID
@item Unknown RR types
......
......@@ -703,6 +703,7 @@ The @code{zones} statement contains definition of zones served by Knot DNS.
[ @code{notify-in} @kbd{remote_id} [, @kbd{remote_id}, @dots{} ]@code{;} ]
[ @code{notify-out} @kbd{remote_id} [, @kbd{remote_id}, @dots{} ]@code{;} ]
[ @code{update-in} @kbd{remote_id} [, @kbd{remote_id}, @dots{} ]@code{;} ]
[ @code{query_module} @code{@{} @kbd{module_name} @code{"}@kbd{string}@code{"}@code{;} [ @kbd{module_name} @code{"}@kbd{string}@code{"}; @dots{} ] @code{@}} ]
[ @kbd{zone_options} ]
@code{@}}
@code{@}}
......@@ -734,6 +735,7 @@ The @code{zones} statement contains definition of zones served by Knot DNS.
* notify-in::
* notify-out::
* update-in::
* query_module::
* storage::
* semantic-checks::
* ixfr-from-differences::
......@@ -797,6 +799,13 @@ Remotes are defined in @code{remotes} section of configuration file (@pxref{remo
In @code{update-in} statement user specifies which remotes will be permitted to perform a DNS UPDATE.
Remotes are defined in @code{remotes} section of configuration file (@pxref{remotes}).
@node query_module
@subsubsection query_module
@vindex query_module
Statement @code{query_module} takes a list of @code{module_name "config_string"} query modules separated
by semicolon.
@node storage
@subsubsection storage
@vindex storage
......
@subsection @code{synth_record} - Automatic forward/reverse records
This module is able to synthetise either forward or reverse records for given prefix and subnet.
The module configuration string looks like this: @code{(forward|reverse) <prefix> <ttl> <address>/<netblock>}.
Records are synthetised only if the query can't be satisfied from the zone. Both IPv4 and IPv6 are supported.
@emph{Note: 'prefix' doesn't allow dots, address parts in the synthetic names are separated with a dash.}
Here are a few examples:
@emph{Note: long names are snipped for readability.}
@subsubsection Automatic forward records
@code{synth_record "forward dynamic- 400 2620:0:b61::/52"} on @code{example.} zone will result in following
answer.
@example
$ kdig AAAA dynamic-2620-0000-0b61-0100-0000-0000-0000-0000.example.
...
;; QUESTION SECTION:
;; dynamic-2620-0000-0b61-0100-0000-0000-0000-0000.example. 0 IN AAAA
;; ANSWER SECTION:
dynamic-2620-0000-0b61-0100... 400 IN AAAA 2620:0:b61:100::
@end example
You can also have CNAME aliases to the dynamic records, which are going to be further resoluted.
@example
$ kdig AAAA hostalias.example.
...
;; QUESTION SECTION:
;hostalias.example. 0 IN AAAA
;; ANSWER SECTION:
hostalias.example. 3600 IN CNAME dynamic-2620-0000-0b61-0100...
dynamic-2620-0000-0b61-0100... 400 IN AAAA 2620:0:b61:100::
@end example
@subsubsection Automatic reverse records
Module can be configured to synthetise reverse records as well.
With the @code{synth_record "reverse dynamic- example. 400 2620:0:b61::/52"} string in the
@code{1.6.b.0.0.0.0.0.0.2.6.2.ip6.arpa.} zone configuration:
@example
$ kdig PTR 1.0.0...1.6.b.0.0.0.0.0.0.2.6.2.ip6.arpa.
...
;; QUESTION SECTION:
;; 1.0.0...1.6.b.0.0.0.0.0.0.2.6.2.ip6.arpa. 0 IN PTR
;; ANSWER SECTION:
... 400 IN PTR dynamic-2620-0000-0b61-0000-0000-0000-0000-0001.example.
@end example
Here's a full configuration of the aforementioned zones. Note that the zone files have to exist.
@example
example. @{
query_module @{
synth_record "forward dynamic- 400 2620:0:b61::/52";
synth_record "forward dynamic- 400 192.168.1.0/25";
@}
@}
1.168.192.in-addr.arpa @{
query_module @{
synth_record "reverse dynamic- example. 400 192.168.1.0/25";
@}
@}
1.6.b.0.0.0.0.0.0.2.6.2.ip6.arpa @{
query_module @{
synth_record "reverse dynamic- example. 400 2620:0:b61::/52";
@}
@}
@end example
@subsubsection Limitations
@itemize @bullet
@item
As of now, there is no authenticated denial of nonexistence (neither NSEC or NSEC3 is supported) nor DNSSEC signed records.
However, since the module is hooked in the query processing plan,
it will be possible to do online signing in the future.
@end itemize
......@@ -7,3 +7,6 @@ check_LIBRARIES = libtap.a
check_PROGRAMS = \
runtests
EXTRA_DIST = \
tap/libtap.sh
# Copyright 2014 CZ.NIC, z.s.p.o.
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 3, as published
# by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranties of
# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
AC_DEFUN([AX_CODE_COVERAGE], [
dnl Check for --enable-code-coverage
AC_ARG_ENABLE([code-coverage],
AS_HELP_STRING([--enable-code-coverage], [enable code coverage testing with gcov]),
[enable_code_coverage=yes],
[enable_code_coverage=no])
AM_CONDITIONAL([CODE_COVERAGE_ENABLED], [test "$enable_code_coverage" = "yes"])
AC_SUBST([CODE_COVERAGE_ENABLED], [$enable_code_coverage])
AS_IF([test "$enable_code_coverage" = "yes"], [
dnl Check whether gcc is used
AS_IF([test "$GCC" = "no"], [
AC_MSG_ERROR([compiling with gcc is required for gcov code coverage])
])
AC_CHECK_PROG([LCOV], [lcov], [lcov])
AC_CHECK_PROG([GENHTML], [genhtml], [genhtml])
lcov_version_list="1.6 1.7 1.8 1.9 1.10"
AS_IF([test "$LCOV"], [
AC_CACHE_CHECK([for lcov version], ac_cv_lvoc_version, [
ac_cv_lcov_version=invalid
lcov_version=`$LCOV -v 2>/dev/null | $SED -e 's/^.* //'`
for lcov_check_version in $lcov_version_list; do
if test "$lcov_version" = "$lcov_check_version"; then
ac_cv_lcov_version="$lcov_check_version (ok)"
fi
done
])
],[
AC_MSG_ERROR([You must have one of the following lcov versions installed: $lcov_version_list to enable gcov code coverage reporting])
])
AS_CASE([$ac_cv_lcov_version],
[""|invalid], [AC_MSG_ERROR([You must have one of the following lcov versions installed: $lcov_version_list to enable gcov code coverage reporting])
])
AS_IF([test -z "$GENHTML"], [
AC_MSG_ERROR([Could not find genhtml from the lcov package])
])
dnl Remove all optimization flags from CFLAGS
changequote({,})
CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9]*//g'`
changequote([,])
dnl Add the special gcc flags
CODE_COVERAGE_CFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
CODE_COVERAGE_LDFLAGS="-lgcov"
AC_SUBST([CODE_COVERAGE_CFLAGS])
AC_SUBST([CODE_COVERAGE_LDFLAGS])
])
]) # AC_CODE_COVERAGE
......@@ -151,7 +151,7 @@ Show TTL value.
Use TCP protocol (default is UDP for standard query and TCP for AXFR/IXFR).
.TP
.BR + [ no ] fail
Stop quering next nameserver if SERVFAIL response is received.
Stop querying next nameserver if SERVFAIL response is received.
.TP
.BR + [ no ] ignore
Don't use TCP automatically if truncated reply is received.
......
......@@ -41,7 +41,7 @@ Print help.
Disable recursion.
.TP
.B \-s
Stop quering next nameserver if SERVFAIL response is received.
Stop querying next nameserver if SERVFAIL response is received.
.TP
.B \-T
Use TCP protocol.
......
......@@ -369,6 +369,13 @@ serves as an example of the configuration for knotc(8) and knotd(8).
# List of servers to allow UPDATE queries
update-in server0, admins;
# Query modules are dynamically loaded modules that can alter query plan
# Configuration is always module-specific, but passed as a simple string
query_module {
module_one "configuration string";
module_two "specific configuration string";
}
}
}
......
......@@ -365,6 +365,13 @@ zones {
# List of servers to allow UPDATE queries
update-in server0, admins;
# Query modules are dynamically loaded modules that can alter query plan processing
# Configuration is always module-specific, but passed as a simple string here
query_module {
module_one "configuration string";
module_two "specific configuration string";
}
}
}
......
......@@ -7,8 +7,13 @@ lib_LTLIBRARIES = libknot.la
noinst_LTLIBRARIES = libknotd.la libknots.la libknotus.la
# $(YACC) will generate header file
AM_CPPFLAGS = -DCONFIG_DIR='"${config_dir}"' -DSTORAGE_DIR='"${storage_dir}"' \
-DRUN_DIR='"${run_dir}"'
AM_CPPFLAGS = \
-include $(top_builddir)/src/config.h \
-DCONFIG_DIR='"${config_dir}"' \
-DSTORAGE_DIR='"${storage_dir}"' \
-DRUN_DIR='"${run_dir}"'
AM_CFLAGS = $(CODE_COVERAGE_CFLAGS)
AM_LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
AM_YFLAGS = -d
libknotd_la_YFLAGS = -pcf_ -d
libknotd_la_LFLAGS = # TODO: reentrant parser, prefix
......@@ -124,6 +129,7 @@ libknotus_la_SOURCES = \
# dynamic: libknot
libknot_la_LDFLAGS = \
$(CODE_COVERAGE_LDFLAGS) \
-version-info 0:1:0 \
-export-symbols-regex '^(knot|KNOT|rrset|tsig|zone)_'
......@@ -142,8 +148,6 @@ libknot_la_SOURCES = \
libknot/dnssec/key.c \
libknot/dnssec/key.h \
libknot/dnssec/bitmap.h \
libknot/dnssec/nsec3.c \
libknot/dnssec/nsec3.h \
libknot/dnssec/policy.c \
libknot/dnssec/policy.h \
libknot/dnssec/random.h \
......@@ -163,15 +167,28 @@ libknot_la_SOURCES = \
libknot/packet/wire.h \
libknot/processing/process.c \
libknot/processing/process.h \
libknot/rdata.h \
libknot/rdata/rdname.h \
libknot/rdata/dnskey.h \
libknot/rdata/nsec.h \
libknot/rdata/nsec3.c \
libknot/rdata/nsec3.h \
libknot/rdata/nsec3param.h \
libknot/rdata/nsec3param.c \
libknot/rdata/nsec.h \
libknot/rdata/rrsig.h \
libknot/rdata/soa.h \
libknot/rdata/tsig.c \
libknot/rdata/tsig.h \
libknot/rrset-dump.c \
libknot/rrset-dump.h \
libknot/rdata.c \
libknot/rdata.h \
libknot/rdataset.c \
libknot/rdataset.h \
libknot/rrset.c \
libknot/rrset.h \
libknot/tsig-op.c \
libknot/tsig-op.h \
libknot/tsig.c \
libknot/tsig.h \
libknot/util/endian.h \
libknot/util/tolower.c \
libknot/util/tolower.h \
......@@ -219,8 +236,12 @@ libknotd_la_SOURCES = \