Skip to content

Releases: NLnetLabs/domain

0.11.1

22 Oct 14:46
12e06c8

Choose a tag to compare

Bug fixes

  • Fix handling of tabs when formatting RDATA using DisplayKind::Tabbed. (#516)
  • Fix for in-place zone parser yielding incorrect TTLs. (#538)
  • Generalize ZoneUpdater to support any Record type, not just ParsedRecord. (#535)
  • Trim leading modulus and public exponent zeroes per RFC 3110 section 2. (#541)
  • Fix panic in zonetree from in-place zonefile after encountering a malformed record. (#573)

Unstable features

  • unstable-server-transport:
    • Don't discard the NOTIFY SOA serial, if one is received. Existing users of the Notifiable trait will need to update their code as this change adds an argument to Notifiable::notify_zone_changed(). #562)
  • unstable-client-transport:
    • Fix an issue in Stream::Transport when a reply arrives early. (#568 by @TheJokr)

Other changes

  • Fix docs on XfrResponseInterpreter. (#510)

Release 0.11.0

21 May 17:36
8415235

Choose a tag to compare

Breaking changes

  • FIX: Use base 16 per RFC 4034 for the DS digest, not base 64. (#423)
  • FIX: NSEC3 salt strings should only be accepted if within the salt size limit. (#431)
  • Stricter RFC 1035 compliance by default in the Zonefile parser. ([#477])
  • Rename {DigestAlg, Nsec3HashAlg, SecAlg, ZonemdAlg} to {DigestAlgorithm, Nsec3HashAlgorithm, SecurityAlgorithm, ZonemdAlgorithm}

New

  • Added HashCompressor, an unlimited name compressor that uses a hash map rather than a tree. (#396)
  • Changed fmt::Display for HINFO records to a show a quoted string. (#421)
  • Added support for NAPTR record type. (#427 by @weilence)
  • Added initial fuzz testing support for some types via a new arbitrary feature (not enabled by default). (#441)
  • Added StubResolver::add_connection() to allow adding a connection to the running resolver. In combination with ResolvConf::new() this can also be used to control the connections made when testing code that uses the stub resolver. (#440)
  • Added ZonefileFmt trait for printing records as zonefiles. (#379, #446, #463)

Bug fixes

  • NSEC records should include themselves in the generated bitmap. (#417)
  • Trailing double quote wrongly preserved when parsing record data. (#470, #472)
  • Don't error with unexpected end of entry for RFC 3597 RDATA of length zero. (#475)

Unstable features

  • New unstable feature unstable-crypto that enable cryptography support for features that do not rely on secret keys. This feature needs either or both of the features ring and openssl (#416)

  • New unstable feature unstable-crypto-sign that enable cryptography support including features that rely on secret keys. This feature needs either or both of the features ring and openssl (#416)

  • New unstable feature unstable-client-cache that enable the client transport cache. The reason is that the client cache uses the moka crate.

  • New unstable feature unstable-new that introduces a new API for all of domain (currently only with base, rdata, and edns modules). Also see the associated blog post.

  • unstable-server-transport

    • The trait SingleService which is a simplified service trait for requests that should generate a single response (#353).
    • The trait ComposeReply and an implementation of the trait (ReplyMessage) to assist in capturing EDNS(0) options that should be included in a response message (#353).
    • Adapters to implement Service for SingleService and to implement SingleService for SendRequest (#353).
    • Conversion of a Request to a RequestMessage (#353).
    • A sample query router, called QnameRouter, that routes requests based on the QNAME field in the request (#353).
  • unstable-client-transport

    • introduce timeout option in multi_stream (#424).
    • improve probing in redundant (#424).
    • restructure configuration for multi_stream and redundant (#424).
    • introduce a load balancer client transport. This transport tries to distribute requests equally over upstream transports (#425).
    • the client cache now has it's own feature unstable-client-cache.
  • unstable-sign

    • add key lifecycle management (#459).
    • add support for adding NSEC3 records when signing.
    • add support for ZONEMD.
  • unstable-validator

    • The validate crate is moved to dnssec::validator::base.
    • The validator crate is moved to dnssec::validator.

Other changes

0.10.4

31 Mar 14:42
b851eeb

Choose a tag to compare

Other changes

0.10.3

14 Oct 14:46
874d44b

Choose a tag to compare

New

  • Added Deserialize impl for the base::net::nostd::Ipv6Addr and fixed the impl for Ipv4Addr. (#413)

Bug fixes

  • Fixed an incorrect feature gate that blocks compilation if only "net" is enabled. (#412)
  • Added (all? most?) missing feature dependencies for all features.
  • Fixed Deserialize impls for ParsedName and ExtendedError to compile and work without std. (#413)

0.10.2

10 Oct 13:19
3c63882

Choose a tag to compare

New

  • Added an optional push size limit to MessageBuilder. (#348)
  • Added FromStr impls for Rcode and OptRcode. (#357)
  • Added OptRcode::is_ext to check if the code is an extended code. (#358)
  • Added Rtype::is_glue to check if the Rtype may be used as glue. (#363)
  • Added MessageBuilder::start_error, like start_answer but infallible. (#369)
  • Added AnswerBuilder::push_ref, like push but takes the record by reference. (#383)
  • Added Rtype::NXNAME and ExtendedErrorCode::INVALID_QUERY_TYPE. (#392)
  • Added a Serialize impl to AllRecordData and as a consequence to the OPT record and all OPT options, as well as ParsedName. (#343)
  • Added Display impl to tsig::Key. (#397)

Bug fixes

  • Fixed a mistake in the tsig module while calculating the start of the TSIG record when there were other records in the additional section, causing the TSIG code to fail if OPT records were in use. (#333)
  • Fixed the mnemonic for the NOTAUTH rcode – it was NOAUTH. (#360)
  • Fixed the way the Txt<_> record data implements comparison-related traits. They now directly compare the underlying octets, i.e., the wire format bytes. (#374 by @dklbreitling)
  • Fixed the tsig module to reject messages with multiple TSIG records. (#334)
  • Fixed Display rendering of empty NSEC3 salt to be '-' per RFC 5155 section 3.3. (#407)

Unstable features

  • New unstable feature unstable-validator that adds a DNSSEC validator. (#328)
  • New unstable feature unstable-xfr that adds XfrResponseInterpreter for iterating over XFR responses as a sequence of high level ZoneUpdates, and XfrMiddlewareSvc and XfrDataProvider for responding to received XFR requests. (#375, #384)
  • unstable-client-transport:
    • Fixed an issue with slow responses in the multi_stream transport by not waiting in the first iteration if an underlying stream reports its connection being closed. (#338)
    • Added an option called idle_timeout to stream that allows a TCP or TLS connection to stay open even if no TcpKeepalive option is received from the server. (#341)
    • Fixed an off-by-one error in Dgram client retry count checking. (#354)
    • Added support for requests that may result in multiple responses. This adds ComposeRequestMulti and other *Multi types. The main change is to the stream transport, which is the only transport that implements SendRequestMulti. (#377)
    • Added a TSIG request signing and response validating passthrough transport in net::client:tsig. (#373)
  • unstable-server-transport
    • Breaking changes to the Service and middleware traits. (#369)
    • Added TsigMiddlewareSvc request validating and response signing middleware in net::server::middleware::tsig. (#380)
    • Added NotifyMiddlewareSvc in net::server::middleware::notify to parse and acknowledge SOA NOTIFY requests, for use by secondary nameservers to detect outdated zones compared to the primary. (#382)
    • CookiesMiddlewareSvc now allows requests with invalid cookies to proceed if they are authenticated or not required to authenticate. (#336)
    • Added an enabled flag to CookiesMiddlewareSvc. (#369)
    • Added trait ResourceRecordBatcher and impl CallbackBatcher in net::server::batcher for pushing as many records into a response as will fit according to defined limits. (#383)
    • Enforce dgram max response size limit. (#398)
    • Extended MandatoryMiddlewareSvc with an RFC 9619 check for opcode QUERY with QDCOUNT > 1. (#365)
    • Added blanket SendRequest and SendRequestMulti impls for boxes. (#397)
    • EdnsMiddlewareSvc fixes: (#355)
      • Reply with FORMERR if an OPT RR cannot be parsed.
      • Don't reply with FORMERR if an edns-tcp-keepalive option is received via UDP, instead ignore it per RFC 7828 3.2.1.
      • Only reserve space for an edns-tcp-keepalive option for TCP requests, not UDP requests.
      • Always reserve space for an OPT RR in the response for any request that has an OPT RR, not just TCP requests.
    • Servers now drop received DNS response messages. (#381)
    • Improved handling of errors while sending TCP responses. (#309)
    • Correctly reserve space for OPT in EdnsMiddlewareSvc. (#403)
  • unstable-zonetree:
    • Added ZoneUpdate. (#375)
    • Added ZoneUpdater, ZoneDiff, InMemoryZoneDiffBuilder, InMemoryZoneDiff and improved ZoneUpdate. (#376, #384)
    • Improved zonefile parsing error messages. (#362).
    • TryFrom<inplace::Zonefile> for Zonefile now returns the set of errors instead of logging and ignoring them. (#362)
    • Allow both glue (A/AAAA) and zone cuts at the same owner when zone parsing. (#363)
    • Altered the logic in Versioned::remove_all() (formerly Versioned::clean()) as it made destructive changes to the zone that would have impacted readers of the current zone version while the new zone version was being created. (#376)
    • Removed / renamed references to clean in zonetree::in_memory to remove. (#376)
    • Fixed zone walking to include non-leaf CNAMEs. (#352)
    • Fixed zone walking to pass the correct owner name to the callback. (#384)
    • Added an as_any method and Clone and Debug impls to various zonetree types. (#397)
    • Added AsRef<dyn ZoneStore> to Zone. (#397)
    • Added handling of the AA flag and additional records to answer generation. (#400)
    • Zone walking now includes glue records. A new flag at_zone_cut was added to the callback interface. (#401)

0.10.1

03 Jun 15:02
b65cc98

Choose a tag to compare

New

  • Allow AllRecordData’s parsing impls to accept an unsized [u8] as the source octets. (#310 by @xofyarg)
  • Made sign::records::FamilyName public. (#312 by @achow101)
  • Added an impl of FromStr for Question. (#317)

Bug fixes

  • Accept an empty record type bitmap when scanning NSEC/NSEC3 data. (#310 by @xofyarg)
  • Fix serialization of ProtoRrsig to conform with RFC 4034. ([#313 by @achow101)
  • Add ?Sized bounds to Message::is_answer and ParsedRecord::to_record. (#318 by @xofyarg, #325 by @hunts)
  • Bring back MessageBuilder::as_target. (#318 by @xofyarg)
  • Bring back impl FreezeBuilder for StaticCompressor. (#318 by @xofyarg)
  • sign::records::RecordsIter::skip_before now stops at the first name in zone even if the apex itself doesn’t appear. (#314 by @achow101)
  • Fix a counting error in SliceLabelsIter::next that broke compression via StaticCompressor. (#321 by @hunts)

Unstable features

  • New unstable feature unstable-stelline for the Stelline testing framework as a “normal” module of domain. (#315)
  • Renamed the domain name types in zonetree from Dname to Name. (#308)

Other changes

  • The minimum Rust version is now 1.78. (#320)

0.10.0

30 Apr 10:48
524a310

Choose a tag to compare

Breaking changes

  • All types and functions referring to domain names have been changed from using the term “dname” to just “name.” For instance, Dname has become Name, ToDname has become ToName, and ToDname::to_dname has become ToName::to_name. (#290)
  • The ToName and ToRelativeName traits have been changed to have a pair of methods a la try_to_name and to_name for octets builders with limited and unlimited buffers, reflecting the pattern used elsewhere. (#285)
  • The types for IANA-registered parameters in base::iana have been changed from enums to a newtypes around their underlying integer type and associated constants for the registered values. (This was really always the better way to structure this.) (#276, #298)
  • The Txt record data type now rejects empty record data as invalid. As a consequence TxtBuilder converts an empty builder into TXT record data consisting of one empty character string which requires TxtBuilder::finish to be able to return an error. (#267)
  • Txt record data serialization has been redesigned. It now serialized as a sequence of character strings. It also deserializes from such a sequence. If supported by the format, it alternatively deserializes from a string that is broken up into 255 octet chunks if necessary. (#268)
  • The text formatting for CharStr has been redesigned. The Display impl now uses a modified version of the representation format that doesn’t escape white space but also doesn’t enclose the string in quotes. Methods for explicitly formatting in quoted and unquoted presentation format are provided. (#270)
  • The validate::RrsigExt trait now accepts anything that impls AsRef<Record<..>> to allow the use of smart pointers. (#288 by @hunts)
  • The stub resolver now uses the new client transports. This doesn’t change how it is used but does change how it queries the configured servers. (#215)
  • The sub resolver’s server configuration Transport type has been changed to be either Transport::UdpTcp for trying UDP and if that leads to a truncated answer try TCP and Transport::Tcp for only trying TCP. The stub resolver uses these accordingly now (#296)
  • Many error types have been changed from enums to structs that hide internal error details. Enums have been kept for errors where distinguishing variants might be meaningful for dealing with the error. (#277)
  • Renamed Dnskey::is_zsk to is_zone_key. (#292)
  • Split RRSIG timestamp handling from Serial into a new type rdata::dnssec::Timestamp. ([#294])
  • Upgraded octseq to 0.5. (#257)
  • The minimum Rust version is now 1.70. (#304)

New

  • Add impls for AsRef<RelativeDname<[u8]>> and Borrow<RelativeDname<[u8]>> to RelativeDname<_>. (#251 by @torin-carey)
  • Added name::Chain::fmt_with_dots to format an absolute chained name with a final dot. (#253)
  • Added a new ParseAnyRecordData trait for record data types that can parse any type of record data. (#256)
  • Added implementations of OctetsFrom and Debug to AllOptData and the specific options types that didn’t have them yet. (#257)
  • Added missing ordering impls to ZoneRecordData, AllRecordData, Opt, and SvcbRdata. (#293)
  • Added Name::reverse_from_addr that creates a domain name for the reverse lookup of an IP address. (#289)
  • Added OptBuilder::clone_from to replace the OPT record with the content of another OPT record. (#299)
  • Added Message::for_slice_ref that returns a Message<&[u8]>. (#300)

Bug fixes

  • Fixed the display implementation of name::Chain<_, _>. (#253)
  • Fixed the display implementation of rdata::Txt<..>. It now displays each embedded character string separately in quoted form. (#259)
  • Fixed the extended part returned by OptRcode::to_parts (it was shifted by 4 bits too many) and return all 12 bits for the Int variant in OptRcode::to_int. (#258)
  • Fixed a bug in the inplace zonefile parser that made it reject character string of length 255. (#284)

Unstable features

  • Added the module net::client with experimental support for client message transport, i.e., sending of requests and receiving responses as well as caching of responses.
    This is gated by the unstable-client-transport feature. (#215,#275)
  • Added the module net::server with experimental support for server transports, processing requests through a middleware chain and a service trait.
    This is gated by the unstable-server-transport feature. (#274)
  • Added the module zonetree providing basic traits representing a collection of zones and their data. The zonetree::in_memory module provides an in-memory implementation. The zonetree::parsed module provides a way to classify RRsets before inserting them into a tree.
    This is gated by the unstable-zonetree feature. (#286)

0.9.3

28 Dec 15:05
eaa08e7

Choose a tag to compare

Bug fixes

Other changes

  • The resolv feature now depends on futures_util instead of futures, trimming unused dependencies from the dependency tree. (#246 by @WhyNotHugo)

0.9.2

16 Nov 15:28
df7e20c

Choose a tag to compare

New

  • Removed the Sized bound for octets types used by the tsig module. (#241 by @torin-carey)
  • Added an impl for AsRef<Message<[u8]>> for any message. (#242 by @torin-carey)

Bug fixes

  • Fixed in scanning absolute domain names from a zonefile that resulted in illegal wire data being produced. (#240 by [@xofyarg)]

0.9.1

27 Oct 09:26
819bf1b

Choose a tag to compare

Bug fixes

  • Added missing ?Sized bounds to the octets type for parsing ZoneRecordData and UnknownRecordData. (#237 by @hunts)