// This is a simple example of a configuration for Control-Agent (CA) or simply
// Agent. This server provides RESTful interface for all Kea servers.
{
    "Control-agent":
    {
	// We need to specify where the agent should listen to incoming HTTP
	// queries. Note that agent does not provide SSL or TLS protection
	// on its own, so limiting the traffic to localhost is a good idea.
	"http-host": "127.0.0.1",

	// Another mandatory parameter is the HTTP port.
	"http-port": 8000,

	// This map specifies where control channel of each server is configured
	// to listen on. See 'control-socket' object in the respective
	// servers. At this time the only supported socket type is "unix".
	// Make sure that the Agent and respective servers configuration
	// matches exactly, otherwise they won't be able to communicate.
	"control-sockets":
	{
	    // This is how the Agent can communicate with the DHCPv4 server.
	    "dhcp4-server":
	    {
		"socket-type": "unix",
		"socket-name": "/path/to/the/unix/socket-v4"
	    },

	    // Location of the DHCPv6 command channel socket.
	    "dhcp6-server":
	    {
		"socket-type": "unix",
		"socket-name": "/path/to/the/unix/socket-v6"
	    },

	    // Currently DHCP-DDNS (nicknamed D2) does not support
	    // command channel yet, but we hope this will change in the
	    // future.
	    "d2-server":
	    {
		"socket-type": "unix",
		"socket-name": "/path/to/the/unix/socket-d2"
	    }
	},

	// CA is able to load hook libraries that augment its operation.
	// The primary functionality is the ability to add new commands.
	"hooks-libraries": [
	    // Hook libraries list may contain more than one library.
	    {
		// The only necessary parameter is the library filename.
		"library": "/opt/local/control-agent-commands.so",

		// Some libraries may support parameters. Make sure you
		// type this section carefully, as the CA does not validate
		// it (because the format is library specific).
		"parameters": {
		    "param1": "foo"
		}
	    }
	]

    },

    // Similar to other Kea components, CA also uses logging.
    "Logging":
    {
	"loggers": [
	    {
		"name": "kea-ctrl-agent",
		"output_options": [
		    {
			"output": "/var/log/kea-ctrl-agent.log",
                        // Several additional parameters are possible in addition
                        // to the typical output. Flush determines whether logger
                        // flushes output to a file. Maxsize determines maximum
                        // filesize before the file is being rotated. maxver
                        // specifies the maximum number of rotated files being
                        // kept.
                        "flush": true,
                        "maxsize": 204800,
                        "maxver": 4
		    }
		],
		"severity": "INFO",
		"debuglevel": 0
	    }
	]
    }
}
