]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[master] Tried another way to fix UDP flex overload
authorFrancis Dupont <fdupont@isc.org>
Mon, 16 Jan 2017 13:19:20 +0000 (14:19 +0100)
committerFrancis Dupont <fdupont@isc.org>
Mon, 16 Jan 2017 13:19:20 +0000 (14:19 +0100)
src/bin/dhcp4/dhcp4_lexer.ll

index 7986a2545bcbc637933c6ef75ee98b7ad5cd8181..bf2bbd97e3b498d2ec5d7e20e8cc61f79c147e52 100644 (file)
@@ -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);