Provided by: gdnsd_2.2.0-1ubuntu1_i386 bug


       gdnsd-plugin-simplefo - gdnsd plugin for simple primary->secondary
       address failover


       Example gdnsd config fragment using this plugin:

         plugins => {
           simplefo => {
             service_types => [ www ],
             pubwww => {
               primary =>
               secondary =>
             www6 => {
               primary => 2001:DB8::1
               secondary => 2001:DB8::100
             mixed => {
               service_types => [ www, xmpp ]
               addrs_v4 => {
                 primary =>
                 secondary =>
               addrs_v6 => {
                 service_types => up
                 primary => 2001:DB8::1
                 secondary => 2001:DB8::100

       Example zonefile RRs:

         www 180 DYNA simplefo!pubwww
         www6 180 DYNA simplefo!www6
         mix 180 DYNA simplefo!mixed


       gdnsd-plugin-simplefo is designed to do simple active/passive failover
       between one primary address and one secondary address.  The status of
       the addresses are checked with standard gdnsd "service_types"
       monitoring.  If you need more than a simple two-address failover list,
       the "metafo" plugin is more appropriate.


       At the top level of the plugin's configuration stanza, the special
       parameter "service_types" is supported. These sets the default per-
       resource "service_types" for all resources.  The default default
       "service_types" is "[ up ]", which simply sets them all "UP"

       The rest of the hash entries at the top level are the names of the
       resources you define.  Each resource gets a configuration hash of its
       own for containing resource-specific address info.


       Within a resource, "service_types" is again supported, to set the
       monitored service type(s) for this specific resource.

       If "addrs_v4" is defined, it must be a hash containing two keys:
       "primary" and "secondary", each of which has an IPv4 string address

       Similarly, if "addrs_v6" is defined, it must be a hash containing two
       keys: "primary" and "secondary", each of which has an IPv6 string
       address value.

       If neither of those two sub-stanzas is defined, you must define a
       single pair of "primary" and "secondary" addresses for the whole
       resource.  These can be of either address family, so long as they are
       both the same family.

       When "addrs_v4" and/or "addrs_v6" are used, "service_types" can also be
       overridden within each, for different behavior per-address-family (e.g.
       force one protocol always up/down).


       For each address family for which you have supplied data, the following
       logic is applied independently:

       ·   First, the worst monitored state of all "service_types" checks for
           the primary address is obtained.  If this state is "UP", the
           primary address is used.

       ·   If the primary address was "DOWN", the secondary address is
           checked: If the secondary is "UP", it will be used.  If the
           secondary is also "DOWN", then the primary is used.

       ·   In any case other than the primary being exactly "UP", the response
           RR-set TTL from the zonefile will be cut in half for both address

       If both "primary" and "secondary" were "DOWN" for either address
       family, this plugin will signal total resource failure to any upstream
       module (geoip or metafo).  The cutting of the TTL only happens once for
       all address RRs, even if both families had a non-"UP" primary.


       gdnsd.config(5), gdnsd.zonefile(5), gdnsd(8), gdnsd-plugin-multifo(8)

       The gdnsd manual.


       Copyright (c) 2012 Brandon L Black <>

       This file is part of gdnsd.

       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 <>.