Skip to content

Commit 278bebc

Browse files
committed
[#3502] Additional updates
1 parent 18bd947 commit 278bebc

File tree

4 files changed

+42
-6
lines changed

4 files changed

+42
-6
lines changed

src/hooks/dhcp/flex_option/flex_option.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ parseAction(ConstElementPtr option,
6060
try {
6161
EvalContext eval_ctx(universe);
6262
eval_ctx.parseString(expr_text, parser_type);
63-
ExpressionPtr expr(new Expression(eval_ctx.expression));
63+
ExpressionPtr expr(new Expression(eval_ctx.expression_));
6464
opt_cfg->setExpr(expr);
6565
} catch (const std::exception& ex) {
6666
isc_throw(BadValue, "can't parse " << name << " expression ["

src/lib/dhcpsrv/parsers/client_class_def_parser.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ ExpressionParser::parse(ExpressionPtr& expression,
6060
check_defined);
6161
eval_ctx.parseString(value, parser_type);
6262
expression.reset(new Expression());
63-
*expression = eval_ctx.expression;
63+
*expression = eval_ctx.expression_;
6464
} catch (const std::exception& ex) {
6565
// Append position if there is a failure.
6666
isc_throw(DhcpConfigError,

src/lib/eval/eval.dox

+4-4
Original file line numberDiff line numberDiff line change
@@ -72,22 +72,22 @@
7272
07. token : STRING
7373
08. {
7474
09. TokenPtr str(new TokenString($1));
75-
10. ctx.expression.push_back(str);
75+
10. ctx.expression_.push_back(str);
7676
11. }
7777
12. | HEXSTRING
7878
13. {
7979
14. TokenPtr hex(new TokenHexString($1));
80-
15. ctx.expression.push_back(hex);
80+
15. ctx.expression_.push_back(hex);
8181
16. }
8282
17. | OPTION '[' INTEGER ']' DOT TEXT
8383
18. {
8484
19. TokenPtr opt(new TokenOption($3, TokenOption::TEXTUAL));
85-
20. ctx.expression.push_back(opt);
85+
20. ctx.expression_.push_back(opt);
8686
21. }
8787
22. | OPTION '[' INTEGER ']' DOT HEX
8888
23. {
8989
24. TokenPtr opt(new TokenOption($3, TokenOption::HEXADECIMAL));
90-
25. ctx.expression.push_back(opt);
90+
25. ctx.expression_.push_back(opt);
9191
26. }
9292
27. ;
9393
@endcode

src/lib/eval/token.h

+36
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ class TokenString : public Token {
137137
///
138138
/// @param pkt (ignored)
139139
/// @param values (represented string will be pushed here)
140+
/// @return 0 which means evaluate next token if any.
140141
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
141142

142143
protected:
@@ -162,6 +163,7 @@ class TokenHexString : public Token {
162163
///
163164
/// @param pkt (ignored)
164165
/// @param values (represented string will be pushed here)
166+
/// @return 0 which means evaluate next token if any.
165167
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
166168

167169
protected:
@@ -182,6 +184,7 @@ class TokenLowerCase : public Token {
182184
///
183185
/// @param pkt (ignored)
184186
/// @param values (represented string will be pushed here)
187+
/// @return 0 which means evaluate next token if any.
185188
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
186189
};
187190

@@ -199,6 +202,7 @@ class TokenUpperCase : public Token {
199202
///
200203
/// @param pkt (ignored)
201204
/// @param values (represented string will be pushed here)
205+
/// @return 0 which means evaluate next token if any.
202206
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
203207
};
204208

@@ -247,6 +251,7 @@ class TokenIpAddress : public Token {
247251
///
248252
/// @param pkt (ignored)
249253
/// @param values (represented IP address will be pushed here)
254+
/// @return 0 which means evaluate next token if any.
250255
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
251256

252257
protected:
@@ -268,6 +273,7 @@ class TokenIpAddressToText : public Token {
268273
///
269274
/// @param pkt (ignored)
270275
/// @param values (represented IP address as a string will be pushed here)
276+
/// @return 0 which means evaluate next token if any.
271277
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
272278
};
273279

@@ -286,6 +292,7 @@ class TokenInt8ToText : public Token {
286292
/// @param pkt (ignored)
287293
/// @param values (represented 8 bit integer as a string will be pushed
288294
/// here)
295+
/// @return 0 which means evaluate next token if any.
289296
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
290297
};
291298

@@ -304,6 +311,7 @@ class TokenInt16ToText : public Token {
304311
/// @param pkt (ignored)
305312
/// @param values (represented 16 bit integer as a string will be pushed
306313
/// here)
314+
/// @return 0 which means evaluate next token if any.
307315
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
308316
};
309317

@@ -322,6 +330,7 @@ class TokenInt32ToText : public Token {
322330
/// @param pkt (ignored)
323331
/// @param values (represented 32 bit integer as a string will be pushed
324332
/// here)
333+
/// @return 0 which means evaluate next token if any.
325334
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
326335
};
327336

@@ -340,6 +349,7 @@ class TokenUInt8ToText : public Token {
340349
/// @param pkt (ignored)
341350
/// @param values (represented 8 bit unsigned integer as a string will be
342351
/// pushed here)
352+
/// @return 0 which means evaluate next token if any.
343353
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
344354
};
345355

@@ -358,6 +368,7 @@ class TokenUInt16ToText : public Token {
358368
/// @param pkt (ignored)
359369
/// @param values (represented 16 bit unsigned integer as a string will be
360370
/// pushed here)
371+
/// @return 0 which means evaluate next token if any.
361372
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
362373
};
363374

@@ -376,6 +387,7 @@ class TokenUInt32ToText : public Token {
376387
/// @param pkt (ignored)
377388
/// @param values (represented 32 bit unsigned integer as a string will be
378389
/// pushed here)
390+
/// @return 0 which means evaluate next token if any.
379391
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
380392
};
381393

@@ -422,6 +434,7 @@ class TokenOption : public Token {
422434
///
423435
/// @param pkt specified option will be extracted from this packet (if present)
424436
/// @param values value of the option will be pushed here (or "")
437+
/// @return 0 which means evaluate next token if any.
425438
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
426439

427440
/// @brief Returns option-code
@@ -574,6 +587,7 @@ class TokenPkt : public Token {
574587
///
575588
/// @param pkt - metadata will be extracted from here
576589
/// @param values - stack of values (1 result will be pushed)
590+
/// @return 0 which means evaluate next token if any.
577591
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
578592

579593
/// @brief Returns metadata type
@@ -631,6 +645,7 @@ class TokenPkt4 : public Token {
631645
///
632646
/// @param pkt - fields will be extracted from here
633647
/// @param values - stack of values (1 result will be pushed)
648+
/// @return 0 which means evaluate next token if any.
634649
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
635650

636651
/// @brief Returns field type
@@ -677,6 +692,7 @@ class TokenPkt6 : public Token {
677692
///
678693
/// @param pkt - packet from which to extract the fields
679694
/// @param values - stack of values, 1 result will be pushed
695+
/// @return 0 which means evaluate next token if any.
680696
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
681697

682698
/// @brief Returns field type
@@ -731,6 +747,7 @@ class TokenRelay6Field : public Token {
731747
///
732748
/// @param pkt fields will be extracted from here
733749
/// @param values - stack of values (1 result will be pushed)
750+
/// @return 0 which means evaluate next token if any.
734751
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
735752

736753
/// @brief Returns nest-level
@@ -781,6 +798,7 @@ class TokenEqual : public Token {
781798
/// @param pkt (unused)
782799
/// @param values - stack of values (2 arguments will be popped, 1 result
783800
/// will be pushed)
801+
/// @return 0 which means evaluate next token if any.
784802
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
785803
};
786804

@@ -838,6 +856,7 @@ class TokenSubstring : public Token {
838856
/// @param pkt (unused)
839857
/// @param values - stack of values (3 arguments will be popped, 1 result
840858
/// will be pushed)
859+
/// @return 0 which means evaluate next token if any.
841860
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
842861
};
843862

@@ -882,6 +901,7 @@ class TokenSplit : public Token {
882901
/// @param pkt (unused)
883902
/// @param values - stack of values (3 arguments will be popped, 1 result
884903
/// will be pushed)
904+
/// @return 0 which means evaluate next token if any.
885905
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
886906
};
887907

@@ -906,6 +926,7 @@ class TokenConcat : public Token {
906926
/// @param pkt (unused)
907927
/// @param values - stack of values (2 arguments will be popped, 1 result
908928
/// will be pushed)
929+
/// @return 0 which means evaluate next token if any.
909930
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
910931
};
911932

@@ -937,6 +958,7 @@ class TokenIfElse : public Token {
937958
///
938959
/// @param pkt (unused)
939960
/// @param values - stack of values (two items are removed)
961+
/// @return 0 which means evaluate next token if any.
940962
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
941963
};
942964

@@ -976,6 +998,7 @@ class TokenToHexString : public Token {
976998
/// @param pkt (unused)
977999
/// @param values - stack of values (2 arguments will be popped, 1 result
9781000
/// will be pushed)
1001+
/// @return 0 which means evaluate next token if any.
9791002
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
9801003
};
9811004

@@ -1001,6 +1024,7 @@ class TokenNot : public Token {
10011024
///
10021025
/// @param pkt (unused)
10031026
/// @param values - stack of values (logical top value negated)
1027+
/// @return 0 which means evaluate next token if any.
10041028
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
10051029
};
10061030

@@ -1028,6 +1052,7 @@ class TokenAnd : public Token {
10281052
/// @param pkt (unused)
10291053
/// @param values - stack of values (2 arguments will be popped, 1 result
10301054
/// will be pushed)
1055+
/// @return 0 which means evaluate next token if any.
10311056
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
10321057
};
10331058

@@ -1055,6 +1080,7 @@ class TokenOr : public Token {
10551080
/// @param pkt (unused)
10561081
/// @param values - stack of values (2 arguments will be popped, 1 result
10571082
/// will be pushed)
1083+
/// @return 0 which means evaluate next token if any.
10581084
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
10591085
};
10601086

@@ -1075,6 +1101,7 @@ class TokenMember : public Token {
10751101
///
10761102
/// @param pkt the class name will be check from this packet's client classes
10771103
/// @param values true (if found) or false (if not found) will be pushed here
1104+
/// @return 0 which means evaluate next token if any.
10781105
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
10791106

10801107
/// @brief Returns client class name
@@ -1174,6 +1201,7 @@ class TokenVendor : public TokenOption {
11741201
///
11751202
/// @param pkt - vendor options will be searched for here.
11761203
/// @param values - the evaluated value will be pushed here.
1204+
/// @return 0 which means evaluate next token if any.
11771205
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
11781206

11791207
protected:
@@ -1270,6 +1298,7 @@ class TokenVendorClass : public TokenVendor {
12701298
///
12711299
/// @param pkt - vendor options will be searched for here.
12721300
/// @param values - the evaluated value will be pushed here.
1301+
/// @return 0 which means evaluate next token if any.
12731302
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
12741303

12751304
/// @brief Data chunk index.
@@ -1321,6 +1350,7 @@ class TokenSubOption : public virtual TokenOption {
13211350
///
13221351
/// @param pkt specified parent option will be extracted from this packet
13231352
/// @param values value of the sub-option will be pushed here (or "")
1353+
/// @return 0 which means evaluate next token if any.
13241354
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
13251355

13261356
/// @brief Returns sub-option-code
@@ -1363,6 +1393,7 @@ class TokenMatch : public Token {
13631393
/// @param pkt (unused)
13641394
/// @param values - stack of values (1 popped, 1 pushed)
13651395
/// @throw EvalBadStack if there is no value on the stack
1396+
/// @return 0 which means evaluate next token if any.
13661397
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
13671398

13681399
/// @brief Returns regular expression.
@@ -1406,6 +1437,7 @@ class TokenLabel : public Token {
14061437
///
14071438
/// @param pkt (unused)
14081439
/// @param values - stack of values (unused)
1440+
/// @return 0 which means evaluate next token if any.
14091441
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
14101442

14111443
protected:
@@ -1435,6 +1467,7 @@ class TokenBranch : public Token {
14351467
///
14361468
/// @param pkt (unused)
14371469
/// @param values - stack of values (unused)
1470+
/// @return next label.
14381471
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
14391472

14401473
protected:
@@ -1461,6 +1494,7 @@ class TokenPopOrBranchTrue : public TokenBranch {
14611494
/// @throw EvalBadStack if there are less than 1 value on stack
14621495
/// @throw EvalTypeError if the top value on the stack is not either
14631496
/// "true" or "false"
1497+
/// @return next label or 0 when means evaluate next token if any.
14641498
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
14651499
};
14661500

@@ -1484,6 +1518,7 @@ class TokenPopOrBranchFalse : public TokenBranch {
14841518
/// @throw EvalBadStack if there are less than 1 value on stack
14851519
/// @throw EvalTypeError if the top value on the stack is not either
14861520
/// "true" or "false"
1521+
/// @return next label or 0 when means evaluate next token if any.
14871522
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
14881523
};
14891524

@@ -1509,6 +1544,7 @@ class TokenPopAndBranchFalse : public TokenBranch {
15091544
/// @throw EvalBadStack if there are less than 1 value on stack
15101545
/// @throw EvalTypeError if the top value on the stack is not either
15111546
/// "true" or "false"
1547+
/// @return next label or 0 when means evaluate next token if any.
15121548
virtual unsigned evaluate(Pkt& pkt, ValueStack& values);
15131549
};
15141550

0 commit comments

Comments
 (0)