Commit 0d97d2c0 authored by Tomek Mrugalski's avatar Tomek Mrugalski 🛰

[5036] readonly support added in hosts-database

parent c19f1840
......@@ -45,7 +45,8 @@
"name": "kea",
"user": "kea",
"password": "kea",
"host": "localhost"
"host": "localhost",
"readonly": true
},
# Define a subnet with a pool of dynamic addresses and a pool of dynamic
......
......@@ -216,6 +216,15 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence}
}
}
\"readonly\" {
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::HOSTS_DATABASE:
return isc::dhcp::Dhcp6Parser::make_READONLY(driver.loc_);
default:
return isc::dhcp::Dhcp6Parser::make_STRING("readonly", driver.loc_);
}
}
\"type\" {
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
......
......@@ -62,6 +62,7 @@ using namespace std;
HOST "host"
PERSIST "persist"
LFC_INTERVAL "lfc-interval"
READONLY "readonly"
PREFERRED_LIFETIME "preferred-lifetime"
VALID_LIFETIME "valid-lifetime"
......@@ -442,6 +443,7 @@ database_map_param: type
| name
| persist
| lfc_interval
| readonly
| unknown_map_entry
;
......@@ -495,6 +497,11 @@ lfc_interval: LFC_INTERVAL COLON INTEGER {
ctx.stack_.back()->set("lfc-interval", n);
};
readonly: READONLY COLON BOOLEAN {
ElementPtr n(new BoolElement($3, ctx.loc2pos(@3)));
ctx.stack_.back()->set("readonly", n);
};
mac_sources: MAC_SOURCES {
ElementPtr l(new ListElement(ctx.loc2pos(@1)));
ctx.stack_.back()->set("mac-sources", l);
......@@ -803,6 +810,9 @@ option_def_entry: LCURLY_BRACKET {
ctx.stack_.pop_back();
};
// This defines the top level scope when the parser is told to parse a single
// option definition. It's almost exactly the same as option_def_entry, except
// that it does leave its value on stack.
sub_option_def: LCURLY_BRACKET {
// Parse the option-def list entry map
ElementPtr m(new MapElement(ctx.loc2pos(@1)));
......@@ -893,6 +903,8 @@ option_data_list_content: %empty
| not_empty_option_data_list
;
// This defines the content of option-data list. It can either
// be a single value or multiple entries separated by comma.
not_empty_option_data_list: option_data_entry
| not_empty_option_data_list COMMA option_data_entry
;
......@@ -907,6 +919,9 @@ option_data_entry: LCURLY_BRACKET {
ctx.stack_.pop_back();
};
// This defines the top level scope when the parser is told to parse a single
// option data. It's almost exactly the same as option_data_entry, except
// that it does leave its value on stack.
sub_option_data: LCURLY_BRACKET {
// Parse the option-data list entry map
ElementPtr m(new MapElement(ctx.loc2pos(@1)));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment