Releases: mirage/ocaml-dns
Releases · mirage/ocaml-dns
Multicast DNS improvements and port selection stability
Improve mDNS support (#82 from Luke Dunstan):
- Add
Dns.Probe
to implement the unique name probing portion of mDNS. - Expose the
Dns.Name.Set
construct. - Added a functor
Mdns_resolver_mirage.Chain
that is intended to compose
an mDNS resolver with a normal DNS resolver such that*.local
is resolved
via mDNS and everything else is done with DNS. - Changed
Dns.Query
to not respond to queries for classes other than IN. - Fixed mDNS legacy responses to use TTL <= 10 sec
- Fixed mDNS responses to use RD=0.
Critical Dns_server_unix.listen regression bugfix
Mirage bugfixes and Lwt improvements
0.15.2 (2015-07-04):
- Fix incorrect mirage dependency on tcpip
- Improve clarity and formatting of Lwt use
- Remove lwt camlp4 dependency
- Now requires lwt >2.4.7
Fix critical DNS resolver timeout bug causing unexpected exceptions
0.15.1 (2015-07-02):
- Fix critical DNS resolver timeout bug causing unexpected exceptions
Name module improvements
0.15.0 (2015-05-14):
- Name.domain_name has been renamed to Name.t and is now abstract
- Name.domain_name_to_string has been renamed to Name.to_string
- Name.string_to_domain_name has been deprecated for Name.of_string
- Name.parse_name has been renamed to Name.parse
- Name.marshal_name has been renamed to Name.marshal
- Name.hashcons_charstring has been renamed to Name.hashcons_string
- Name.hashcons_domainname has been renamed to Name.hashcons
- Name.canon2key has been renamed to Name.to_key
- Name.for_reverse has been replaced by Name.of_ipaddr
- Name.of_ipaddr accepts a Ipaddr.t and produces a name suitable for reverse DNS
- We now require >= ipaddr.2.6.0 to support Name.of_ipaddr
- uri 1.7.0+ is now required for its uri.services service registry
- Named service lookups are now supported in zone files
- Dig string serializations are now in Dns.Dig (#61 from Heidi Howard)
Fix namespace pollution, add composition functions, Async_kernel support
- Reduce namespace pollution in
name.ml
to avoid breaking with Cstruct 1.6.0+. - Add a
Dns_server.compose
function to make it easier to build resolution pipelines (#58). - Add a
Dns_server_mirage
functor (#55). - Add
Dns_resolver.resolve_pkt
to support custom query packets (#49). - Split out the experimental Async_resolver into a
Async_kernel
and Unix libraries.
This introduces thedns.async-unix
library.
Interface improvements for DNS packet manipulation
Improved multicast DNS support
- Add support for multicast DNS (RFC6762) in the trie. (#35 from Luke Dunstan)
- mDNS doesn't use SOA nor delegation (RFC 6762 section 12), so some minor changes
to Trie are required to handle this. - mDNS doesn't echo the questions in the response (RFC 6762 section 6), except
in legacy mode, so abool
argument was added toQuery.response_of_answer
. Query.answer
still exists but nowQuery.answer_multiple
is also available
for answering multiple questions in one query to produce a single answer
(RFC 6762 section 5.3). One caveat is that responses may exceed the maximum
message length, but that is not really specific to mDNS. Also, in theory multiple
questions might require multiple separate response messages in unusual cases,
but that is complicated and the library does not deal with that yet.Query.answer_multiple
takes an optional function to allow the caller to control
thecache-flush
bit. This bit is only set for records that have been "confirmed
as unique". Using a callback requires minimal changes here but puts the burden of
maintaining uniqueness state elsewhere.Query.answer_multiple
takes an optional function to filter the answer, in order
to support "known answer suppression" (RFC 6762 section 7.1). Again, using a callback
requires minimal change to the core, but later on the mDNS-specific known answer
suppression logic could move into theQuery
module if that turns out to be simpler.- A query for
PTR
returns additional records forSRV
andTXT
, to support efficient
service discovery. Trie.iter
was added to support mDNS announcements.
- mDNS doesn't use SOA nor delegation (RFC 6762 section 12), so some minor changes
- Switch to
Bytes
instead ofString
for eventual-safe-string
support. - Partially remove some error printing to stderr. (#36)
Unit tests were added for some of the changes above, including a test-only
dependency on pcap-format
.
Multicast DNS parsing support
- Parse and marshal the mDNS unicast-response bit (#29).
- Add OUnit tests for
Dns.Packet.parse
usingpcap
files. - Fix parsing of
SRV
records (#30). - Use
Bytes
instead ofString
for mutable buffers. - Switch to
Base64
v2, which usesB64
as the toplevel module name
to avoid linking conflicts with other community libraries.
Add Async resolver and reduce Io_page dependencies
- Do not depend in Io_page; instead
Dns.Buf.create
now accepts an
optionalalloc
parameter to use a custom allocator such asIo_page
. - Add Async DNS resolver modules from @marklrh (#22).
- Add a Dns_resolver_mirage.Static for a static DNS interface.