void
TokenString::evaluate(Pkt& /*pkt*/, ValueStack& values) {
+
// Literals only push, nothing to pop
values.push(value_);
void
TokenHexString::evaluate(Pkt& /*pkt*/, ValueStack& values) {
+
// Literals only push, nothing to pop
values.push(value_);
void
TokenIpAddress::evaluate(Pkt& /*pkt*/, ValueStack& values) {
+
// Literals only push, nothing to pop
values.push(value_);
void
TokenIpAddressToText::evaluate(Pkt& /*pkt*/, ValueStack& values) {
+
if (values.size() == 0) {
isc_throw(EvalBadStack, "Incorrect empty stack.");
}
void
TokenInt8ToText::evaluate(Pkt& /*pkt*/, ValueStack& values) {
+
if (values.size() == 0) {
isc_throw(EvalBadStack, "Incorrect empty stack.");
}
void
TokenInt16ToText::evaluate(Pkt& /*pkt*/, ValueStack& values) {
+
if (values.size() == 0) {
isc_throw(EvalBadStack, "Incorrect empty stack.");
}
stringstream tmp;
uint16_t value = *(reinterpret_cast<uint16_t*>(const_cast<char*>(op.data())));
std::string data = EvalContext::fromUint16(value);
- tmp << *(reinterpret_cast<int16_t *>(const_cast<char *>(data.data())));
+ tmp << *(reinterpret_cast<int16_t*>(const_cast<char*>(data.data())));
op = tmp.str();
values.push(op);
void
TokenInt32ToText::evaluate(Pkt& /*pkt*/, ValueStack& values) {
+
if (values.size() == 0) {
isc_throw(EvalBadStack, "Incorrect empty stack.");
}
stringstream tmp;
uint32_t value = *(reinterpret_cast<uint32_t*>(const_cast<char*>(op.data())));
std::string data = EvalContext::fromUint32(value);
- tmp << *(reinterpret_cast<int32_t *>(const_cast<char *>(data.data())));
+ tmp << *(reinterpret_cast<int32_t*>(const_cast<char*>(data.data())));
op = tmp.str();
values.push(op);
void
TokenUInt8ToText::evaluate(Pkt& /*pkt*/, ValueStack& values) {
+
if (values.size() == 0) {
isc_throw(EvalBadStack, "Incorrect empty stack.");
}
void
TokenUInt16ToText::evaluate(Pkt& /*pkt*/, ValueStack& values) {
+
if (values.size() == 0) {
isc_throw(EvalBadStack, "Incorrect empty stack.");
}
stringstream tmp;
uint16_t value = *(reinterpret_cast<uint16_t*>(const_cast<char*>(op.data())));
std::string data = EvalContext::fromUint16(value);
- tmp << *(reinterpret_cast<uint16_t *>(const_cast<char *>(data.data())));
+ tmp << *(reinterpret_cast<uint16_t*>(const_cast<char*>(data.data())));
op = tmp.str();
values.push(op);
void
TokenUInt32ToText::evaluate(Pkt& /*pkt*/, ValueStack& values) {
+
if (values.size() == 0) {
isc_throw(EvalBadStack, "Incorrect empty stack.");
}
stringstream tmp;
uint32_t value = *(reinterpret_cast<uint32_t*>(const_cast<char*>(op.data())));
std::string data = EvalContext::fromUint32(value);
- tmp << *(reinterpret_cast<uint32_t *>(const_cast<char *>(data.data())));
+ tmp << *(reinterpret_cast<uint32_t*>(const_cast<char*>(data.data())));
op = tmp.str();
values.push(op);
void
TokenOption::evaluate(Pkt& pkt, ValueStack& values) {
+
OptionPtr opt = getOption(pkt);
std::string opt_str;
if (opt) {
void
TokenPkt::evaluate(Pkt& pkt, ValueStack& values) {
+
string value;
vector<uint8_t> binary;
string type_str;
void
TokenPkt4::evaluate(Pkt& pkt, ValueStack& values) {
+
vector<uint8_t> binary;
string value;
string type_str;
void
TokenPkt6::evaluate(Pkt& pkt, ValueStack& values) {
+
string value;
string type_str;
try {
void
TokenRelay6Field::evaluate(Pkt& pkt, ValueStack& values) {
+
vector<uint8_t> binary;
string type_str;
try {
void
TokenEqual::evaluate(Pkt& /*pkt*/, ValueStack& values) {
+
if (values.size() < 2) {
isc_throw(EvalBadStack, "Incorrect stack order. Expected at least "
"2 values for == operator, got " << values.size());
void
TokenSubstring::evaluate(Pkt& /*pkt*/, ValueStack& values) {
+
if (values.size() < 3) {
isc_throw(EvalBadStack, "Incorrect stack order. Expected at least "
"3 values for substring operator, got " << values.size());
void
TokenConcat::evaluate(Pkt& /*pkt*/, ValueStack& values) {
+
if (values.size() < 2) {
isc_throw(EvalBadStack, "Incorrect stack order. Expected at least "
"2 values for concat, got " << values.size());
void
TokenIfElse::evaluate(Pkt& /*pkt*/, ValueStack& values) {
+
if (values.size() < 3) {
isc_throw(EvalBadStack, "Incorrect stack order. Expected at least "
"3 values for ifelse, got " << values.size());
void
TokenToHexString::evaluate(Pkt& /*pkt*/, ValueStack& values) {
+
if (values.size() < 2) {
isc_throw(EvalBadStack, "Incorrect stack order. Expected at least "
"2 values for hexstring, got " << values.size());
void
TokenNot::evaluate(Pkt& /*pkt*/, ValueStack& values) {
+
if (values.size() == 0) {
isc_throw(EvalBadStack, "Incorrect empty stack.");
}
void
TokenAnd::evaluate(Pkt& /*pkt*/, ValueStack& values) {
+
if (values.size() < 2) {
isc_throw(EvalBadStack, "Incorrect stack order. Expected at least "
"2 values for and operator, got " << values.size());
void
TokenOr::evaluate(Pkt& /*pkt*/, ValueStack& values) {
+
if (values.size() < 2) {
isc_throw(EvalBadStack, "Incorrect stack order. Expected at least "
"2 values for or operator, got " << values.size());
void
TokenMember::evaluate(Pkt& pkt, ValueStack& values) {
+
if (pkt.inClass(client_class_)) {
values.push("true");
} else {
}
void TokenVendor::evaluate(Pkt& pkt, ValueStack& values) {
+
// Get the option first.
uint16_t code = 0;
switch (universe_) {
}
void TokenVendorClass::evaluate(Pkt& pkt, ValueStack& values) {
+
// Get the option first.
uint16_t code = 0;
switch (universe_) {
void
TokenSubOption::evaluate(Pkt& pkt, ValueStack& values) {
+
OptionPtr parent = getOption(pkt);
std::string txt;
isc::log::MessageID msgid = EVAL_DEBUG_SUB_OPTION;