evaluate.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. // Copyright (C) 2015 Internet Systems Consortium, Inc. ("ISC")
  2. //
  3. // Permission to use, copy, modify, and/or distribute this software for any
  4. // purpose with or without fee is hereby granted, provided that the above
  5. // copyright notice and this permission notice appear in all copies.
  6. //
  7. // THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
  8. // REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
  9. // AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
  10. // INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  11. // LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  12. // OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  13. // PERFORMANCE OF THIS SOFTWARE.
  14. #ifndef EVALUATE_H
  15. #define EVALUATE_H
  16. #include <eval/token.h>
  17. namespace isc {
  18. namespace dhcp {
  19. /// @brief Evaluate a RPN expression for a v4 or v6 packet and return
  20. /// a true or false decision
  21. ///
  22. /// @param expr the RPN expression, i.e., a vector of parsed tokens
  23. /// @param pkt The v4 or v6 packet
  24. /// @return the boolean decision
  25. /// @throw EvalStackError if there is not exactly one element on the value
  26. /// stack at the end of the evaluation
  27. /// @throw EvalTypeError if the value at the top of the stack at the
  28. /// end of the evaluation is not "false" or "true"
  29. bool evaluate(const Expression& expr, const Pkt& pkt);
  30. }; // end of isc::dhcp namespace
  31. }; // end of isc namespace
  32. #endif