#dns #dnssec


Wraps libunbound; an implementation of a DNS resolver including cache and DNSSEC validation

3 releases (breaking)

Uses old Rust 2015

0.6.0 Sep 20, 2017
0.5.0 Aug 20, 2017
0.4.0 Jan 1, 2017
0.3.0 Dec 24, 2016
0.1.0 Nov 29, 2015

#149 in Build Utils

Download history 1/week @ 2022-03-10 36/week @ 2022-03-17 1/week @ 2022-04-21 33/week @ 2022-04-28 18/week @ 2022-05-05 48/week @ 2022-05-12 14/week @ 2022-05-19 25/week @ 2022-05-26 34/week @ 2022-06-02 4/week @ 2022-06-16

66 downloads per month


615 lines

This project is abandoned. To revive it I'd need to find a nice way to handle libunbound structures changing in backward incompatible ways and rethink how libunbound's dependencies (OpenSSL and expat) are handled. Some combination of bindgen at build time and the approach to dependencies the curl-sys crate uses might be appropriate.

If you would like to take ownership of the unbound and unbound-sys crate names you'll either need to be from the unbound project or show that you both have a plan for the crates and will execute on that plan.


License: BSD 3-clause

libunbound is an implementation of a DNS resolver, including cache and DNSSEC validation. Contained here are two Rust crates for working with libunbound:

  • unbound-sys provides unsafe wrappers to libunbound
  • unbound implements a safe wrapper atop unbound-sys

Please see their respective READMEs for further information.


Crate unbound wraps libunbound from NLnet Labs. libunbound is an implementation of a DNS resolver, including cache and DNSSEC validation.

The interface provided follows libunbound closely:

  • ub_ctx is wrapped by Context. OpenSSL is initialised when a Context is substantiated. Functions from libunbound that operate on ub_ctx are accessed using methods on Context.

  • ub_result is wrapped by Answer. Methods on Answer are used to safely access the fields of ub_result.


~54K SLoC