From: Francis Dupont Date: Sun, 31 Dec 2017 13:25:23 +0000 (+0100) Subject: [master] Updated control socket toElement (post-merge) X-Git-Tag: trac5494_base X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=126e683fc7fbbe3cb00896c04425f110fbce0c1f;p=thirdparty%2Fkea.git [master] Updated control socket toElement (post-merge) --- diff --git a/src/bin/dhcp4/tests/get_config_unittest.cc b/src/bin/dhcp4/tests/get_config_unittest.cc index e6550ee1e7..06056faedb 100644 --- a/src/bin/dhcp4/tests/get_config_unittest.cc +++ b/src/bin/dhcp4/tests/get_config_unittest.cc @@ -1659,11 +1659,9 @@ const char* EXTRACTED_CONFIGS[] = { " }\n" " ],\n" " \"control-socket\": {\n" +" \"comment\": \"Indirect comment\",\n" " \"socket-name\": \"/tmp/kea4-ctrl-socket\",\n" -" \"socket-type\": \"unix\",\n" -" \"user-context\": {\n" -" \"comment\": \"Indirect comment\"\n" -" }\n" +" \"socket-type\": \"unix\"\n" " },\n" " \"dhcp-ddns\": {\n" " \"comment\": \"No dynamic DNS\",\n" @@ -6404,11 +6402,9 @@ const char* UNPARSED_CONFIGS[] = { " }\n" " ],\n" " \"control-socket\": {\n" +" \"comment\": \"Indirect comment\",\n" " \"socket-name\": \"/tmp/kea4-ctrl-socket\",\n" -" \"socket-type\": \"unix\",\n" -" \"user-context\": {\n" -" \"comment\": \"Indirect comment\"\n" -" }\n" +" \"socket-type\": \"unix\"\n" " },\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" diff --git a/src/bin/dhcp6/tests/get_config_unittest.cc b/src/bin/dhcp6/tests/get_config_unittest.cc index 19286b5ed0..24b3529bfc 100644 --- a/src/bin/dhcp6/tests/get_config_unittest.cc +++ b/src/bin/dhcp6/tests/get_config_unittest.cc @@ -1529,11 +1529,9 @@ const char* EXTRACTED_CONFIGS[] = { " }\n" " ],\n" " \"control-socket\": {\n" +" \"comment\": \"Indirect comment\",\n" " \"socket-name\": \"/tmp/kea6-ctrl-socket\",\n" -" \"socket-type\": \"unix\",\n" -" \"user-context\": {\n" -" \"comment\": \"Indirect comment\"\n" -" }\n" +" \"socket-type\": \"unix\"\n" " },\n" " \"dhcp-ddns\": {\n" " \"comment\": \"No dynamic DNS\",\n" @@ -6002,11 +6000,9 @@ const char* UNPARSED_CONFIGS[] = { " }\n" " ],\n" " \"control-socket\": {\n" +" \"comment\": \"Indirect comment\",\n" " \"socket-name\": \"/tmp/kea6-ctrl-socket\",\n" -" \"socket-type\": \"unix\",\n" -" \"user-context\": {\n" -" \"comment\": \"Indirect comment\"\n" -" }\n" +" \"socket-type\": \"unix\"\n" " },\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" diff --git a/src/lib/dhcpsrv/srv_config.cc b/src/lib/dhcpsrv/srv_config.cc index 0f17fcf5ed..fef466d19f 100644 --- a/src/lib/dhcpsrv/srv_config.cc +++ b/src/lib/dhcpsrv/srv_config.cc @@ -363,7 +363,23 @@ SrvConfig::toElement() const { } // Set control-socket (skip if null as empty is not legal) if (!isNull(control_socket_)) { - dhcp->set("control-socket", control_socket_); + ElementPtr csocket = isc::data::copy(control_socket_); + ConstElementPtr ctx = csocket->get("user-context"); + // Protect against not map + if (ctx && (ctx->getType() != Element::map)) { + ctx.reset(); + } + // Extract comment + if (ctx && ctx->contains("comment")) { + ElementPtr ctx_copy = isc::data::copy(ctx); + csocket->set("comment", ctx_copy->get("comment")); + ctx_copy->remove("comment"); + csocket->remove("user-context"); + if (ctx_copy->size() > 0) { + csocket->set("user-context", ctx_copy); + } + } + dhcp->set("control-socket", csocket); } // Set client-classes ConstElementPtr client_classes = class_dictionary_->toElement();