Commit 512390ea authored by Francis Dupont's avatar Francis Dupont

[master] Finishing merge of trac5121 (HRMode in flex/bison)

parents 82b0234a 39afdf51
......@@ -61,7 +61,12 @@
"pools": [ { "pool": "192.0.2.1 - 192.0.2.200" } ],
"subnet": "192.0.2.0/24",
"interface": "eth0",
"reservation-mode": "out-of-pool",
// This directive tells Kea that reservations may be made both in-pool
// and out-of-pool. For improved performance, you may move all reservations
// out of the dynamic pool and change reservation-mode to "out-of-pool".
// Kea will then be able to skip querying for host reservations when
// assigning leases from dynamic pool.
"reservation-mode": "all",
"reservations": [
// This is a reservation for a specific hardware/MAC address. It's a very
......
......@@ -43,6 +43,13 @@
{
"subnet": "2001:db8:1::/48",
// This directive tells Kea that reservations may be made both in-pool
// and out-of-pool. For improved performance, you may move all reservations
// out of the dynamic pool and change reservation-mode to "out-of-pool".
// Kea will then be able to skip querying for host reservations when
// assigning leases from dynamic pool.
"reservation-mode": "all",
"pools": [ { "pool": "2001:db8:1::/120" } ],
"pd-pools": [
......@@ -54,8 +61,6 @@
],
"interface": "ethX",
"reservation-mode": "out-of-pool",
// Host reservations. Define several reservations, note that
// they are all within the range of the pool of the dynamically
// allocated address. The server will exclude the addresses from this
......
......@@ -577,6 +577,42 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence}
}
}
\"disabled\" {
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATION_MODE:
return isc::dhcp::Dhcp4Parser::make_DISABLED(driver.loc_);
default:
return isc::dhcp::Dhcp4Parser::make_STRING("disabled", driver.loc_);
}
}
\"off\" {
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATION_MODE:
return isc::dhcp::Dhcp4Parser::make_DISABLED(driver.loc_);
default:
return isc::dhcp::Dhcp4Parser::make_STRING("off", driver.loc_);
}
}
\"out-of-pool\" {
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATION_MODE:
return isc::dhcp::Dhcp4Parser::make_OUT_OF_POOL(driver.loc_);
default:
return isc::dhcp::Dhcp4Parser::make_STRING("out-of-pool", driver.loc_);
}
}
\"all\" {
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATION_MODE:
return isc::dhcp::Dhcp4Parser::make_ALL(driver.loc_);
default:
return isc::dhcp::Dhcp4Parser::make_STRING("all", driver.loc_);
}
}
\"code\" {
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
......
......@@ -110,6 +110,9 @@ using namespace std;
ID "id"
RAPID_COMMIT "rapid-commit"
RESERVATION_MODE "reservation-mode"
DISABLED "disabled"
OUT_OF_POOL "out-of-pool"
ALL "all"
HOST_RESERVATION_IDENTIFIERS "host-reservation-identifiers"
......@@ -205,6 +208,7 @@ using namespace std;
%type <ElementPtr> map_value
%type <ElementPtr> socket_type
%type <ElementPtr> db_type
%type <ElementPtr> hr_mode
%type <ElementPtr> ncr_protocol_value
%type <ElementPtr> replace_client_name_value
......@@ -926,13 +930,17 @@ client_class: CLIENT_CLASS {
};
reservation_mode: RESERVATION_MODE {
ctx.enter(ctx.NO_KEYWORD);
} COLON STRING {
ElementPtr rm(new StringElement($4, ctx.loc2pos(@4)));
ctx.stack_.back()->set("reservation-mode", rm);
ctx.enter(ctx.RESERVATION_MODE);
} COLON hr_mode {
ctx.stack_.back()->set("reservation-mode", $4);
ctx.leave();
};
hr_mode: DISABLED { $$ = ElementPtr(new StringElement("disabled", ctx.loc2pos(@1))); }
| OUT_OF_POOL { $$ = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(@1))); }
| ALL { $$ = ElementPtr(new StringElement("all", ctx.loc2pos(@1))); }
;
id: ID COLON INTEGER {
ElementPtr id(new IntElement($3, ctx.loc2pos(@3)));
ctx.stack_.back()->set("id", id);
......
// Generated 201707051253
// Generated 201701262348
// A Bison parser, made by GNU Bison 3.0.4.
// Locations for Bison parsers in C++
......
......@@ -141,6 +141,8 @@ Parser4Context::contextName()
return ("hooks-librairies");
case SUBNET4:
return ("subnet4");
case RESERVATION_MODE:
return ("reservation-mode");
case OPTION_DEF:
return ("option-def");
case OPTION_DATA:
......
......@@ -216,6 +216,9 @@ public:
/// Used while parsing Dhcp4/Subnet4 structures.
SUBNET4,
/// Used while parsing Dhcp4/Subnet4/reservation-mode.
RESERVATION_MODE,
/// Used while parsing Dhcp4/option-def structures.
OPTION_DEF,
......
// Generated 201707051253
// Generated 201701262348
// A Bison parser, made by GNU Bison 3.0.4.
// Positions for Bison parsers in C++
......
// Generated 201707051253
// Generated 201701262348
// A Bison parser, made by GNU Bison 3.0.4.
// Stack handling for Bison parsers in C++
......
......@@ -835,6 +835,42 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence}
}
}
\"disabled\" {
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATION_MODE:
return isc::dhcp::Dhcp6Parser::make_DISABLED(driver.loc_);
default:
return isc::dhcp::Dhcp6Parser::make_STRING("disabled", driver.loc_);
}
}
\"off\" {
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATION_MODE:
return isc::dhcp::Dhcp6Parser::make_DISABLED(driver.loc_);
default:
return isc::dhcp::Dhcp6Parser::make_STRING("off", driver.loc_);
}
}
\"out-of-pool\" {
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATION_MODE:
return isc::dhcp::Dhcp6Parser::make_OUT_OF_POOL(driver.loc_);
default:
return isc::dhcp::Dhcp6Parser::make_STRING("out-of-pool", driver.loc_);
}
}
\"all\" {
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATION_MODE:
return isc::dhcp::Dhcp6Parser::make_ALL(driver.loc_);
default:
return isc::dhcp::Dhcp6Parser::make_STRING("all", driver.loc_);
}
}
\"code\" {
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OPTION_DEF:
......
......@@ -105,6 +105,9 @@ using namespace std;
ID "id"
RAPID_COMMIT "rapid-commit"
RESERVATION_MODE "reservation-mode"
DISABLED "disabled"
OUT_OF_POOL "out-of-pool"
ALL "all"
MAC_SOURCES "mac-sources"
RELAY_SUPPLIED_OPTIONS "relay-supplied-options"
......@@ -212,6 +215,7 @@ using namespace std;
%type <ElementPtr> value
%type <ElementPtr> map_value
%type <ElementPtr> db_type
%type <ElementPtr> hr_mode
%type <ElementPtr> duid_type
%type <ElementPtr> ncr_protocol_value
%type <ElementPtr> replace_client_name_value
......@@ -914,13 +918,17 @@ client_class: CLIENT_CLASS {
};
reservation_mode: RESERVATION_MODE {
ctx.enter(ctx.NO_KEYWORD);
} COLON STRING {
ElementPtr rm(new StringElement($4, ctx.loc2pos(@4)));
ctx.stack_.back()->set("reservation-mode", rm);
ctx.enter(ctx.RESERVATION_MODE);
} COLON hr_mode {
ctx.stack_.back()->set("reservation-mode", $4);
ctx.leave();
};
hr_mode: DISABLED { $$ = ElementPtr(new StringElement("disabled", ctx.loc2pos(@1))); }
| OUT_OF_POOL { $$ = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(@1))); }
| ALL { $$ = ElementPtr(new StringElement("all", ctx.loc2pos(@1))); }
;
id: ID COLON INTEGER {
ElementPtr id(new IntElement($3, ctx.loc2pos(@3)));
ctx.stack_.back()->set("id", id);
......
// Generated 201707051254
// Generated 201701262349
// A Bison parser, made by GNU Bison 3.0.4.
// Locations for Bison parsers in C++
......
......@@ -141,6 +141,8 @@ Parser6Context::contextName()
return ("hooks-librairies");
case SUBNET6:
return ("subnet6");
case RESERVATION_MODE:
return ("reservation-mode");
case OPTION_DEF:
return ("option-def");
case OPTION_DATA:
......
......@@ -219,6 +219,9 @@ public:
/// Used while parsing Dhcp6/Subnet6 structures.
SUBNET6,
/// Used while parsing Dhcp6/Subnet6/reservation-mode.
RESERVATION_MODE,
/// Used while parsing Dhcp6/option-def structures.
OPTION_DEF,
......
// Generated 201707051254
// Generated 201701262349
// A Bison parser, made by GNU Bison 3.0.4.
// Positions for Bison parsers in C++
......
// Generated 201707051254
// Generated 201701262349
// A Bison parser, made by GNU Bison 3.0.4.
// Stack handling for Bison parsers in C++
......
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