}
}
+\"control-socket\" {
+ switch(driver.ctx_) {
+ case isc::d2::D2ParserContext::DHCPDDNS:
+ return isc::d2::D2Parser::make_CONTROL_SOCKET(driver.loc_);
+ default:
+ return isc::d2::D2Parser::make_STRING("control-socket", driver.loc_);
+}
+
+\"socket-type\" {
+ switch(driver.ctx_) {
+ case isc::d2::D2ParserContext::CONTROL_SOCKET
+ return isc::d2::D2Parser::make_SOCKET_TYPE(driver.loc_);
+ default:
+ return isc::d2::D2Parser::make_STRING("socket-type", driver.loc_);
+}
+
+\"socket-name\" {
+ switch(driver.ctx_) {
+ case isc::d2::D2ParserContext::CONTROL_SOCKET
+ return isc::d2::D2Parser::make_SOCKET_NAME(driver.loc_);
+ default:
+ return isc::d2::D2Parser::make_STRING("socket-name", driver.loc_);
+}
+
\"Logging\" {
switch(driver.ctx_) {
DIGEST_BITS "digest-bits"
SECRET "secret"
+ CONTROL_SOCKET "control-socket"
+ SOCKET_TYPE "socket-type"
+ SOCKET_NAME "socket-name"
+
LOGGING "Logging"
LOGGERS "loggers"
NAME "name"
| forward_ddns
| reverse_ddns
| tsig_keys
+ | control_socket
| user_context
| comment
| unknown_map_entry
// --- end of tsig-keys ---------------------------------
+// --- control socket ----------------------------------------
+
+control_socket: CONTROL_SOCKET {
+ ElementPtr m(new MapElement(ctx.loc2pos(@1)));
+ ctx.stack_.back()->set("control-socket", m);
+ ctx.stack_.push_back(m);
+ ctx.enter(ctx.CONTROL_SOCKET);
+} COLON LCURLY_BRACKET control_socket_params RCURLY_BRACKET {
+ ctx.stack_.pop_back();
+ ctx.leave();
+};
+
+control_socket_params: control_socket_param
+ | control_socket_params COMMA control_socket_param
+ ;
+
+control_socket_param: control_socket_type
+ | control_socket_name
+ | user_context
+ | comment
+ | unknown_map_entry
+ ;
+
+control_socket_type: SOCKET_TYPE {
+ ctx.enter(ctx.NO_KEYWORD);
+} COLON STRING {
+ ElementPtr stype(new StringElement($4, ctx.loc2pos(@4)));
+ ctx.stack_.back()->set("socket-type", stype);
+ ctx.leave();
+};
+
+control_socket_name: SOCKET_NAME {
+ ctx.enter(ctx.NO_KEYWORD);
+} COLON STRING {
+ ElementPtr name(new StringElement($4, ctx.loc2pos(@4)));
+ ctx.stack_.back()->set("socket-name", name);
+ ctx.leave();
+};
+
+// ----------------------------------------------------------------
dhcp6_json_object: DHCP6 {
ctx.enter(ctx.NO_KEYWORD);
-// Copyright (C) 2017 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2017-2018 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
///< Used while parsing content of list of dns-servers
DNS_SERVERS,
+ ///< Used while parsing content of a control-socket
+ CONTROL_SOCKET,
+
///< Used while parsing content of Logging
LOGGING,