From: Francis Dupont Date: Mon, 16 Jan 2017 13:19:20 +0000 (+0100) Subject: [master] Tried another way to fix UDP flex overload X-Git-Tag: trac5112_base~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b053f42907c27f520a7f57997fd9d1243f7c756a;p=thirdparty%2Fkea.git [master] Tried another way to fix UDP flex overload --- 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);