Parcourir la source

[4264] relay converted to relay4

Tomek Mrugalski il y a 9 ans
Parent
commit
b223a422ad
3 fichiers modifiés avec 15 ajouts et 8 suppressions
  1. 1 1
      src/lib/eval/lexer.ll
  2. 10 3
      src/lib/eval/parser.yy
  3. 4 4
      src/lib/eval/tests/context_unittest.cc

+ 1 - 1
src/lib/eval/lexer.ll

@@ -127,7 +127,7 @@ blank [ \t]
 "text"      return isc::eval::EvalParser::make_TEXT(loc);
 "hex"       return isc::eval::EvalParser::make_HEX(loc);
 "substring" return isc::eval::EvalParser::make_SUBSTRING(loc);
-"relay"     return isc::eval::EvalParser::make_RELAY(loc);
+"relay4"    return isc::eval::EvalParser::make_RELAY4(loc);
 "all"       return isc::eval::EvalParser::make_ALL(loc);
 "."         return isc::eval::EvalParser::make_DOT(loc);
 "("         return isc::eval::EvalParser::make_LPAREN(loc);

+ 10 - 3
src/lib/eval/parser.yy

@@ -40,7 +40,7 @@ using namespace isc::eval;
   OPTION "option"
   SUBSTRING "substring"
   TEXT "text"
-  RELAY "relay"
+  RELAY4 "relay4"
   HEX "hex"
   ALL "all"
   DOT "."
@@ -94,7 +94,7 @@ string_expr : STRING
                       TokenPtr opt(new TokenOption($3, $6));
                       ctx.expression.push_back(opt);
                   }
-            | RELAY "[" option_code "]" "." option_repr_type
+            | RELAY4 "[" option_code "]" "." option_repr_type
                   {
                      switch (ctx.getUniverse()) {
                      case Option::V4:
@@ -104,7 +104,14 @@ string_expr : STRING
                          break;
                      }
                      case Option::V6:
-                         error(@1, "relay support for v6 is not implemented");
+                         // We will have relay6[123] for the DHCPv6.
+                         // In a very distant future we'll possibly be able
+                         // to mix both if we have DHCPv4-over-DHCPv6, so it
+                         // has some sense to make it explicit whether we
+                         // talk about DHCPv4 relay or DHCPv6 relay. However,
+                         // for the time being relay4 can be used in DHCPv4
+                         // only.
+                         error(@1, "relay4 can only be used in DHCPv4.");
                      }
                   }
             | SUBSTRING "(" string_expr "," start_expr "," length_expr ")"

+ 4 - 4
src/lib/eval/tests/context_unittest.cc

@@ -291,7 +291,7 @@ TEST_F(EvalContextTest, relay4Option) {
 
     EvalContext eval(Option::V4);
     EXPECT_NO_THROW(parsed_ =
-                    eval.parseString("relay[13].hex == 'thirteen'"));
+                    eval.parseString("relay4[13].hex == 'thirteen'"));
     EXPECT_TRUE(parsed_);
     ASSERT_EQ(3, eval.expression.size());
 
@@ -304,13 +304,13 @@ TEST_F(EvalContextTest, relay4Option) {
     checkTokenEq(tmp3);
 }
 
-// Verify that relay[13] is not usable in v6
+// Verify that relay4[13] is not usable in v6
 // There will be a separate relay accessor for v6.
 TEST_F(EvalContextTest, relay4Error) {
     universe_ = Option::V6;
 
-    checkError("relay[13].hex == 'thirteen'",
-               "<string>:1.1-5: relay support for v6 is not implemented");
+    checkError("relay4[13].hex == 'thirteen'",
+               "<string>:1.1-6: relay4 can only be used in DHCPv4.");
 }
 
 // Test some scanner error cases