// This is an example configuration file for the DHCPv6 server in Kea.
// The purpose of this example is to showcase how to configure
// DHCP option for the Discovery of Network-designated Resolvers (DNR)
// (code 144) draft-ietf-add-dnr.
{
  "Dhcp6": {
    // Option data defined globally
    "option-data": [
      /*
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |       Option-code             |         Option-length         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |       Service Priority        |         ADN Length            |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      ~                   authentication-domain-name                  ~
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |         Addr Length           |                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
      ~                        ipv6-address(es)                       ~
      |                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                               |                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
      ~                 Service Parameters (SvcParams)                ~
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      */
      // Type: uint16, uint16, FQDN, binary
      {
        // DNR with IP address(es) and SvcParams included as binary type.
        "code": 144,
        "name": "v6-dnr",          // addresses len=32  |                                     1st IPv6  |                                     2nd IPv6  |             SvcParams "key1=val1 key2=val2"            |
        "data": "3234, 23, example.some.host.org., 00 20 20 01 0d b8 00 01 00 00 00 00 00 00 de ad be ef ff 02 00 00 00 00 00 00 00 00 00 00 fa ce b0 0c 6b 65 79 31 3d 76 61 6c 31 20 6b 65 79 32 3d 76 61 6c 32"
      }
    ],
    // Kea is told to listen on eth0 interface only.
    "interfaces-config": {
      "interfaces": [ "eth0" ]
    },

    // We need to specify the database used to store leases.
    // We'll use memfile because it doesn't require any prior set up.
    "lease-database": {
      "type": "memfile",
      "persist": true,
      "lfc-interval": 3600
    },

    // Addresses will be assigned with preferred and valid lifetimes
    // being 3000 and 4000, respectively. Client is told to start
    // renewing after 1000 seconds. If the server does not respond
    // after 2000 seconds since the lease was granted, client is supposed
    // to start REBIND procedure (emergency renewal that allows switching
    // to a different server).
    "preferred-lifetime": 3000,
    "valid-lifetime": 4000,
    "renew-timer": 1000,
    "rebind-timer": 2000,

    // The following list defines subnets. Each subnet consists of at
    // least subnet and pool entries.
    "subnet6": [
      {
        "id": 1,
        "pools": [ { "pool": "2001:db8:1::/80" } ],
        "subnet": "2001:db8:1::/64",
        "interface": "eth0"
      }
    ],

    // The following configures logging. It assumes that messages with at
    // least informational level (info, warn, error and fatal) should be
    // logged to stdout.
    "loggers": [
      {
        "name": "kea-dhcp6",
        "output_options": [
          {
            "output": "stdout"
          }
        ],
        "debuglevel": 0,
        "severity": "INFO"
      }
    ]
  }
}
