}
}
+\"flush\" {
+ switch(driver.ctx_) {
+ case ParserContext::OUTPUT_OPTIONS:
+ return AgentParser::make_FLUSH(driver.loc_);
+ default:
+ return AgentParser::make_STRING("flush", driver.loc_);
+ }
+}
+
+\"maxsize\" {
+ switch(driver.ctx_) {
+ case ParserContext::OUTPUT_OPTIONS:
+ return AgentParser::make_MAXSIZE(driver.loc_);
+ default:
+ return AgentParser::make_STRING("maxsize", driver.loc_);
+ }
+}
+
+\"maxver\" {
+ switch(driver.ctx_) {
+ case ParserContext::OUTPUT_OPTIONS:
+ return AgentParser::make_MAXVER(driver.loc_);
+ default:
+ return AgentParser::make_STRING("maxver", driver.loc_);
+ }
+}
+
\"debuglevel\" {
switch(driver.ctx_) {
case ParserContext::LOGGERS:
OUTPUT "output"
DEBUGLEVEL "debuglevel"
SEVERITY "severity"
+ FLUSH "flush"
+ MAXSIZE "maxsize"
+ MAXVER "maxver"
DHCP4 "Dhcp4"
DHCP6 "Dhcp6"
ElementPtr m(new MapElement(ctx.loc2pos(@1)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
-} output_params RCURLY_BRACKET {
+} output_params_list RCURLY_BRACKET {
ctx.stack_.pop_back();
};
-output_params: output_param
- | output_params COMMA output_param
+output_params_list: output_params
+ | output_params_list COMMA output_params
;
-output_param: OUTPUT {
+output_params: output
+ | flush
+ | maxsize
+ | maxver
+ ;
+
+output: OUTPUT {
ctx.enter(ctx.NO_KEYWORDS);
} COLON STRING {
ElementPtr sev(new StringElement($4, ctx.loc2pos(@4)));
ctx.leave();
};
+flush: FLUSH COLON BOOLEAN {
+ ElementPtr flush(new BoolElement($3, ctx.loc2pos(@3)));
+ ctx.stack_.back()->set("flush", flush);
+}
+
+maxsize: MAXSIZE COLON INTEGER {
+ ElementPtr maxsize(new IntElement($3, ctx.loc2pos(@3)));
+ ctx.stack_.back()->set("maxsize", maxsize);
+}
+
+maxver: MAXVER COLON INTEGER {
+ ElementPtr maxver(new IntElement($3, ctx.loc2pos(@3)));
+ ctx.stack_.back()->set("maxver", maxver);
+}
+
%%
void
}
}
+\"flush\" {
+ switch(driver.ctx_) {
+ case isc::d2::D2ParserContext::OUTPUT_OPTIONS:
+ return isc::d2::D2Parser::make_FLUSH(driver.loc_);
+ default:
+ return isc::d2::D2Parser::make_STRING("flush", driver.loc_);
+ }
+}
+
+\"maxsize\" {
+ switch(driver.ctx_) {
+ case isc::d2::D2ParserContext::OUTPUT_OPTIONS:
+ return isc::d2::D2Parser::make_MAXSIZE(driver.loc_);
+ default:
+ return isc::d2::D2Parser::make_STRING("maxsize", driver.loc_);
+ }
+}
+
+\"maxver\" {
+ switch(driver.ctx_) {
+ case isc::d2::D2ParserContext::OUTPUT_OPTIONS:
+ return isc::d2::D2Parser::make_MAXVER(driver.loc_);
+ default:
+ return isc::d2::D2Parser::make_STRING("maxver", driver.loc_);
+ }
+}
+
\"name\" {
switch(driver.ctx_) {
case isc::d2::D2ParserContext::LOGGERS:
OUTPUT "output"
DEBUGLEVEL "debuglevel"
SEVERITY "severity"
+ FLUSH "flush"
+ MAXSIZE "maxsize"
+ MAXVER "maxver"
// Not real tokens, just a way to signal what the parser is expected to
// parse.
ElementPtr m(new MapElement(ctx.loc2pos(@1)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
-} output_params RCURLY_BRACKET {
+} output_params_list RCURLY_BRACKET {
ctx.stack_.pop_back();
};
-output_params: output_param
- | output_params COMMA output_param
+output_params_list: output_params
+ | output_params_list COMMA output_params
;
-output_param: OUTPUT {
+output_params: output
+ | flush
+ | maxsize
+ | maxver
+ ;
+
+output: OUTPUT {
ctx.enter(ctx.NO_KEYWORD);
} COLON STRING {
ElementPtr sev(new StringElement($4, ctx.loc2pos(@4)));
ctx.leave();
};
+flush: FLUSH COLON BOOLEAN {
+ ElementPtr flush(new BoolElement($3, ctx.loc2pos(@3)));
+ ctx.stack_.back()->set("flush", flush);
+}
+
+maxsize: MAXSIZE COLON INTEGER {
+ ElementPtr maxsize(new IntElement($3, ctx.loc2pos(@3)));
+ ctx.stack_.back()->set("maxsize", maxsize);
+}
+
+maxver: MAXVER COLON INTEGER {
+ ElementPtr maxver(new IntElement($3, ctx.loc2pos(@3)));
+ ctx.stack_.back()->set("maxver", maxver);
+}
+
%%
void
}
}
+\"flush\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
+ return isc::dhcp::Dhcp4Parser::make_FLUSH(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp4Parser::make_STRING("flush", driver.loc_);
+ }
+}
+
+\"maxsize\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
+ return isc::dhcp::Dhcp4Parser::make_MAXSIZE(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp4Parser::make_STRING("maxsize", driver.loc_);
+ }
+}
+
+\"maxver\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
+ return isc::dhcp::Dhcp4Parser::make_MAXVER(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp4Parser::make_STRING("maxver", driver.loc_);
+ }
+}
+
\"severity\" {
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LOGGERS:
OUTPUT "output"
DEBUGLEVEL "debuglevel"
SEVERITY "severity"
+ FLUSH "flush"
+ MAXSIZE "maxsize"
+ MAXVER "maxver"
DHCP6 "Dhcp6"
DHCPDDNS "DhcpDdns"
ElementPtr m(new MapElement(ctx.loc2pos(@1)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
-} output_params RCURLY_BRACKET {
+} output_params_list RCURLY_BRACKET {
ctx.stack_.pop_back();
};
-output_params: output_param
- | output_params COMMA output_param
+output_params_list: output_params
+ | output_params_list COMMA output_params
+ ;
+
+output_params: output
+ | flush
+ | maxsize
+ | maxver
;
-output_param: OUTPUT {
+output: OUTPUT {
ctx.enter(ctx.NO_KEYWORD);
} COLON STRING {
ElementPtr sev(new StringElement($4, ctx.loc2pos(@4)));
ctx.leave();
};
+flush: FLUSH COLON BOOLEAN {
+ ElementPtr flush(new BoolElement($3, ctx.loc2pos(@3)));
+ ctx.stack_.back()->set("flush", flush);
+}
+
+maxsize: MAXSIZE COLON INTEGER {
+ ElementPtr maxsize(new IntElement($3, ctx.loc2pos(@3)));
+ ctx.stack_.back()->set("maxsize", maxsize);
+}
+
+maxver: MAXVER COLON INTEGER {
+ ElementPtr maxver(new IntElement($3, ctx.loc2pos(@3)));
+ ctx.stack_.back()->set("maxver", maxver);
+}
+
%%
void
}
}
+\"flush\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
+ return isc::dhcp::Dhcp6Parser::make_FLUSH(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp6Parser::make_STRING("flush", driver.loc_);
+ }
+}
+
+\"maxsize\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
+ return isc::dhcp::Dhcp6Parser::make_MAXSIZE(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp6Parser::make_STRING("maxsize", driver.loc_);
+ }
+}
+
+\"maxver\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
+ return isc::dhcp::Dhcp6Parser::make_MAXVER(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp6Parser::make_STRING("maxver", driver.loc_);
+ }
+}
+
+
\"debuglevel\" {
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LOGGERS:
OUTPUT "output"
DEBUGLEVEL "debuglevel"
SEVERITY "severity"
+ FLUSH "flush"
+ MAXSIZE "maxsize"
+ MAXVER "maxver"
DHCP4 "Dhcp4"
DHCPDDNS "DhcpDdns"
ElementPtr m(new MapElement(ctx.loc2pos(@1)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
-} output_params RCURLY_BRACKET {
+} output_params_list RCURLY_BRACKET {
ctx.stack_.pop_back();
};
-output_params: output_param
- | output_params COMMA output_param
+output_params_list: output_params
+ | output_params_list COMMA output_params
+ ;
+
+output_params: output
+ | flush
+ | maxsize
+ | maxver
;
-output_param: OUTPUT {
+output: OUTPUT {
ctx.enter(ctx.NO_KEYWORD);
} COLON STRING {
ElementPtr sev(new StringElement($4, ctx.loc2pos(@4)));
ctx.leave();
};
+flush: FLUSH COLON BOOLEAN {
+ ElementPtr flush(new BoolElement($3, ctx.loc2pos(@3)));
+ ctx.stack_.back()->set("flush", flush);
+}
+
+maxsize: MAXSIZE COLON INTEGER {
+ ElementPtr maxsize(new IntElement($3, ctx.loc2pos(@3)));
+ ctx.stack_.back()->set("maxsize", maxsize);
+}
+
+maxver: MAXVER COLON INTEGER {
+ ElementPtr maxver(new IntElement($3, ctx.loc2pos(@3)));
+ ctx.stack_.back()->set("maxver", maxver);
+}
+
%%
void