From b053f42907c27f520a7f57997fd9d1243f7c756a Mon Sep 17 00:00:00 2001 From: Francis Dupont Date: Mon, 16 Jan 2017 14:19:20 +0100 Subject: [PATCH] [master] Tried another way to fix UDP flex overload --- src/bin/dhcp4/dhcp4_lexer.ll | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/bin/dhcp4/dhcp4_lexer.ll b/src/bin/dhcp4/dhcp4_lexer.ll index 7986a2545b..bf2bbd97e3 100644 --- a/src/bin/dhcp4/dhcp4_lexer.ll +++ b/src/bin/dhcp4/dhcp4_lexer.ll @@ -207,6 +207,16 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} } } +\"udp\" { + switch(driver.ctx_) { + case isc::dhcp::Parser4Context::DHCP_SOCKET_TYPE: + case isc::dhcp::Parser4Context::NCR_PROTOCOL: + return isc::dhcp::Dhcp4Parser::make_UDP(driver.loc_); + default: + return isc::dhcp::Dhcp4Parser::make_STRING("udp", driver.loc_); + } +} + \"interfaces\" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::INTERFACES_CONFIG: @@ -1017,10 +1027,8 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} (?i:\"UDP\") { /* dhcp-ddns value keywords are case insensitive */ - if ((driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) || - ((driver.ctx_ == isc::dhcp::Parser4Context::DHCP_SOCKET_TYPE) && - (yytext == "\"udp\""))) { - return isc::dhcp::Dhcp4Parser::make_UDP(driver.loc_); + if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) { + return isc::dhcp::Dhcp4Parser::make_UDP(driver.loc_); } std::string tmp(yytext+1); tmp.resize(tmp.size() - 1); -- 2.47.3