diff --git a/src/bin/dhcp4/dhcp4_lexer.ll b/src/bin/dhcp4/dhcp4_lexer.ll index 61dcc277f8..4ba1e52808 100644 --- a/src/bin/dhcp4/dhcp4_lexer.ll +++ b/src/bin/dhcp4/dhcp4_lexer.ll @@ -842,6 +842,15 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} } } +\"4o6-interface-id\" { + switch(driver.ctx_) { + case isc::dhcp::Parser4Context::SUBNET4: + return isc::dhcp::Dhcp4Parser::make_SUBNET_4O6_INTERFACE_ID(driver.loc_); + default: + return isc::dhcp::Dhcp4Parser::make_STRING("4o6-interface-id", driver.loc_); + } +} + \"4o6-subnet\" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: diff --git a/src/bin/dhcp4/dhcp4_parser.yy b/src/bin/dhcp4/dhcp4_parser.yy index f7be1de2d8..983fafca82 100644 --- a/src/bin/dhcp4/dhcp4_parser.yy +++ b/src/bin/dhcp4/dhcp4_parser.yy @@ -75,6 +75,7 @@ using namespace std; DECLINE_PROBATION_PERIOD "decline-probation-period" SUBNET4 "subnet4" SUBNET_4O6_INTERFACE "4o6-interface" + SUBNET_4O6_INTERFACE_ID "4o6-interface-id" SUBNET_4O6_SUBNET "4o6-subnet" OPTION_DEF "option-def" OPTION_DATA "option-data" @@ -726,7 +727,10 @@ subnet4_param: valid_lifetime | reservations | reservation_mode | relay + | match_client_id + | next_server | subnet_4o6_interface + | subnet_4o6_interface_id | subnet_4o6_subnet | unknown_map_entry ; @@ -747,6 +751,14 @@ subnet_4o6_interface: SUBNET_4O6_INTERFACE { ctx.leave(); }; +subnet_4o6_interface_id: SUBNET_4O6_INTERFACE_ID { + ctx.enter(ctx.NO_KEYWORD); +} COLON STRING { + ElementPtr iface(new StringElement($4, ctx.loc2pos(@4))); + ctx.stack_.back()->set("4o6-interface-id", iface); + ctx.leave(); +}; + subnet_4o6_subnet: SUBNET_4O6_SUBNET { ctx.enter(ctx.NO_KEYWORD); } COLON STRING {