// WARNING: This example configuration is not meant for production use.
// The Kea Kea's DHCP-DDNS server can refuse this configuration because
// it may contain mutually exclusive configuration parameters.
//
// The primary purpose of the example file is to provide a comprehensive
// list of parameters supported by the Kea DHCP-DDNS server along with the
// brief description of each parameter.
//
// This current version should be up to date, i.e. new keywords should be
// added in this file at the same time as in the parser specification.
{
    // Kea DHCP-DDNS server configuration begins here.
    "DhcpDdns": {

    // Global Parameters

    // IP address D2 will listen for update requests at.
    // Default is 127.0.0.1
    "ip-address": "127.0.0.1",

    // Port D2 will listen for update requests on.
    // Default is 53001.
    "port": 53001,

    // Maximum time to we will wait for a DNS server to respond to us.
    // Unit is the millisecond, default is 100ms.
    "dns-server-timeout" : 100,

    // Protocol to use for Name Change Requests from a Kea DHCP server.
    // Currently only 'UDP' is supported.
    "ncr-protocol": "UDP",

    // Format to use for Name Change Requests from a Kea DHCP server.
    // Currently only 'JSON' is supported.
    "ncr-format": "JSON",

    // Command control socket configuration parameters for Kea DHCP-DDNS server.
    "control-socket": {

        // Location of the UNIX domain socket file the DHCP-DDNS server uses
        // to receive control commands from the Kea Control Agent or the
        // local server administrator.
        "socket-name": "kea-ddns-ctrl-socket",

        // Control socket type used by the Kea DHCP-DDNS server.
        // The 'unix' socket is currently the only supported type.
        "socket-type": "unix"
    },

    // List of hook libraries and their specific configuration parameters
    // to be loaded by Kea DHCP-DDNS server.
    "hooks-libraries": [
        {
            // Location of the hook library to be loaded.
            "library": "/opt/local/ddns-server-commands.so",

            // Hook library-specific configuration parameters.
            "parameters": { }
        }
    ],

    // Forward DDNS (Dynamic DNS).
    "forward-ddns": {

        // List of DDNS domains.
        "ddns-domains": [
            {
                // Name of the zone (required).
                "name": "example.com.",

                // Name of the TSIG key used to protect DNS updates for
                // names in the domain.
                "key-name": "d2.md5.key",

                // List of DNS servers where to send DNS updates.
                "dns-servers": [
                    {
                        // DNS server IP address (required).
                        "ip-address": "2001:db8:1::10",

                        // DNS server UDP port. Default is 53 (DNS service).
                        "port": 7802,

                        // Name of the TSIG key used to protect DNS updates
                        // sent to the DNS server.
                        "key-name": "d2.sha1.key"
                    }
                ]
            }
        ]
    },

    // Reverse DDNS (Dynamic DNS).
    "reverse-ddns": {

        // List of DDNS domains.
        "ddns-domains": [
            {
                // Name of the zone (required).
                "name": "2.0.192.in-addr.arpa.",

                // Name of the TSIG key used to protect DNS updates for
                // names in the domain.
                "key-name": "d2.sha1.key",

                // List of DNS servers where to send DNS updates.
                "dns-servers": [
                    {
                        // DNS server IP address (required).
                        "ip-address": "172.16.1.1",

                        // DNS server UDP port. Default is 53 (DNS service).
                        "port": 5301,

                        // Name of the TSIG key used to protect DNS updates
                        "key-name": "d2.md5.key"
                    }
                ]
            }
        ]
    },

    // List of TSIG keys used to protect DNS updates.
    "tsig-keys": [
        {
            // Name of the TSIG key (required).
            "name": "d2.md5.key",

            // Algorithm of the TSIG key (required).
            // The value must be a valid algorithm name e.g.
            // HMAC-MD5, HMAC-SHA1, HMAC-SHA224, ...
            "algorithm": "HMAC-MD5",

            // Number of bits in the digest. Default is 0 which means
            // to use all bits provided by the algorithm. Too short values
            // (depending on the algorithm) are rejected.
            "digest-bits": 0,

            // Secret of the TSIG key (required) in base-64.
            "secret": "LSWXnfkKZjdPJI5QxlpnfQ=="
        }
    ],

    // List of loggers used by the servers using this configuration file.
    "loggers": [
        {
            // Debug level, a value between 0..99. The greater the value
            // the more detailed the debug log.
            "debuglevel": 99,

            // Name of the logger.
            "name": "kea-dhcp-ddns",

            // Configures how the log should be output.
            "output_options": [
                {
                    // Determines whether the log should be flushed to a file.
                    "flush": true,

                    // Specifies maximum filesize before the file is rotated.
                    "maxsize": 10240000,

                    // Specifies the maximum number of rotated files to be kept.
                    "maxver": 1,

                    // Specifies the logging destination.
                    "output": "stdout",

                    // Specifies log entry content
                    "pattern": "%D{%Y-%m-%d %H:%M:%S.%q} %-5p [%c/%i] %m\n"
                }
            ],

            // Specifies logging severity, i.e. "ERROR", "WARN", "INFO", "DEBUG".
            "severity": "INFO"
        }
    ],

    // Look at sample1 example for the use of user-contexts.
    "user-context": { }
}

}
