// This is an example configuration file for the DHCPv4 server in Kea.
// It is a basic scenario with one IPv4 subnet configured and with DDNS
// enabled.

{ "Dhcp4":

{
// Kea is told to listen on eth0 interface only.
  "interfaces-config": {
    "interfaces": [ "eth0" ]
  },

// We need to specify the database used to store leases. As of
// June 2022, three database backends are supported: MySQL,
// PostgreSQL and the in-memory database, Memfile.
// We'll use memfile because it doesn't require any prior set up.
  "lease-database": {
      "type": "memfile",
      "lfc-interval": 3600
  },

// Addresses will be assigned with a lifetime of 4000 seconds.
  "valid-lifetime": 4000,

// Renew and rebind timers are commented out. This implies that options
// 58 and 59 will not be sent to the client. In this case it is up to
// the client to pick the timer values according to RFC2131. Uncomment the
// timers to send these options to the client.
//  "renew-timer": 1000,
//  "rebind-timer": 2000,

// The following list defines subnets. We have only one subnet
// here. We tell Kea that it is directly available over local interface.
  "subnet4": [
    {
       "pools": [ { "pool":  "192.0.2.1 - 192.0.2.200" } ],
       "subnet": "192.0.2.0/24",
       "interface": "eth0",
       "id": 1
    }
  ],

// Enable connectivity with kea-dhcp-ddns
// (Required for dynamic DNS updates)
  "dhcp-ddns" : {
        "enable-updates" : true,
        "server-ip" : "192.0.2.0",
        "server-port" : 3432,
        "sender-ip" : "192.0.2.1",
        "sender-port" : 3433,
        "max-queue-size" : 2048,
        "ncr-protocol" : "UDP",
        "ncr-format" : "JSON"
   },

// Enable DDNS updates and configure DDNS update behavior
  "ddns-send-updates" : true,
  "ddns-override-no-update" : true,
  "ddns-override-client-update" : true,
  "ddns-replace-client-name" : "when-present",
  "ddns-generated-prefix" : "test.prefix",
  "ddns-qualifying-suffix" : "test.suffix.",
  "ddns-update-on-renew" : false,
  "ddns-conflict-resolution-mode": "check-with-dhcid",
  "ddns-ttl-percent" : 0.75,
  "hostname-char-set": "[^A-Za-z0-9.-]",
  "hostname-char-replacement": "x",

// 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-dhcp4",
            "output-options": [
                {
                    "output": "stdout"
                }
            ],
            "severity": "INFO"
        }
    ]
}

}
