mirror of
https://github.com/zeek/zeek.git
synced 2025-10-09 18:18:19 +00:00
Merge remote-tracking branch 'origin/topic/v6-addr' into topic/v6-addr-merge
Conflicts: src/DNS_Mgr.cc src/Expr.cc src/bro.bif
This commit is contained in:
commit
5565e19e57
12 changed files with 137 additions and 147 deletions
32
src/Expr.cc
32
src/Expr.cc
|
@ -835,22 +835,30 @@ Val* BinaryExpr::StringFold(Val* v1, Val* v2) const
|
|||
|
||||
Val* BinaryExpr::AddrFold(Val* v1, Val* v2) const
|
||||
{
|
||||
uint32 a1[4];
|
||||
uint32 a2[4];
|
||||
v1->AsAddr().CopyIPv6(a1);
|
||||
v2->AsAddr().CopyIPv6(a2);
|
||||
IPAddr a1 = v1->AsAddr();
|
||||
IPAddr a2 = v2->AsAddr();
|
||||
int result = 0;
|
||||
|
||||
switch ( tag ) {
|
||||
#undef DO_FOLD
|
||||
#define DO_FOLD(sense) { result = memcmp(a1, a2, 16) sense 0; break; }
|
||||
|
||||
case EXPR_LT: DO_FOLD(<)
|
||||
case EXPR_LE: DO_FOLD(<=)
|
||||
case EXPR_EQ: DO_FOLD(==)
|
||||
case EXPR_NE: DO_FOLD(!=)
|
||||
case EXPR_GE: DO_FOLD(>=)
|
||||
case EXPR_GT: DO_FOLD(>)
|
||||
case EXPR_LT:
|
||||
result = a1 < a2;
|
||||
break;
|
||||
case EXPR_LE:
|
||||
result = a1 < a2 || a1 == a2;
|
||||
break;
|
||||
case EXPR_EQ:
|
||||
result = a1 == a2;
|
||||
break;
|
||||
case EXPR_NE:
|
||||
result = a1 != a2;
|
||||
break;
|
||||
case EXPR_GE:
|
||||
result = ! ( a1 < a2 );
|
||||
break;
|
||||
case EXPR_GT:
|
||||
result = ( ! ( a1 < a2 ) ) && ( a1 != a2 );
|
||||
break;
|
||||
|
||||
default:
|
||||
BadTag("BinaryExpr::AddrFold", expr_name(tag));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue