From c19f1840cc1c37c974a0536559646d6715dd139e Mon Sep 17 00:00:00 2001 From: Tomek Mrugalski Date: Tue, 6 Dec 2016 20:29:31 +0100 Subject: [PATCH] [5036] Support for parameters in hooks-libraries added. --- doc/examples/kea6/hooks.json | 6 +++++- src/bin/dhcp6/dhcp6_lexer.ll | 10 ++++++++++ src/bin/dhcp6/dhcp6_parser.yy | 13 ++++++++++++- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/doc/examples/kea6/hooks.json b/doc/examples/kea6/hooks.json index 85e10da445..c4039b845d 100644 --- a/doc/examples/kea6/hooks.json +++ b/doc/examples/kea6/hooks.json @@ -41,7 +41,11 @@ "library": "/opt/lib/security.so" }, { - "library": "/opt/lib/charging.so" + "library": "/opt/lib/charging.so", + "parameters": { + "path": "/var/kea/var", + "base-name": "kea-forensic6" + } } ] } diff --git a/src/bin/dhcp6/dhcp6_lexer.ll b/src/bin/dhcp6/dhcp6_lexer.ll index 0ebe6e818c..92864b74b3 100644 --- a/src/bin/dhcp6/dhcp6_lexer.ll +++ b/src/bin/dhcp6/dhcp6_lexer.ll @@ -744,6 +744,16 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} } } + +\"parameters\" { + switch(driver.ctx_) { + case isc::dhcp::Parser6Context::HOOKS_LIBRARIES: + return isc::dhcp::Dhcp6Parser::make_PARAMETERS(driver.loc_); + default: + return isc::dhcp::Dhcp6Parser::make_STRING("parameters", driver.loc_); + } +} + \"library\" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::HOOKS_LIBRARIES: diff --git a/src/bin/dhcp6/dhcp6_parser.yy b/src/bin/dhcp6/dhcp6_parser.yy index 248975084b..4de439d4d6 100644 --- a/src/bin/dhcp6/dhcp6_parser.yy +++ b/src/bin/dhcp6/dhcp6_parser.yy @@ -114,6 +114,7 @@ using namespace std; HOOKS_LIBRARIES "hooks-libraries" LIBRARY "library" + PARAMETERS "parameters" EXPIRED_LEASES_PROCESSING "expired-leases-processing" @@ -593,7 +594,10 @@ hooks_params: hooks_param | hooks_params COMMA hooks_param ; -hooks_param: LIBRARY { +hooks_param: library + | parameters; + +library: LIBRARY { ctx.enter(ctx.NO_KEYWORD); } COLON STRING { ElementPtr lib(new StringElement($4, ctx.loc2pos(@4))); @@ -601,6 +605,13 @@ hooks_param: LIBRARY { ctx.leave(); }; +parameters: PARAMETERS { + ctx.enter(ctx.NO_KEYWORD); +} COLON value { + ctx.stack_.back()->set("parameters", $4); + ctx.leave(); +} + // --- expired-leases-processing ------------------------ expired_leases_processing: EXPIRED_LEASES_PROCESSING { ElementPtr m(new MapElement(ctx.loc2pos(@1))); -- 2.47.3