From shane at time-travellers.org Fri Jun 17 11:27:23 2016 From: shane at time-travellers.org (Shane Kerr) Date: Fri, 17 Jun 2016 13:27:23 +0200 Subject: [getdns-users] Possible Go language version of getdns API Message-ID: <20160617132723.2221affe@pallas.home.time-travellers.org> Hello, My colleagues and I at BII have been thinking about the getdns API and the Go language. We are considering developing a native Go implementation, and wanted to discuss it with other people before starting. Here are some ideas. Native Go ========= We think that it should be native Go. There are two motivations for this: 1. Performance I haven't done any benchmarking myself, but I have been told that executing C functions from Go carries a severe performance penalty. 2. Usability We would like a Go library that looks & feels like a native library, and does things in a way that matches the Principle of Least Surprise for Go developers. It might be that wrapping the C library doesn't carry a performance penalty, and we might be able to convert the file-descriptor + callback style concurrency model into one that looks & feels more like goroutines and channels. Looking at the getdns API specification shows that there are only a small number of calls for the base API, so it shouldn't be *that* difficult to implement this natively in Go. Miek Gieben's DNS library ========================= This is a well-maintained low-level DNS library that actually provides almost all of the components necessary to build a getdns API. We plan on using this as the basis for the API. This DNS library is not especially friendly for application developers who are not DNS nerds, so we have a good reason to want the getdns API implemented on top of it. DNSSEC ====== The getdns API does not require DNSSEC support, so we plan on an initial version without it. However, DNSSEC is very important so we'll add this support as the second release. The low-level work of validating signatures is already in the miekg DNS library, but the work of following the chain of trust and doing trust anchor management is not present. Possibly it will make sense to push those capabilities upstream into the miekg library... we will see. ---- A rough outline of how we would expect the project to go is something like this: 1. Discuss with the getdns list - ask about the basic idea (this e-mail!) - submit a sample API description for discussion 2. MVP (Minimum Viable Product) of base API - any data structure definition needed - the basic getdns API calls that make sense in Go (about 7 functions) - documentation 3. DNSSEC support - trust anchor management - positive validation - check RRSIG - follow DS chain (zone cuts, etc.) - negative validation - NSEC, wildcard, encloser, ... - NSEC3 - hashing - opt-out 4. TLS support 5. DNS over HTTP support 6. RFC 5011 support 7. EDNS0 DS chain I expect that step 2 will take something like 2 to 3 weeks of work, and step 3 something like 4 to 5 weeks. We haven't done any guestimates about any of the other features, as those are lower priority. Please let us know what you think. Is this a good idea? What of our assumptions are crazy? And so on. Please also let us know if you want to help with the work. ;) Cheers, -- Shane -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 181 bytes Desc: OpenPGP digital signature URL: From sara at sinodun.com Wed Jun 29 10:30:30 2016 From: sara at sinodun.com (Sara Dickinson) Date: Wed, 29 Jun 2016 11:30:30 +0100 Subject: [getdns-users] Upcoming getdns releases Message-ID: <8B8592D3-F7B3-400C-B060-148914B0A8E2@sinodun.com> Dear All, The current release of getdns is the 1.0.0b1 release. This email is to update you on the upcoming releases. The current plan is to have a 1.0.0b2 release available in a couple of weeks time, in particular so that it is available for the IETF Hackathon. Final testing of the release there will mean that we can move to a production release of 1.0.0 shortly afterwards. In addition there is new functionality being developed for what will be the 1.1 release, which includes the following: - DNS64 - Uniform approach to configuration (with getdns_dicts) - Create getdns_dicts from text (JSON-like format) - Function primitives to create DNS servers - Improved connection handling for TCP/TLS - New error codes (more granular reporting of transport and TLS errors) We plan to have a 1.1.0a1 release also available at the IETF Hackthon for early testing of these new features. This 1.1 release will be labelled as an alpha since additional functionality will be added after the Hackathon, but the release will be stable enough to be used for development/hacking. We hope to see many getdns users at the Hackathon in Berlin! If you plan to come along then please register here: https://www.ietf.org/registration/ietf96/hackathonregistration.py and feel free to ask any questions on this list before hand. If anyone has a particular topic or feature they are interested in for the Hackathon then also please let us know. Regards Sara. -------------- next part -------------- An HTML attachment was scrubbed... URL: From robert.groenenberg at broadforward.com Tue Jun 21 14:53:21 2016 From: robert.groenenberg at broadforward.com (Robert Groenenberg) Date: Tue, 21 Jun 2016 16:53:21 +0200 Subject: [getdns-api] Building getdns on CentOS 6.6 from git Message-ID: <08109bbd-8515-ad0f-1f42-e019e38445ef@broadforward.com> When building getdns fresh from Git on CentOS 6.6 I run in a few issues. I followed the instructions in README.md, INSTALL and project-doc/release-procedure.txt, but I can't make it build without some manual patches. So probably I'm missing some steps. Here's what happens: *[rgr at henry ***[:] *t]$ git clone https://github.com/getdnsapi/getdns.git* ... (all Ok) *[rgr at henry [:] t]$ cd getdns** **[rgr at henry [:develop] getdns]$ libtoolize -ci* libtoolize: putting auxiliary files in `.'. libtoolize: copying file `./config.guess' libtoolize: copying file `./config.sub' libtoolize: copying file `./install-sh' libtoolize: copying file `./ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'. libtoolize: copying file `m4/libtool.m4' libtoolize: copying file `m4/ltoptions.m4' libtoolize: copying file `m4/ltsugar.m4' libtoolize: copying file `m4/ltversion.m4' libtoolize: copying file `m4/lt~obsolete.m4' libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am. *[rgr at henry [:develop] getdns]$ autoreconf -fi* libtoolize: putting auxiliary files in `.'. libtoolize: copying file `./ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'. libtoolize: copying file `m4/libtool.m4' libtoolize: copying file `m4/ltoptions.m4' libtoolize: copying file `m4/ltsugar.m4' libtoolize: copying file `m4/ltversion.m4' libtoolize: copying file `m4/lt~obsolete.m4' libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am. *[rgr at henry [:develop] getdns]$ ./configure --with-libevent=/usr/local *... checking for u_char... yes checking for fcntl... yes checking for ioctlsocket... no checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.9.0... yes checking for CHECK... yes ./configure: line 16761: syntax error near unexpected token `fi' ./configure: line 16761: `fi' The offending line is an empty if: > if test "x$have_libcheck" = x1; then > > fi (there are a few more of these). I'm no m4 expert, so I don't get why configure is generated like this. Changing this into > if test "x$have_libcheck" = x1; then > echo Getdns rocks > fi makes configure run without errors. The 2nd problem is that PACKAGE_URL is missing from the generated src/config.h. After adding that manually things compile and work fine. So apparently something goes wrong in the autoreconf area. I have: - libtoolize (GNU libtool) 2.2.6b - autoreconf (GNU Autoconf) 2.63 Any hints would be appreciated. Thanks, Robert -------------- next part -------------- An HTML attachment was scrubbed... URL: From jad at sinodun.com Wed Jun 22 10:57:42 2016 From: jad at sinodun.com (John Dickinson) Date: Wed, 22 Jun 2016 11:57:42 +0100 Subject: [getdns-api] Building getdns on CentOS 6.6 from git In-Reply-To: <08109bbd-8515-ad0f-1f42-e019e38445ef@broadforward.com> References: <08109bbd-8515-ad0f-1f42-e019e38445ef@broadforward.com> Message-ID: On 21 Jun 2016, at 15:53, Robert Groenenberg wrote: > When building getdns fresh from Git on CentOS 6.6 I run in a few issues. I followed the instructions in README.md, INSTALL and project-doc/release-procedure.txt, but I can't make it build without some manual patches. So probably I'm missing some steps. > > Here's what happens: > > *[rgr at henry ***[:] *t]$ git clone https://github.com/getdnsapi/getdns.git* > ... (all Ok) > *[rgr at henry [:] t]$ cd getdns** > **[rgr at henry [:develop] getdns]$ libtoolize -ci* > libtoolize: putting auxiliary files in `.'. > libtoolize: copying file `./config.guess' > libtoolize: copying file `./config.sub' > libtoolize: copying file `./install-sh' > libtoolize: copying file `./ltmain.sh' > libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'. > libtoolize: copying file `m4/libtool.m4' > libtoolize: copying file `m4/ltoptions.m4' > libtoolize: copying file `m4/ltsugar.m4' > libtoolize: copying file `m4/ltversion.m4' > libtoolize: copying file `m4/lt~obsolete.m4' > libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am. > *[rgr at henry [:develop] getdns]$ autoreconf -fi* > libtoolize: putting auxiliary files in `.'. > libtoolize: copying file `./ltmain.sh' > libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'. > libtoolize: copying file `m4/libtool.m4' > libtoolize: copying file `m4/ltoptions.m4' > libtoolize: copying file `m4/ltsugar.m4' > libtoolize: copying file `m4/ltversion.m4' > libtoolize: copying file `m4/lt~obsolete.m4' > libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am. > *[rgr at henry [:develop] getdns]$ ./configure --with-libevent=/usr/local > *... > checking for u_char... yes > checking for fcntl... yes > checking for ioctlsocket... no > checking for pkg-config... /usr/bin/pkg-config > checking pkg-config is at least version 0.9.0... yes > checking for CHECK... yes > ./configure: line 16761: syntax error near unexpected token `fi' > ./configure: line 16761: `fi' > > The offending line is an empty if: >> if test "x$have_libcheck" = x1; then >> >> fi > (there are a few more of these). I'm no m4 expert, so I don't get why configure is generated like this. > Changing this into >> if test "x$have_libcheck" = x1; then >> echo Getdns rocks >> fi > makes configure run without errors. > > The 2nd problem is that PACKAGE_URL is missing from the generated src/config.h. After adding that manually things compile and work fine. > > > So apparently something goes wrong in the autoreconf area. I have: > - libtoolize (GNU libtool) 2.2.6b > - autoreconf (GNU Autoconf) 2.63 > > Any hints would be appreciated. > > Thanks, > Robert > _______________________________________________ > spec mailing list > spec at getdnsapi.net The if clause should look like this if test "x$have_libcheck" = x1; then : fi Note the extra : or do nothing command. I see the same on Centos 6.6 but it works fine on CentOS 7. So I guess there is something wrong with /bin/sh or autoconf on 6.6 regards John John Dickinson http://sinodun.com Sinodun Internet Technologies Ltd. Magdalen Centre Oxford Science Park Robert Robinson Avenue Oxford OX4 4GA U.K. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 842 bytes Desc: OpenPGP digital signature URL: From robert.groenenberg at broadforward.com Wed Jun 22 12:23:38 2016 From: robert.groenenberg at broadforward.com (Robert Groenenberg) Date: Wed, 22 Jun 2016 14:23:38 +0200 Subject: [getdns-api] Building getdns on CentOS 6.6 from git In-Reply-To: References: <08109bbd-8515-ad0f-1f42-e019e38445ef@broadforward.com> Message-ID: Hi John, Thanks for confirming the issue on CentOS 6.6. On 06/22/2016 12:57 PM, John Dickinson wrote: > On 21 Jun 2016, at 15:53, Robert Groenenberg wrote: > >> ... >> *[rgr at henry [:develop] getdns]$ ./configure --with-libevent=/usr/local >> *... >> checking for u_char... yes >> checking for fcntl... yes >> checking for ioctlsocket... no >> checking for pkg-config... /usr/bin/pkg-config >> checking pkg-config is at least version 0.9.0... yes >> checking for CHECK... yes >> ./configure: line 16761: syntax error near unexpected token `fi' >> ./configure: line 16761: `fi' >> >> The offending line is an empty if: >>> if test "x$have_libcheck" = x1; then >>> >>> fi >> (there are a few more of these). I'm no m4 expert, so I don't get why configure is generated like this. >> Changing this into >>> if test "x$have_libcheck" = x1; then >>> echo Getdns rocks >>> fi >> makes configure run without errors. >> >> The 2nd problem is that PACKAGE_URL is missing from the generated src/config.h. After adding that manually things compile and work fine. >> >> >> So apparently something goes wrong in the autoreconf area. I have: >> - libtoolize (GNU libtool) 2.2.6b >> - autoreconf (GNU Autoconf) 2.63 >> >> Any hints would be appreciated. >> >> Thanks, >> Robert >> _______________________________________________ >> spec mailing list >> spec at getdnsapi.net > The if clause should look like this > > if test "x$have_libcheck" = x1; then : > > fi > > Note the extra : or do nothing command. > > I see the same on Centos 6.6 but it works fine on CentOS 7. So I guess there is something wrong with /bin/sh or autoconf on 6.6 I found that the EPEL repository provides a version 2.68 of autconf for CentOS 6 (autoconf268), so I gave that a try with good results: both the empty if clause and the missing PACKAGE_URL are fixed. configure.ac currently wants 2.56 as minimum for autoconf, this clearly needs to be increased to something higher than 2.63 (standard CentOS 6). It might work with a version between 2.63 and 2.68, but at least 2.68 works. I'll make a patch for that. Kind regards, Robert > regards > John > > John Dickinson > > http://sinodun.com > > Sinodun Internet Technologies Ltd. > Magdalen Centre > Oxford Science Park > Robert Robinson Avenue > Oxford OX4 4GA > U.K. > > > _______________________________________________ > spec mailing list > spec at getdnsapi.net -------------- next part -------------- An HTML attachment was scrubbed... URL: