2
I Use This!
Very Low Activity

News

Analyzed 2 days ago. based on code collected 2 days ago.
Posted almost 11 years ago
Source tarball available at: https://github.com/gdnsd/gdnsd/releases/ 2.2.0 - 2014-12-30 *** Bugfixes: * fix for zero-length configuration strings causing assertion failure in developer-debug builds * fix for crash/assertfail if ... [More] admin_state file contents are defined by the user as an array instead of a hash * restored the logging of monitored state transitions, which was omitted in earlier 2.x releases but present in 1.x. *** Features: * If the admin_state file exists but doesn't parse correctly, that will now be a fatal error for startup or checkconf. Previously the error was logged but startup/checkconf was successful. * plugin_geoip: Support for MaxMind GeoIP2 databases. Requires libmaxminddb at build time to enable, which is a new optional build dependency. * plugin_geoip: Added v6->v4 translations for 64:ff9b::/96, the 'Well Known Prefix' from RFC6052 used for e.g. NAT64. * The http stats server now supports atomic flush-after-fetch behavior if given the query argument '?f=1', so that the stat counts are 'since last flush' instead of 'since startup'. The flushed state is shared between all clients using the argument. Does not affect stats for clients not using the argument. * New optional compile-time dependency on libunwind. If available, dmn_assert() in developer builds and certain fatal errors in production builds will produce stack backtraces before terminating the process. * Security is a little tighter by default now on Linux due to prctl() PR_SET_NO_NEW_PRIVS, which may interfere with existing plugin_extmon configurations if they're running privileged binaries (set[ug]id, capabilities). If this interferes with your configuration, it can be disabled via the global option 'weaker_security => true'. * The shipped gdnsd.service systemd unit file now defaults to more secure settings (e.g. private tmp, no homedir access, readonly system fs, no device access, etc). These can be overridden by the user without editing the defaults in e.g. /etc/systemd/system/gdnsd.d/custom.conf. *** Other: * The range, default, and effects of the zones_rfc1035_quiesce option have changed. The zones_rfc1035_min_quiesce option is now deprecated and useless and will generate a harmless warning on startup. This shouldn't be a pragmatic issue for most users. * Related to the above: the code no longer makes heuristic attempts to determine the effective filesystem timestamp accuracy of the zones directory on startup by writing temporary test files to it. * A warning is now generated if the 'zones_rfc1035_auto' option is not set explicitly, because the default value is likely to change from 'true' to 'false' in a future version. * The 'listen => scan' feature is now deprecated, but continues to function and issues a deprecation warning when used. Please either migrate to 'listen => any' (the current default) or file a bug indicating why that doesn't work for your platform/use-case! * Ragel 6.x is now a hard build dependency for all builds. Previously it was required for building from git, but not from tarballs. * Perl version dependency has been raised from 5.8.1 to 5.10.1 * Testsuite now also requires JSON::PP (which comes with Perl 5.13.9+, but may need to be installed for older ones). * sysd/gdnsd.service is now always generated in the build tree from the template, even if --without-systemdsystemunitdir and/or no systemd detected at all, to give more options for how packagers handle things. * Minor plugin API updates (most would just need a recompile). * A number of less-visible refactorings for quality and/or performance. [Less]
Posted almost 11 years ago
Source tarball available at: https://github.com/gdnsd/gdnsd/releases/ 2.1.0 - 2014-10-14 *** Bugfixes: * Fixed JSON stats output (was malformed; missing commas in the service state portion of the output). * Several relatively-benign ... [More] deficiencies related to daemonization, logging, and/or process control were fixed throughout the source tree. * Path MTU Discovery is now properly disabled on UDPv6 sockets * Syslog output was not being generated if compiled using --with-systemd, but not actually running under systemd. (obviated/fixed by the changes below) *** Systemd build/install changes: * The --with-systemd configure flag no longer exists, there is no dependency on systemd libraries or headers, and all Linux builds inherently support detecting systemd and being compatible with it. * Support for systemd watchdog timers was removed as the gdnsd implementation served zero functional purpose other than to add more systemd-related code bloat. * A (path-templated) unit file for gdnsd is now generated and installed on applicable systems. If gdnsd will be run as a systemd service, this unit file *must* be used! Some of the settings within are critical to the proper operation of gdnsd under systemd. The installation path can be overriden from the pkg-config-based default via --with-systemdsystemunitdir=DIR. Generation and installation can be avoided on systems which have systemd installed via --without-systemdsystemunitdir. *** syslog/stdio behavior (relevant mostly for initscripts): * New commandline flag "-x" suppresses syslog output completely. (This is intended for testsuites and linting invocations of checkconf and such, not for runtime use). * When the gdnsd binary hasn't fully daemonized yet (meaning the initial process has not yet exited, regardless of command/mode), Info- and Debug- level messages are output to stdout, while messages of severity Warning and higher are output to stderr (unless we're running under systemd, in which case we stop using stdio as soon as syslog is open to avoid journal duplicates). Everything is mirrored to syslog regardless unless the -x cmdline flag is used. * If you don't want any gdnsd command output interfering with e.g. your consistent ANSI-colored init system output, redirect both to /dev/null. If you'd rather not have "normal" noise, but would still like errors and serious issues to show through to the user, just direct stdout to /dev/null. * (The previous behavior was nothing to stdout, warning+ to stderr and sometimes info and debug to stderr as well, but sometimes nothing was output to any stdio anywhere, and was inconsistent depending on flags/command/situation). *** Misc changes: * Documentation added for log_stats option * Final stats output at daemon shutdown restored; was removed during a refactor some time ago and I forgot to get it working again. * Lots of misc improvements to the build and qa stuff. Notably the default build will now use aggressive security-hardening flags on modern GNU(-like) toolchains which support them. *** The canonical HTTP and git-clone URL locations for the project have changed to http://github.com/gdnsd/gdnsd . The old URLs and git remotes will work correctly for some time, but not indefinitely. [Less]
Posted almost 11 years ago
Source tarball available at: https://github.com/gdnsd/gdnsd/releases/ 2.1.0 - 2014-10-14 *** Bugfixes: * Fixed JSON stats output (was malformed; missing commas in the service state portion of the output). * Several relatively-benign ... [More] deficiencies related to daemonization, logging, and/or process control were fixed throughout the source tree. * Path MTU Discovery is now properly disabled on UDPv6 sockets * Syslog output was not being generated if compiled using --with-systemd, but not actually running under systemd. (obviated/fixed by the changes below) *** Systemd build/install changes: * The --with-systemd configure flag no longer exists, there is no dependency on systemd libraries or headers, and all Linux builds inherently support detecting systemd and being compatible with it. * Support for systemd watchdog timers was removed as the gdnsd implementation served zero functional purpose other than to add more systemd-related code bloat. * A (path-templated) unit file for gdnsd is now generated and installed on applicable systems. If gdnsd will be run as a systemd service, this unit file *must* be used! Some of the settings within are critical to the proper operation of gdnsd under systemd. The installation path can be overriden from the pkg-config-based default via --with-systemdsystemunitdir=DIR. Generation and installation can be avoided on systems which have systemd installed via --without-systemdsystemunitdir. *** syslog/stdio behavior (relevant mostly for initscripts): * New commandline flag "-x" suppresses syslog output completely. (This is intended for testsuites and linting invocations of checkconf and such, not for runtime use). * When the gdnsd binary hasn't fully daemonized yet (meaning the initial process has not yet exited, regardless of command/mode), Info- and Debug- level messages are output to stdout, while messages of severity Warning and higher are output to stderr (unless we're running under systemd, in which case we stop using stdio as soon as syslog is open to avoid journal duplicates). Everything is mirrored to syslog regardless unless the -x cmdline flag is used. * If you don't want any gdnsd command output interfering with e.g. your consistent ANSI-colored init system output, redirect both to /dev/null. If you'd rather not have "normal" noise, but would still like errors and serious issues to show through to the user, just direct stdout to /dev/null. * (The previous behavior was nothing to stdout, warning+ to stderr and sometimes info and debug to stderr as well, but sometimes nothing was output to any stdio anywhere, and was inconsistent depending on flags/command/situation). *** Misc changes: * Documentation added for log_stats option * Final stats output at daemon shutdown restored; was removed during a refactor some time ago and I forgot to get it working again. * Lots of misc improvements to the build and qa stuff. Notably the default build will now use aggressive security-hardening flags on modern GNU(-like) toolchains which support them. *** The canonical HTTP and git-clone URL locations for the project have changed to http://github.com/gdnsd/gdnsd . The old URLs and git remotes will work correctly for some time, but not indefinitely. [Less]
Posted almost 11 years ago
Source tarball available at: https://github.com/gdnsd/gdnsd/releases/ 2.1.0 - 2014-10-14 *** Bugfixes: * Fixed JSON stats output (was malformed; missing commas in the service state portion of the output). * Several relatively-benign ... [More] deficiencies related to daemonization, logging, and/or process control were fixed throughout the source tree. * Path MTU Discovery is now properly disabled on UDPv6 sockets * Syslog output was not being generated if compiled using --with-systemd, but not actually running under systemd. (obviated/fixed by the changes below) *** Systemd build/install changes: * The --with-systemd configure flag no longer exists, there is no dependency on systemd libraries or headers, and all Linux builds inherently support detecting systemd and being compatible with it. * Support for systemd watchdog timers was removed as the gdnsd implementation served zero functional purpose other than to add more systemd-related code bloat. * A (path-templated) unit file for gdnsd is now generated and installed on applicable systems. If gdnsd will be run as a systemd service, this unit file *must* be used! Some of the settings within are critical to the proper operation of gdnsd under systemd. The installation path can be overriden from the pkg-config-based default via --with-systemdsystemunitdir=DIR. Generation and installation can be avoided on systems which have systemd installed via --without-systemdsystemunitdir. *** syslog/stdio behavior (relevant mostly for initscripts): * New commandline flag "-x" suppresses syslog output completely. (This is intended for testsuites and linting invocations of checkconf and such, not for runtime use). * When the gdnsd binary hasn't fully daemonized yet (meaning the initial process has not yet exited, regardless of command/mode), Info- and Debug- level messages are output to stdout, while messages of severity Warning and higher are output to stderr (unless we're running under systemd, in which case we stop using stdio as soon as syslog is open to avoid journal duplicates). Everything is mirrored to syslog regardless unless the -x cmdline flag is used. * If you don't want any gdnsd command output interfering with e.g. your consistent ANSI-colored init system output, redirect both to /dev/null. If you'd rather not have "normal" noise, but would still like errors and serious issues to show through to the user, just direct stdout to /dev/null. * (The previous behavior was nothing to stdout, warning+ to stderr and sometimes info and debug to stderr as well, but sometimes nothing was output to any stdio anywhere, and was inconsistent depending on flags/command/situation). *** Misc changes: * Documentation added for log_stats option * Final stats output at daemon shutdown restored; was removed during a refactor some time ago and I forgot to get it working again. * Lots of misc improvements to the build and qa stuff. Notably the default build will now use aggressive security-hardening flags on modern GNU(-like) toolchains which support them. *** The canonical HTTP and git-clone URL locations for the project have changed to http://github.com/gdnsd/gdnsd . The old URLs and git remotes will work correctly for some time, but not indefinitely. [Less]
Posted almost 11 years ago
Source tarball available at: https://github.com/gdnsd/gdnsd/releases/ 2.1.0 - 2014-10-14 *** Bugfixes: * Fixed JSON stats output (was malformed; missing commas in the service state portion of the output). * Several relatively-benign ... [More] deficiencies related to daemonization, logging, and/or process control were fixed throughout the source tree. * Path MTU Discovery is now properly disabled on UDPv6 sockets * Syslog output was not being generated if compiled using --with-systemd, but not actually running under systemd. (obviated/fixed by the changes below) *** Systemd build/install changes: * The --with-systemd configure flag no longer exists, there is no dependency on systemd libraries or headers, and all Linux builds inherently support detecting systemd and being compatible with it. * Support for systemd watchdog timers was removed as the gdnsd implementation served zero functional purpose other than to add more systemd-related code bloat. * A (path-templated) unit file for gdnsd is now generated and installed on applicable systems. If gdnsd will be run as a systemd service, this unit file *must* be used! Some of the settings within are critical to the proper operation of gdnsd under systemd. The installation path can be overriden from the pkg-config-based default via --with-systemdsystemunitdir=DIR. Generation and installation can be avoided on systems which have systemd installed via --without-systemdsystemunitdir. *** syslog/stdio behavior (relevant mostly for initscripts): * New commandline flag "-x" suppresses syslog output completely. (This is intended for testsuites and linting invocations of checkconf and such, not for runtime use). * When the gdnsd binary hasn't fully daemonized yet (meaning the initial process has not yet exited, regardless of command/mode), Info- and Debug- level messages are output to stdout, while messages of severity Warning and higher are output to stderr (unless we're running under systemd, in which case we stop using stdio as soon as syslog is open to avoid journal duplicates). Everything is mirrored to syslog regardless unless the -x cmdline flag is used. * If you don't want any gdnsd command output interfering with e.g. your consistent ANSI-colored init system output, redirect both to /dev/null. If you'd rather not have "normal" noise, but would still like errors and serious issues to show through to the user, just direct stdout to /dev/null. * (The previous behavior was nothing to stdout, warning+ to stderr and sometimes info and debug to stderr as well, but sometimes nothing was output to any stdio anywhere, and was inconsistent depending on flags/command/situation). *** Misc changes: * Documentation added for log_stats option * Final stats output at daemon shutdown restored; was removed during a refactor some time ago and I forgot to get it working again. * Lots of misc improvements to the build and qa stuff. Notably the default build will now use aggressive security-hardening flags on modern GNU(-like) toolchains which support them. *** The canonical HTTP and git-clone URL locations for the project have changed to http://github.com/gdnsd/gdnsd . The old URLs and git remotes will work correctly for some time, but not indefinitely. [Less]
Posted about 11 years ago
The project github URL (and all related github links) is changing from: https://github.com/blblack/gdnsd/ to: https://github.com/gdnsd/gdnsd/ Basically, the repo is moving to a Github Organization-level role account instead of my personal github ... [More] account. The purpose is to allow me to upload experimental branches in my personal fork without affecting the state of the “main” repo, and to be able to sanely do fork + pull-req traffic against forks of the main repo other than my own, (e.g. paravoid’s fork for debian packaging). There remains no real “organization” in the true sense of the word behind the gdnsd project :) I’ll refrain from creating a gdnsd fork at blblack/gdnsd for a while to avoid conflict (and github will continue to redirect http and git-clone requests for the old path to the new location so long as I do so). Users who clone/fork this repo should update the remotes of any git clones by replacing “blblack/gdnsd” with “gdnsd/gdnsd” in the relevant .git/config file. [Less]
Posted about 11 years ago
The project github URL (and all related github links) is changing from: https://github.com/blblack/gdnsd/ to: https://github.com/gdnsd/gdnsd/ Basically, the repo is moving to a Github Organization-level role account instead of my personal github ... [More] account. The purpose is to allow me to upload experimental branches in my personal fork without affecting the state of the “main” repo, and to be able to sanely do fork + pull-req traffic against forks of the main repo other than my own, (e.g. paravoid’s fork for debian packaging). There remains no real “organization” in the true sense of the word behind the gdnsd project :) I’ll refrain from creating a gdnsd fork at blblack/gdnsd for a while to avoid conflict (and github will continue to redirect http and git-clone requests for the old path to the new location so long as I do so). Users who clone/fork this repo should update the remotes of any git clones by replacing “blblack/gdnsd” with “gdnsd/gdnsd” in the relevant .git/config file. [Less]
Posted about 11 years ago
Source tarball available at: https://github.com/gdnsd/gdnsd/releases/ 2.0.0 - 2014-10-02 *** Commandline / Signal changes: * The signal for zone data reloads is now SIGUSR1, not SIGHUP. * The action "reload" has been renamed to ... [More] "reload-zones", and sends the new SIGUSR1 signal. * The action "force-reload" has been removed. Replace it with invocations of "restart" if that's what you need. * The point of the above changes is to free up SIGHUP and "reload" for future reuse for a new reload behavior, but get the compatibility breaking out of the way now with the major version bump. *** Other * The hacky support for attempting fast reloads under systemd has been removed completely. It's not worth the pain, and better ideas are coming in the long run. * UDP requests with a source port of zero will now count as UDP "recvfail" in stats and will not be processed for reply. Previously we tried to reply to these and ended up failing the related sendmsg call and incrementing "sendfail". * Default 'max_edns_response' raised from 1280 to 1410. * UDP socket buffer default negotiation improvements * Various perf tweaks and code cleanups *** Please read the 2.0.0-beta news below for everything else that's changed since 1.x. 2.0.0-beta - 2014-09-10 *** This is a beta release to get more people to try it in tarball form prior to the official 2.0.0 release. Please do not release stable distro packages based on this release! *** General feature changes: * Static address RR-sets in zonefiles are no longer limited to 256 RRs per-family * Dynamic address RR-sets from plugins are no longer limited to 64 RRs per-family. * The default 'listen' setting is now 'any', which listens on the IPv4 and IPv6 (if available) ANY-addresses 0.0.0.0 and [::]. The previous interface-scanning mode can be enabled via 'listen = scan'. * New TTL-related options: max_ttl, min_ttl, and max_ncache_ttl cause clamping (and warning) of zone TTL values. There is a hard maximum on max_ttl of 268435455 (2^28-1, ~8.5 years). * New config option 'max_edns_response' to cap edns0 response sizes to a value smaller than that advertised by clients, defaults to 1280. * The timeout parameter of a service_type now defaults to half of the specified interval. * New service_types plugin "extfile" - allows for the consumption of outside monitoring data via disk file in vscf format. * Experimental support for djbdns zonefiles * IPv6 runtime support is now a requirement, and the related option monitor_force_v6_up was removed. * Output data from the stats http listener has changed, please update any parsers. *** Dynamic address resolution changes: * The 'DYNC' rr-type can now dynamically return address or CNAME data at the plugin's discretion. * The zonefile syntax for the TTLs of DYNA and DYNC RRs has changed. It now accepts the form MAX[/MIN], where MIN defaults to half of MAX. * The TTL behavior for DYNA/DYNC has changed substantially: Previously the zonefile TTL would be served as-is for 'UP' resources, and cut in half for 'DANGER' or 'DOWN' resources. Now, an internal TTL is calculated based on the minimum time to the next state change between 'UP' and 'DOWN' according to the normal monitoring intervals and anti-flap code. This internal TTL is then clamped to the maximum and minimum TTL values from the relevant zonefile RR. * In cases where multiple monitored resources participate in a plugin's decision and/or response (e.g. multifo), the internal TTL will generally be the minimum of all involved internal monitoring TTLs. *** Service monitoring changes: * CNAMEs can now be monitored entities in the general sense. Note that this does not imply resolving external CNAMEs for direct service checks, at least not with any current plugins. It just means things like extmon/extfile can provide custom monitor feedback, and they can be administrated through the admin_state interface described below. * plugin_static now also acts as a monitoring plugin. It sets a fixed up/down value and optionally a fixed internal TTL value. * The extmon, extfile, static, and null plugins support the monitoring of CNAME resources. * The metafo, geoip, and weighted plugins make use of CNAME monitoring for their CNAME-based resources. * Monitored service states are now labeled with just their service_type and address (or CNAME), but not the plugin and/or resource name which (first) configured them. * Empty service_types ('service_types = []') is now legal, and suppresses the use of the default 'up' service_type. * The 'DANGER' state no longer exists in the built-in monitoring system. A resource is either 'UP' or 'DOWN' at any given time. The monitoring algorithms and thresholds haven't changed; 'DANGER' just isn't exposed as a separate state from 'UP'. * plugin_extmon: the value 'fail_once' for the option 'helper_failure_action' no longer exists, as it no longer makes sense without a visible DANGER state. The new default is 'stasis'. * The special service_type 'danger' no longer exists. * The special service_type 'none' as an alias for 'up' no longer exists. Use 'up' instead. * The special default service_type 'default' (which used plugin_http) no longer exists. The new default is 'up'. *** Administrative state-forcing: * All monitored entities can be administratively forced UP or DOWN (optionally, with a specific monitored TTL) at runtime. * Additionally, plugins can register virtual entities which have no separate real monitoring, but can be administratively forced into a non-default state. * The current virtual entities in use are the datacenters of plugin_metafo and plugin_geoip. In the plugin_geoip case, there are two levels of state-forcing for datacenters: at the per-resource level or the map level. The more-specific per-resource level state takes precedence over the map- level state, and both override any state from lower-level monitored (or forced) resources within a datacenter. * The mechanism for forcing state is via writing to a file named e.g. /var/lib/gdnsd/admin_state in vscf format with lines like "192.0.2.*/http => DOWN/300", or "geoip/map3/dc-us => UP". As shown in the first example, glob patterns are allowed for matching entity names. *** Daemonization changes: * The argument "-d <rootdir>" has been replaced by "-c <cfgdir>", e.g. "gdnsd -c /etc/gdnsd start", with a default of ${sysconfdir}/gdnsd. * Two new configuration options for run_dir and state_dir to override the autoconf-based defaults of e.g. [/var]/run/gdnsd and /var/lib/gdnsd, respectively. It's probably better to change these via ./configure args in the normal case; this is mostly for testsuite-like stuff or multiple instances on a single machine. * Direct, inbuilt support for chroot() has been removed. There are much better security container options out there today that can be configured externally to wrap gdnsd and/or limit its privileges. Use them! * debug-mode is now enabled on the commandline via "-D", and even production builds now produce some level of debug log output. * "startfg" has been replaced with the flag "-f", which can be used with any of the start or restart -like actions to remain in the foreground. * initgroups() is now called during privdrop operations, allowing the daemon to have the secondary group permissions assigned to its user in /etc/group or equivalent. * Foreground daemons participate fully in all other aspects of daemonization (e.g. privdrop and pidfile locking) * It is possible to properly restart a daemon instance from background to foreground and back again; meaning "-f restart" can take over from a regular daemon into the foreground, and then a regular "restart" in another terminal can replace the foreground daemon with a new background one. * Restarts are now even more seamless than they were before. All expensive operations are completed before attempting to kill the previous daemon instance (even monitor initialization), leaving only the timing gap of waiting for the old daemon to exit in response to its death signal before binding the listening sockets in the new daemon, however: * In cases where SO_REUSEPORT works, the new daemon's listeners will be bound just *before* sending that death signal to reduce lost requests even further. Note that you'll probably still lose a handful of requests that were in the old daemon's socket buffers at the time of its death. *** Trivial, previously-deprecated incompatibilities: * plugin_weighted: no longer allows 'cnames' alongside 'addrs_v4' or 'addrs_v6' in the same resource. * plugin_weighted: the pointless 'cnames' singleton substanza is no longer supported; just place the entries directly in the top level of the resource. * The 'late_bind_secs' option was removed. * The 'tcp_clients_per_socket' option is removed. Use 'tcp_clients_per_thread' instead. * The 'disble_tcp' option is removed. Use 'tcp_threads = 0' instead. * The 'zones_rfc1035_strict_startup' option is removed. Use 'zones_strict_startup' instead. * plugin_extmon: %%IPADDR%% replaced by %%ITEM%% * Direct support for the SPF RR-type (99) has been removed. *** Other misc incompatibilities * The plugin API has changed substantially; any third-party plugins will need substantial source-level updates. See the gdnsd-plugin-api docs. * Support for the old, experimental edns-client-subnet option code 0x50fa has been removed; gdnsd now only supports the official, IANA-assigned option code 0x0008. *** Build changes * libcap is no longer used on Linux * --without-libcap doesn't exist anymore * --with-rootdir doesn't exist anymore * Perl 5.8.1 and "perldoc" is required for building * Preliminary systemd support via --with-systemd [Less]
Posted about 11 years ago
Source tarball available at: https://github.com/gdnsd/gdnsd/releases/ 2.0.0 - 2014-10-02 *** Commandline / Signal changes: * The signal for zone data reloads is now SIGUSR1, not SIGHUP. * The action "reload" has been renamed to ... [More] "reload-zones", and sends the new SIGUSR1 signal. * The action "force-reload" has been removed. Replace it with invocations of "restart" if that's what you need. * The point of the above changes is to free up SIGHUP and "reload" for future reuse for a new reload behavior, but get the compatibility breaking out of the way now with the major version bump. *** Other * The hacky support for attempting fast reloads under systemd has been removed completely. It's not worth the pain, and better ideas are coming in the long run. * UDP requests with a source port of zero will now count as UDP "recvfail" in stats and will not be processed for reply. Previously we tried to reply to these and ended up failing the related sendmsg call and incrementing "sendfail". * Default 'max_edns_response' raised from 1280 to 1410. * UDP socket buffer default negotiation improvements * Various perf tweaks and code cleanups *** Please read the 2.0.0-beta news below for everything else that's changed since 1.x. 2.0.0-beta - 2014-09-10 *** This is a beta release to get more people to try it in tarball form prior to the official 2.0.0 release. Please do not release stable distro packages based on this release! *** General feature changes: * Static address RR-sets in zonefiles are no longer limited to 256 RRs per-family * Dynamic address RR-sets from plugins are no longer limited to 64 RRs per-family. * The default 'listen' setting is now 'any', which listens on the IPv4 and IPv6 (if available) ANY-addresses 0.0.0.0 and [::]. The previous interface-scanning mode can be enabled via 'listen = scan'. * New TTL-related options: max_ttl, min_ttl, and max_ncache_ttl cause clamping (and warning) of zone TTL values. There is a hard maximum on max_ttl of 268435455 (2^28-1, ~8.5 years). * New config option 'max_edns_response' to cap edns0 response sizes to a value smaller than that advertised by clients, defaults to 1280. * The timeout parameter of a service_type now defaults to half of the specified interval. * New service_types plugin "extfile" - allows for the consumption of outside monitoring data via disk file in vscf format. * Experimental support for djbdns zonefiles * IPv6 runtime support is now a requirement, and the related option monitor_force_v6_up was removed. * Output data from the stats http listener has changed, please update any parsers. *** Dynamic address resolution changes: * The 'DYNC' rr-type can now dynamically return address or CNAME data at the plugin's discretion. * The zonefile syntax for the TTLs of DYNA and DYNC RRs has changed. It now accepts the form MAX[/MIN], where MIN defaults to half of MAX. * The TTL behavior for DYNA/DYNC has changed substantially: Previously the zonefile TTL would be served as-is for 'UP' resources, and cut in half for 'DANGER' or 'DOWN' resources. Now, an internal TTL is calculated based on the minimum time to the next state change between 'UP' and 'DOWN' according to the normal monitoring intervals and anti-flap code. This internal TTL is then clamped to the maximum and minimum TTL values from the relevant zonefile RR. * In cases where multiple monitored resources participate in a plugin's decision and/or response (e.g. multifo), the internal TTL will generally be the minimum of all involved internal monitoring TTLs. *** Service monitoring changes: * CNAMEs can now be monitored entities in the general sense. Note that this does not imply resolving external CNAMEs for direct service checks, at least not with any current plugins. It just means things like extmon/extfile can provide custom monitor feedback, and they can be administrated through the admin_state interface described below. * plugin_static now also acts as a monitoring plugin. It sets a fixed up/down value and optionally a fixed internal TTL value. * The extmon, extfile, static, and null plugins support the monitoring of CNAME resources. * The metafo, geoip, and weighted plugins make use of CNAME monitoring for their CNAME-based resources. * Monitored service states are now labeled with just their service_type and address (or CNAME), but not the plugin and/or resource name which (first) configured them. * Empty service_types ('service_types = []') is now legal, and suppresses the use of the default 'up' service_type. * The 'DANGER' state no longer exists in the built-in monitoring system. A resource is either 'UP' or 'DOWN' at any given time. The monitoring algorithms and thresholds haven't changed; 'DANGER' just isn't exposed as a separate state from 'UP'. * plugin_extmon: the value 'fail_once' for the option 'helper_failure_action' no longer exists, as it no longer makes sense without a visible DANGER state. The new default is 'stasis'. * The special service_type 'danger' no longer exists. * The special service_type 'none' as an alias for 'up' no longer exists. Use 'up' instead. * The special default service_type 'default' (which used plugin_http) no longer exists. The new default is 'up'. *** Administrative state-forcing: * All monitored entities can be administratively forced UP or DOWN (optionally, with a specific monitored TTL) at runtime. * Additionally, plugins can register virtual entities which have no separate real monitoring, but can be administratively forced into a non-default state. * The current virtual entities in use are the datacenters of plugin_metafo and plugin_geoip. In the plugin_geoip case, there are two levels of state-forcing for datacenters: at the per-resource level or the map level. The more-specific per-resource level state takes precedence over the map- level state, and both override any state from lower-level monitored (or forced) resources within a datacenter. * The mechanism for forcing state is via writing to a file named e.g. /var/lib/gdnsd/admin_state in vscf format with lines like "192.0.2.*/http => DOWN/300", or "geoip/map3/dc-us => UP". As shown in the first example, glob patterns are allowed for matching entity names. *** Daemonization changes: * The argument "-d <rootdir>" has been replaced by "-c <cfgdir>", e.g. "gdnsd -c /etc/gdnsd start", with a default of ${sysconfdir}/gdnsd. * Two new configuration options for run_dir and state_dir to override the autoconf-based defaults of e.g. [/var]/run/gdnsd and /var/lib/gdnsd, respectively. It's probably better to change these via ./configure args in the normal case; this is mostly for testsuite-like stuff or multiple instances on a single machine. * Direct, inbuilt support for chroot() has been removed. There are much better security container options out there today that can be configured externally to wrap gdnsd and/or limit its privileges. Use them! * debug-mode is now enabled on the commandline via "-D", and even production builds now produce some level of debug log output. * "startfg" has been replaced with the flag "-f", which can be used with any of the start or restart -like actions to remain in the foreground. * initgroups() is now called during privdrop operations, allowing the daemon to have the secondary group permissions assigned to its user in /etc/group or equivalent. * Foreground daemons participate fully in all other aspects of daemonization (e.g. privdrop and pidfile locking) * It is possible to properly restart a daemon instance from background to foreground and back again; meaning "-f restart" can take over from a regular daemon into the foreground, and then a regular "restart" in another terminal can replace the foreground daemon with a new background one. * Restarts are now even more seamless than they were before. All expensive operations are completed before attempting to kill the previous daemon instance (even monitor initialization), leaving only the timing gap of waiting for the old daemon to exit in response to its death signal before binding the listening sockets in the new daemon, however: * In cases where SO_REUSEPORT works, the new daemon's listeners will be bound just *before* sending that death signal to reduce lost requests even further. Note that you'll probably still lose a handful of requests that were in the old daemon's socket buffers at the time of its death. *** Trivial, previously-deprecated incompatibilities: * plugin_weighted: no longer allows 'cnames' alongside 'addrs_v4' or 'addrs_v6' in the same resource. * plugin_weighted: the pointless 'cnames' singleton substanza is no longer supported; just place the entries directly in the top level of the resource. * The 'late_bind_secs' option was removed. * The 'tcp_clients_per_socket' option is removed. Use 'tcp_clients_per_thread' instead. * The 'disble_tcp' option is removed. Use 'tcp_threads = 0' instead. * The 'zones_rfc1035_strict_startup' option is removed. Use 'zones_strict_startup' instead. * plugin_extmon: %%IPADDR%% replaced by %%ITEM%% * Direct support for the SPF RR-type (99) has been removed. *** Other misc incompatibilities * The plugin API has changed substantially; any third-party plugins will need substantial source-level updates. See the gdnsd-plugin-api docs. * Support for the old, experimental edns-client-subnet option code 0x50fa has been removed; gdnsd now only supports the official, IANA-assigned option code 0x0008. *** Build changes * libcap is no longer used on Linux * --without-libcap doesn't exist anymore * --with-rootdir doesn't exist anymore * Perl 5.8.1 and "perldoc" is required for building * Preliminary systemd support via --with-systemd [Less]
Posted about 11 years ago
Source tarball available at: https://github.com/gdnsd/gdnsd/releases/ 1.11.5 - 2014-09-10 Bugfixes: Remove F_PURE from rfc1035 out-of-zone check This was causing out-of-zone data checks during the loading of rfc1035 ... [More] zonefiles to be skipped sometimes, depending on compiler/optimizations. Change down_thresh min value from 1 to 2. The value "1" leads to buggy behavior, and was never intended to be possible in the state machine's design. Only use EPROTO if it's available. Build-time bugfix for OpenBSD support. Fix Linux version detection for initial 3.x kernels Runtime checks of the Linux kernel version for feature support were failing on 3.x.0 kernel versions which do not include the ".0" in the version string. Deprecations: extmon: add %%ITEM%%, deprecate %%IPADDR%% plugin_weighted: deprecate "cnames" stanza (both of these are to smooth out the 2.x transition) [Less]