]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[master] Finishing merge of trac3389a (re-detect interfaces)
authorFrancis Dupont <fdupont@isc.org>
Wed, 5 Jul 2017 12:52:54 +0000 (14:52 +0200)
committerFrancis Dupont <fdupont@isc.org>
Wed, 5 Jul 2017 12:52:54 +0000 (14:52 +0200)
18 files changed:
1  2 
ChangeLog
doc/examples/kea4/advanced.json
doc/examples/kea6/advanced.json
doc/guide/dhcp4-srv.xml
doc/guide/dhcp6-srv.xml
src/bin/dhcp4/dhcp4_lexer.ll
src/bin/dhcp4/dhcp4_parser.yy
src/bin/dhcp4/json_config_parser.cc
src/bin/dhcp4/tests/ctrl_dhcp4_srv_unittest.cc
src/bin/dhcp4/tests/dhcp4_test_utils.h
src/bin/dhcp4/tests/get_config_unittest.cc
src/bin/dhcp6/dhcp6_lexer.ll
src/bin/dhcp6/dhcp6_parser.yy
src/bin/dhcp6/json_config_parser.cc
src/bin/dhcp6/tests/ctrl_dhcp6_srv_unittest.cc
src/bin/dhcp6/tests/dhcp6_test_utils.h
src/lib/dhcpsrv/parsers/ifaces_config_parser.cc
src/lib/dhcpsrv/tests/srv_config_unittest.cc

diff --cc ChangeLog
index 4d205a94ca7430ae4a6e3a3259fb123200d0cfb7,efdcae8e651cda93110bc17b71d9e38d9194c2da..59bdb8798f7a1e35bf1a34f1438ee85d03cbe65e
+++ b/ChangeLog
++1268. [func]          fdupont
++      Kea now re-detects network interfaces every time configuration is
++      changed. 're-detect' parameter added to restore old behavior, if
++        needed.
++      (Trac #3389, git xxx)
++
 +1267. [bug]           fdupont
 +      Unit-tests for libdhcp now ignore ENOPROTOPT when setting
 +      SO_REUSEPORT to improve compatibility with older RedHat versions.
 +      (Trac #5243, git a7b478e1d1f7f0b38055086fe9ac053e4fab2850)
 +
 +1266. [func]          fdupont
 +      It is now possible to define options in DHCPv4 pools.
 +      (Trac #5288, git aa2839caab8d885e5bceca6f506162debd239b3f)
 +
 +1265. [func]          fdupont
 +      Extended classification relay6[nest] syntax to allows counting
 +      relays from the DHCPv6 client side by using negative number,
 +      e.g. relay6[-1] represents the first relay (closest to the
 +      client).
 +      (Trac #5287, git 7d0f7a8372dcf256fea8ac13330f0e3e7ed2e8ef)
 +
 +1264. [func]          marcin
 +      Kea's command manager has been re-implemented to use ASIO.
 +      Simultaneous connections over the control channel are now
 +      possible.
 +      (Trac #5317, git 4139a2f41bb3736615bdfa278746962a16384d0d)
 +
 +1263. [doc]           marcin
 +      Added example configurations of the nginx and Apache2 HTTPS
 +      servers running as reverse proxy for Kea RESTful API.
 +      (Trac #5302, git 48113aba218603afac4d457075458d4988e4082b)
 +      (Trac #5303, git b3113da16eb5c6fa323068f0a57dfa30f42893d2)
 +
 +1262. [func]*         marcin
 +      Renamed "dhcp4-server", "dhcp6-server" and "d2-server" parameters
 +      of the Control Agent configuration to "dhcp4", "dhcp6" and "d2"
 +      respectively.
 +      (Trac #5190, git fc67885022115df76425c6901959cedee63a93b9)
 +
 +1261. [bug]           marcin
 +      Eliminated valgrind errors in libkea-http.
 +      (Trac #5261, git 34addef4a654665c6022f0269d51970c72431ac2)
 +
 +1260. [bug]           fdupont
 +      Corrected logic in prefix delegation that was causing multiple
 +      entries to be written to the lease file when renewing or rebinding
 +      a prefix.
 +      (Trac #5104, git b9ab6ebe7a491c062bc8b0b42afc53f4d6cee011)
 +
 +1259. [func]          marcin
 +      Implemented timeout for the control commands forwarded between
 +      the Control Agent and Kea servers. The enhanced forwarding
 +      mechanism uses asynchronous calls over the unix domain sockets.
 +      It also detects the JSON structure boundaries when receiving it
 +      over the stream sockets.
 +      (Trac #5189, git e48d9399c215406f2dab1601d22d6c932b4af271)
 +
 +1258. [bug]           fdupont
 +      Fixed wrong python package path when kea-shell was configured
 +      without a prefix.
 +      (Trac #5214, git 44908c5fa56bfa7e1113078f43c458687a97388a)
 +
 +Kea 1.2.0 released on April 28, 2017
 +
 +1257. [bug]           marcin
 +      Improved logging in the hosts manager.
 +      (Trac #5264, git 2fb9fd78e63f5d09810702847ad3e3b3020ea92b)
 +
 +1256. [bug]           tomek
 +      Control Agent now writes proper configuration when using
 +      config-write command.
 +      (Trac #5253, git a1b5da4db6ebfa9635bbe411ec363cdcc4fd1d28)
 +
 +1255. [bug]           marcin
 +      Fixed failing unit tests in libkea-http.
 +      (Trac #5260, git 43394f76efb1634155c04b205dec7361fc21f4f9)
 +
 +1254. [func]          tomek
 +      Various improvements needed for upcoming host commands library:
 +      host data source is now able to delete hosts, hosts can be exported
 +      to JSON format, C++11 code for configure script moved to separate
 +      file, several compilation warnings removed.
 +      (Trac #5208, git 88555d8f23745f3d615448e906796920cc7f44d0)
 +
 +1253. [func,doc]      tomek
 +      Default configuration file has been overhauled significantly. It
 +      now covers many additional options and features. Command channel
 +      is now enabled by default. Thanks to Dan Mahoney for his review.
 +      (Trac #5198, git 280de81cfe957ccab8a28074bdb0a4bc0e45104e)
 +
 +1252. [bug]           tmark
 +      kea-dhcp6 now correctly resets lease state and increments the
 +      assigned statistic when it reissues an expired-reclaimed lease
 +      to the lease's original client, in response to a REQUEST from
 +      said client.
 +      (Trac #5252, git 85bde7adbe6a78238bd5e17fecabfa918755f16c)
 +
 +1251. [func]          tomek
 +      New type of host identifier (flex-id) used in reservations has
 +      by added to MySQL and PostgreSQL schemas.
 +      (Trac #5195, git 37c26cc30b717019fbd6b7349279541edb351382)
 +
 +1250. [bug]           fdupont
 +      Do not unregister timers when running the config-test command.
 +      (Trac #5186, git e891b06940e41b4cfaa324c2ace8fdd761ee6662)
 +
 +1249. [bug]           tmark
 +      The assigned lease statistics were not being probably adjusted
 +      by either kea-dhcp4 or kea-dhcp6 when reclaimed expired leases
 +      were reissued.
 +      (Trac #5247, git 4e5193fb32b14325ccf5824614e58bcceb3e6388)
 +
 +1248. [bug]           marcin
 +      Improved socket connection handling code, corrected numerous
 +      failing and crashing tests for libkea-asiolink, libkea-http
 +      and kea-ctrl-agent on Debian, Fedora and Ubuntu.
 +      (Trac #5217, git 4bcb45f0c88aba3d0f70ca48d9fff6f1d4616bc2)
 +
 +1247. [bug]           marcin
 +      Resolved issues with DHCPv4 host reservations by 'client-id'
 +      when MySQL or PostgreSQL host database backend is in use.
 +      Also, the 'client-id' is used together with other host
 +      identifier types when 'host-reservation-identifiers' parameter
 +      is not specified.
 +      (Trac #5102, git 390d687d0f61635f5562d13860ff6362eee67853)
 +
 +1246. [func,bug]      tomek
 +      Restrictions in filename argument in config-write command have
 +      been removed. It is now possible to use absolute paths.
 +      DHCPv4, DHCPv6, D2 and Agent parsers did not handle flush,
 +      maxsize or maxver parameters in logger configuration correctly.
 +      This is now fixed.
 +      (Trac #5187, git a30ffcc67cfb7370c586d3c85147792e27aab4c7)
 +
 +1245. [func]          fdupont
 +      DHCPv4 domain-search option can now be defined using
 +      comma separated values.
 +      (Trac #5087, git eca0b8c6425bc922587675100f100b1aae54aee2)
 +
 +1244. [doc]           tomek
 +      User's Guide section about Kea shell added.
 +      (Trac #5171, git 3dc4908fe02e86c57ccd5ad2d2f8330655f438be)
 +
 +1243. [func]          tomek
 +      config-reload command implemented. It allows Kea DHCPv4 and DHCPv6
 +      servers to reload its original configuration file. Also,
 +      set-config command was renamed to config-set.
 +      (Trac #5213, git b209c2b577a2f9da71cc918d7a551f8efdc1c4cb)
 +
 +1242. [func]          fdupont
 +      Integer fields in options can now be specified in either
 +      decimal or hexadecimal format.
 +      (Trac #4540, git 4cbf341f4169cf1e1eae0721644797a726d89702)
 +
 +1241. [func]          fdupont
 +      Support for tuple-based options added. DHCPv6 option
 +      bootfile-param (code 60) can now be set in a more convenient
 +      manner.
 +      (Trac #4070, git 30102cacee95b91e6c4666f0c11f06232f19eeb9)
 +
 +1240. [bug]           marcin
 +      Corrected IOFetch unit test failures on Debian.
 +      (Trac #5216, git a7c2946678c43aedfb2e3c37b9730a10067528f3)
 +
 +1239. [func]          marcin
 +      Implemented additional sanity checks when adding host
 +      reservations into the configuration file.
 +      (Trac #5207, git ea42c6f479918235ae4a67a60d08720e2664720c)
 +
 +Kea 1.2.0-beta released on April 7, 2017
 +
 +1238. [build]         tmark,tomek
 +      Library version numbers bumped for release.
 +      (Trac #5201     git 58c9c5b705d72031c1589c30c542384a9d43e0f3)
 +
 +1237. [bug]           marcin
 +      Fixed hanging Control Agent unit tests.
 +      (Trac #5200, git 65daafd135965f9eb0bd4c3a22085d4bd3c6ffbe)
 +
 +1236. [build]         zeitounator
 +      Improvements in tools/tests_in_valgrind.sh script.
 +      (Github #49, git 272e7babf9ebeab5f78850394d72c9431041e2e9)
 +
 +1235. [func]          MrMarvin
 +      kea-admin now supports -h (and --host) parameter that can specify
 +      MySQL or PostgreSQL database locations other than the default
 +      localhost.
 +      (Github #14, git 4038157a3499ad90956c98a2172c57b173f2b985)
 +
 +1234. [build]         fdupont
 +      Improved installation procedure for kea-shell.
 +      (Trac #5170, git 68a902fb723965ee6f5b7a8272224395917525cc)
 +
 +1233. [doc]           marcin
 +      Documented new component Kea Control Agent in the Administrator's
 +      Manual and the Developer's Guide.
 +      (Trac #5175, git abf7887ad65eb4b221a1fe61ea0c9773b4feaddb)
 +
 +1232. [func]          tomek
 +      host4_identifier and host6_identifier hook points have been added.
 +      Premium: Flexible Identifier (flex-id) hook point has been developed.
 +      It allows users to specify a custom expression that takes any
 +      option, field, characteristic or property of the packet to be
 +      used as identifier and then do reservations based on the evaluated
 +      expression for each incoming packet.
 +      (Trac #5132, git cd497526d5bff7ae55bb41c9264fb33943a0cf62)
 +
 +1231. [func]          marcin
 +      Control agent forwards commands to be handled by other Kea
 +      servers.
 +      (Trac #5078, git 19a50ed1ccafae19ef10d84cba73992cadf49753)
 +
 +1230. [bug]           fdupont
 +      kea-dhcp-ddns now correctly populates the original ID in the TSIG rdata
 +      when doing signed updates.  Prior to this the value was set to zero
 +      causing PowerDNS to reject then requests with a bad key error.
 +      (Trac #5071, git cafa3d5c24f0112b0b9384a9c1083fe8a3eeb2bf)
 +
 +1229. [func]          fdupont
 +      A new command: config-test has been implemented in DHCPv4, DHCPv6
 +      and control agent servers. It allows checking whether new
 +      configuration looks correct.
 +      (Trac #5150, git 5f6cf226e848baef8d9af64e16c1dbf617a0a798)
 +
 +1228. [bug]           fdupont
 +      Logging on syslog now uses correctly the given facility. If none
 +      is given the default facility is local0, and with an unrecognized
 +      value user (log4cplus default). The syslog openlog() ident
 +      parameter is the program name.
 +      (Trac #5053, git 532d9f0e459ab1450a83a5015a2dd54745794383)
 +
 +1227. [func]          fdupont, tomek
 +      Additional commands: version-get, build-report have been
 +      implemented for DHCPv4, DHCPv6 and Control Agent
 +      components. Control Agent also now supports shutdown command.
 +      (Trac #102, git 9d2b8326fc032876d74c1768c61c630987c25cc5)
 +
  1226. [func]          fdupont
        Command line option -t support added to libprocess and implemented
        for kea-dhcp-ddns and kea-ctrl-agent. It allows configuration sanity
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index d0d93a1ed177e867ce9003bf1305ad1b24d7e385,26893d2ce184d17beccc256da3ab69f4a5f8177d..9ec7502bd3eed2fb1191eeba935937092631234c
@@@ -1582,9 -1515,10 +1582,10 @@@ const char* UNPARSED_CONFIGS[] = 
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ ]\n"
+ "            \"interfaces\": [ ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ ]\n"
+ "            \"interfaces\": [ ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ ]\n"
+ "            \"interfaces\": [ ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ ]\n"
+ "            \"interfaces\": [ ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ ]\n"
+ "            \"interfaces\": [ ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ ]\n"
+ "            \"interfaces\": [ ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ ]\n"
+ "            \"interfaces\": [ ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
 +"        \"interfaces-config\": {\n"
 +"            \"interfaces\": [ \"*\" ]\n"
 +"        },\n"
 +"        \"lease-database\": {\n"
 +"            \"type\": \"memfile\"\n"
 +"        },\n"
 +"        \"option-data\": [ ],\n"
 +"        \"option-def\": [ ],\n"
 +"        \"subnet4\": [\n"
 +"            {\n"
 +"                \"4o6-interface\": \"\",\n"
 +"                \"4o6-interface-id\": \"\",\n"
 +"                \"4o6-subnet\": \"\",\n"
 +"                \"id\": 1,\n"
 +"                \"interface\": \"\",\n"
 +"                \"match-client-id\": true,\n"
 +"                \"next-server\": \"0.0.0.0\",\n"
 +"                \"option-data\": [ ],\n"
 +"                \"pools\": [\n"
 +"                    {\n"
 +"                        \"option-data\": [\n"
 +"                            {\n"
 +"                                \"code\": 56,\n"
 +"                                \"csv-format\": false,\n"
 +"                                \"data\": \"ABCDEF0105\",\n"
 +"                                \"name\": \"dhcp-message\",\n"
 +"                                \"space\": \"dhcp4\"\n"
 +"                            },\n"
 +"                            {\n"
 +"                                \"code\": 23,\n"
 +"                                \"csv-format\": false,\n"
 +"                                \"data\": \"01\",\n"
 +"                                \"name\": \"default-ip-ttl\",\n"
 +"                                \"space\": \"dhcp4\"\n"
 +"                            }\n"
 +"                        ],\n"
 +"                        \"pool\": \"192.0.2.1-192.0.2.100\"\n"
 +"                    }\n"
 +"                ],\n"
 +"                \"rebind-timer\": 2000,\n"
 +"                \"relay\": {\n"
 +"                    \"ip-address\": \"0.0.0.0\"\n"
 +"                },\n"
 +"                \"renew-timer\": 1000,\n"
 +"                \"reservation-mode\": \"all\",\n"
 +"                \"reservations\": [ ],\n"
 +"                \"subnet\": \"192.0.2.0/24\",\n"
 +"                \"valid-lifetime\": 4000\n"
 +"            }\n"
 +"        ]\n"
 +"    }\n",
 +    // CONFIGURATION 31
 +"{\n"
 +"        \"decline-probation-period\": 86400,\n"
 +"        \"dhcp-ddns\": {\n"
 +"            \"always-include-fqdn\": false,\n"
 +"            \"enable-updates\": false,\n"
 +"            \"generated-prefix\": \"myhost\",\n"
 +"            \"max-queue-size\": 1024,\n"
 +"            \"ncr-format\": \"JSON\",\n"
 +"            \"ncr-protocol\": \"UDP\",\n"
 +"            \"override-client-update\": false,\n"
 +"            \"override-no-update\": false,\n"
 +"            \"qualifying-suffix\": \"\",\n"
 +"            \"replace-client-name\": \"never\",\n"
 +"            \"sender-ip\": \"0.0.0.0\",\n"
 +"            \"sender-port\": 0,\n"
 +"            \"server-ip\": \"127.0.0.1\",\n"
 +"            \"server-port\": 53001\n"
 +"        },\n"
 +"        \"dhcp4o6-port\": 0,\n"
 +"        \"echo-client-id\": true,\n"
 +"        \"expired-leases-processing\": {\n"
 +"            \"flush-reclaimed-timer-wait-time\": 25,\n"
 +"            \"hold-reclaimed-time\": 3600,\n"
 +"            \"max-reclaim-leases\": 100,\n"
 +"            \"max-reclaim-time\": 250,\n"
 +"            \"reclaim-timer-wait-time\": 10,\n"
 +"            \"unwarned-reclaim-cycles\": 5\n"
 +"        },\n"
 +"        \"hooks-libraries\": [ ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
 +"        \"interfaces-config\": {\n"
 +"            \"interfaces\": [ \"*\" ]\n"
 +"        },\n"
 +"        \"lease-database\": {\n"
 +"            \"type\": \"memfile\"\n"
 +"        },\n"
 +"        \"option-data\": [ ],\n"
 +"        \"option-def\": [ ],\n"
 +"        \"subnet4\": [\n"
 +"            {\n"
 +"                \"4o6-interface\": \"\",\n"
 +"                \"4o6-interface-id\": \"\",\n"
 +"                \"4o6-subnet\": \"\",\n"
 +"                \"id\": 1,\n"
 +"                \"interface\": \"\",\n"
 +"                \"match-client-id\": true,\n"
 +"                \"next-server\": \"0.0.0.0\",\n"
 +"                \"option-data\": [ ],\n"
 +"                \"pools\": [\n"
 +"                    {\n"
 +"                        \"option-data\": [\n"
 +"                            {\n"
 +"                                \"code\": 56,\n"
 +"                                \"csv-format\": false,\n"
 +"                                \"data\": \"ABCDEF0105\",\n"
 +"                                \"name\": \"dhcp-message\",\n"
 +"                                \"space\": \"dhcp4\"\n"
 +"                            }\n"
 +"                        ],\n"
 +"                        \"pool\": \"192.0.2.1-192.0.2.100\"\n"
 +"                    },\n"
 +"                    {\n"
 +"                        \"option-data\": [\n"
 +"                            {\n"
 +"                                \"code\": 23,\n"
 +"                                \"csv-format\": false,\n"
 +"                                \"data\": \"01\",\n"
 +"                                \"name\": \"default-ip-ttl\",\n"
 +"                                \"space\": \"dhcp4\"\n"
 +"                            }\n"
 +"                        ],\n"
 +"                        \"pool\": \"192.0.2.200-192.0.2.250\"\n"
 +"                    }\n"
 +"                ],\n"
 +"                \"rebind-timer\": 2000,\n"
 +"                \"relay\": {\n"
 +"                    \"ip-address\": \"0.0.0.0\"\n"
 +"                },\n"
 +"                \"renew-timer\": 1000,\n"
 +"                \"reservation-mode\": \"all\",\n"
 +"                \"reservations\": [ ],\n"
 +"                \"subnet\": \"192.0.2.0/24\",\n"
 +"                \"valid-lifetime\": 4000\n"
 +"            }\n"
 +"        ]\n"
 +"    }\n",
 +    // CONFIGURATION 32
 +"{\n"
 +"        \"decline-probation-period\": 86400,\n"
 +"        \"dhcp-ddns\": {\n"
 +"            \"always-include-fqdn\": false,\n"
 +"            \"enable-updates\": false,\n"
 +"            \"generated-prefix\": \"myhost\",\n"
 +"            \"max-queue-size\": 1024,\n"
 +"            \"ncr-format\": \"JSON\",\n"
 +"            \"ncr-protocol\": \"UDP\",\n"
 +"            \"override-client-update\": false,\n"
 +"            \"override-no-update\": false,\n"
 +"            \"qualifying-suffix\": \"\",\n"
 +"            \"replace-client-name\": \"never\",\n"
 +"            \"sender-ip\": \"0.0.0.0\",\n"
 +"            \"sender-port\": 0,\n"
 +"            \"server-ip\": \"127.0.0.1\",\n"
 +"            \"server-port\": 53001\n"
 +"        },\n"
 +"        \"dhcp4o6-port\": 0,\n"
 +"        \"echo-client-id\": true,\n"
 +"        \"expired-leases-processing\": {\n"
 +"            \"flush-reclaimed-timer-wait-time\": 25,\n"
 +"            \"hold-reclaimed-time\": 3600,\n"
 +"            \"max-reclaim-leases\": 100,\n"
 +"            \"max-reclaim-time\": 250,\n"
 +"            \"reclaim-timer-wait-time\": 10,\n"
 +"            \"unwarned-reclaim-cycles\": 5\n"
 +"        },\n"
 +"        \"hooks-libraries\": [ ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"eth0\", \"eth1\" ]\n"
+ "            \"interfaces\": [ \"eth0\", \"eth1\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\", \"eth0\", \"eth1\" ]\n"
+ "            \"interfaces\": [ \"*\", \"eth0\", \"eth1\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ ]\n"
+ "            \"interfaces\": [ ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 10\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
  "            \"unwarned-reclaim-cycles\": 5\n"
  "        },\n"
  "        \"hooks-libraries\": [ ],\n"
 -"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\" ],\n"
 +"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
  "        \"interfaces-config\": {\n"
- "            \"interfaces\": [ \"*\" ]\n"
+ "            \"interfaces\": [ \"*\" ],\n"
+ "            \"re-detect\": false\n"
  "        },\n"
  "        \"lease-database\": {\n"
  "            \"type\": \"memfile\"\n"
Simple merge
Simple merge
Simple merge
index a477fdefdbafdb0e215ca45fbe02ccc009a14291,d1b91aab8be2d0703be86896a60c8cc2a5d28f04..b16ae7826e7754398098901d23c3c4f343b281c8
@@@ -672,9 -574,10 +673,9 @@@ TEST_F(CtrlChannelDhcpv6SrvTest, config
      CfgMgr::instance().clear();
  }
  
 -
  typedef std::map<std::string, isc::data::ConstElementPtr> ElementMap;
  
- // This test checks which commands are registered by the DHCPv4 server.
+ // This test checks which commands are registered by the DHCPv6 server.
  TEST_F(CtrlDhcpv6SrvTest, commandsRegistration) {
  
      ConstElementPtr list_cmds = createCommand("list-commands");