2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-08-31 22:15:23 +00:00

[150-add-sub-option-classification] Accept only integers for sub-option codes

This commit is contained in:
Francis Dupont
2019-06-14 20:52:25 +02:00
committed by Tomek Mrugalski
parent 4aaa3db0e1
commit 31a7cba643

View File

@@ -152,12 +152,12 @@ bool_expr : "(" bool_expr ")"
TokenPtr opt(new TokenOption($3, TokenOption::EXISTS)); TokenPtr opt(new TokenOption($3, TokenOption::EXISTS));
ctx.expression.push_back(opt); ctx.expression.push_back(opt);
} }
| OPTION "[" option_code "]" "." OPTION "[" option_code "]" "." EXISTS | OPTION "[" option_code "]" "." OPTION "[" sub_option_code "]" "." EXISTS
{ {
TokenPtr opt(new TokenSubOption($3, $8, TokenOption::EXISTS)); TokenPtr opt(new TokenSubOption($3, $8, TokenOption::EXISTS));
ctx.expression.push_back(opt); ctx.expression.push_back(opt);
} }
| RELAY4 "[" option_code "]" "." EXISTS | RELAY4 "[" sub_option_code "]" "." EXISTS
{ {
switch (ctx.getUniverse()) { switch (ctx.getUniverse()) {
case Option::V4: case Option::V4:
@@ -177,7 +177,7 @@ bool_expr : "(" bool_expr ")"
error(@1, "relay4 can only be used in DHCPv4."); error(@1, "relay4 can only be used in DHCPv4.");
} }
} }
| RELAY6 "[" nest_level "]" "." OPTION "[" option_code "]" "." EXISTS | RELAY6 "[" nest_level "]" "." OPTION "[" sub_option_code "]" "." EXISTS
{ {
switch (ctx.getUniverse()) { switch (ctx.getUniverse()) {
case Option::V6: case Option::V6:
@@ -209,7 +209,7 @@ bool_expr : "(" bool_expr ")"
TokenPtr exist(new TokenVendor(ctx.getUniverse(), $3, TokenOption::EXISTS)); TokenPtr exist(new TokenVendor(ctx.getUniverse(), $3, TokenOption::EXISTS));
ctx.expression.push_back(exist); ctx.expression.push_back(exist);
} }
| VENDOR "[" enterprise_id "]" "." OPTION "[" option_code "]" "." EXISTS | VENDOR "[" enterprise_id "]" "." OPTION "[" sub_option_code "]" "." EXISTS
{ {
// Expression vendor[1234].option[123].exists // Expression vendor[1234].option[123].exists
// //
@@ -256,12 +256,12 @@ string_expr : STRING
TokenPtr opt(new TokenOption($3, $6)); TokenPtr opt(new TokenOption($3, $6));
ctx.expression.push_back(opt); ctx.expression.push_back(opt);
} }
| OPTION "[" option_code "]" "." OPTION "[" option_code "]" "." option_repr_type | OPTION "[" option_code "]" "." OPTION "[" sub_option_code "]" "." option_repr_type
{ {
TokenPtr opt(new TokenSubOption($3, $8, $11)); TokenPtr opt(new TokenSubOption($3, $8, $11));
ctx.expression.push_back(opt); ctx.expression.push_back(opt);
} }
| RELAY4 "[" option_code "]" "." option_repr_type | RELAY4 "[" sub_option_code "]" "." option_repr_type
{ {
switch (ctx.getUniverse()) { switch (ctx.getUniverse()) {
case Option::V4: case Option::V4:
@@ -282,7 +282,7 @@ string_expr : STRING
} }
} }
| RELAY6 "[" nest_level "]" "." OPTION "[" option_code "]" "." option_repr_type | RELAY6 "[" nest_level "]" "." OPTION "[" sub_option_code "]" "." option_repr_type
{ {
switch (ctx.getUniverse()) { switch (ctx.getUniverse()) {
case Option::V6: case Option::V6:
@@ -384,7 +384,7 @@ string_expr : STRING
TokenVendor::ENTERPRISE_ID)); TokenVendor::ENTERPRISE_ID));
ctx.expression.push_back(vendor); ctx.expression.push_back(vendor);
} }
| VENDOR "[" enterprise_id "]" "." OPTION "[" option_code "]" "." option_repr_type | VENDOR "[" enterprise_id "]" "." OPTION "[" sub_option_code "]" "." option_repr_type
{ {
// This token will search for vendor option with // This token will search for vendor option with
// specified enterprise-id. If found, will search // specified enterprise-id. If found, will search
@@ -442,6 +442,12 @@ option_code : INTEGER
} }
; ;
sub_option_code : INTEGER
{
$$ = ctx.convertOptionCode($1, @1);
}
;
option_repr_type : TEXT option_repr_type : TEXT
{ {
$$ = TokenOption::TEXTUAL; $$ = TokenOption::TEXTUAL;