2017-01-07 22:41:59 +03:00
|
|
|
/*
|
|
|
|
* dname.h -- Domain name handling.
|
|
|
|
*
|
|
|
|
* Copyright (c) 2001-2006, NLnet Labs. All rights reserved.
|
|
|
|
*
|
|
|
|
* See LICENSE for the license.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
Import 4.8.0 (previous was 4.6.0)
29 November 2023: Wouter
- Tag for 4.8.0rc1.
28 November 2023: Wouter
- Set up doc/RELNOTES for upcoming release.
- Fix unit test kill_from_pidfile function for nonexistent files
because the argument is evaluated before the test expression.
- Fix rr-test to also convert the contents of the just written output
file.
- Fix test set to remove -f nsd.db and rm nsd.db commands.
- Fix test set to remove difffile option.
27 November 2023: Jeroen
- Fix #14: Set timeout to 3s when servicing remaining TCP connections.
- Fix: Always instate write handler after reading queries from TCP.
- Answer first query on connections accepted just before reload.
27 November 2023: Wouter
- Merge #305: faster stats. Statistics can be gathered while a reload
is in progress.
27 November 2023: Willem
- Merge #302: Test package fixes. Correct Auxfiles, kill_from_pidfile
function and fix drop_updates, rr-test and xfr_update tests.
1 November 2023: Jeroen
- Remove on-disk database.
31 October 2023: Wouter
- Merge #301: improve the logging of ixfr fallbacks to axfr.
30 October 2023: Jeroen
- Fix processing of consolidated IXFRs.
30 October 2023: Wouter
- Fix for interprocess communication to set quit sync command from
main process explicitly.
3 October 2023: Wouter
- Merge #281: Proxy protocol. An implementation of PROXYv2 for NSD.
It can be configured with proxy-protocol-port: portnum with the
port number of the interface on which proxy traffic is handled.
The interface can support proxy traffic for UDP, TCP and TLS.
21 September 2023: Wouter
- Merge #295: Update e-mail addresses, add ref to support contracts
31 August 2023: Wouter
- Fix autoconf 2.69 warnings in configure.
14 July 2023: Wouter
- Merge #287: Update nsd.conf.5.in.
11 July 2023: Wouter
- Fix unused variable warning in unit test of udb.
22 June 2023: Wouter
- Fix #284: dnstap_collector.c: SOCK_NONBLOCK is not available on
Mac/Darwin.
7 June 2023: Wouter
- Merge #282: Improve nsd.conf man page.
- Fix unused but set variable warning.
- Fix #283: Compile failure in remote.c when --disable-bind8-stats
and --without-ssl are specified.
31 May 2023: Wouter
- Add missing items to doc/RELNOTES.
- Tag for 4.7.0rc1. It became release 4.7.0 on 7 june 2023. The code
repository continues with 4.7.1.
30 May 2023: Jeroen
- Fix #240: Prefix messages originating from verifier.
- Fix #275: Drop unnecessary root server checks.
30 May 2023: Wouter
- Next version is 4.7.0, instead of 4.6.2, because of the added
features, like TLS for DNSTAP.
- Fix unused variable warning in unit test, from clang compile.
24 May 2023: Wouter
- For #279: Note that autoreconf -fi creates the configure script
and also the needed auxiliary files, for autoconf 2.69 and 2.71.
4 May 2023: Wouter
- Fix to remove unused whitespace from acx_nlnetlabs.m4 and config.h.
1 May 2023: Wouter
- make depend.
- Fix for build to run flex and bison before compiling code that needs
the headers.
13 April 2023: Wouter
- Fix cirrus script for submit to coverity scan to libtoolize
the configure script components config.guess and config.sub.
- Fix readme status badge links.
28 March 2023: Wouter
- Fix #273: Large TXT record breaks AXFR.
- Fix ixfr create from adding too many record types.
16 March 2023: Wouter
- Fix include brackets for ssl.h include statements, instead of quotes.
- Fix static analyzer warning about nsd_event_method initialization.
15 March 2023: Wouter
- Dnstap tls code fixes.
14 March 2023: Wouter
- Fix dnstap to not check socket path when using IP address.
- dnstap over TLS, default enabled. Configured with the
options dnstap-tls, dnstap-tls-server-name, dnstap-tls-cert-bundle,
dnstap-tls-client-key-file and dnstap-tls-client-cert-file.
- Fix to compile without ssl with dnstap-tls code.
9 March 2023: Wouter
- Fix #271: DNSTAP over TCP, with dnstap-ip: "127.0.0.1@3333".
- Fix to clean more memory on exit of dnstap collector.
23 February 2023: Wouter
- Fix #270: reserved identifier violation.
20 February 2023: Wouter
- Merge #269 from Fale: Add systemd service unit.
16 February 2023: Wouter
- Fix #266: Fix build with --without-ssl.
- Fix #267: Allow unencrypted local operation of nsd-control.
- Fix for #267: neater variable definitions.
2 February 2023: Wouter
- Merge #265: Fix C99 compatibility issue.
30 January 2023: Wouter
- Merge #263: Add bash autocompletion script for nsd-control.
- Fix for #262: More error logging for SSL read failures for zone
transfers.
27 January 2023: Wouter
- Fix #262: Zone(s) not synchronizing properly via TLS.
- Fix ixfr_and_restart test to wait for processes to come to a stop.
26 January 2023: Wouter
- Fix configure for -Wstrict-prototypes.
10 November 2022: Wouter
- Tag for NSD 4.6.1, the repository continues with version 4.6.2.
- Fix #239: -Wincompatible-pointer-types warning in remote.c.
- Fix unit tests to succeed with --disable-bind8-stats.
1 November 2022: Wouter
- Fixup for non-trailing newline lexer change warnings.
- Update doc/RELNOTES for changes.
- Fix ixfr_gone unit test to not use system default zone list file.
- Fix credns tests for vm usage, and not use system default zone
list file.
- Fix verify tests to use more portable bash location in script.
- Fix verify_again test to use ipv4 address for test.
1 November 2022: Tom
- Add SVCB dohpath support
28 September 2022: Jeroen
- Set ALPN "dot" token during connection establishment as per RFC9103
section 7.1 (Thanks Cesar Kuroiwa).
21 September 2022: Tom
- Change zone parsing to accept non-trailing newline.
1 September 2022: Wouter
- Merge #231 from moritzbuhl: Fix checking if nonblocking sockets work
on OpenBSD.
19 August 2022: Wouter
- Update cirrus build script for newer Ubuntu image, and FreeBSD
build with libtoolize to install auxiliary files.
- Update to clang 14 in cirrus build test on Ubuntu Jammy 22.04.
7 July 2022: Tom
- Fix #212: Change commandline control actions to always log.
1 July 2022: Wouter
- Fix static analyzer reports, fix wrong log print when skipping xfr,
fix to print error on pipe read fail, and assert an xfr is in
progress during packet checks.
2024-02-17 20:31:21 +03:00
|
|
|
#ifndef DNAME_H
|
|
|
|
#define DNAME_H
|
2017-01-07 22:41:59 +03:00
|
|
|
|
|
|
|
#include <assert.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
#include "buffer.h"
|
|
|
|
#include "region-allocator.h"
|
|
|
|
|
|
|
|
#if defined(NAMEDB_UPPERCASE) || defined(USE_NAMEDB_UPPERCASE)
|
|
|
|
#define DNAME_NORMALIZE toupper
|
|
|
|
#else
|
|
|
|
#define DNAME_NORMALIZE tolower
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Domain names stored in memory add some additional information to be
|
|
|
|
* able to quickly index and compare by label.
|
|
|
|
*/
|
|
|
|
typedef struct dname dname_type;
|
|
|
|
struct dname
|
|
|
|
{
|
|
|
|
/*
|
|
|
|
* The size (in bytes) of the domain name in wire format.
|
|
|
|
*/
|
|
|
|
uint8_t name_size;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* The number of labels in this domain name (including the
|
|
|
|
* root label).
|
|
|
|
*/
|
|
|
|
uint8_t label_count;
|
|
|
|
|
|
|
|
/*
|
|
|
|
uint8_t label_offsets[label_count];
|
|
|
|
uint8_t name[name_size];
|
|
|
|
*/
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Construct a new domain name based on NAME in wire format. NAME
|
|
|
|
* cannot contain compression pointers.
|
|
|
|
*
|
|
|
|
* Pre: NAME != NULL.
|
|
|
|
*/
|
|
|
|
const dname_type *dname_make(region_type *region, const uint8_t *name,
|
|
|
|
int normalize);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Construct a new domain name based on wire format dname stored at
|
|
|
|
* PACKET's current position. Compression pointers are followed. The
|
|
|
|
* PACKET's current position is changed to the end of the wire format
|
|
|
|
* dname or set to just after the first compression pointer.
|
|
|
|
*/
|
|
|
|
const dname_type *dname_make_from_packet(region_type *region,
|
|
|
|
buffer_type *packet,
|
|
|
|
int allow_pointers,
|
|
|
|
int normalize);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* parse wireformat from packet (following pointers) into the
|
|
|
|
* given buffer. Returns length in buffer or 0 on error.
|
|
|
|
* buffer must be MAXDOMAINLEN+1 long.
|
|
|
|
*/
|
|
|
|
int dname_make_wire_from_packet(uint8_t *buf,
|
|
|
|
buffer_type *packet,
|
|
|
|
int allow_pointers);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Construct a new domain name based on the ASCII representation NAME.
|
|
|
|
* If ORIGIN is not NULL and NAME is not terminated by a "." the
|
|
|
|
* ORIGIN is appended to the result. NAME can contain escape
|
|
|
|
* sequences.
|
|
|
|
*
|
|
|
|
* Returns NULL on failure. Otherwise a newly allocated domain name
|
|
|
|
* is returned.
|
|
|
|
*
|
|
|
|
* Pre: name != NULL.
|
|
|
|
*/
|
|
|
|
const dname_type *dname_parse(region_type *region, const char *name);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* parse ascii string to wireformat domain name (without compression ptrs)
|
|
|
|
* returns 0 on failure, the length of the wireformat on success.
|
|
|
|
* the result is stored in the wirefmt which must be at least MAXDOMAINLEN
|
|
|
|
* in size. On failure, the wirefmt can be altered.
|
|
|
|
*/
|
|
|
|
int dname_parse_wire(uint8_t* wirefmt, const char* name);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Return NULL if DNAME is NULL or a copy of DNAME otherwise.
|
|
|
|
*/
|
|
|
|
const dname_type *dname_copy(region_type *region, const dname_type *dname);
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Copy the most significant LABEL_COUNT labels from dname.
|
|
|
|
*/
|
|
|
|
const dname_type *dname_partial_copy(region_type *region,
|
|
|
|
const dname_type *dname,
|
|
|
|
uint8_t label_count);
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* The origin of DNAME.
|
|
|
|
*/
|
|
|
|
const dname_type *dname_origin(region_type *region, const dname_type *dname);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Return true if LEFT is a subdomain of RIGHT.
|
|
|
|
*/
|
|
|
|
int dname_is_subdomain(const dname_type *left, const dname_type *right);
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Offsets into NAME for each label starting with the most
|
|
|
|
* significant label (the root label, followed by the TLD,
|
|
|
|
* etc).
|
|
|
|
*/
|
|
|
|
static inline const uint8_t *
|
|
|
|
dname_label_offsets(const dname_type *dname)
|
|
|
|
{
|
|
|
|
return (const uint8_t *) ((const char *) dname + sizeof(dname_type));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* The actual name in wire format (a sequence of label, each
|
|
|
|
* prefixed by a length byte, terminated by a zero length
|
|
|
|
* label).
|
|
|
|
*/
|
|
|
|
static inline const uint8_t *
|
|
|
|
dname_name(const dname_type *dname)
|
|
|
|
{
|
|
|
|
return (const uint8_t *) ((const char *) dname
|
|
|
|
+ sizeof(dname_type)
|
|
|
|
+ dname->label_count * sizeof(uint8_t));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Return the label for DNAME specified by LABEL_INDEX. The first
|
|
|
|
* label (LABEL_INDEX == 0) is the root label, the next label is the
|
|
|
|
* TLD, etc.
|
|
|
|
*
|
|
|
|
* Pre: dname != NULL && label_index < dname->label_count.
|
|
|
|
*/
|
|
|
|
static inline const uint8_t *
|
|
|
|
dname_label(const dname_type *dname, uint8_t label)
|
|
|
|
{
|
|
|
|
uint8_t label_index;
|
|
|
|
|
|
|
|
assert(dname != NULL);
|
|
|
|
assert(label < dname->label_count);
|
|
|
|
|
|
|
|
label_index = dname_label_offsets(dname)[label];
|
|
|
|
assert(label_index < dname->name_size);
|
|
|
|
|
|
|
|
return dname_name(dname) + label_index;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Compare two domain names. The comparison defines a lexicographical
|
|
|
|
* ordering based on the domain name's labels, starting with the most
|
|
|
|
* significant label.
|
|
|
|
*
|
|
|
|
* Return < 0 if LEFT < RIGHT, 0 if LEFT == RIGHT, and > 0 if LEFT >
|
|
|
|
* RIGHT. The comparison is case sensitive.
|
|
|
|
*
|
|
|
|
* Pre: left != NULL && right != NULL
|
|
|
|
*/
|
|
|
|
int dname_compare(const dname_type *left, const dname_type *right);
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Compare two labels. The comparison defines a lexicographical
|
|
|
|
* ordering based on the characters in the labels.
|
|
|
|
*
|
|
|
|
* Return < 0 if LEFT < RIGHT, 0 if LEFT == RIGHT, and > 0 if LEFT >
|
|
|
|
* RIGHT. The comparison is case sensitive.
|
|
|
|
*
|
|
|
|
* Pre: left != NULL && right != NULL
|
|
|
|
* label_is_normal(left) && label_is_normal(right)
|
|
|
|
*/
|
|
|
|
int label_compare(const uint8_t *left, const uint8_t *right);
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Returns the number of labels that match in LEFT and RIGHT, starting
|
|
|
|
* with the most significant label. Because the root label always
|
|
|
|
* matches, the result will always be >= 1.
|
|
|
|
*
|
|
|
|
* Pre: left != NULL && right != NULL
|
|
|
|
*/
|
|
|
|
uint8_t dname_label_match_count(const dname_type *left,
|
|
|
|
const dname_type *right);
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* The total size (in bytes) allocated to store DNAME.
|
|
|
|
*
|
|
|
|
* Pre: dname != NULL
|
|
|
|
*/
|
|
|
|
static inline size_t
|
|
|
|
dname_total_size(const dname_type *dname)
|
|
|
|
{
|
|
|
|
return (sizeof(dname_type)
|
|
|
|
+ ((((size_t)dname->label_count) + ((size_t)dname->name_size))
|
|
|
|
* sizeof(uint8_t)));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Is LABEL a normal LABEL (not a pointer or reserved)?
|
|
|
|
*
|
|
|
|
* Pre: label != NULL;
|
|
|
|
*/
|
|
|
|
static inline int
|
|
|
|
label_is_normal(const uint8_t *label)
|
|
|
|
{
|
|
|
|
assert(label);
|
|
|
|
return (label[0] & 0xc0) == 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Is LABEL a pointer?
|
|
|
|
*
|
|
|
|
* Pre: label != NULL;
|
|
|
|
*/
|
|
|
|
static inline int
|
|
|
|
label_is_pointer(const uint8_t *label)
|
|
|
|
{
|
|
|
|
assert(label);
|
|
|
|
return (label[0] & 0xc0) == 0xc0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* LABEL's pointer location.
|
|
|
|
*
|
|
|
|
* Pre: label != NULL && label_is_pointer(label)
|
|
|
|
*/
|
|
|
|
static inline uint16_t
|
|
|
|
label_pointer_location(const uint8_t *label)
|
|
|
|
{
|
|
|
|
assert(label);
|
|
|
|
assert(label_is_pointer(label));
|
|
|
|
return ((uint16_t) (label[0] & ~0xc0) << 8) | (uint16_t) label[1];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Length of LABEL.
|
|
|
|
*
|
|
|
|
* Pre: label != NULL && label_is_normal(label)
|
|
|
|
*/
|
|
|
|
static inline uint8_t
|
|
|
|
label_length(const uint8_t *label)
|
|
|
|
{
|
|
|
|
assert(label);
|
|
|
|
assert(label_is_normal(label));
|
|
|
|
return label[0];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* The data of LABEL.
|
|
|
|
*
|
|
|
|
* Pre: label != NULL && label_is_normal(label)
|
|
|
|
*/
|
|
|
|
static inline const uint8_t *
|
|
|
|
label_data(const uint8_t *label)
|
|
|
|
{
|
|
|
|
assert(label);
|
|
|
|
assert(label_is_normal(label));
|
|
|
|
return label + 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Is LABEL the root label?
|
|
|
|
*
|
|
|
|
* Pre: label != NULL
|
|
|
|
*/
|
|
|
|
static inline int
|
|
|
|
label_is_root(const uint8_t *label)
|
|
|
|
{
|
|
|
|
assert(label);
|
|
|
|
return label[0] == 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Is LABEL the wildcard label?
|
|
|
|
*
|
|
|
|
* Pre: label != NULL
|
|
|
|
*/
|
|
|
|
static inline int
|
|
|
|
label_is_wildcard(const uint8_t *label)
|
|
|
|
{
|
|
|
|
assert(label);
|
|
|
|
return label[0] == 1 && label[1] == '*';
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* The next label of LABEL.
|
|
|
|
*
|
|
|
|
* Pre: label != NULL
|
|
|
|
* label_is_normal(label)
|
|
|
|
* !label_is_root(label)
|
|
|
|
*/
|
|
|
|
static inline const uint8_t *
|
|
|
|
label_next(const uint8_t *label)
|
|
|
|
{
|
|
|
|
assert(label);
|
|
|
|
assert(label_is_normal(label));
|
|
|
|
assert(!label_is_root(label));
|
|
|
|
return label + label_length(label) + 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Convert DNAME to its string representation. The result points to a
|
|
|
|
* static buffer that is overwritten the next time this function is
|
|
|
|
* invoked.
|
|
|
|
*
|
|
|
|
* If ORIGIN is provided and DNAME is a subdomain of ORIGIN the dname
|
|
|
|
* will be represented relative to ORIGIN.
|
|
|
|
*
|
|
|
|
* Pre: dname != NULL
|
|
|
|
*/
|
|
|
|
const char *dname_to_string(const dname_type *dname,
|
|
|
|
const dname_type *origin);
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Create a dname containing the single label specified by STR
|
|
|
|
* followed by the root label.
|
|
|
|
*/
|
|
|
|
const dname_type *dname_make_from_label(region_type *region,
|
|
|
|
const uint8_t *label,
|
|
|
|
const size_t length);
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Concatenate two dnames.
|
|
|
|
*/
|
|
|
|
const dname_type *dname_concatenate(region_type *region,
|
|
|
|
const dname_type *left,
|
|
|
|
const dname_type *right);
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Perform DNAME substitution on a name, replace src with dest.
|
|
|
|
* Name must be a subdomain of src. The returned name is a subdomain of dest.
|
|
|
|
* Returns NULL if the result domain name is too long.
|
|
|
|
*/
|
|
|
|
const dname_type *dname_replace(region_type* region,
|
|
|
|
const dname_type* name,
|
|
|
|
const dname_type* src,
|
|
|
|
const dname_type* dest);
|
|
|
|
|
|
|
|
/** Convert uncompressed wireformat dname to a string */
|
|
|
|
char* wiredname2str(const uint8_t* dname);
|
|
|
|
/** convert uncompressed label to string */
|
|
|
|
char* wirelabel2str(const uint8_t* label);
|
|
|
|
/** check if two uncompressed dnames of the same total length are equal */
|
|
|
|
int dname_equal_nocase(uint8_t* a, uint8_t* b, uint16_t len);
|
|
|
|
|
Import 4.8.0 (previous was 4.6.0)
29 November 2023: Wouter
- Tag for 4.8.0rc1.
28 November 2023: Wouter
- Set up doc/RELNOTES for upcoming release.
- Fix unit test kill_from_pidfile function for nonexistent files
because the argument is evaluated before the test expression.
- Fix rr-test to also convert the contents of the just written output
file.
- Fix test set to remove -f nsd.db and rm nsd.db commands.
- Fix test set to remove difffile option.
27 November 2023: Jeroen
- Fix #14: Set timeout to 3s when servicing remaining TCP connections.
- Fix: Always instate write handler after reading queries from TCP.
- Answer first query on connections accepted just before reload.
27 November 2023: Wouter
- Merge #305: faster stats. Statistics can be gathered while a reload
is in progress.
27 November 2023: Willem
- Merge #302: Test package fixes. Correct Auxfiles, kill_from_pidfile
function and fix drop_updates, rr-test and xfr_update tests.
1 November 2023: Jeroen
- Remove on-disk database.
31 October 2023: Wouter
- Merge #301: improve the logging of ixfr fallbacks to axfr.
30 October 2023: Jeroen
- Fix processing of consolidated IXFRs.
30 October 2023: Wouter
- Fix for interprocess communication to set quit sync command from
main process explicitly.
3 October 2023: Wouter
- Merge #281: Proxy protocol. An implementation of PROXYv2 for NSD.
It can be configured with proxy-protocol-port: portnum with the
port number of the interface on which proxy traffic is handled.
The interface can support proxy traffic for UDP, TCP and TLS.
21 September 2023: Wouter
- Merge #295: Update e-mail addresses, add ref to support contracts
31 August 2023: Wouter
- Fix autoconf 2.69 warnings in configure.
14 July 2023: Wouter
- Merge #287: Update nsd.conf.5.in.
11 July 2023: Wouter
- Fix unused variable warning in unit test of udb.
22 June 2023: Wouter
- Fix #284: dnstap_collector.c: SOCK_NONBLOCK is not available on
Mac/Darwin.
7 June 2023: Wouter
- Merge #282: Improve nsd.conf man page.
- Fix unused but set variable warning.
- Fix #283: Compile failure in remote.c when --disable-bind8-stats
and --without-ssl are specified.
31 May 2023: Wouter
- Add missing items to doc/RELNOTES.
- Tag for 4.7.0rc1. It became release 4.7.0 on 7 june 2023. The code
repository continues with 4.7.1.
30 May 2023: Jeroen
- Fix #240: Prefix messages originating from verifier.
- Fix #275: Drop unnecessary root server checks.
30 May 2023: Wouter
- Next version is 4.7.0, instead of 4.6.2, because of the added
features, like TLS for DNSTAP.
- Fix unused variable warning in unit test, from clang compile.
24 May 2023: Wouter
- For #279: Note that autoreconf -fi creates the configure script
and also the needed auxiliary files, for autoconf 2.69 and 2.71.
4 May 2023: Wouter
- Fix to remove unused whitespace from acx_nlnetlabs.m4 and config.h.
1 May 2023: Wouter
- make depend.
- Fix for build to run flex and bison before compiling code that needs
the headers.
13 April 2023: Wouter
- Fix cirrus script for submit to coverity scan to libtoolize
the configure script components config.guess and config.sub.
- Fix readme status badge links.
28 March 2023: Wouter
- Fix #273: Large TXT record breaks AXFR.
- Fix ixfr create from adding too many record types.
16 March 2023: Wouter
- Fix include brackets for ssl.h include statements, instead of quotes.
- Fix static analyzer warning about nsd_event_method initialization.
15 March 2023: Wouter
- Dnstap tls code fixes.
14 March 2023: Wouter
- Fix dnstap to not check socket path when using IP address.
- dnstap over TLS, default enabled. Configured with the
options dnstap-tls, dnstap-tls-server-name, dnstap-tls-cert-bundle,
dnstap-tls-client-key-file and dnstap-tls-client-cert-file.
- Fix to compile without ssl with dnstap-tls code.
9 March 2023: Wouter
- Fix #271: DNSTAP over TCP, with dnstap-ip: "127.0.0.1@3333".
- Fix to clean more memory on exit of dnstap collector.
23 February 2023: Wouter
- Fix #270: reserved identifier violation.
20 February 2023: Wouter
- Merge #269 from Fale: Add systemd service unit.
16 February 2023: Wouter
- Fix #266: Fix build with --without-ssl.
- Fix #267: Allow unencrypted local operation of nsd-control.
- Fix for #267: neater variable definitions.
2 February 2023: Wouter
- Merge #265: Fix C99 compatibility issue.
30 January 2023: Wouter
- Merge #263: Add bash autocompletion script for nsd-control.
- Fix for #262: More error logging for SSL read failures for zone
transfers.
27 January 2023: Wouter
- Fix #262: Zone(s) not synchronizing properly via TLS.
- Fix ixfr_and_restart test to wait for processes to come to a stop.
26 January 2023: Wouter
- Fix configure for -Wstrict-prototypes.
10 November 2022: Wouter
- Tag for NSD 4.6.1, the repository continues with version 4.6.2.
- Fix #239: -Wincompatible-pointer-types warning in remote.c.
- Fix unit tests to succeed with --disable-bind8-stats.
1 November 2022: Wouter
- Fixup for non-trailing newline lexer change warnings.
- Update doc/RELNOTES for changes.
- Fix ixfr_gone unit test to not use system default zone list file.
- Fix credns tests for vm usage, and not use system default zone
list file.
- Fix verify tests to use more portable bash location in script.
- Fix verify_again test to use ipv4 address for test.
1 November 2022: Tom
- Add SVCB dohpath support
28 September 2022: Jeroen
- Set ALPN "dot" token during connection establishment as per RFC9103
section 7.1 (Thanks Cesar Kuroiwa).
21 September 2022: Tom
- Change zone parsing to accept non-trailing newline.
1 September 2022: Wouter
- Merge #231 from moritzbuhl: Fix checking if nonblocking sockets work
on OpenBSD.
19 August 2022: Wouter
- Update cirrus build script for newer Ubuntu image, and FreeBSD
build with libtoolize to install auxiliary files.
- Update to clang 14 in cirrus build test on Ubuntu Jammy 22.04.
7 July 2022: Tom
- Fix #212: Change commandline control actions to always log.
1 July 2022: Wouter
- Fix static analyzer reports, fix wrong log print when skipping xfr,
fix to print error on pipe read fail, and assert an xfr is in
progress during packet checks.
2024-02-17 20:31:21 +03:00
|
|
|
#endif /* DNAME_H */
|