From 65be602269b5227288513d5f32136d4f4fea03b1 Mon Sep 17 00:00:00 2001 From: Francis Dupont Date: Tue, 20 Nov 2018 14:28:58 +0100 Subject: [PATCH] [275-config-control-syntax-cleanup] Fixed config-control syntax --- src/bin/dhcp4/dhcp4_lexer.ll | 2 ++ src/bin/dhcp4/dhcp4_parser.yy | 16 +++------------- src/bin/dhcp4/parser_context.h | 3 +++ src/bin/dhcp6/dhcp6_lexer.ll | 2 ++ src/bin/dhcp6/dhcp6_parser.yy | 16 +++------------- src/bin/dhcp6/parser_context.h | 3 +++ 6 files changed, 16 insertions(+), 26 deletions(-) diff --git a/src/bin/dhcp4/dhcp4_lexer.ll b/src/bin/dhcp4/dhcp4_lexer.ll index 314ca284ae..46b3d41a05 100644 --- a/src/bin/dhcp4/dhcp4_lexer.ll +++ b/src/bin/dhcp4/dhcp4_lexer.ll @@ -135,6 +135,8 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} return isc::dhcp::Dhcp4Parser::make_SUB_HOOKS_LIBRARY(driver.loc_); case Parser4Context::PARSER_DHCP_DDNS: return isc::dhcp::Dhcp4Parser::make_SUB_DHCP_DDNS(driver.loc_); + case Parser4Context::PARSER_CONFIG_CONTROL: + return isc::dhcp::Dhcp4Parser::make_SUB_CONFIG_CONTROL(driver.loc_); case Parser4Context::PARSER_LOGGING: return isc::dhcp::Dhcp4Parser::make_SUB_LOGGING(driver.loc_); } diff --git a/src/bin/dhcp4/dhcp4_parser.yy b/src/bin/dhcp4/dhcp4_parser.yy index fe1f905fb5..084182e71d 100644 --- a/src/bin/dhcp4/dhcp4_parser.yy +++ b/src/bin/dhcp4/dhcp4_parser.yy @@ -2070,15 +2070,6 @@ control_agent_json_object: CONTROL_AGENT { ctx.leave(); }; -config_control: LCURLY_BRACKET { - ElementPtr m(new MapElement(ctx.loc2pos(@1))); - ctx.stack_.back()->add(m); - ctx.stack_.push_back(m); -} config_control_params RCURLY_BRACKET { - ctx.stack_.pop_back(); -}; - - config_control: CONFIG_CONTROL { ElementPtr i(new MapElement(ctx.loc2pos(@1))); ctx.stack_.back()->set("config-control", i); @@ -2101,13 +2092,12 @@ sub_config_control: LCURLY_BRACKET { // This defines that subnet can have one or more parameters. config_control_params: config_control_param - | config_control_params COMMA config_control_param - ; + | config_control_params COMMA config_control_param + ; // This defines a list of allowed parameters for each subnet. config_control_param: config_databases - | unknown_map_entry - ; + ; config_databases: CONFIG_DATABASES { ElementPtr l(new ListElement(ctx.loc2pos(@1))); diff --git a/src/bin/dhcp4/parser_context.h b/src/bin/dhcp4/parser_context.h index a9a35ea2c2..ae95f02c07 100644 --- a/src/bin/dhcp4/parser_context.h +++ b/src/bin/dhcp4/parser_context.h @@ -88,6 +88,9 @@ public: /// This will parse the input as dhcp-ddns. PARSER_DHCP_DDNS, + /// This will parse the input as config-control. + PARSER_CONFIG_CONTROL, + /// This will parse the content of Logging. PARSER_LOGGING } ParserType; diff --git a/src/bin/dhcp6/dhcp6_lexer.ll b/src/bin/dhcp6/dhcp6_lexer.ll index 0cb1a73fdb..4347991bde 100644 --- a/src/bin/dhcp6/dhcp6_lexer.ll +++ b/src/bin/dhcp6/dhcp6_lexer.ll @@ -137,6 +137,8 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} return isc::dhcp::Dhcp6Parser::make_SUB_HOOKS_LIBRARY(driver.loc_); case Parser6Context::PARSER_DHCP_DDNS: return isc::dhcp::Dhcp6Parser::make_SUB_DHCP_DDNS(driver.loc_); + case Parser6Context::PARSER_CONFIG_CONTROL: + return isc::dhcp::Dhcp6Parser::make_SUB_CONFIG_CONTROL(driver.loc_); case Parser6Context::PARSER_LOGGING: return isc::dhcp::Dhcp6Parser::make_SUB_LOGGING(driver.loc_); } diff --git a/src/bin/dhcp6/dhcp6_parser.yy b/src/bin/dhcp6/dhcp6_parser.yy index d29a2975d4..71253663ec 100644 --- a/src/bin/dhcp6/dhcp6_parser.yy +++ b/src/bin/dhcp6/dhcp6_parser.yy @@ -2162,15 +2162,6 @@ control_agent_json_object: CONTROL_AGENT { // Config control information element -config_control: LCURLY_BRACKET { - ElementPtr m(new MapElement(ctx.loc2pos(@1))); - ctx.stack_.back()->add(m); - ctx.stack_.push_back(m); -} config_control_params RCURLY_BRACKET { - ctx.stack_.pop_back(); -}; - - config_control: CONFIG_CONTROL { ElementPtr i(new MapElement(ctx.loc2pos(@1))); ctx.stack_.back()->set("config-control", i); @@ -2193,13 +2184,12 @@ sub_config_control: LCURLY_BRACKET { // This defines that subnet can have one or more parameters. config_control_params: config_control_param - | config_control_params COMMA config_control_param - ; + | config_control_params COMMA config_control_param + ; // This defines a list of allowed parameters for each subnet. config_control_param: config_databases - | unknown_map_entry - ; + ; config_databases: CONFIG_DATABASES { ElementPtr l(new ListElement(ctx.loc2pos(@1))); diff --git a/src/bin/dhcp6/parser_context.h b/src/bin/dhcp6/parser_context.h index 9cec79b29a..aea40cc28b 100644 --- a/src/bin/dhcp6/parser_context.h +++ b/src/bin/dhcp6/parser_context.h @@ -91,6 +91,9 @@ public: /// This will parse the input as dhcp-ddns. (D2 client config) PARSER_DHCP_DDNS, + /// This will parse the input as config-control. + PARSER_CONFIG_CONTROL, + /// This will parse the content of Logging. PARSER_LOGGING -- 2.47.2