/// "interface" : "eth1" ,
/// "ip-address" : "192.168.1.33" ,
/// "port" : 88 ,
+/// "control-socket":
+/// {
+/// "socket-type": "unix" ,
+/// "socket-name": "/tmp/d2-ctrl-socket"
+//// },
/// "tsig-keys":
//// [
/// {
case isc::d2::D2ParserContext::DNS_SERVERS:
case isc::d2::D2ParserContext::TSIG_KEY:
case isc::d2::D2ParserContext::TSIG_KEYS:
+ case isc::d2::D2ParserContext::CONTROL_SOCKET:
case isc::d2::D2ParserContext::LOGGERS:
return isc::d2::D2Parser::make_USER_CONTEXT(driver.loc_);
default:
case isc::d2::D2ParserContext::DNS_SERVERS:
case isc::d2::D2ParserContext::TSIG_KEY:
case isc::d2::D2ParserContext::TSIG_KEYS:
+ case isc::d2::D2ParserContext::CONTROL_SOCKET:
case isc::d2::D2ParserContext::LOGGERS:
return isc::d2::D2Parser::make_COMMENT(driver.loc_);
default:
}
}
+\"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);
return("dns-server");
case DNS_SERVERS:
return("dns-servers");
+ case CONTROL_SOCKET:
+ return("control-socket");
case LOGGING:
return ("Logging");
case LOGGERS:
-// 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,
" \"ip-address\": \"192.168.77.1\", \n"
" \"port\": 777 , \n "
" \"ncr-protocol\": \"UDP\", \n"
- "\"tsig-keys\": [], \n"
- "\"forward-ddns\" : {}, \n"
- "\"reverse-ddns\" : {} \n"
+ " \"tsig-keys\": [], \n"
+ " \"forward-ddns\" : {}, \n"
+ " \"reverse-ddns\" : {} \n"
"} \n"
"} \n";
testParser(txt, D2ParserContext::PARSER_DHCPDDNS);
{
"DhcpDdns": {
+ "control-socket": {
+ "socket-name": "/tmp/d2-ctrl-socket",
+ "socket-type": "unix"
+ },
"dns-server-timeout": 1000,
"forward-ddns": {
"ddns-domains": [