Commit 03fc86a6 authored by Francis Dupont's avatar Francis Dupont
Browse files

[5121] Updated parser for HRmode

parent 58a9eca1
......@@ -536,6 +536,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:
......
......@@ -106,6 +106,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"
......@@ -198,6 +201,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
......@@ -881,13 +885,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);
......
......@@ -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,
......
......@@ -803,6 +803,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:
......
......@@ -101,6 +101,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"
......@@ -205,6 +208,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
......@@ -862,13 +866,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);
......
......@@ -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,
......
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