mirror of
https://github.com/zeek/zeek.git
synced 2025-10-08 09:38:19 +00:00
Various tweaks/refactor of new IPAddr class usages or IPv6 related code.
- non-binpac DNS analyzer now also generates dns_a6_reply event - ExpectedConn class refactored to use IPAddr's - BinaryExpr::AddrFold simplified - IP_Hdr src/dst address accessor methods changed to construct IPAddr objects on the fly from ip4/ip6 members. Addresses #770.
This commit is contained in:
parent
808f3915e5
commit
93fa116738
5 changed files with 76 additions and 60 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