Skip to content

Releases: mirage/ocaml-dns

Multicast DNS improvements and port selection stability

21 Oct 23:30
Compare
Choose a tag to compare
  • Change source port randomization to avoid overflow in the port range
    (#83 from @yomimono).

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

30 Jul 13:58
Compare
Choose a tag to compare

0.15.3 (2015-07-30):

  • Fix regression in 0.15.2 which prevented Dns_server_unix.listen from
    answering more than one query (#80 from @MagnusS)

Mirage bugfixes and Lwt improvements

04 Jul 12:42
Compare
Choose a tag to compare

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

02 Jul 13:40
Compare
Choose a tag to compare

0.15.1 (2015-07-02):

  • Fix critical DNS resolver timeout bug causing unexpected exceptions

Name module improvements

14 May 09:50
Compare
Choose a tag to compare

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

30 Mar 10:12
Compare
Choose a tag to compare
  • 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 the dns.async-unix library.

Interface improvements for DNS packet manipulation

29 Jan 08:31
Compare
Choose a tag to compare
  • Renamed Packet.QM to Packet.Q_Normal and QU to Q_mDNS_Unicast for
    clarity and added more detailed doc comments. Added constructor function
    Packet.make_question for convenience. (#41)
  • Support io-page 1.3.0+ interface. (#40)

Improved multicast DNS support

26 Jan 23:29
Compare
Choose a tag to compare
  • 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 a bool argument was added to Query.response_of_answer.
    • Query.answer still exists but now Query.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
      the cache-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 the Query module if that turns out to be simpler.
    • A query for PTR returns additional records for SRV and TXT, to support efficient
      service discovery.
    • Trie.iter was added to support mDNS announcements.
  • Switch to Bytes instead of String 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

25 Dec 10:40
Compare
Choose a tag to compare
  • Parse and marshal the mDNS unicast-response bit (#29).
  • Add OUnit tests for Dns.Packet.parse using pcap files.
  • Fix parsing of SRV records (#30).
  • Use Bytes instead of String for mutable buffers.
  • Switch to Base64 v2, which uses B64 as the toplevel module name
    to avoid linking conflicts with other community libraries.

Add Async resolver and reduce Io_page dependencies

03 Nov 00:49
Compare
Choose a tag to compare
  • Do not depend in Io_page; instead Dns.Buf.create now accepts an
    optional alloc parameter to use a custom allocator such as Io_page.
  • Add Async DNS resolver modules from @marklrh (#22).
  • Add a Dns_resolver_mirage.Static for a static DNS interface.