2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-08-31 14:05:33 +00:00

[430-configure-location-of-datadir] Forked all-keys.json files into stable and current versions

This commit is contained in:
Francis Dupont
2019-03-11 16:01:04 +01:00
parent 90f13626a8
commit 29cd23f3af
9 changed files with 1463 additions and 11 deletions

View File

@@ -19,7 +19,8 @@ nobase_dist_doc_DATA += examples/https/httpd2/kea-httpd2.conf
nobase_dist_doc_DATA += examples/https/nginx/kea-nginx.conf
nobase_dist_doc_DATA += examples/https/shell/kea-stunnel.conf
nobase_dist_doc_DATA += examples/kea4/advanced.json
nobase_dist_doc_DATA += examples/kea4/all-keys.json
nobase_dist_doc_DATA += examples/kea4/all-keys-current.json
nobase_dist_doc_DATA += examples/kea4/all-keys-stable.json
nobase_dist_doc_DATA += examples/kea4/backends.json
nobase_dist_doc_DATA += examples/kea4/cassandra.json
nobase_dist_doc_DATA += examples/kea4/classify.json
@@ -40,7 +41,8 @@ nobase_dist_doc_DATA += examples/kea4/shared-network.json
nobase_dist_doc_DATA += examples/kea4/single-subnet.json
nobase_dist_doc_DATA += examples/kea4/with-ddns.json
nobase_dist_doc_DATA += examples/kea6/advanced.json
nobase_dist_doc_DATA += examples/kea6/all-keys.json
nobase_dist_doc_DATA += examples/kea6/all-keys-current.json
nobase_dist_doc_DATA += examples/kea6/all-keys-stable.json
nobase_dist_doc_DATA += examples/kea6/backends.json
nobase_dist_doc_DATA += examples/kea6/cassandra.json
nobase_dist_doc_DATA += examples/kea6/classify.json

View File

@@ -0,0 +1,748 @@
// WARNING: This example configuration is not meant for production use.
// The Kea DHCPv4 server will refuse this configuration because it contains
// mutually exclusive configuration parameters.
//
// The primary purpose of the example file is to provide a comprehensive
// list of parameters supported by Kea DHCPv4 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 than in the syntax.
{
// Kea DHCPv4 server configuration begins here.
"Dhcp4": {
// Global bootfile name to be set in the 'file' field.
"boot-file-name": "/dev/null",
// Ordered list of client classes used by the DHCPv4 server.
"client-classes": [
{
// Class specific bootfile name to be set in the 'file' field.
"boot-file-name": "/tmp/bootfile.efi",
// Class name.
"name": "phones_server1",
// Class specific next server address to use in bootstrap, which
// is set in 'siaddr' field.
"next-server": "10.2.3.4",
// Class specific DHCPv4 options list.
"option-data": [],
// Class specific DHCPv4 option definitions, i.e. custom formats
// specified for non-standard options.
"option-def": [],
// Class specific optional server hostname, which is set in
// 'sname' field.
"server-hostname": "",
// Class selection expression. The DHCP packet is assigned to this
// class when the given expression evaluates to true.
"test": "member('HA_server1')"
},
{
// Default value of the class specific bootfile name. Empty name
// means that the bootfile name is unspecified.
"boot-file-name": "",
// Second class name.
"name": "phones_server2",
// Default value of the class specific next server address. The
// zero IPv4 address means that it is unspecified.
"next-server": "0.0.0.0",
// Class specific DHCPv4 options list.
"option-data": [],
// Class specific DHCPv4 option definitions, i.e. custom formats
// specified for non-standard options.
"option-def": [],
// Class specific optional server hostname, which is set in
// 'sname' field.
"server-hostname": "",
// Class selection expression. The DHCP packet is assigned to this
// class when the given expression evaluates to true.
"test": "member('HA_server2')"
},
{
// Third class name.
"name": "late",
// Boolean flag indicating that the class expression is only evaluated
// when the class is required, e.g. selected address pool configuration
// includes this class name in its "require-client-classes" list. The
// default value false means that the class test expression must
// always be evaluated.
"only-if-required": true,
// Class selection expression.
"test": "member('ALL')"
}
],
// Command control socket configuration parameters for Kea DHCPv4 server.
"control-socket": {
// Location of the unix domain socket file the DHCPv4 server uses
// to receive control commands from the Kea Control Agent or the
// local server administrator.
"socket-name": "/tmp/kea-dhcp4-ctrl.sock",
// Control socket type used by the Kea DHCPv4 server. The 'unix'
// socket is currently the only supported type.
"socket-type": "unix"
},
// Time in seconds specifying how long a declined lease should be
// excluded from DHCP assignments. The default value is 24 hours.
"decline-probation-period": 86400,
// Name Change Requests forwarding configuration for Kea DHCPv4 server.
// NCRs are sent to Kea D2 module to update DNS upon allocation of the
// DHCP leases.
"dhcp-ddns": {
// Boolean flag indicating if Kea DHCPv4 server must generate NCRs.
// By default NCRs are not generated.
"enable-updates": false,
// Specifies a prefix to be prepended to the generated Client FQDN.
"generated-prefix": "myhost",
// String of zero or more characters with which to replace each
// invalid character in the hostname or Client FQDN. The default
// value is an empty string which will cause invalid characters
// to be omitted rather than replaced.
"hostname-char-replacement": "x",
// Regular expression describing the invalid character set in
// the hostname or Client FQDN.
"hostname-char-set": "[^A-Za-z0-9.-]",
// Specifies maximum number of NCRs to queue waiting to be sent
// to Kea D2 server.
"max-queue-size": 1024,
// Packet format to use when sending NCRs to Kea D2 server.
// Currently, only JSON format is supported.
"ncr-format": "JSON",
// Socket protocol to use when sending NCRs to D2. Currently,
// only UDP is supported.
"ncr-protocol": "UDP",
// Boolean flag indicating that server should ignore DHCP client
// wishes to update DNS on its own. With that flag set to true
// the server will send DNS updates for both forward and
// reverse DNS data. The default value is false, which indicates
// that the server will delegate DNS update to the client when
// requested.
"override-client-update": false,
// Boolean flag indicating that the server should override DHCP
// client's wish to not update the DNS. With this parameter
// set to true the server will send DNS update even when
// the client requested no update.
"override-no-update": false,
// Suffix appended to the partial name sent to the DNS. The
// default value is an empty string which indicates that no
// suffix is appended.
"qualifying-suffix": "",
// Enumeration specifying whether the server should honor
// hostname or Client FQDN sent by the client or replace
// this name. The acceptable values are: "never" (use the
// name the client sent), "always" (replace the name the
// client sent), "when-present" (replace the name the client
// sent, but do not generate one when the client didn't sent
// the name), "when-not-present" (generate the name when
// client didn't send one, otherwise leave the name the
// client sent). The default value is "never".
"replace-client-name": "never",
// IP address that Kea DHCPv4 server should use to send
// NCRs to D2. Default value of zero indicates that Kea
// should pick suitable address.
"sender-ip": "0.0.0.0",
// Port number that Kea DHCPv4 server should use to send
// NCRs to D2. Default value of zero indicates that Kea
// should pick suitable port.
"sender-port": 0,
// IP address on which D2 listens for NCRs.
"server-ip": "127.0.0.1",
// Port number on which D2 listens for NCRs.
"server-port": 53001
},
// Specifies the first of the two consecutive ports of the UDP
// sockets used for communication between DHCPv6 and DHCPv4
// servers. See RFC 7341.
"dhcp4o6-port": 6767,
// Boolean flag indicating whether or not the Kea DHCPv4 server
// should send back Client Identifier option in its responses.
// The default value is true which indicates that the option
// must be sent back if the client included it. The false
// value instructs the server to not send this option for
// backward compatibility with older DHCP specifications which
// stated that Client Identifier must not be sent back.
"echo-client-id": true,
// Collection of Kea DHCPv4 server parameters configuring how
// the server should process expired DHCP leases.
"expired-leases-processing": {
// Specifies the number of seconds since last removal of
// the expired leases when next removal should occur.
"flush-reclaimed-timer-wait-time": 25,
// Specifies the time period in seconds to keep expired
// leases in the lease database (lease affinity).
"hold-reclaimed-time": 3600,
// Specifies the maximum number of expired leases that can be
// processed in a single attempt to clean up the lease
// database from the expired leases. If there are more
// expired leases, they will be processed during the next
// cleanup attempt.
"max-reclaim-leases": 100,
// Specifies the maximum time in milliseconds that the single
// attempt to cleanup the lease database from the expired
// leases may take.
"max-reclaim-time": 250,
// Specifies the time period in seconds since last attempt
// to process expired leases to initiate the next attempt.
"reclaim-timer-wait-time": 10,
// Specifies the maximum number of expired leases processing
// cycles which didn't result in full cleanup of the lease
// database from the expired leases, after which a
// warning message is issued.
"unwarned-reclaim-cycles": 5
},
// List of hooks libraries and their specific configuration parameters
// to be loaded by Kea DHCPv4 server.
"hooks-libraries": [
{
// Location of the hooks library to be loaded.
"library": "/opt/lib/hooks/libdhcp_lease_cmds.so",
// Hook library specific configuration parameters.
"parameters": { }
}
],
// List of access credentials to external sources of IPv4 reservations,
"hosts-databases": [
{
// Name of the database to connect to.
"name": "kea",
// Host on which the database resides.
"host": "localhost",
// Database password.
"password": "kea",
// Port on which the database is available.
"port": 3306,
// Type of the database, e.g. "mysql", "pgsql", "cql".
"type": "mysql",
// User name to be used to access the database.
"user": "kea"
}
],
// List of host reservation identifier types to be used by the
// Kea DHCPv4 server to fetch static reservations for the
// DHCP clients. All identifiers are used by default, which
// means that the server will issue multiple queries to the
// database to find if there is a reservation for the particular
// client. If the particular deployment uses only subset, e.g.
// one, identifier type, this identifier should be only listed
// here to prevent unnecessary queries to the database.
"host-reservation-identifiers": [
"hw-address",
"duid",
"circuit-id",
"client-id",
"flex-id"
],
// Specifies configuration of interfaces on which the Kea DHCPv4
// server is listening to the DHCP queries.
"interfaces-config": {
// Specifies whether the server should use "udp" socket or
// "raw" sockets to listen to the DHCP traffic. The "raw"
// sockets are useful when direct DHCP traffic is being
// received.
"dhcp-socket-type": "udp",
// Specifies a list of interfaces on which the Kea DHCPv4
// server should listen to the DHCP requests.
"interfaces": [
"ethX"
],
// Enumeration which indicates what interface should be used
// to send DHCP response to the client. The default value is
// "same-as-inbound" which indicates that the response should
// be sent via the interface on which the client's query
// was received. The "use-routing" value indicates that the
// Kea server should use kernel's routing table to find the
// suitable interface.
"outbound-interface": "same-as-inbound",
// Boolean flag indicating if the available interfaces should
// be re-detected upon server reconfiguration. The default value
// is true which means that the interfaces are always
// re-detected.
"re-detect": true
},
// Specifies credentials to access lease database.
"lease-database": {
// memfile backend specific parameter specifying the interval
// in seconds at which lease file should be cleaned up (outdated
// lease entries are removed to prevent lease file from growing
// infinitely).
"lfc-interval": 3600,
// Name of the lease file. In case of database it specifies the
// database name.
"name": "/tmp/kea-dhcp4.csv",
// memfile specific parameter indicating whether leases should
// be saved on persistent storage (disk) or not. The true value
// is the default and it indicates that leases are stored in the
// persistent storage. This setting must be used in production.
// The false value should only be used for testing purposes
// because non stored leases will be lost upon Kea server restart.
"persist": true,
// Lease database backend type, i.e. "memfile", "mysql", "pgsql"
// or "cql".
"type": "memfile"
},
// Boolean value indicating if the Kea DHCPv4 server should use client
// identifier value sent by the client or ignore it. The default value
// is true which indicate that the server should use client identifier
// and that it takes precedence over client's MAC address. In deployments
// where MAC address should take precedence this value can be set to
// false, in which case the clients will be identified by MAC address.
// This is specifically useful when clients don't generate unique
// identifiers or these identifiers are not stable etc.
"match-client-id": false,
// Global value of the next server address set in 'siaddr' field.
// The global value may be overriden in lower level configuration
// scopes.
"next-server": "192.0.2.123",
// List of global DHCP options that Kea DHCPv4 server assigns to the
// clients.
"option-data": [
{
// Boolean flag indicating if the given option is always
// send in response or only when requested. The default
// value of false indicates that it is only sent when
// requested.
"always-send": false,
// Option code. It is not required if the option name is
// provided.
"code": 6,
// Boolean value indicating whether the option data specified
// in the "data" field is specified as a string of hexadecimal
// digits or in human readable CSV format.
"csv-format": true,
// Option data to be stored in the option payload.
"data": "192.0.3.1, 192.0.3.2",
// Option name. It is not required of the option code is
// provided.
"name": "domain-name-servers",
// Option space. The default is the "dhcp4" option space which
// groups top level DHCPv4 options.
"space": "dhcp4"
}
],
// List of global option definitions, i.e. option formats, that the
// Kea DHCPv4 server is using.
"option-def": [
{
// Boolean flag indicating if the option definition comprises
// an array of values of some type, e.g. array of IPv4 addresses.
// The default value of false means that the option does not
// comprise an array of values.
"array": false,
// Option code.
"code": 6,
// Holds a name of the option space encapsulated by this option.
// All options that belong to this option space will be sent
// as sub-options of this option. Empty string means that this
// option doesn't encapsulate any option.
"encapsulate": "",
// Option name.
"name": "my-option",
// Specifies the types of fields within the option if the option
// is said to be a "record" (see "type"). in this particular example
// this option comprises two fields, 1 byte and 2 bytes long.
"record-types": "uint8, uint16",
// Name of the option space to which this option belongs.
"space": "my-space",
// Option type. All possible types are listed in the Kea
// Administrator Reference Manual.
"type": "record"
}
],
// Global value for the rebind timer, i.e. the time after which the
// DHCP client enters rebind state if it fails to renew the lease.
"rebind-timer": 40,
// Global value for the renew timer, i.e. the timer after which the
// DHCP client renews the lease.
"renew-timer": 30,
// Governs how the Kea DHCPv4 server should deal with the invalid
// data received from the client.
"sanity-checks": {
// Specifies how the Kea DHCPv4 server should behave when invalid
// data is read for a lease from the lease file. The following
// values are supported "none" (don't attempt to correct the
// lease information), "warn" (print a warning for subnet-id
// related inconsistencies), "fix" (correct the subnet id by
// trying to find the suitable subnet), "fix-del" (similar
// to "fix" but delete the lease if no suitable subnet found),
// "del" (delete the lease if the lease has invalid subnet
// identifier value).
"lease-checks": "warn"
},
// List of shared networks used by Kea DHCPv4 server. The shared
// networks group subnets together.
"shared-networks": [
{
// Shared network level bootfile name.
"boot-file-name": "/dev/null",
// Restricts this shared network to allow only clients
// that belong to the particular client class. If an
// empty string is provided, no restriction is applied.
"client-class": "",
// Specifies that this shared network is selected for the
// requests received on the particular interface.
"interface": "ethX",
// Shared network level flag specifying whether the client
// identifier should be used for identifying clients.
"match-client-id": true,
// Shared network name.
"name": "my-secret-network",
// Shared network level specification of the next server
// to be sent in 'siaddr'.
"next-server": "192.0.2.123",
// List of shared network specific DHCP options.
"option-data": [],
// List of IPv4 relay addresses for which this shared
// network is selected.
"relay": {
"ip-addresses": []
},
// Shared network level rebind timer.
"rebind-timer": 41,
// Shared network level renew timer.
"renew-timer": 31,
// Enumeration specifying server's mode of operation when it
// fetches host reservations.
"reservation-mode": "all",
// List of client classes which must be evaluated when this shared
// network is selected for client assignments.
"require-client-classes": [ "late" ],
// Shared network level server hostname set in 'sname' field.
"server-hostname": "",
// List of IPv4 subnets belonging to this shared network.
"subnet4": [
{
// Interface name matched against inbound interface name.
// Used in DHCPv4o6. See RFC 7341.
"4o6-interface": "",
// Interface ID option value. See RFC 7341.
"4o6-interface-id": "",
// Prefix matched against source address. See RFC7341.
"4o6-subnet": "2001:db8:1:1::/64",
// Subnet level bootfile name, set in 'file' field.
"boot-file-name": "",
// Restricts this subnet to allow only clients that belong
// to the particular client class. If an empty string is
// provided, no restriction is applied.
"client-class": "",
// Subnet unique identifier.
"id": 1,
// Specifies that this subnet is selected for the requests
// received on the particular interface.
"interface": "ethX",
// Subnet level flag specifying whether the client identifier
// should be used for identifying clients.
"match-client-id": true,
// Subnet level specification of the next server to be sent
// in 'siaddr'.
"next-server": "0.0.0.0",
// Subnet level list of DHCP options.
"option-data": [
{
// Boolean flag indicating if the particular option
// should be always sent or sent only when requested.
"always-send": false,
// Option code.
"code": 3,
// Boolean flag indicating if the option value specified
// in "data" is a string of hexadecimal values or human
// readable CSV value.
"csv-format": true,
// Option data to be included in the option payload.
"data": "192.0.3.1",
// Option name.
"name": "routers",
// Option space. The default value "dhcp4" designates the
// top level option space.
"space": "dhcp4"
}
],
// List of IP address pools belonging to the subnet.
"pools": [
{
// Restricts this pool to be only used for the client
// requests belonging to a particular client class.
"client-class": "phones_server1",
// Pool level list of DHCP options.
"option-data": [],
// Address range used for client assignments.
"pool": "192.1.0.1 - 192.1.0.200",
// List of client classes which must be evaluated when this pool
// is selected for client assignments.
"require-client-classes": [ "late" ]
},
{
// Restricts this pool to be only used for the client
// requests belonging to a particular client class.
"client-class": "phones_server2",
// Pool level list of DHCP options.
"option-data": [],
// Address range used for client assignments.
"pool": "192.3.0.1 - 192.3.0.200",
// List of client classes which must be evaluated when this pool
// is selected for client assignments.
"require-client-classes": []
}
],
// Subnet level value of the rebind timer.
"rebind-timer": 40,
// List of IPv4 relay addresses for which this subnet is
// selected.
"relay": {
"ip-addresses": [
"192.168.56.1"
]
},
// Subnet level value of the renew timer.
"renew-timer": 30,
// Enumeration specifying server's mode of operation when it
// fetches host reservations.
"reservation-mode": "all",
// List of static IPv4 reservations assigned to the clients belonging
// to this subnet. For detailed example see reservations.json.
"reservations": [
{
// Identifier used for client matching. Supported values are
// "hw-address", "client-id", "duid", "circuit-id", "flex-id".
"circuit-id": "01:11:22:33:44:55:66",
// Reserved IP address.
"ip-address": "192.0.2.204",
// Reservation specific option data.
"option-data": [
{
// Option name.
"name": "vivso-suboptions",
// Option data.
"data": "4491"
}
]
}
],
// List of client classes which must be evaluated when this subnet
// is selected for client assignments.
"require-client-classes": [ "late" ],
// Subnet level server hostname set in 'sname' field.
"server-hostname": "",
// Subnet prefix.
"subnet": "192.0.0.0/8",
// Subnet level valid lifetime.
"valid-lifetime": 6000
}
],
// Shared network level valid lifetime.
"valid-lifetime": 6001
}
],
// Global server hostname set in the 'sname' field.
"server-hostname": "",
// List of IPv4 subnets which don't belong to any shared network.
"subnet4": [],
// Global valid lifetime value.
"valid-lifetime": 6000,
// Reservations (examples are in other files).
"reservations": [],
// Configuration control (currently not used, i.e. this syntax
// is already defined but corresponding feature is not implemented).
"config-control":
{
// Only configuration databases entry is defined.
"config-databases": [
{
// Name of the database to connect to.
"name": "config",
// Type of the database, e.g. "mysql", "pgsql", "cql".
"type": "mysql"
}
]
},
// Server tag.
"server-tag": "my DHCPv4 server",
// DHCP queue control parameters.
"dhcp-queue-control":
{
// Enable queue is mandatory.
"enable-queue": true,
// Queue type was mandatory.
"queue-type": "kea-ring4"
},
// Fetches host reservations.
"reservation-mode": "all",
// Compute T1 and T2 timers.
"calculate-tee-times": true,
// T1 = valid lifetime * .5.
"t1-percent": .5,
// T2 = valid lifetime * .75.
"t2-percent": .75
},
// Logging configuration begins here.
"Logging": {
// 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 debug log.
"debuglevel": 99,
// Name of the logger.
"name": "kea-dhcp4",
// Configures how the log should be output.
"output_options": [
{
// Determines whether the log should flushed to a file.
"flush": true,
// Specifies maximum filesize before the file is being rotated.
"maxsize": 10240000,
// Specifies the maximum number of rotated files being kept.
"maxver": 1,
// Specifies logging destination.
"output": "stdout"
}
],
// Specifies logging severity, i.e. "ERROR", "WARN", "INFO", "DEBUG".
"severity": "INFO"
}
]
}
}

View File

@@ -5,6 +5,9 @@
// The primary purpose of the example file is to provide a comprehensive
// list of parameters supported by Kea DHCPv4 server along with the brief
// description of each parameter.
//
// This stable version is used for YANG as we do not want to update code
// and models each time a keyword is added to the syntax.
{
// Kea DHCPv4 server configuration begins here.
"Dhcp4": {

View File

@@ -0,0 +1,697 @@
// WARNING: This example configuration is not meant for production use.
// The Kea DHCPv6 server will refuse this configuration because it contains
// mutually exclusive configuration parameters.
//
// The primary purpose of the example file is to provide a comprehensive
// list of parameters supported by Kea DHCPv6 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 than in the syntax.
{
// Kea DHCPv6 server configuration begins here.
"Dhcp6": {
// Ordered list of client classes used by the DHCPv6 server.
"client-classes": [
{
// Class name.
"name": "phones_server1",
// Class specific DHCPv6 options list.
"option-data": [],
// Class selection expression. The DHCP packet is assigned to this
// class when the given expression evaluates to true.
"test": "member('HA_server1')"
},
{
// Second class name.
"name": "phones_server2",
// Class specific DHCPv6 options list.
"option-data": [],
// Class selection expression. The DHCP packet is assigned to this
// class when the given expression evaluates to true.
"test": "member('HA_server2')"
},
{
// Third class name.
"name": "late",
// Boolean flag indicating that the class expression is only evaluated
// when the class is required, e.g. selected address pool configuration
// includes this class name in its "require-client-classes" list. The
// default value false means that the class test expression must
// always be evaluated.
"only-if-required": true,
// Class selection expression.
"test": "member('ALL')"
}
],
// Command control socket configuration parameters for Kea DHCPv6 server.
"control-socket": {
// Location of the unix domain socket file the DHCPv6 server uses
// to receive control commands from the Kea Control Agent or the
// local server administrator.
"socket-name": "/tmp/kea-dhcp6-ctrl.sock",
// Control socket type used by the Kea DHCPv6 server. The 'unix'
// socket is currently the only supported type.
"socket-type": "unix"
},
// Time in seconds specifying how long a declined lease should be
// excluded from DHCP assignments. The default value is 24 hours.
"decline-probation-period": 86400,
// Name Change Requests forwarding configuration for Kea DHCPv6 server.
// NCRs are sent to Kea D2 module to update DNS upon allocation of the
// DHCP leases.
"dhcp-ddns": {
// Boolean flag indicating if Kea DHCPv6 server must generate NCRs.
// By default NCRs are not generated.
"enable-updates": false,
// Specifies a prefix to be prepended to the generated Client FQDN.
"generated-prefix": "myhost",
// String of zero or more characters with which to replace each
// invalid character in the hostname or Client FQDN. The default
// value is an empty string which will cause invalid characters
// to be omitted rather than replaced.
"hostname-char-replacement": "x",
// Regular expression describing the invalid character set in
// the hostname or Client FQDN.
"hostname-char-set": "[^A-Za-z0-9.-]",
// Specifies maximum number of NCRs to queue waiting to be sent
// to Kea D2 server.
"max-queue-size": 1024,
// Packet format to use when sending NCRs to Kea D2 server.
// Currently, only JSON format is supported.
"ncr-format": "JSON",
// Socket protocol to use when sending NCRs to D2. Currently,
// only UDP is supported.
"ncr-protocol": "UDP",
// Boolean flag indicating that server should ignore DHCP client
// wishes to update DNS on its own. With that flag set to true
// the server will send DNS updates for both forward and
// reverse DNS data. The default value is false, which indicates
// that the server will delegate DNS update to the client when
// requested.
"override-client-update": false,
// Boolean flag indicating that the server should override DHCP
// client's wish to not update the DNS. With this parameter
// set to true the server will send DNS update even when
// the client requested no update.
"override-no-update": false,
// Suffix appended to the partial name sent to the DNS. The
// default value is an empty string which indicates that no
// suffix is appended.
"qualifying-suffix": "",
// Enumeration specifying whether the server should honor
// hostname or Client FQDN sent by the client or replace
// this name. The acceptable values are: "never" (use the
// name the client sent), "always" (replace the name the
// client sent), "when-present" (replace the name the client
// sent, but do not generate one when the client didn't sent
// the name), "when-not-present" (generate the name when
// client didn't send one, otherwise leave the name the
// client sent). The default value is "never".
"replace-client-name": "never",
// IP address that Kea DHCPv6 server should use to send
// NCRs to D2. Default value of zero indicates that Kea
// should pick suitable address.
"sender-ip": "::1",
// Port number that Kea DHCPv6 server should use to send
// NCRs to D2. Default value of zero indicates that Kea
// should pick suitable port.
"sender-port": 0,
// IP address on which D2 listens for NCRs.
"server-ip": "::1",
// Port number on which D2 listens for NCRs.
"server-port": 53001
},
// Specifies the first of the two consecutive ports of the UDP
// sockets used for communication between DHCPv6 and DHCPv4
// servers. See RFC 7341.
"dhcp4o6-port": 0,
// Collection of Kea DHCPv6 server parameters configuring how
// the server should process expired DHCP leases.
"expired-leases-processing": {
// Specifies the number of seconds since last removal of
// the expired leases when next removal should occur.
"flush-reclaimed-timer-wait-time": 25,
// Specifies the time period in seconds to keep expired
// leases in the lease database (lease affinity).
"hold-reclaimed-time": 3600,
// Specifies the maximum number of expired leases that can be
// processed in a single attempt to clean up the lease
// database from the expired leases. If there are more
// expired leases, they will be processed during the next
// cleanup attempt.
"max-reclaim-leases": 100,
// Specifies the maximum time in milliseconds that the single
// attempt to cleanup the lease database from the expired
// leases may take.
"max-reclaim-time": 250,
// Specifies the time period in seconds since last attempt
// to process expired leases to initiate the next attempt.
"reclaim-timer-wait-time": 10,
// Specifies the maximum number of expired leases processing
// cycles which didn't result in full cleanup of the lease
// database from the expired leases, after which a
// warning message is issued.
"unwarned-reclaim-cycles": 5
},
// List of hooks libraries and their specific configuration parameters
// to be loaded by Kea DHCPv4 server.
"hooks-libraries": [
{
// Location of the hooks library to be loaded.
"library": "/opt/lib/hooks/libdhcp_lease_cmds.so",
// Hook library specific configuration parameters.
"parameters": { }
}
],
// List of access credentials to external sources of IPv6 reservations,
"hosts-databases": [
{
// Name of the database to connect to.
"name": "kea",
// Host on which the database resides.
"host": "localhost",
// Database password.
"password": "kea",
// Port on which the database is available.
"port": 3306,
// Type of the database, e.g. "mysql", "pgsql", "cql".
"type": "mysql",
// User name to be used to access the database.
"user": "kea"
}
],
// List of host reservation identifier types to be used by the
// Kea DHCPv6 server to fetch static reservations for the
// DHCP clients. All identifiers are used by default, which
// means that the server will issue multiple queries to the
// database to find if there is a reservation for the particular
// client. If the particular deployment uses only subset, e.g.
// one, identifier type, this identifier should be only listed
// here to prevent unnecessary queries to the database.
"host-reservation-identifiers": [
"hw-address",
"duid",
"flex-id"
],
// Specifies configuration of interfaces on which the Kea DHCPv6
// server is listening to the DHCP queries.
"interfaces-config": {
// Specifies a list of interfaces on which the Kea DHCPv6
// server should listen to the DHCP requests.
"interfaces": [
"ethX"
],
// Boolean flag indicating if the available interfaces should
// be re-detected upon server reconfiguration. The default value
// is true which means that the interfaces are always
// re-detected.
"re-detect": true
},
// Specifies credentials to access lease database.
"lease-database": {
// memfile backend specific parameter specifying the interval
// in seconds at which lease file should be cleaned up (outdated
// lease entries are removed to prevent lease file from growing
// infinitely).
"lfc-interval": 3600,
// Name of the lease file. In case of database it specifies the
// database name.
"name": "/tmp/kea-dhcp6.csv",
// memfile specific parameter indicating whether leases should
// be saved on persistent storage (disk) or not. The true value
// is the default and it indicates that leases are stored in the
// persistent storage. This setting must be used in production.
// The false value should only be used for testing purposes
// because non stored leases will be lost upon Kea server restart.
"persist": true,
// Lease database backend type, i.e. "memfile", "mysql", "pgsql"
// or "cql".
"type": "memfile"
},
// List of parameters indicating how the client's MAC address can be
// inferred from the DHCP query. Supported values are listed in the
// Kea Administrator Reference Manual.
"mac-sources": [ "duid" ],
// List of global DHCP options that Kea DHCPv6 server assigns to the
// clients.
"option-data": [
{
// Boolean flag indicating if the given option is always
// send in response or only when requested. The default
// value of false indicates that it is only sent when
// requested.
"always-send": false,
// Option code. It is not required if the option name is
// provided.
"code": 23,
// Boolean value indicating whether the option data specified
// in the "data" field is specified as a string of hexadecimal
// digits or in human readable CSV format.
"csv-format": true,
// Option data to be stored in the option payload.
"data": "2001:db8:2::45, 2001:db8:2::100",
// Option name. It is not required of the option code is
// provided.
"name": "dns-servers",
// Option space. The default is the "dhcp6" option space which
// groups top level DHCPv6 options.
"space": "dhcp6"
}
],
// List of global option definitions, i.e. option formats, that the
// Kea DHCPv6 server is using.
"option-def": [
{
// Boolean flag indicating if the option definition comprises
// an array of values of some type, e.g. array of IPv6 addresses.
// The default value of false means that the option does not
// comprise an array of values.
"array": false,
// Option code.
"code": 6,
// Holds a name of the option space encapsulated by this option.
// All options that belong to this option space will be sent
// as sub-options of this option. Empty string means that this
// option doesn't encapsulate any option.
"encapsulate": "",
// Option name.
"name": "my-option",
// Specifies the types of fields within the option if the option
// is said to be a "record" (see "type"). in this particular example
// this option comprises two fields, 1 byte and 2 bytes long.
"record-types": "uint8, uint16",
// Name of the option space to which this option belongs.
"space": "my-space",
// Option type. All possible types are listed in the Kea
// Administrator Reference Manual.
"type": "record"
}
],
// Global value of the preferred lifetime.
"preferred-lifetime": 50,
// Global value for the rebind timer, i.e. the time after which the
// DHCP client enters rebind state if it fails to renew the lease.
"rebind-timer": 40,
// List of relay supplied option codes. See RFC 6422.
"relay-supplied-options": [ "110", "120", "130" ],
// Global value for the renew timer, i.e. the timer after which the
// DHCP client renews the lease.
"renew-timer": 30,
// Governs how the Kea DHCPv6 server should deal with the invalid
// data received from the client.
"sanity-checks": {
// Specifies how the Kea DHCPv6 server should behave when invalid
// data is read for a lease from the lease file. The following
// values are supported "none" (don't attempt to correct the
// lease information), "warn" (print a warning for subnet-id
// related inconsistencies), "fix" (correct the subnet id by
// trying to find the suitable subnet), "fix-del" (similar
// to "fix" but delete the lease if no suitable subnet found),
// "del" (delete the lease if the lease has invalid subnet
// identifier value).
"lease-checks": "warn"
},
// Custom DUID used by the DHCPv6 server.
"server-id": {
// Type of the DUID. Possible values are "LLT", "EN", and "LL".
"type": "EN",
// Enterprise id used for "EN" duid.
"enterprise-id": 2495,
// Identifier part of the DUID.
"identifier": "0123456789",
// Boolean flag indicating if the DUID should be persisted on
// disk.
"persist": false
},
// List of shared networks used by Kea DHCPv6 server. The shared
// networks group subnets together.
"shared-networks": [
{
// Restricts this shared network to allow only clients
// that belong to the particular client class. If an
// empty string is provided, no restriction is applied.
"client-class": "",
// Specifies that this shared network is selected for the
// requests received on the particular interface.
"interface": "ethX",
// Specifies the content of the interface-id option used
// by relays to identify the interface on the relay to
// which the response is sent.
"interface-id": "",
// Shared network name.
"name": "my-secret-network",
// List of shared network specific DHCP options.
"option-data": [],
// Shared network specific preferred lifetime.
"preferred-lifetime": 2000,
// Boolen flag indicating if the server can respond to
// a Solicit message including a Rapid Commit option with
// the Reply message (See DHCPv6 rapid commit).
"rapid-commit": false,
// List of IPv6 relay addresses for which this shared
// network is selected.
"relay": {
"ip-addresses": []
},
// Shared network level rebind timer.
"rebind-timer": 41,
// Shared network level renew timer.
"renew-timer": 31,
// Enumeration specifying server's mode of operation when it
// fetches host reservations.
"reservation-mode": "all",
// List of client classes which must be evaluated when this shared
// network is selected for client assignments.
"require-client-classes": [ "late" ],
// List of IPv6 subnets belonging to this shared network.
"subnet6": [
{
// Restricts this subnet to allow only clients that belong
// to the particular client class. If an empty string is
// provided, no restriction is applied.
"client-class": "",
// Subnet unique identifier.
"id": 1,
// Specifies that this subnet is selected for the requests
// received on the particular interface.
"interface": "ethX",
// Specifies the content of the interface-id option used
// by relays to identify the interface on the relay to
// which the response is sent.
"interface-id": "",
// Subnet level list of DHCP options.
"option-data": [
{
// Boolean flag indicating if the particular option
// should be always sent or sent only when requested.
"always-send": false,
// Option code.
"code": 7,
// Boolean flag indicating if the option value specified
// in "data" is a string of hexadecimal values or human
// readable CSV value.
"csv-format": false,
// Option data to be included in the option payload.
"data": "0xf0",
// Option name.
"name": "preference",
// Option space. The default value "dhcp6" designates the
// top level option space.
"space": "dhcp6"
}
],
// List of pools from which delegated prefixes are assigned to the
// clients.
"pd-pools": [
{
"client-class": "phones_server1",
"delegated-len": 64,
"excluded-prefix": "2001:db8::",
"excluded-prefix-len": 48,
"option-data": [],
"prefix": "2001:db8::",
"prefix-len": 40,
"require-client-classes": []
}
],
"pools": [
{
// Restricts this pool to be only used for the client
// requests belonging to a particular client class.
"client-class": "phones_server1",
// Pool level list of DHCP options.
"option-data": [],
// Address range used for client assignments.
"pool": "2001:db8:0:1::/64",
// List of client classes which must be evaluated when this pool
// is selected for client assignments.
"require-client-classes": [ "late" ]
},
{
// Restricts this pool to be only used for the client
// requests belonging to a particular client class.
"client-class": "phones_server2",
// Pool level list of DHCP options.
"option-data": [],
// Address range used for client assignments.
"pool": "2001:db8:0:3::/64",
// List of client classes which must be evaluated when this pool
// is selected for client assignments.
"require-client-classes": []
}
],
// Subnet specific preferred lifetime.
"preferred-lifetime": 2000,
// Boolen flag indicating if the server can respond to
// a Solicit message including a Rapid Commit option with
// the Reply message (See DHCPv6 rapid commit).
"rapid-commit": false,
// Subnet level rebind timer.
"rebind-timer": 40,
// List of IPv4 relay addresses for which this subnet
// is selected.
"relay": {
"ip-addresses": [
"2001:db8:0:f::1"
]
},
// Subnet level renew timer.
"renew-timer": 30,
// Enumeration specifying server's mode of operation when it
// fetches host reservations.
"reservation-mode": "all",
// List of static IPv6 reservations assigned to the clients belonging
// to this subnet. For detailed example see reservations.json.
"reservations": [
{
// Identifier used for client matching. Supported values are
// "duid", "hw-address" and "flex-id".
"duid": "01:02:03:04:05:06:07:08:09:0A",
// List of reserved IPv6 addresses.
"ip-addresses": [ "2001:db8:1:cafe::1" ],
// List of reserved IPv6 prefixes.
"prefixes": [ "2001:db8:2:abcd::/64" ],
// Reserved hostname.
"hostname": "foo.example.com",
// Reservation specific option data.
"option-data": [
{
// Option name.
"name": "vendor-opts",
// Option value.
"data": "4491"
}
]
}
],
// List of client classes which must be evaluated when this subnet
// is selected for client assignments.
"require-client-classes": [ "late" ],
// Subnet prefix.
"subnet": "2001:db8::/32",
// Subnet level valid lifetime.
"valid-lifetime": 6000
}
],
// Shared network level valid lifetime.
"valid-lifetime": 6001
}
],
// List of IPv6 subnets which don't belong to any shared network.
"subnet6": [],
// Global valid lifetime value.
"valid-lifetime": 6000,
// Reservations (examples are in other files).
"reservations": [],
// Configuration control (currently not used, i.e. this syntax
// is already defined but corresponding feature is not implemented).
"config-control":
{
// Only configuration databases entry is defined.
"config-databases": [
{
// Name of the database to connect to.
"name": "config",
// Type of the database, e.g. "mysql", "pgsql", "cql".
"type": "mysql"
}
]
},
// Server tag.
"server-tag": "my DHCPv6 server",
// DHCP queue control parameters.
"dhcp-queue-control":
{
// Enable queue is mandatory.
"enable-queue": true,
// Queue type was mandatory.
"queue-type": "kea-ring6"
},
// Fetches host reservations.
"reservation-mode": "all",
// Data directory.
"data-directory": "/tmp"
},
// Logging configuration begins here.
"Logging": {
// 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 debug log.
"debuglevel": 99,
// Name of the logger.
"name": "kea-dhcp6",
// Configures how the log should be output.
"output_options": [
{
// Determines whether the log should flushed to a file.
"flush": true,
// Specifies maximum filesize before the file is being rotated.
"maxsize": 10240000,
// Specifies the maximum number of rotated files being kept.
"maxver": 1,
// Specifies logging destination.
"output": "stdout"
}
],
// Specifies logging severity, i.e. "ERROR", "WARN", "INFO", "DEBUG".
"severity": "INFO"
}
]
}
}

View File

@@ -5,6 +5,9 @@
// The primary purpose of the example file is to provide a comprehensive
// list of parameters supported by Kea DHCPv6 server along with the brief
// description of each parameter.
//
// This stable version is used for YANG as we do not want to update code
// and models each time a keyword is added to the syntax.
{
// Kea DHCPv6 server configuration begins here.
"Dhcp6": {
@@ -645,7 +648,6 @@
// Queue type was mandatory.
"queue-type": "kea-ring6"
}
// missing data-directory
},
// Logging configuration begins here.

View File

@@ -264,7 +264,7 @@ void testFile(const std::string& fname) {
// the second time with Parser4. Both JSON trees are then compared.
TEST(ParserTest, file) {
vector<string> configs = { "advanced.json" ,
"all-keys.json",
"all-keys-current.json",
"backends.json",
"cassandra.json",
"classify.json",

View File

@@ -270,7 +270,7 @@ void testFile(const std::string& fname) {
TEST(ParserTest, file) {
vector<string> configs;
configs.push_back("advanced.json");
configs.push_back("all-keys.json");
configs.push_back("all-keys-current.json");
configs.push_back("backends.json");
configs.push_back("cassandra.json");
configs.push_back("classify.json");

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2018 Internet Systems Consortium, Inc. ("ISC")
// Copyright (C) 2018-2019 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -62,7 +62,7 @@ void testFile(const std::string& fname, bool v6, ElementPtr& result) {
TEST_F(AdaptorConfigTest, loadExamples4) {
vector<string> configs = { "advanced.json",
"all-keys.json",
"all-keys-stable.json",
"backends.json",
"cassandra.json",
"classify.json",
@@ -92,7 +92,7 @@ TEST_F(AdaptorConfigTest, loadExamples4) {
TEST_F(AdaptorConfigTest, loadExamples6) {
vector<string> configs = { "advanced.json",
"all-keys.json",
"all-keys-stable.json",
"backends.json",
"cassandra.json",
"classify.json",

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2018 Internet Systems Consortium, Inc. ("ISC")
// Copyright (C) 2018-2019 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -328,7 +328,7 @@ TEST_F(ConfigTest, examples4) {
vector<string> examples = {
"advanced.json",
"all-keys.json",
"all-keys-stable.json",
"backends.json",
"cassandra.json",
"classify.json",
@@ -366,7 +366,7 @@ TEST_F(ConfigTest, examples6) {
vector<string> examples = {
"advanced.json",
"all-keys.json",
"all-keys-stable.json",
"backends.json",
"cassandra.json",
"classify.json",