<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><div style="min-height:100%"><div class="" style="width:1362px"><div class=""><div class=""><div class=""><div class="" style="width:1160px"><div class=""><div class=""><div class=""><div class=""><div id=":4" class="" style="height:493px"><div id=":2" class="" style="min-height:67px"><div class=""><div class=""><div class=""><table class="" cellpadding="0" style="width:1130px"><tbody><tr><td class=""><div class=""><div class=""><div class=""><div class=""><div class="" tabindex="-1"><div class="" style="width:855px"><div class=""><div id=":15o"><div class=""><div class=""><div id=":1aa" class=""><div id=":15p" class="" style="overflow:hidden"><div dir="auto">Hello, Rick,</div><div dir="auto"><br></div><div dir="auto">Taking your comments/questions one by one:</div><div dir="auto"><br></div><div dir="auto">0. We really intend a conjunction, not a disjunction, with the point about DNS folk </div><div dir="auto">    and we encourage DNS folks actively.  Case in point, our participation in the </div><div dir="auto">    IETF's hackathons with getdns.</div><div dir="auto"><span style="font-size:12.8px">1. That's a valid issue about the STUB mode definition.  Our getdns implementation</span></div><div dir="auto"><span style="font-size:12.8px">    started with the spec, which is a consensus document, and over time, we have</span></div><div dir="auto"><span style="font-size:12.8px">    enhanced STUB mode so that it is fully capable of performing DNSSEC </span></div><div dir="auto"><span style="font-size:12.8px">    validation without revising the spec enough to capture this.  In stub-only</span></div><div dir="auto"><span style="font-size:12.8px">    mode, the stub can validate DNSSEC, but it doesn't perform all the functions</span></div><div dir="auto"><span style="font-size:12.8px">    of the caching recursive resolver.  getdns uses libunbound when it is in</span></div><div dir="auto"><span style="font-size:12.8px">    recursive mode, but not when it is a validating stub.  There's a great discussion</span></div><div dir="auto"><span style="font-size:12.8px">    of validating stub, with lots of detail, that Willem Toorop presented at vBSDcon</span></div><div dir="auto"><span style="font-size:12.8px">    in September 2015, that I think would make this all very clear to you:  </span></div><div dir="auto"><span style="font-size:12.8px">    <a href="https://www.youtube.com/watch?v=73M7h56Dsas">https://www.youtube.com/watch?v=73M7h56Dsas</a></span></div><div dir="auto"><span style="font-size:12.8px">2. Release 0.9 added excellent helpers to make getdns easier to work with from C.</span></div><div dir="auto"><span style="font-size:12.8px">    They were described in the email about the release, and you can find them in</span></div><div dir="auto"><span style="font-size:12.8px">    the 0.9 ChangeLog on github (Hey others on the core team: let's make this info</span></div><div dir="auto"><span style="font-size:12.8px">    clearer on the website too).  Melinda Shore blogged about this too, but I'm not</span></div><div dir="auto"><span style="font-size:12.8px">    finding a link to the blog right now, perhaps due to insufficient caffeine today.</span></div><div dir="auto"><span style="font-size:12.8px">3. As noted in 1), getdns in stub-only mode readily does DNSSEC validation for itself on</span></div><div dir="auto"><span style="font-size:12.8px">    the end-system.</span></div><div dir="auto"><span style="font-size:12.8px"><br></span></div><div dir="auto"><span style="font-size:12.8px">Interesting point about the API.  I hope others will comment in detail. </span></div><div dir="auto"><span style="font-size:12.8px"><br></span></div><div dir="auto"><span style="font-size:12.8px">Thank you for writing.  We're glad to continue discussion.</span></div><div dir="auto"><span style="font-size:12.8px"><br></span></div><div dir="auto"><span style="font-size:12.8px">Allison</span></div><div dir="auto"><span style="font-size:12.8px"><br></span></div><div dir="auto"><span style="font-size:12.8px">(getdns  Team Coordinator)</span></div><div dir="auto"><span style="font-size:12.8px"><br></span></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hello,</blockquote><div dir="auto"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">I'm looking into GetDNS, curious about a new player on the landscape,<br>and have a few beginner's questions, if I may.  I noticed it is "not by<br>DNS folk for DNS folk", so as a "DNS person" I may be not be the<br>targeted audience.  Still:<span style="font-size:12.8px"><br></span><span style="font-size:12.8px"><br></span>1. The documentation mentions STUB mode in a number of places, but does<br>not accurately define it.  I found that it means dropping the Unbound<br>dependency; but does that mean that it won't perform DNSSEC validation,<br>or just that it won't cache, or...?  How is this impacting the<br>experience from the GenDNS API?<span style="font-size:12.8px"><br></span>2. I was looking into GetDNS as an possible alternative for libunbound<br>(and got a bit confused because they're both from NLNet Labs) and if I'm<br>getting it correctly, then GetDNS is meant to be wrapped for<br>script-style languages, but given the string-indexed dictionary<br>structures returned it strikes me as more complex to use in a C program<br>than libunbound; or am I missing something?<span style="font-size:12.8px"><br></span>3. Part of my wondering is that I don't know if GetDNS does DNSSEC for<br>itself, or delegates these duties to libunbound.<span style="font-size:12.8px"><br></span><span style="font-size:12.8px"><br></span>Finally, if I was making an easy API to DNS then I would have<br>created"DNS objects"that hold a path ("lookup SRV, take out port and<br>protocol, lookup TLSA record") to a piece of data in DNS, to which they<br>"subscribe" by holding it in memory and renewing it just before TTL<br>expiration if not yet removed (deleted or GC'd).  I would have the<br>object send notifications to all listeners (such as "validated<br>certificate" objects) if anything changed to the DNS data during a<br>refresh, including to its validity in terms of DNSSEC.  But that's just<br>thinking out loud.<span style="font-size:12.8px"><br></span><span style="font-size:12.8px"><br></span>Thanks,<br>-Rick</blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote><blockquote type="cite" style="font-size:12.8px"></blockquote></div></div></div></div></div></div></div></div></div></div></div></div></div></td></tr></tbody></table></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>