Skip to content
Authoritative DNS Server --
C Raku Perl Ragel M4 DIGITAL Command Language Other
Branch: master
Clone or download

Latest commit

blblack Add some new assertions to the ltree search
Some rules/analysis change in sonar is flagging an out of bounds
access related to this, and I *think* maybe these assertions will
help it see what's going on.  Even if they don't fix the report,
they're not awful to have here!
Latest commit f23273c Feb 20, 2020


Type Name Latest commit message Commit time
Failed to load latest commit information.
docs Doc updates for CVE-2019-13951 and CVE-2019-13952 Jul 19, 2019
include Constification work Feb 20, 2020
init systemd template: update commentary, esp about sec Feb 11, 2019
libgdmaps Constification work Feb 20, 2020
libgdnsd Constification work Feb 20, 2020
m4 Update m4 files from autoconf-archive Nov 30, 2018
qa Disable sonarcloud on pull reqs Jul 6, 2019
src Add some new assertions to the ltree search Feb 20, 2020
.astylerc C Code formatting Aug 21, 2018
.gitignore Travis: SonarCloud setup and other stuff Feb 7, 2019
.gitmodules plugin_geoip: Remove GeoIP1 support Aug 21, 2018
.travis.yml Add release branches to travis and sonar Feb 28, 2019
COPYING Initial import from svn trunk r1553 Feb 1, 2012
INSTALL Overhaul ltree code Mar 25, 2019
NEWS Add 3.2.2 NEWS to master for the future Feb 19, 2020
NEWS.old Move old NEWS history out of the way Feb 15, 2019 Minor doc updates Feb 15, 2019 Travis: SonarCloud setup and other stuff Feb 7, 2019

Build Status Coverity Scan Build Status Total alerts Language grade: C/C++

Quality Gate Status Maintainability Rating Reliability Rating Security Rating

Coverage Vulnerabilities Bugs Code Smells


gdnsd is an Authoritative-only DNS server. The initial g stands for Geographic, as gdnsd offers a plugin system for geographic (or other sorts of) balancing, redirection, and service-state-conscious failover. The plugin system can also do things like weighted address/cname records. If you don't care about these features you can ignore them :).

gdnsd is written in C, and uses pthreads with libev and liburcu to attain very high performance, low latency service. It does not offer any form of caching or recursive service, and does not support DNSSEC. There's a strong focus on making the code efficient, lean, and resilient. The code has a decent regression testsuite with full branch coverage on the core packet parsing and generation code, and some scripted QA tools for e.g. valgrind validation, clang-analyzer, etc.

The geographically-aware features also support the EDNS Client Subnet spec from RFC 7871 for receiving more-precise network location information from intermediate shared caches.


Project site:

Release downloads:

The code is hosted at Github:

Bug reports:

Wikified docs:

Google Group for discussion:!forum/gdnsd

See the INSTALL file for details on prerequisites and build procedure for working from the source tree or a source tarball.

The documentation is included in the source tree in POD format and installed as manpages and textfiles on installation.


gdnsd is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

gdnsd is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with gdnsd. If not, see

You can’t perform that action at this time.