mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
Val: add TableVal::Assign() overload with IntrusivePtr
Prepare the transition to IntrusivePtr for various callers.
This commit is contained in:
parent
78712d009f
commit
0a6ddfb6b5
54 changed files with 379 additions and 365 deletions
32
src/Conn.cc
32
src/Conn.cc
|
@ -337,13 +337,13 @@ RecordVal* Connection::BuildConnVal()
|
||||||
|
|
||||||
TransportProto prot_type = ConnTransport();
|
TransportProto prot_type = ConnTransport();
|
||||||
|
|
||||||
RecordVal* id_val = new RecordVal(conn_id);
|
auto id_val = make_intrusive<RecordVal>(conn_id);
|
||||||
id_val->Assign(0, new AddrVal(orig_addr));
|
id_val->Assign(0, make_intrusive<AddrVal>(orig_addr));
|
||||||
id_val->Assign(1, val_mgr->GetPort(ntohs(orig_port), prot_type));
|
id_val->Assign(1, val_mgr->GetPort(ntohs(orig_port), prot_type));
|
||||||
id_val->Assign(2, new AddrVal(resp_addr));
|
id_val->Assign(2, make_intrusive<AddrVal>(resp_addr));
|
||||||
id_val->Assign(3, val_mgr->GetPort(ntohs(resp_port), prot_type));
|
id_val->Assign(3, val_mgr->GetPort(ntohs(resp_port), prot_type));
|
||||||
|
|
||||||
RecordVal* orig_endp = new RecordVal(endpoint);
|
auto orig_endp = make_intrusive<RecordVal>(endpoint);
|
||||||
orig_endp->Assign(0, val_mgr->GetCount(0));
|
orig_endp->Assign(0, val_mgr->GetCount(0));
|
||||||
orig_endp->Assign(1, val_mgr->GetCount(0));
|
orig_endp->Assign(1, val_mgr->GetCount(0));
|
||||||
orig_endp->Assign(4, val_mgr->GetCount(orig_flow_label));
|
orig_endp->Assign(4, val_mgr->GetCount(orig_flow_label));
|
||||||
|
@ -352,27 +352,27 @@ RecordVal* Connection::BuildConnVal()
|
||||||
char null[l2_len]{};
|
char null[l2_len]{};
|
||||||
|
|
||||||
if ( memcmp(&orig_l2_addr, &null, l2_len) != 0 )
|
if ( memcmp(&orig_l2_addr, &null, l2_len) != 0 )
|
||||||
orig_endp->Assign(5, new StringVal(fmt_mac(orig_l2_addr, l2_len)));
|
orig_endp->Assign(5, make_intrusive<StringVal>(fmt_mac(orig_l2_addr, l2_len)));
|
||||||
|
|
||||||
RecordVal* resp_endp = new RecordVal(endpoint);
|
auto resp_endp = make_intrusive<RecordVal>(endpoint);
|
||||||
resp_endp->Assign(0, val_mgr->GetCount(0));
|
resp_endp->Assign(0, val_mgr->GetCount(0));
|
||||||
resp_endp->Assign(1, val_mgr->GetCount(0));
|
resp_endp->Assign(1, val_mgr->GetCount(0));
|
||||||
resp_endp->Assign(4, val_mgr->GetCount(resp_flow_label));
|
resp_endp->Assign(4, val_mgr->GetCount(resp_flow_label));
|
||||||
|
|
||||||
if ( memcmp(&resp_l2_addr, &null, l2_len) != 0 )
|
if ( memcmp(&resp_l2_addr, &null, l2_len) != 0 )
|
||||||
resp_endp->Assign(5, new StringVal(fmt_mac(resp_l2_addr, l2_len)));
|
resp_endp->Assign(5, make_intrusive<StringVal>(fmt_mac(resp_l2_addr, l2_len)));
|
||||||
|
|
||||||
conn_val->Assign(0, id_val);
|
conn_val->Assign(0, std::move(id_val));
|
||||||
conn_val->Assign(1, orig_endp);
|
conn_val->Assign(1, std::move(orig_endp));
|
||||||
conn_val->Assign(2, resp_endp);
|
conn_val->Assign(2, std::move(resp_endp));
|
||||||
// 3 and 4 are set below.
|
// 3 and 4 are set below.
|
||||||
conn_val->Assign(5, new TableVal(string_set)); // service
|
conn_val->Assign(5, make_intrusive<TableVal>(string_set)); // service
|
||||||
conn_val->Assign(6, val_mgr->GetEmptyString()); // history
|
conn_val->Assign(6, val_mgr->GetEmptyString()); // history
|
||||||
|
|
||||||
if ( ! uid )
|
if ( ! uid )
|
||||||
uid.Set(bits_per_uid);
|
uid.Set(bits_per_uid);
|
||||||
|
|
||||||
conn_val->Assign(7, new StringVal(uid.Base62("C").c_str()));
|
conn_val->Assign(7, make_intrusive<StringVal>(uid.Base62("C").c_str()));
|
||||||
|
|
||||||
if ( encapsulation && encapsulation->Depth() > 0 )
|
if ( encapsulation && encapsulation->Depth() > 0 )
|
||||||
conn_val->Assign(8, encapsulation->GetVectorVal());
|
conn_val->Assign(8, encapsulation->GetVectorVal());
|
||||||
|
@ -388,9 +388,9 @@ RecordVal* Connection::BuildConnVal()
|
||||||
if ( root_analyzer )
|
if ( root_analyzer )
|
||||||
root_analyzer->UpdateConnVal(conn_val);
|
root_analyzer->UpdateConnVal(conn_val);
|
||||||
|
|
||||||
conn_val->Assign(3, new Val(start_time, TYPE_TIME)); // ###
|
conn_val->Assign(3, make_intrusive<Val>(start_time, TYPE_TIME)); // ###
|
||||||
conn_val->Assign(4, new Val(last_time - start_time, TYPE_INTERVAL));
|
conn_val->Assign(4, make_intrusive<Val>(last_time - start_time, TYPE_INTERVAL));
|
||||||
conn_val->Assign(6, new StringVal(history.c_str()));
|
conn_val->Assign(6, make_intrusive<StringVal>(history.c_str()));
|
||||||
conn_val->Assign(11, val_mgr->GetBool(is_successful));
|
conn_val->Assign(11, val_mgr->GetBool(is_successful));
|
||||||
|
|
||||||
conn_val->SetOrigin(this);
|
conn_val->SetOrigin(this);
|
||||||
|
@ -422,7 +422,7 @@ void Connection::AppendAddl(const char* str)
|
||||||
const char* old = conn_val->Lookup(6)->AsString()->CheckString();
|
const char* old = conn_val->Lookup(6)->AsString()->CheckString();
|
||||||
const char* format = *old ? "%s %s" : "%s%s";
|
const char* format = *old ? "%s %s" : "%s%s";
|
||||||
|
|
||||||
conn_val->Assign(6, new StringVal(fmt(format, old, str)));
|
conn_val->Assign(6, make_intrusive<StringVal>(fmt(format, old, str)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns true if the character at s separates a version number.
|
// Returns true if the character at s separates a version number.
|
||||||
|
|
|
@ -745,9 +745,9 @@ Val* DNS_Mgr::BuildMappingVal(DNS_Mapping* dm)
|
||||||
{
|
{
|
||||||
RecordVal* r = new RecordVal(dm_rec);
|
RecordVal* r = new RecordVal(dm_rec);
|
||||||
|
|
||||||
r->Assign(0, new Val(dm->CreationTime(), TYPE_TIME));
|
r->Assign(0, make_intrusive<Val>(dm->CreationTime(), TYPE_TIME));
|
||||||
r->Assign(1, new StringVal(dm->ReqHost() ? dm->ReqHost() : ""));
|
r->Assign(1, make_intrusive<StringVal>(dm->ReqHost() ? dm->ReqHost() : ""));
|
||||||
r->Assign(2, new AddrVal(dm->ReqAddr()));
|
r->Assign(2, make_intrusive<AddrVal>(dm->ReqAddr()));
|
||||||
r->Assign(3, val_mgr->GetBool(dm->Valid()));
|
r->Assign(3, val_mgr->GetBool(dm->Valid()));
|
||||||
|
|
||||||
Val* h = dm->Host();
|
Val* h = dm->Host();
|
||||||
|
|
|
@ -140,13 +140,13 @@ void EventHandler::NewEvent(val_list* vl)
|
||||||
BroType* ftype = args->FieldType(i);
|
BroType* ftype = args->FieldType(i);
|
||||||
Val* fdefault = args->FieldDefault(i);
|
Val* fdefault = args->FieldDefault(i);
|
||||||
|
|
||||||
RecordVal* rec = new RecordVal(call_argument);
|
auto rec = make_intrusive<RecordVal>(call_argument);
|
||||||
rec->Assign(0, new StringVal(fname));
|
rec->Assign(0, make_intrusive<StringVal>(fname));
|
||||||
|
|
||||||
ODesc d;
|
ODesc d;
|
||||||
d.SetShort();
|
d.SetShort();
|
||||||
ftype->Describe(&d);
|
ftype->Describe(&d);
|
||||||
rec->Assign(1, new StringVal(d.Description()));
|
rec->Assign(1, make_intrusive<StringVal>(d.Description()));
|
||||||
|
|
||||||
if ( fdefault )
|
if ( fdefault )
|
||||||
{
|
{
|
||||||
|
@ -161,7 +161,7 @@ void EventHandler::NewEvent(val_list* vl)
|
||||||
rec->Assign(3, val);
|
rec->Assign(3, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
vargs->Assign(i, rec);
|
vargs->Assign(i, std::move(rec));
|
||||||
}
|
}
|
||||||
|
|
||||||
Event* ev = new Event(new_event, {
|
Event* ev = new Event(new_event, {
|
||||||
|
|
39
src/Expr.cc
39
src/Expr.cc
|
@ -365,7 +365,7 @@ IntrusivePtr<Val> UnaryExpr::Eval(Frame* f) const
|
||||||
for ( unsigned int i = 0; i < v_op->Size(); ++i )
|
for ( unsigned int i = 0; i < v_op->Size(); ++i )
|
||||||
{
|
{
|
||||||
Val* v_i = v_op->Lookup(i);
|
Val* v_i = v_op->Lookup(i);
|
||||||
result->Assign(i, v_i ? Fold(v_i).release() : 0);
|
result->Assign(i, v_i ? Fold(v_i) : nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -460,7 +460,7 @@ IntrusivePtr<Val> BinaryExpr::Eval(Frame* f) const
|
||||||
if ( v_op1->Lookup(i) && v_op2->Lookup(i) )
|
if ( v_op1->Lookup(i) && v_op2->Lookup(i) )
|
||||||
v_result->Assign(i,
|
v_result->Assign(i,
|
||||||
Fold(v_op1->Lookup(i),
|
Fold(v_op1->Lookup(i),
|
||||||
v_op2->Lookup(i)).release());
|
v_op2->Lookup(i)));
|
||||||
else
|
else
|
||||||
v_result->Assign(i, nullptr);
|
v_result->Assign(i, nullptr);
|
||||||
// SetError("undefined element in vector operation");
|
// SetError("undefined element in vector operation");
|
||||||
|
@ -479,8 +479,8 @@ IntrusivePtr<Val> BinaryExpr::Eval(Frame* f) const
|
||||||
Val* vv_i = vv->Lookup(i);
|
Val* vv_i = vv->Lookup(i);
|
||||||
if ( vv_i )
|
if ( vv_i )
|
||||||
v_result->Assign(i, is_vec1 ?
|
v_result->Assign(i, is_vec1 ?
|
||||||
Fold(vv_i, v2.get()).release() :
|
Fold(vv_i, v2.get()) :
|
||||||
Fold(v1.get(), vv_i).release());
|
Fold(v1.get(), vv_i));
|
||||||
else
|
else
|
||||||
v_result->Assign(i, nullptr);
|
v_result->Assign(i, nullptr);
|
||||||
|
|
||||||
|
@ -981,7 +981,7 @@ IntrusivePtr<Val> IncrExpr::Eval(Frame* f) const
|
||||||
Val* elt = v_vec->Lookup(i);
|
Val* elt = v_vec->Lookup(i);
|
||||||
|
|
||||||
if ( elt )
|
if ( elt )
|
||||||
v_vec->Assign(i, DoSingleEval(f, elt).release());
|
v_vec->Assign(i, DoSingleEval(f, elt));
|
||||||
else
|
else
|
||||||
v_vec->Assign(i, nullptr);
|
v_vec->Assign(i, nullptr);
|
||||||
}
|
}
|
||||||
|
@ -1259,7 +1259,7 @@ IntrusivePtr<Val> AddToExpr::Eval(Frame* f) const
|
||||||
{
|
{
|
||||||
VectorVal* vv = v1->AsVectorVal();
|
VectorVal* vv = v1->AsVectorVal();
|
||||||
|
|
||||||
if ( ! vv->Assign(vv->Size(), v2.release()) )
|
if ( ! vv->Assign(vv->Size(), v2) )
|
||||||
RuntimeError("type-checking failed in vector append");
|
RuntimeError("type-checking failed in vector append");
|
||||||
|
|
||||||
return v1;
|
return v1;
|
||||||
|
@ -2332,7 +2332,7 @@ void AssignExpr::EvalIntoAggregate(const BroType* t, Val* aggr, Frame* f) const
|
||||||
auto v = op2->Eval(f);
|
auto v = op2->Eval(f);
|
||||||
|
|
||||||
if ( v )
|
if ( v )
|
||||||
aggr_r->Assign(field, v.release());
|
aggr_r->Assign(field, std::move(v));
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -2348,7 +2348,7 @@ void AssignExpr::EvalIntoAggregate(const BroType* t, Val* aggr, Frame* f) const
|
||||||
if ( ! index || ! v )
|
if ( ! index || ! v )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( ! tv->Assign(index.get(), v.release()) )
|
if ( ! tv->Assign(index.get(), std::move(v)) )
|
||||||
RuntimeError("type clash in table assignment");
|
RuntimeError("type clash in table assignment");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2392,7 +2392,7 @@ IntrusivePtr<Val> AssignExpr::InitVal(const BroType* t, IntrusivePtr<Val> aggr)
|
||||||
if ( ! v )
|
if ( ! v )
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
aggr_r->Assign(field, v->Ref());
|
aggr_r->Assign(field, v);
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2789,7 +2789,7 @@ void IndexExpr::Assign(Frame* f, IntrusivePtr<Val> v)
|
||||||
for ( auto idx = 0u; idx < v_vect->Size(); idx++, first++ )
|
for ( auto idx = 0u; idx < v_vect->Size(); idx++, first++ )
|
||||||
v1_vect->Insert(first, v_vect->Lookup(idx)->Ref());
|
v1_vect->Insert(first, v_vect->Lookup(idx)->Ref());
|
||||||
}
|
}
|
||||||
else if ( ! v1_vect->Assign(v2.get(), v.release()) )
|
else if ( ! v1_vect->Assign(v2.get(), std::move(v)) )
|
||||||
{
|
{
|
||||||
v = std::move(v_extra);
|
v = std::move(v_extra);
|
||||||
|
|
||||||
|
@ -2811,7 +2811,7 @@ void IndexExpr::Assign(Frame* f, IntrusivePtr<Val> v)
|
||||||
}
|
}
|
||||||
|
|
||||||
case TYPE_TABLE:
|
case TYPE_TABLE:
|
||||||
if ( ! v1->AsTableVal()->Assign(v2.get(), v.release()) )
|
if ( ! v1->AsTableVal()->Assign(v2.get(), std::move(v)) )
|
||||||
{
|
{
|
||||||
v = std::move(v_extra);
|
v = std::move(v_extra);
|
||||||
|
|
||||||
|
@ -2919,7 +2919,7 @@ void FieldExpr::Assign(Frame* f, IntrusivePtr<Val> v)
|
||||||
if ( op_v )
|
if ( op_v )
|
||||||
{
|
{
|
||||||
RecordVal* r = op_v->AsRecordVal();
|
RecordVal* r = op_v->AsRecordVal();
|
||||||
r->Assign(field, v.release());
|
r->Assign(field, std::move(v));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3378,9 +3378,8 @@ IntrusivePtr<Val> VectorConstructorExpr::Eval(Frame* f) const
|
||||||
loop_over_list(exprs, i)
|
loop_over_list(exprs, i)
|
||||||
{
|
{
|
||||||
Expr* e = exprs[i];
|
Expr* e = exprs[i];
|
||||||
auto v = e->Eval(f);
|
|
||||||
|
|
||||||
if ( ! vec->Assign(i, v.release()) )
|
if ( ! vec->Assign(i, e->Eval(f)) )
|
||||||
{
|
{
|
||||||
RuntimeError(fmt("type mismatch at index %d", i));
|
RuntimeError(fmt("type mismatch at index %d", i));
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -3406,7 +3405,7 @@ IntrusivePtr<Val> VectorConstructorExpr::InitVal(const BroType* t, IntrusivePtr<
|
||||||
Expr* e = exprs[i];
|
Expr* e = exprs[i];
|
||||||
auto v = check_and_promote(e->Eval(nullptr), t->YieldType(), 1);
|
auto v = check_and_promote(e->Eval(nullptr), t->YieldType(), 1);
|
||||||
|
|
||||||
if ( ! v || ! vec->Assign(i, v.release()) )
|
if ( ! v || ! vec->Assign(i, std::move(v)) )
|
||||||
{
|
{
|
||||||
Error(fmt("initialization type mismatch at index %d", i), e);
|
Error(fmt("initialization type mismatch at index %d", i), e);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -3448,7 +3447,7 @@ void FieldAssignExpr::EvalIntoAggregate(const BroType* t, Val* aggr, Frame* f)
|
||||||
reporter->InternalError("Missing record field: %s",
|
reporter->InternalError("Missing record field: %s",
|
||||||
field_name.c_str());
|
field_name.c_str());
|
||||||
|
|
||||||
rec->Assign(idx, v.release());
|
rec->Assign(idx, std::move(v));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3542,7 +3541,7 @@ IntrusivePtr<Val> ArithCoerceExpr::Fold(Val* v) const
|
||||||
{
|
{
|
||||||
Val* elt = vv->Lookup(i);
|
Val* elt = vv->Lookup(i);
|
||||||
if ( elt )
|
if ( elt )
|
||||||
result->Assign(i, FoldSingleVal(elt, t).release());
|
result->Assign(i, FoldSingleVal(elt, t));
|
||||||
else
|
else
|
||||||
result->Assign(i, 0);
|
result->Assign(i, 0);
|
||||||
}
|
}
|
||||||
|
@ -3733,7 +3732,7 @@ IntrusivePtr<Val> RecordCoerceExpr::Fold(Val* v) const
|
||||||
RuntimeError("Failed type conversion");
|
RuntimeError("Failed type conversion");
|
||||||
}
|
}
|
||||||
|
|
||||||
val->Assign(i, rhs.release());
|
val->Assign(i, std::move(rhs));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -3757,7 +3756,7 @@ IntrusivePtr<Val> RecordCoerceExpr::Fold(Val* v) const
|
||||||
def_val = {AdoptRef{}, tmp};
|
def_val = {AdoptRef{}, tmp};
|
||||||
}
|
}
|
||||||
|
|
||||||
val->Assign(i, def_val.release());
|
val->Assign(i, std::move(def_val));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
val->Assign(i, 0);
|
val->Assign(i, 0);
|
||||||
|
@ -4680,7 +4679,7 @@ IntrusivePtr<Val> ListExpr::InitVal(const BroType* t, IntrusivePtr<Val> aggr) co
|
||||||
check_and_promote_expr(e, vec->Type()->AsVectorType()->YieldType());
|
check_and_promote_expr(e, vec->Type()->AsVectorType()->YieldType());
|
||||||
auto v = e->Eval(nullptr);
|
auto v = e->Eval(nullptr);
|
||||||
|
|
||||||
if ( ! vec->Assign(i, v.release()) )
|
if ( ! vec->Assign(i, std::move(v)) )
|
||||||
{
|
{
|
||||||
e->Error(fmt("type mismatch at index %d", i));
|
e->Error(fmt("type mismatch at index %d", i));
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
|
@ -286,7 +286,7 @@ RecordVal* BroFile::Rotate()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
info->Assign(2, new Val(open_time, TYPE_TIME));
|
info->Assign(2, make_intrusive<Val>(open_time, TYPE_TIME));
|
||||||
|
|
||||||
Unlink();
|
Unlink();
|
||||||
|
|
||||||
|
|
16
src/IP.cc
16
src/IP.cc
|
@ -65,7 +65,7 @@ static VectorVal* BuildOptionsVal(const u_char* data, int len)
|
||||||
// PadN or other option
|
// PadN or other option
|
||||||
uint16_t off = 2 * sizeof(uint8_t);
|
uint16_t off = 2 * sizeof(uint8_t);
|
||||||
rv->Assign(1, val_mgr->GetCount(opt->ip6o_len));
|
rv->Assign(1, val_mgr->GetCount(opt->ip6o_len));
|
||||||
rv->Assign(2, new StringVal(
|
rv->Assign(2, make_intrusive<StringVal>(
|
||||||
new BroString(data + off, opt->ip6o_len, 1)));
|
new BroString(data + off, opt->ip6o_len, 1)));
|
||||||
data += opt->ip6o_len + off;
|
data += opt->ip6o_len + off;
|
||||||
len -= opt->ip6o_len + off;
|
len -= opt->ip6o_len + off;
|
||||||
|
@ -91,8 +91,8 @@ RecordVal* IPv6_Hdr::BuildRecordVal(VectorVal* chain) const
|
||||||
rv->Assign(2, val_mgr->GetCount(ntohs(ip6->ip6_plen)));
|
rv->Assign(2, val_mgr->GetCount(ntohs(ip6->ip6_plen)));
|
||||||
rv->Assign(3, val_mgr->GetCount(ip6->ip6_nxt));
|
rv->Assign(3, val_mgr->GetCount(ip6->ip6_nxt));
|
||||||
rv->Assign(4, val_mgr->GetCount(ip6->ip6_hlim));
|
rv->Assign(4, val_mgr->GetCount(ip6->ip6_hlim));
|
||||||
rv->Assign(5, new AddrVal(IPAddr(ip6->ip6_src)));
|
rv->Assign(5, make_intrusive<AddrVal>(IPAddr(ip6->ip6_src)));
|
||||||
rv->Assign(6, new AddrVal(IPAddr(ip6->ip6_dst)));
|
rv->Assign(6, make_intrusive<AddrVal>(IPAddr(ip6->ip6_dst)));
|
||||||
if ( ! chain )
|
if ( ! chain )
|
||||||
chain = new VectorVal(
|
chain = new VectorVal(
|
||||||
internal_type("ip6_ext_hdr_chain")->AsVectorType());
|
internal_type("ip6_ext_hdr_chain")->AsVectorType());
|
||||||
|
@ -132,7 +132,7 @@ RecordVal* IPv6_Hdr::BuildRecordVal(VectorVal* chain) const
|
||||||
rv->Assign(2, val_mgr->GetCount(rt->ip6r_type));
|
rv->Assign(2, val_mgr->GetCount(rt->ip6r_type));
|
||||||
rv->Assign(3, val_mgr->GetCount(rt->ip6r_segleft));
|
rv->Assign(3, val_mgr->GetCount(rt->ip6r_segleft));
|
||||||
uint16_t off = 4 * sizeof(uint8_t);
|
uint16_t off = 4 * sizeof(uint8_t);
|
||||||
rv->Assign(4, new StringVal(new BroString(data + off, Length() - off, 1)));
|
rv->Assign(4, make_intrusive<StringVal>(new BroString(data + off, Length() - off, 1)));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -163,7 +163,7 @@ RecordVal* IPv6_Hdr::BuildRecordVal(VectorVal* chain) const
|
||||||
// Payload Len was non-zero for this header.
|
// Payload Len was non-zero for this header.
|
||||||
rv->Assign(4, val_mgr->GetCount(ntohl(((uint32_t*)data)[2])));
|
rv->Assign(4, val_mgr->GetCount(ntohl(((uint32_t*)data)[2])));
|
||||||
uint16_t off = 3 * sizeof(uint32_t);
|
uint16_t off = 3 * sizeof(uint32_t);
|
||||||
rv->Assign(5, new StringVal(new BroString(data + off, Length() - off, 1)));
|
rv->Assign(5, make_intrusive<StringVal>(new BroString(data + off, Length() - off, 1)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -284,7 +284,7 @@ RecordVal* IPv6_Hdr::BuildRecordVal(VectorVal* chain) const
|
||||||
RecordVal* m = new RecordVal(hdrType(ip6_mob_brr_type, "ip6_mobility_be"));
|
RecordVal* m = new RecordVal(hdrType(ip6_mob_brr_type, "ip6_mobility_be"));
|
||||||
m->Assign(0, val_mgr->GetCount(*((uint8_t*)msg_data)));
|
m->Assign(0, val_mgr->GetCount(*((uint8_t*)msg_data)));
|
||||||
const in6_addr* hoa = (const in6_addr*)(msg_data + sizeof(uint16_t));
|
const in6_addr* hoa = (const in6_addr*)(msg_data + sizeof(uint16_t));
|
||||||
m->Assign(1, new AddrVal(IPAddr(*hoa)));
|
m->Assign(1, make_intrusive<AddrVal>(IPAddr(*hoa)));
|
||||||
off += sizeof(uint16_t) + sizeof(in6_addr);
|
off += sizeof(uint16_t) + sizeof(in6_addr);
|
||||||
m->Assign(2, BuildOptionsVal(data + off, Length() - off));
|
m->Assign(2, BuildOptionsVal(data + off, Length() - off));
|
||||||
msg->Assign(8, m);
|
msg->Assign(8, m);
|
||||||
|
@ -341,8 +341,8 @@ RecordVal* IP_Hdr::BuildIPHdrVal() const
|
||||||
rval->Assign(3, val_mgr->GetCount(ntohs(ip4->ip_id)));
|
rval->Assign(3, val_mgr->GetCount(ntohs(ip4->ip_id)));
|
||||||
rval->Assign(4, val_mgr->GetCount(ip4->ip_ttl));
|
rval->Assign(4, val_mgr->GetCount(ip4->ip_ttl));
|
||||||
rval->Assign(5, val_mgr->GetCount(ip4->ip_p));
|
rval->Assign(5, val_mgr->GetCount(ip4->ip_p));
|
||||||
rval->Assign(6, new AddrVal(ip4->ip_src.s_addr));
|
rval->Assign(6, make_intrusive<AddrVal>(ip4->ip_src.s_addr));
|
||||||
rval->Assign(7, new AddrVal(ip4->ip_dst.s_addr));
|
rval->Assign(7, make_intrusive<AddrVal>(ip4->ip_dst.s_addr));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1043,7 +1043,7 @@ IntrusivePtr<VectorVal> ParaglobVal::Get(StringVal* &pattern)
|
||||||
|
|
||||||
std::vector<std::string> matches = this->internal_paraglob->get(string_pattern);
|
std::vector<std::string> matches = this->internal_paraglob->get(string_pattern);
|
||||||
for (unsigned int i = 0; i < matches.size(); i++)
|
for (unsigned int i = 0; i < matches.size(); i++)
|
||||||
rval->Assign(i, new StringVal(matches.at(i)));
|
rval->Assign(i, make_intrusive<StringVal>(matches.at(i)));
|
||||||
|
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,7 +78,7 @@ Val* RuleMatcher::BuildRuleStateValue(const Rule* rule,
|
||||||
const RuleEndpointState* state) const
|
const RuleEndpointState* state) const
|
||||||
{
|
{
|
||||||
RecordVal* val = new RecordVal(signature_state);
|
RecordVal* val = new RecordVal(signature_state);
|
||||||
val->Assign(0, new StringVal(rule->ID()));
|
val->Assign(0, make_intrusive<StringVal>(rule->ID()));
|
||||||
val->Assign(1, state->GetAnalyzer()->BuildConnVal());
|
val->Assign(1, state->GetAnalyzer()->BuildConnVal());
|
||||||
val->Assign(2, val_mgr->GetBool(state->is_orig));
|
val->Assign(2, val_mgr->GetBool(state->is_orig));
|
||||||
val->Assign(3, val_mgr->GetCount(state->payload_size));
|
val->Assign(3, val_mgr->GetCount(state->payload_size));
|
||||||
|
|
|
@ -84,25 +84,25 @@ VectorVal* BroSubstring::VecToPolicy(Vec* vec)
|
||||||
{
|
{
|
||||||
BroSubstring* bst = (*vec)[i];
|
BroSubstring* bst = (*vec)[i];
|
||||||
|
|
||||||
RecordVal* st_val = new RecordVal(sw_substring_type);
|
auto st_val = make_intrusive<RecordVal>(sw_substring_type);
|
||||||
st_val->Assign(0, new StringVal(new BroString(*bst)));
|
st_val->Assign(0, make_intrusive<StringVal>(new BroString(*bst)));
|
||||||
|
|
||||||
VectorVal* aligns = new VectorVal(sw_align_vec_type);
|
auto aligns = make_intrusive<VectorVal>(sw_align_vec_type);
|
||||||
|
|
||||||
for ( unsigned int j = 0; j < bst->GetNumAlignments(); ++j )
|
for ( unsigned int j = 0; j < bst->GetNumAlignments(); ++j )
|
||||||
{
|
{
|
||||||
const BSSAlign& align = (bst->GetAlignments())[j];
|
const BSSAlign& align = (bst->GetAlignments())[j];
|
||||||
|
|
||||||
RecordVal* align_val = new RecordVal(sw_align_type);
|
auto align_val = make_intrusive<RecordVal>(sw_align_type);
|
||||||
align_val->Assign(0, new StringVal(new BroString(*align.string)));
|
align_val->Assign(0, make_intrusive<StringVal>(new BroString(*align.string)));
|
||||||
align_val->Assign(1, val_mgr->GetCount(align.index));
|
align_val->Assign(1, val_mgr->GetCount(align.index));
|
||||||
|
|
||||||
aligns->Assign(j+1, align_val);
|
aligns->Assign(j+1, std::move(align_val));
|
||||||
}
|
}
|
||||||
|
|
||||||
st_val->Assign(1, aligns);
|
st_val->Assign(1, std::move(aligns));
|
||||||
st_val->Assign(2, val_mgr->GetBool(bst->IsNewAlignment()));
|
st_val->Assign(2, val_mgr->GetBool(bst->IsNewAlignment()));
|
||||||
result->Assign(i+1, st_val);
|
result->Assign(i+1, std::move(st_val));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -217,11 +217,11 @@ static void print_log(val_list* vals)
|
||||||
{
|
{
|
||||||
ODesc d(DESC_READABLE);
|
ODesc d(DESC_READABLE);
|
||||||
val->Describe(&d);
|
val->Describe(&d);
|
||||||
vec->Assign(vec->Size(), new StringVal(d.Description()));
|
vec->Assign(vec->Size(), make_intrusive<StringVal>(d.Description()));
|
||||||
}
|
}
|
||||||
|
|
||||||
record->Assign(0, new Val(current_time(), TYPE_TIME));
|
record->Assign(0, make_intrusive<Val>(current_time(), TYPE_TIME));
|
||||||
record->Assign(1, vec.release());
|
record->Assign(1, std::move(vec));
|
||||||
log_mgr->Write(plval.get(), record.get());
|
log_mgr->Write(plval.get(), record.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,15 +20,15 @@ RecordVal* EncapsulatingConn::GetRecordVal() const
|
||||||
{
|
{
|
||||||
RecordVal *rv = new RecordVal(BifType::Record::Tunnel::EncapsulatingConn);
|
RecordVal *rv = new RecordVal(BifType::Record::Tunnel::EncapsulatingConn);
|
||||||
|
|
||||||
RecordVal* id_val = new RecordVal(conn_id);
|
auto id_val = make_intrusive<RecordVal>(conn_id);
|
||||||
id_val->Assign(0, new AddrVal(src_addr));
|
id_val->Assign(0, make_intrusive<AddrVal>(src_addr));
|
||||||
id_val->Assign(1, val_mgr->GetPort(ntohs(src_port), proto));
|
id_val->Assign(1, val_mgr->GetPort(ntohs(src_port), proto));
|
||||||
id_val->Assign(2, new AddrVal(dst_addr));
|
id_val->Assign(2, make_intrusive<AddrVal>(dst_addr));
|
||||||
id_val->Assign(3, val_mgr->GetPort(ntohs(dst_port), proto));
|
id_val->Assign(3, val_mgr->GetPort(ntohs(dst_port), proto));
|
||||||
rv->Assign(0, id_val);
|
rv->Assign(0, std::move(id_val));
|
||||||
rv->Assign(1, BifType::Enum::Tunnel::Type->GetVal(type));
|
rv->Assign(1, BifType::Enum::Tunnel::Type->GetVal(type));
|
||||||
|
|
||||||
rv->Assign(2, new StringVal(uid.Base62("C").c_str()));
|
rv->Assign(2, make_intrusive<StringVal>(uid.Base62("C").c_str()));
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
|
@ -824,15 +824,15 @@ TableVal* RecordType::GetRecordFieldsVal(const RecordVal* rv) const
|
||||||
|
|
||||||
bool logged = (fd->attrs && fd->FindAttr(ATTR_LOG) != 0);
|
bool logged = (fd->attrs && fd->FindAttr(ATTR_LOG) != 0);
|
||||||
|
|
||||||
RecordVal* nr = new RecordVal(internal_type("record_field")->AsRecordType());
|
auto nr = make_intrusive<RecordVal>(internal_type("record_field")->AsRecordType());
|
||||||
|
|
||||||
string s = container_type_name(ft);
|
string s = container_type_name(ft);
|
||||||
nr->Assign(0, new StringVal(s));
|
nr->Assign(0, make_intrusive<StringVal>(s));
|
||||||
nr->Assign(1, val_mgr->GetBool(logged));
|
nr->Assign(1, val_mgr->GetBool(logged));
|
||||||
nr->Assign(2, fv);
|
nr->Assign(2, fv);
|
||||||
nr->Assign(3, FieldDefault(i));
|
nr->Assign(3, FieldDefault(i));
|
||||||
Val* field_name = new StringVal(FieldName(i));
|
Val* field_name = new StringVal(FieldName(i));
|
||||||
rval->Assign(field_name, nr);
|
rval->Assign(field_name, std::move(nr));
|
||||||
Unref(field_name);
|
Unref(field_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
59
src/Val.cc
59
src/Val.cc
|
@ -1437,27 +1437,31 @@ void TableVal::CheckExpireAttr(attr_tag at)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int TableVal::Assign(Val* index, Val* new_val)
|
int TableVal::Assign(Val* index, IntrusivePtr<Val> new_val)
|
||||||
{
|
{
|
||||||
HashKey* k = ComputeHash(index);
|
HashKey* k = ComputeHash(index);
|
||||||
if ( ! k )
|
if ( ! k )
|
||||||
{
|
{
|
||||||
Unref(new_val);
|
|
||||||
index->Error("index type doesn't match table", table_type->Indices());
|
index->Error("index type doesn't match table", table_type->Indices());
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Assign(index, k, new_val);
|
return Assign(index, k, std::move(new_val));
|
||||||
}
|
}
|
||||||
|
|
||||||
int TableVal::Assign(Val* index, HashKey* k, Val* new_val)
|
int TableVal::Assign(Val* index, Val* new_val)
|
||||||
|
{
|
||||||
|
return Assign(index, {AdoptRef{}, new_val});
|
||||||
|
}
|
||||||
|
|
||||||
|
int TableVal::Assign(Val* index, HashKey* k, IntrusivePtr<Val> new_val)
|
||||||
{
|
{
|
||||||
int is_set = table_type->IsSet();
|
int is_set = table_type->IsSet();
|
||||||
|
|
||||||
if ( (is_set && new_val) || (! is_set && ! new_val) )
|
if ( (is_set && new_val) || (! is_set && ! new_val) )
|
||||||
InternalWarning("bad set/table in TableVal::Assign");
|
InternalWarning("bad set/table in TableVal::Assign");
|
||||||
|
|
||||||
TableEntryVal* new_entry_val = new TableEntryVal(new_val);
|
TableEntryVal* new_entry_val = new TableEntryVal(IntrusivePtr{new_val}.release());
|
||||||
HashKey k_copy(k->Key(), k->Size(), k->Hash());
|
HashKey k_copy(k->Key(), k->Size(), k->Hash());
|
||||||
TableEntryVal* old_entry_val = AsNonConstTable()->Insert(k, new_entry_val);
|
TableEntryVal* old_entry_val = AsNonConstTable()->Insert(k, new_entry_val);
|
||||||
|
|
||||||
|
@ -1488,7 +1492,7 @@ int TableVal::Assign(Val* index, HashKey* k, Val* new_val)
|
||||||
if ( change_func )
|
if ( change_func )
|
||||||
{
|
{
|
||||||
Val* change_index = index ? index->Ref() : RecoverIndex(&k_copy);
|
Val* change_index = index ? index->Ref() : RecoverIndex(&k_copy);
|
||||||
Val* v = old_entry_val ? old_entry_val->Value() : new_val;
|
Val* v = old_entry_val ? old_entry_val->Value() : new_val.get();
|
||||||
CallChangeFunc(change_index, v, old_entry_val ? ELEMENT_CHANGED : ELEMENT_NEW);
|
CallChangeFunc(change_index, v, old_entry_val ? ELEMENT_CHANGED : ELEMENT_NEW);
|
||||||
Unref(change_index);
|
Unref(change_index);
|
||||||
}
|
}
|
||||||
|
@ -1502,6 +1506,11 @@ int TableVal::Assign(Val* index, HashKey* k, Val* new_val)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int TableVal::Assign(Val* index, HashKey* k, Val* new_val)
|
||||||
|
{
|
||||||
|
return Assign(index, k, {AdoptRef{}, new_val});
|
||||||
|
}
|
||||||
|
|
||||||
int TableVal::AddTo(Val* val, int is_first_init) const
|
int TableVal::AddTo(Val* val, int is_first_init) const
|
||||||
{
|
{
|
||||||
return AddTo(val, is_first_init, true);
|
return AddTo(val, is_first_init, true);
|
||||||
|
@ -1875,10 +1884,7 @@ VectorVal* TableVal::LookupSubnets(const SubNetVal* search)
|
||||||
|
|
||||||
auto matches = subnets->FindAll(search);
|
auto matches = subnets->FindAll(search);
|
||||||
for ( auto element : matches )
|
for ( auto element : matches )
|
||||||
{
|
result->Assign(result->Size(), make_intrusive<SubNetVal>(get<0>(element)));
|
||||||
SubNetVal* s = new SubNetVal(get<0>(element));
|
|
||||||
result->Assign(result->Size(), s);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -1897,7 +1903,7 @@ TableVal* TableVal::LookupSubnetValues(const SubNetVal* search)
|
||||||
TableEntryVal* entry = reinterpret_cast<TableEntryVal*>(get<1>(element));
|
TableEntryVal* entry = reinterpret_cast<TableEntryVal*>(get<1>(element));
|
||||||
|
|
||||||
if ( entry && entry->Value() )
|
if ( entry && entry->Value() )
|
||||||
nt->Assign(s, entry->Value()->Ref());
|
nt->Assign(s, {NewRef{}, entry->Value()});
|
||||||
else
|
else
|
||||||
nt->Assign(s, 0); // set
|
nt->Assign(s, 0); // set
|
||||||
|
|
||||||
|
@ -2223,7 +2229,7 @@ int TableVal::CheckAndAssign(Val* index, IntrusivePtr<Val> new_val)
|
||||||
if ( v )
|
if ( v )
|
||||||
index->Warn("multiple initializations for index");
|
index->Warn("multiple initializations for index");
|
||||||
|
|
||||||
return Assign(index, new_val.release());
|
return Assign(index, std::move(new_val));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TableVal::InitDefaultFunc(Frame* f)
|
void TableVal::InitDefaultFunc(Frame* f)
|
||||||
|
@ -2600,13 +2606,18 @@ RecordVal::~RecordVal()
|
||||||
delete_vals(AsNonConstRecord());
|
delete_vals(AsNonConstRecord());
|
||||||
}
|
}
|
||||||
|
|
||||||
void RecordVal::Assign(int field, Val* new_val)
|
void RecordVal::Assign(int field, IntrusivePtr<Val> new_val)
|
||||||
{
|
{
|
||||||
Val* old_val = AsNonConstRecord()->replace(field, new_val);
|
Val* old_val = AsNonConstRecord()->replace(field, new_val.release());
|
||||||
Unref(old_val);
|
Unref(old_val);
|
||||||
Modified();
|
Modified();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RecordVal::Assign(int field, Val* new_val)
|
||||||
|
{
|
||||||
|
Assign(field, {AdoptRef{}, new_val});
|
||||||
|
}
|
||||||
|
|
||||||
Val* RecordVal::Lookup(int field) const
|
Val* RecordVal::Lookup(int field) const
|
||||||
{
|
{
|
||||||
return (*AsRecord())[field];
|
return (*AsRecord())[field];
|
||||||
|
@ -2698,11 +2709,11 @@ RecordVal* RecordVal::CoerceTo(const RecordType* t, Val* aggr, bool allow_orphan
|
||||||
auto rhs = make_intrusive<ConstExpr>(IntrusivePtr{NewRef{}, v});
|
auto rhs = make_intrusive<ConstExpr>(IntrusivePtr{NewRef{}, v});
|
||||||
auto e = make_intrusive<RecordCoerceExpr>(std::move(rhs),
|
auto e = make_intrusive<RecordCoerceExpr>(std::move(rhs),
|
||||||
IntrusivePtr{NewRef{}, ar_t->FieldType(t_i)->AsRecordType()});
|
IntrusivePtr{NewRef{}, ar_t->FieldType(t_i)->AsRecordType()});
|
||||||
ar->Assign(t_i, e->Eval(nullptr).release());
|
ar->Assign(t_i, e->Eval(nullptr));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
ar->Assign(t_i, v->Ref());
|
ar->Assign(t_i, {NewRef{}, v});
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( i = 0; i < ar_t->NumFields(); ++i )
|
for ( i = 0; i < ar_t->NumFields(); ++i )
|
||||||
|
@ -2866,14 +2877,11 @@ VectorVal::~VectorVal()
|
||||||
delete val.vector_val;
|
delete val.vector_val;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VectorVal::Assign(unsigned int index, Val* element)
|
bool VectorVal::Assign(unsigned int index, IntrusivePtr<Val> element)
|
||||||
{
|
{
|
||||||
if ( element &&
|
if ( element &&
|
||||||
! same_type(element->Type(), vector_type->YieldType(), 0) )
|
! same_type(element->Type(), vector_type->YieldType(), 0) )
|
||||||
{
|
|
||||||
Unref(element);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
Val* val_at_index = 0;
|
Val* val_at_index = 0;
|
||||||
|
|
||||||
|
@ -2887,19 +2895,24 @@ bool VectorVal::Assign(unsigned int index, Val* element)
|
||||||
// Note: we do *not* Ref() the element, if any, at this point.
|
// Note: we do *not* Ref() the element, if any, at this point.
|
||||||
// AssignExpr::Eval() already does this; other callers must remember
|
// AssignExpr::Eval() already does this; other callers must remember
|
||||||
// to do it similarly.
|
// to do it similarly.
|
||||||
(*val.vector_val)[index] = element;
|
(*val.vector_val)[index] = element.release();
|
||||||
|
|
||||||
Modified();
|
Modified();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool VectorVal::Assign(unsigned int index, Val* element)
|
||||||
|
{
|
||||||
|
return Assign(index, {AdoptRef{}, element});
|
||||||
|
}
|
||||||
|
|
||||||
bool VectorVal::AssignRepeat(unsigned int index, unsigned int how_many,
|
bool VectorVal::AssignRepeat(unsigned int index, unsigned int how_many,
|
||||||
Val* element)
|
Val* element)
|
||||||
{
|
{
|
||||||
ResizeAtLeast(index + how_many);
|
ResizeAtLeast(index + how_many);
|
||||||
|
|
||||||
for ( unsigned int i = index; i < index + how_many; ++i )
|
for ( unsigned int i = index; i < index + how_many; ++i )
|
||||||
if ( ! Assign(i, element->Ref() ) )
|
if ( ! Assign(i, {NewRef{}, element}) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -2963,7 +2976,7 @@ int VectorVal::AddTo(Val* val, int /* is_first_init */) const
|
||||||
auto last_idx = v->Size();
|
auto last_idx = v->Size();
|
||||||
|
|
||||||
for ( auto i = 0u; i < Size(); ++i )
|
for ( auto i = 0u; i < Size(); ++i )
|
||||||
v->Assign(last_idx++, Lookup(i)->Ref());
|
v->Assign(last_idx++, {NewRef{}, Lookup(i)});
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
10
src/Val.h
10
src/Val.h
|
@ -715,7 +715,9 @@ public:
|
||||||
// version takes a HashKey and Unref()'s it when done. If we're a
|
// version takes a HashKey and Unref()'s it when done. If we're a
|
||||||
// set, new_val has to be nil. If we aren't a set, index may be nil
|
// set, new_val has to be nil. If we aren't a set, index may be nil
|
||||||
// in the second version.
|
// in the second version.
|
||||||
|
int Assign(Val* index, IntrusivePtr<Val> new_val);
|
||||||
int Assign(Val* index, Val* new_val);
|
int Assign(Val* index, Val* new_val);
|
||||||
|
int Assign(Val* index, HashKey* k, IntrusivePtr<Val> new_val);
|
||||||
int Assign(Val* index, HashKey* k, Val* new_val);
|
int Assign(Val* index, HashKey* k, Val* new_val);
|
||||||
|
|
||||||
Val* SizeVal() const override { return val_mgr->GetCount(Size()); }
|
Val* SizeVal() const override { return val_mgr->GetCount(Size()); }
|
||||||
|
@ -875,6 +877,7 @@ public:
|
||||||
Val* SizeVal() const override
|
Val* SizeVal() const override
|
||||||
{ return val_mgr->GetCount(Type()->AsRecordType()->NumFields()); }
|
{ return val_mgr->GetCount(Type()->AsRecordType()->NumFields()); }
|
||||||
|
|
||||||
|
void Assign(int field, IntrusivePtr<Val> new_val);
|
||||||
void Assign(int field, Val* new_val);
|
void Assign(int field, Val* new_val);
|
||||||
Val* Lookup(int field) const; // Does not Ref() value.
|
Val* Lookup(int field) const; // Does not Ref() value.
|
||||||
Val* LookupWithDefault(int field) const; // Does Ref() value.
|
Val* LookupWithDefault(int field) const; // Does Ref() value.
|
||||||
|
@ -965,11 +968,14 @@ public:
|
||||||
// Note: does NOT Ref() the element! Remember to do so unless
|
// Note: does NOT Ref() the element! Remember to do so unless
|
||||||
// the element was just created and thus has refcount 1.
|
// the element was just created and thus has refcount 1.
|
||||||
//
|
//
|
||||||
|
bool Assign(unsigned int index, IntrusivePtr<Val> element);
|
||||||
bool Assign(unsigned int index, Val* element);
|
bool Assign(unsigned int index, Val* element);
|
||||||
bool Assign(Val* index, Val* element)
|
|
||||||
|
template<typename E>
|
||||||
|
bool Assign(Val* index, E&& element)
|
||||||
{
|
{
|
||||||
return Assign(index->AsListVal()->Index(0)->CoerceToUnsigned(),
|
return Assign(index->AsListVal()->Index(0)->CoerceToUnsigned(),
|
||||||
element);
|
std::forward<E>(element));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Assigns the value to how_many locations starting at index.
|
// Assigns the value to how_many locations starting at index.
|
||||||
|
|
|
@ -481,7 +481,7 @@ void BitTorrentTracker_Analyzer::ResponseBenc(int name_len, char* name,
|
||||||
uint16_t pt = ntohs((value[4] << 8) | value[5]);
|
uint16_t pt = ntohs((value[4] << 8) | value[5]);
|
||||||
|
|
||||||
RecordVal* peer = new RecordVal(bittorrent_peer);
|
RecordVal* peer = new RecordVal(bittorrent_peer);
|
||||||
peer->Assign(0, new AddrVal(ad));
|
peer->Assign(0, make_intrusive<AddrVal>(ad));
|
||||||
peer->Assign(1, val_mgr->GetPort(pt, TRANSPORT_TCP));
|
peer->Assign(1, val_mgr->GetPort(pt, TRANSPORT_TCP));
|
||||||
res_val_peers->Assign(peer, 0);
|
res_val_peers->Assign(peer, 0);
|
||||||
|
|
||||||
|
@ -491,9 +491,9 @@ void BitTorrentTracker_Analyzer::ResponseBenc(int name_len, char* name,
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
StringVal* name_ = new StringVal(name_len, name);
|
StringVal* name_ = new StringVal(name_len, name);
|
||||||
RecordVal* benc_value = new RecordVal(bittorrent_benc_value);
|
auto benc_value = make_intrusive<RecordVal>(bittorrent_benc_value);
|
||||||
benc_value->Assign(type, new StringVal(value_len, value));
|
benc_value->Assign(type, make_intrusive<StringVal>(value_len, value));
|
||||||
res_val_benc->Assign(name_, benc_value);
|
res_val_benc->Assign(name_, std::move(benc_value));
|
||||||
|
|
||||||
Unref(name_);
|
Unref(name_);
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,13 +61,13 @@ refine flow DHCP_Flow += {
|
||||||
dhcp_msg_val->Assign(0, val_mgr->GetCount(${msg.op}));
|
dhcp_msg_val->Assign(0, val_mgr->GetCount(${msg.op}));
|
||||||
dhcp_msg_val->Assign(1, val_mgr->GetCount(${msg.type}));
|
dhcp_msg_val->Assign(1, val_mgr->GetCount(${msg.type}));
|
||||||
dhcp_msg_val->Assign(2, val_mgr->GetCount(${msg.xid}));
|
dhcp_msg_val->Assign(2, val_mgr->GetCount(${msg.xid}));
|
||||||
dhcp_msg_val->Assign(3, new Val(secs, TYPE_INTERVAL));
|
dhcp_msg_val->Assign(3, make_intrusive<Val>(secs, TYPE_INTERVAL));
|
||||||
dhcp_msg_val->Assign(4, val_mgr->GetCount(${msg.flags}));
|
dhcp_msg_val->Assign(4, val_mgr->GetCount(${msg.flags}));
|
||||||
dhcp_msg_val->Assign(5, new AddrVal(htonl(${msg.ciaddr})));
|
dhcp_msg_val->Assign(5, make_intrusive<AddrVal>(htonl(${msg.ciaddr})));
|
||||||
dhcp_msg_val->Assign(6, new AddrVal(htonl(${msg.yiaddr})));
|
dhcp_msg_val->Assign(6, make_intrusive<AddrVal>(htonl(${msg.yiaddr})));
|
||||||
dhcp_msg_val->Assign(7, new AddrVal(htonl(${msg.siaddr})));
|
dhcp_msg_val->Assign(7, make_intrusive<AddrVal>(htonl(${msg.siaddr})));
|
||||||
dhcp_msg_val->Assign(8, new AddrVal(htonl(${msg.giaddr})));
|
dhcp_msg_val->Assign(8, make_intrusive<AddrVal>(htonl(${msg.giaddr})));
|
||||||
dhcp_msg_val->Assign(9, new StringVal(mac_str));
|
dhcp_msg_val->Assign(9, make_intrusive<StringVal>(mac_str));
|
||||||
|
|
||||||
int last_non_null = 0;
|
int last_non_null = 0;
|
||||||
|
|
||||||
|
@ -78,8 +78,8 @@ refine flow DHCP_Flow += {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( last_non_null > 0 )
|
if ( last_non_null > 0 )
|
||||||
dhcp_msg_val->Assign(10, new StringVal(last_non_null + 1,
|
dhcp_msg_val->Assign(10, make_intrusive<StringVal>(last_non_null + 1,
|
||||||
reinterpret_cast<const char*>(${msg.sname}.begin())));
|
reinterpret_cast<const char*>(${msg.sname}.begin())));
|
||||||
|
|
||||||
last_non_null = 0;
|
last_non_null = 0;
|
||||||
|
|
||||||
|
@ -90,8 +90,8 @@ refine flow DHCP_Flow += {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( last_non_null > 0 )
|
if ( last_non_null > 0 )
|
||||||
dhcp_msg_val->Assign(11, new StringVal(last_non_null + 1,
|
dhcp_msg_val->Assign(11, make_intrusive<StringVal>(last_non_null + 1,
|
||||||
reinterpret_cast<const char*>(${msg.file_n}.begin())));
|
reinterpret_cast<const char*>(${msg.file_n}.begin())));
|
||||||
|
|
||||||
init_options();
|
init_options();
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ refine casetype OptionValue += {
|
||||||
refine flow DHCP_Flow += {
|
refine flow DHCP_Flow += {
|
||||||
function process_subnet_option(v: OptionValue): bool
|
function process_subnet_option(v: OptionValue): bool
|
||||||
%{
|
%{
|
||||||
${context.flow}->options->Assign(1, new AddrVal(htonl(${v.subnet})));
|
${context.flow}->options->Assign(1, make_intrusive<AddrVal>(htonl(${v.subnet})));
|
||||||
return true;
|
return true;
|
||||||
%}
|
%}
|
||||||
};
|
};
|
||||||
|
@ -64,7 +64,7 @@ refine flow DHCP_Flow += {
|
||||||
for ( int i = 0; i < num_routers; ++i )
|
for ( int i = 0; i < num_routers; ++i )
|
||||||
{
|
{
|
||||||
uint32 raddr = (*rlist)[i];
|
uint32 raddr = (*rlist)[i];
|
||||||
router_list->Assign(i, new AddrVal(htonl(raddr)));
|
router_list->Assign(i, make_intrusive<AddrVal>(htonl(raddr)));
|
||||||
}
|
}
|
||||||
|
|
||||||
${context.flow}->options->Assign(2, router_list);
|
${context.flow}->options->Assign(2, router_list);
|
||||||
|
@ -98,7 +98,7 @@ refine flow DHCP_Flow += {
|
||||||
for ( int i = 0; i < num_servers; ++i )
|
for ( int i = 0; i < num_servers; ++i )
|
||||||
{
|
{
|
||||||
uint32 raddr = (*rlist)[i];
|
uint32 raddr = (*rlist)[i];
|
||||||
timeserver_list->Assign(i, new AddrVal(htonl(raddr)));
|
timeserver_list->Assign(i, make_intrusive<AddrVal>(htonl(raddr)));
|
||||||
}
|
}
|
||||||
|
|
||||||
${context.flow}->options->Assign(26, timeserver_list);
|
${context.flow}->options->Assign(26, timeserver_list);
|
||||||
|
@ -132,7 +132,7 @@ refine flow DHCP_Flow += {
|
||||||
for ( int i = 0; i < num_servers; ++i )
|
for ( int i = 0; i < num_servers; ++i )
|
||||||
{
|
{
|
||||||
uint32 raddr = (*rlist)[i];
|
uint32 raddr = (*rlist)[i];
|
||||||
nameserver_list->Assign(i, new AddrVal(htonl(raddr)));
|
nameserver_list->Assign(i, make_intrusive<AddrVal>(htonl(raddr)));
|
||||||
}
|
}
|
||||||
|
|
||||||
${context.flow}->options->Assign(27, nameserver_list);
|
${context.flow}->options->Assign(27, nameserver_list);
|
||||||
|
@ -166,7 +166,7 @@ refine flow DHCP_Flow += {
|
||||||
for ( int i = 0; i < num_servers; ++i )
|
for ( int i = 0; i < num_servers; ++i )
|
||||||
{
|
{
|
||||||
uint32 raddr = (*rlist)[i];
|
uint32 raddr = (*rlist)[i];
|
||||||
server_list->Assign(i, new AddrVal(htonl(raddr)));
|
server_list->Assign(i, make_intrusive<AddrVal>(htonl(raddr)));
|
||||||
}
|
}
|
||||||
|
|
||||||
${context.flow}->options->Assign(3, server_list);
|
${context.flow}->options->Assign(3, server_list);
|
||||||
|
@ -192,7 +192,7 @@ refine casetype OptionValue += {
|
||||||
refine flow DHCP_Flow += {
|
refine flow DHCP_Flow += {
|
||||||
function process_host_name_option(v: OptionValue): bool
|
function process_host_name_option(v: OptionValue): bool
|
||||||
%{
|
%{
|
||||||
${context.flow}->options->Assign(4, new StringVal(${v.host_name}.length(),
|
${context.flow}->options->Assign(4, make_intrusive<StringVal>(${v.host_name}.length(),
|
||||||
reinterpret_cast<const char*>(${v.host_name}.begin())));
|
reinterpret_cast<const char*>(${v.host_name}.begin())));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -225,7 +225,7 @@ refine flow DHCP_Flow += {
|
||||||
last_non_null = i;
|
last_non_null = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
${context.flow}->options->Assign(5, new StringVal(last_non_null == 0 ? 0 : last_non_null + 1,
|
${context.flow}->options->Assign(5, make_intrusive<StringVal>(last_non_null == 0 ? 0 : last_non_null + 1,
|
||||||
reinterpret_cast<const char*>(${v.domain_name}.begin())));
|
reinterpret_cast<const char*>(${v.domain_name}.begin())));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -274,7 +274,7 @@ refine casetype OptionValue += {
|
||||||
refine flow DHCP_Flow += {
|
refine flow DHCP_Flow += {
|
||||||
function process_broadcast_address_option(v: OptionValue): bool
|
function process_broadcast_address_option(v: OptionValue): bool
|
||||||
%{
|
%{
|
||||||
${context.flow}->options->Assign(7, new AddrVal(htonl(${v.broadcast_address})));
|
${context.flow}->options->Assign(7, make_intrusive<AddrVal>(htonl(${v.broadcast_address})));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
%}
|
%}
|
||||||
|
@ -305,7 +305,7 @@ refine flow DHCP_Flow += {
|
||||||
for ( int i = 0; i < num_servers; ++i )
|
for ( int i = 0; i < num_servers; ++i )
|
||||||
{
|
{
|
||||||
uint32 raddr = (*rlist)[i];
|
uint32 raddr = (*rlist)[i];
|
||||||
ntpserver_list->Assign(i, new AddrVal(htonl(raddr)));
|
ntpserver_list->Assign(i, make_intrusive<AddrVal>(htonl(raddr)));
|
||||||
}
|
}
|
||||||
|
|
||||||
${context.flow}->options->Assign(28, ntpserver_list);
|
${context.flow}->options->Assign(28, ntpserver_list);
|
||||||
|
@ -331,7 +331,7 @@ refine casetype OptionValue += {
|
||||||
refine flow DHCP_Flow += {
|
refine flow DHCP_Flow += {
|
||||||
function process_vendor_specific_option(v: OptionValue): bool
|
function process_vendor_specific_option(v: OptionValue): bool
|
||||||
%{
|
%{
|
||||||
${context.flow}->options->Assign(8, new StringVal(${v.vendor_specific}.length(),
|
${context.flow}->options->Assign(8, make_intrusive<StringVal>(${v.vendor_specific}.length(),
|
||||||
reinterpret_cast<const char*>(${v.vendor_specific}.begin())));
|
reinterpret_cast<const char*>(${v.vendor_specific}.begin())));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -363,7 +363,7 @@ refine flow DHCP_Flow += {
|
||||||
for ( int i = 0; i < num_servers; ++i )
|
for ( int i = 0; i < num_servers; ++i )
|
||||||
{
|
{
|
||||||
uint32 raddr = (*rlist)[i];
|
uint32 raddr = (*rlist)[i];
|
||||||
server_list->Assign(i, new AddrVal(htonl(raddr)));
|
server_list->Assign(i, make_intrusive<AddrVal>(htonl(raddr)));
|
||||||
}
|
}
|
||||||
|
|
||||||
${context.flow}->options->Assign(9, server_list);
|
${context.flow}->options->Assign(9, server_list);
|
||||||
|
@ -389,7 +389,7 @@ refine casetype OptionValue += {
|
||||||
refine flow DHCP_Flow += {
|
refine flow DHCP_Flow += {
|
||||||
function process_addr_request_option(v: OptionValue): bool
|
function process_addr_request_option(v: OptionValue): bool
|
||||||
%{
|
%{
|
||||||
${context.flow}->options->Assign(10, new AddrVal(htonl(${v.addr_request})));
|
${context.flow}->options->Assign(10, make_intrusive<AddrVal>(htonl(${v.addr_request})));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
%}
|
%}
|
||||||
|
@ -414,7 +414,7 @@ refine flow DHCP_Flow += {
|
||||||
function process_lease_option(v: OptionValue): bool
|
function process_lease_option(v: OptionValue): bool
|
||||||
%{
|
%{
|
||||||
double lease = static_cast<double>(${v.lease});
|
double lease = static_cast<double>(${v.lease});
|
||||||
${context.flow}->options->Assign(11, new Val(lease, TYPE_INTERVAL));
|
${context.flow}->options->Assign(11, make_intrusive<Val>(lease, TYPE_INTERVAL));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
%}
|
%}
|
||||||
|
@ -438,7 +438,7 @@ refine casetype OptionValue += {
|
||||||
refine flow DHCP_Flow += {
|
refine flow DHCP_Flow += {
|
||||||
function process_serv_id_option(v: OptionValue): bool
|
function process_serv_id_option(v: OptionValue): bool
|
||||||
%{
|
%{
|
||||||
${context.flow}->options->Assign(12, new AddrVal(htonl(${v.serv_addr})));
|
${context.flow}->options->Assign(12, make_intrusive<AddrVal>(htonl(${v.serv_addr})));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
%}
|
%}
|
||||||
|
@ -496,7 +496,7 @@ refine casetype OptionValue += {
|
||||||
refine flow DHCP_Flow += {
|
refine flow DHCP_Flow += {
|
||||||
function process_message_option(v: OptionValue): bool
|
function process_message_option(v: OptionValue): bool
|
||||||
%{
|
%{
|
||||||
${context.flow}->options->Assign(14, new StringVal(${v.message}.length(),
|
${context.flow}->options->Assign(14, make_intrusive<StringVal>(${v.message}.length(),
|
||||||
reinterpret_cast<const char*>(${v.message}.begin())));
|
reinterpret_cast<const char*>(${v.message}.begin())));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -546,7 +546,7 @@ refine flow DHCP_Flow += {
|
||||||
function process_renewal_time_option(v: OptionValue): bool
|
function process_renewal_time_option(v: OptionValue): bool
|
||||||
%{
|
%{
|
||||||
double renewal_time = static_cast<double>(${v.renewal_time});
|
double renewal_time = static_cast<double>(${v.renewal_time});
|
||||||
${context.flow}->options->Assign(16, new Val(renewal_time, TYPE_INTERVAL));
|
${context.flow}->options->Assign(16, make_intrusive<Val>(renewal_time, TYPE_INTERVAL));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
%}
|
%}
|
||||||
|
@ -571,7 +571,7 @@ refine flow DHCP_Flow += {
|
||||||
function process_rebinding_time_option(v: OptionValue): bool
|
function process_rebinding_time_option(v: OptionValue): bool
|
||||||
%{
|
%{
|
||||||
double rebinding_time = static_cast<double>(${v.rebinding_time});
|
double rebinding_time = static_cast<double>(${v.rebinding_time});
|
||||||
${context.flow}->options->Assign(17, new Val(rebinding_time, TYPE_INTERVAL));
|
${context.flow}->options->Assign(17, make_intrusive<Val>(rebinding_time, TYPE_INTERVAL));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
%}
|
%}
|
||||||
|
@ -595,7 +595,7 @@ refine casetype OptionValue += {
|
||||||
refine flow DHCP_Flow += {
|
refine flow DHCP_Flow += {
|
||||||
function process_vendor_class_option(v: OptionValue): bool
|
function process_vendor_class_option(v: OptionValue): bool
|
||||||
%{
|
%{
|
||||||
${context.flow}->options->Assign(18, new StringVal(${v.vendor_class}.length(),
|
${context.flow}->options->Assign(18, make_intrusive<StringVal>(${v.vendor_class}.length(),
|
||||||
reinterpret_cast<const char*>(${v.vendor_class}.begin())));
|
reinterpret_cast<const char*>(${v.vendor_class}.begin())));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -627,7 +627,7 @@ refine flow DHCP_Flow += {
|
||||||
%{
|
%{
|
||||||
RecordVal* client_id = new RecordVal(BifType::Record::DHCP::ClientID);
|
RecordVal* client_id = new RecordVal(BifType::Record::DHCP::ClientID);
|
||||||
client_id->Assign(0, val_mgr->GetCount(${v.client_id.hwtype}));
|
client_id->Assign(0, val_mgr->GetCount(${v.client_id.hwtype}));
|
||||||
client_id->Assign(1, new StringVal(fmt_mac(${v.client_id.hwaddr}.begin(), ${v.client_id.hwaddr}.length())));
|
client_id->Assign(1, make_intrusive<StringVal>(fmt_mac(${v.client_id.hwaddr}.begin(), ${v.client_id.hwaddr}.length())));
|
||||||
|
|
||||||
${context.flow}->options->Assign(19, client_id);
|
${context.flow}->options->Assign(19, client_id);
|
||||||
|
|
||||||
|
@ -653,7 +653,7 @@ refine casetype OptionValue += {
|
||||||
refine flow DHCP_Flow += {
|
refine flow DHCP_Flow += {
|
||||||
function process_user_class_option(v: OptionValue): bool
|
function process_user_class_option(v: OptionValue): bool
|
||||||
%{
|
%{
|
||||||
${context.flow}->options->Assign(20, new StringVal(${v.user_class}.length(),
|
${context.flow}->options->Assign(20, make_intrusive<StringVal>(${v.user_class}.length(),
|
||||||
reinterpret_cast<const char*>(${v.user_class}.begin())));
|
reinterpret_cast<const char*>(${v.user_class}.begin())));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -690,7 +690,7 @@ refine flow DHCP_Flow += {
|
||||||
client_fqdn->Assign(1, val_mgr->GetCount(${v.client_fqdn.rcode1}));
|
client_fqdn->Assign(1, val_mgr->GetCount(${v.client_fqdn.rcode1}));
|
||||||
client_fqdn->Assign(2, val_mgr->GetCount(${v.client_fqdn.rcode2}));
|
client_fqdn->Assign(2, val_mgr->GetCount(${v.client_fqdn.rcode2}));
|
||||||
const char* domain_name = reinterpret_cast<const char*>(${v.client_fqdn.domain_name}.begin());
|
const char* domain_name = reinterpret_cast<const char*>(${v.client_fqdn.domain_name}.begin());
|
||||||
client_fqdn->Assign(3, new StringVal(${v.client_fqdn.domain_name}.length(), domain_name));
|
client_fqdn->Assign(3, make_intrusive<StringVal>(${v.client_fqdn.domain_name}.length(), domain_name));
|
||||||
|
|
||||||
${context.flow}->options->Assign(21, client_fqdn);
|
${context.flow}->options->Assign(21, client_fqdn);
|
||||||
|
|
||||||
|
@ -809,7 +809,7 @@ refine flow DHCP_Flow += {
|
||||||
|
|
||||||
if ( string_len == 0 )
|
if ( string_len == 0 )
|
||||||
{
|
{
|
||||||
${context.flow}->options->Assign(24, new StringVal(0, ""));
|
${context.flow}->options->Assign(24, make_intrusive<StringVal>(0, ""));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -821,7 +821,7 @@ refine flow DHCP_Flow += {
|
||||||
if ( has_newline )
|
if ( has_newline )
|
||||||
--string_len;
|
--string_len;
|
||||||
|
|
||||||
${context.flow}->options->Assign(24, new StringVal(string_len,
|
${context.flow}->options->Assign(24, make_intrusive<StringVal>(string_len,
|
||||||
reinterpret_cast<const char*>(${v.auto_proxy_config}.begin())));
|
reinterpret_cast<const char*>(${v.auto_proxy_config}.begin())));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -603,13 +603,13 @@ int DNS_Interpreter::ParseRR_SOA(DNS_MsgInfo* msg,
|
||||||
if ( dns_SOA_reply && ! msg->skip_event )
|
if ( dns_SOA_reply && ! msg->skip_event )
|
||||||
{
|
{
|
||||||
RecordVal* r = new RecordVal(dns_soa);
|
RecordVal* r = new RecordVal(dns_soa);
|
||||||
r->Assign(0, new StringVal(new BroString(mname, mname_end - mname, 1)));
|
r->Assign(0, make_intrusive<StringVal>(new BroString(mname, mname_end - mname, 1)));
|
||||||
r->Assign(1, new StringVal(new BroString(rname, rname_end - rname, 1)));
|
r->Assign(1, make_intrusive<StringVal>(new BroString(rname, rname_end - rname, 1)));
|
||||||
r->Assign(2, val_mgr->GetCount(serial));
|
r->Assign(2, val_mgr->GetCount(serial));
|
||||||
r->Assign(3, new IntervalVal(double(refresh), Seconds));
|
r->Assign(3, make_intrusive<IntervalVal>(double(refresh), Seconds));
|
||||||
r->Assign(4, new IntervalVal(double(retry), Seconds));
|
r->Assign(4, make_intrusive<IntervalVal>(double(retry), Seconds));
|
||||||
r->Assign(5, new IntervalVal(double(expire), Seconds));
|
r->Assign(5, make_intrusive<IntervalVal>(double(expire), Seconds));
|
||||||
r->Assign(6, new IntervalVal(double(minimum), Seconds));
|
r->Assign(6, make_intrusive<IntervalVal>(double(minimum), Seconds));
|
||||||
|
|
||||||
analyzer->ConnectionEventFast(dns_SOA_reply, {
|
analyzer->ConnectionEventFast(dns_SOA_reply, {
|
||||||
analyzer->BuildConnVal(),
|
analyzer->BuildConnVal(),
|
||||||
|
@ -1029,7 +1029,7 @@ int DNS_Interpreter::ParseRR_NSEC(DNS_MsgInfo* msg,
|
||||||
}
|
}
|
||||||
|
|
||||||
BroString* bitmap = ExtractStream(data, len, bmlen);
|
BroString* bitmap = ExtractStream(data, len, bmlen);
|
||||||
char_strings->Assign(char_strings->Size(), new StringVal(bitmap));
|
char_strings->Assign(char_strings->Size(), make_intrusive<StringVal>(bitmap));
|
||||||
typebitmaps_len = typebitmaps_len - (2 + bmlen);
|
typebitmaps_len = typebitmaps_len - (2 + bmlen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1106,7 +1106,7 @@ int DNS_Interpreter::ParseRR_NSEC3(DNS_MsgInfo* msg,
|
||||||
}
|
}
|
||||||
|
|
||||||
BroString* bitmap = ExtractStream(data, len, bmlen);
|
BroString* bitmap = ExtractStream(data, len, bmlen);
|
||||||
char_strings->Assign(char_strings->Size(), new StringVal(bitmap));
|
char_strings->Assign(char_strings->Size(), make_intrusive<StringVal>(bitmap));
|
||||||
typebitmaps_len = typebitmaps_len - (2 + bmlen);
|
typebitmaps_len = typebitmaps_len - (2 + bmlen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1496,7 +1496,7 @@ Val* DNS_MsgInfo::BuildAnswerVal()
|
||||||
r->Assign(1, query_name);
|
r->Assign(1, query_name);
|
||||||
r->Assign(2, val_mgr->GetCount(atype));
|
r->Assign(2, val_mgr->GetCount(atype));
|
||||||
r->Assign(3, val_mgr->GetCount(aclass));
|
r->Assign(3, val_mgr->GetCount(aclass));
|
||||||
r->Assign(4, new IntervalVal(double(ttl), Seconds));
|
r->Assign(4, make_intrusive<IntervalVal>(double(ttl), Seconds));
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
@ -1531,7 +1531,7 @@ Val* DNS_MsgInfo::BuildEDNS_Val()
|
||||||
r->Assign(4, val_mgr->GetCount(return_error));
|
r->Assign(4, val_mgr->GetCount(return_error));
|
||||||
r->Assign(5, val_mgr->GetCount(version));
|
r->Assign(5, val_mgr->GetCount(version));
|
||||||
r->Assign(6, val_mgr->GetCount(z));
|
r->Assign(6, val_mgr->GetCount(z));
|
||||||
r->Assign(7, new IntervalVal(double(ttl), Seconds));
|
r->Assign(7, make_intrusive<IntervalVal>(double(ttl), Seconds));
|
||||||
r->Assign(8, val_mgr->GetCount(is_query));
|
r->Assign(8, val_mgr->GetCount(is_query));
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
|
@ -1546,10 +1546,10 @@ Val* DNS_MsgInfo::BuildTSIG_Val(struct TSIG_DATA* tsig)
|
||||||
// r->Assign(0, val_mgr->GetCount(int(answer_type)));
|
// r->Assign(0, val_mgr->GetCount(int(answer_type)));
|
||||||
r->Assign(0, query_name);
|
r->Assign(0, query_name);
|
||||||
r->Assign(1, val_mgr->GetCount(int(answer_type)));
|
r->Assign(1, val_mgr->GetCount(int(answer_type)));
|
||||||
r->Assign(2, new StringVal(tsig->alg_name));
|
r->Assign(2, make_intrusive<StringVal>(tsig->alg_name));
|
||||||
r->Assign(3, new StringVal(tsig->sig));
|
r->Assign(3, make_intrusive<StringVal>(tsig->sig));
|
||||||
r->Assign(4, new Val(rtime, TYPE_TIME));
|
r->Assign(4, make_intrusive<Val>(rtime, TYPE_TIME));
|
||||||
r->Assign(5, new Val(double(tsig->fudge), TYPE_TIME));
|
r->Assign(5, make_intrusive<Val>(double(tsig->fudge), TYPE_TIME));
|
||||||
r->Assign(6, val_mgr->GetCount(tsig->orig_id));
|
r->Assign(6, val_mgr->GetCount(tsig->orig_id));
|
||||||
r->Assign(7, val_mgr->GetCount(tsig->rr_error));
|
r->Assign(7, val_mgr->GetCount(tsig->rr_error));
|
||||||
r->Assign(8, val_mgr->GetCount(is_query));
|
r->Assign(8, val_mgr->GetCount(is_query));
|
||||||
|
@ -1567,12 +1567,12 @@ Val* DNS_MsgInfo::BuildRRSIG_Val(RRSIG_DATA* rrsig)
|
||||||
r->Assign(2, val_mgr->GetCount(rrsig->type_covered));
|
r->Assign(2, val_mgr->GetCount(rrsig->type_covered));
|
||||||
r->Assign(3, val_mgr->GetCount(rrsig->algorithm));
|
r->Assign(3, val_mgr->GetCount(rrsig->algorithm));
|
||||||
r->Assign(4, val_mgr->GetCount(rrsig->labels));
|
r->Assign(4, val_mgr->GetCount(rrsig->labels));
|
||||||
r->Assign(5, new IntervalVal(double(rrsig->orig_ttl), Seconds));
|
r->Assign(5, make_intrusive<IntervalVal>(double(rrsig->orig_ttl), Seconds));
|
||||||
r->Assign(6, new Val(double(rrsig->sig_exp), TYPE_TIME));
|
r->Assign(6, make_intrusive<Val>(double(rrsig->sig_exp), TYPE_TIME));
|
||||||
r->Assign(7, new Val(double(rrsig->sig_incep), TYPE_TIME));
|
r->Assign(7, make_intrusive<Val>(double(rrsig->sig_incep), TYPE_TIME));
|
||||||
r->Assign(8, val_mgr->GetCount(rrsig->key_tag));
|
r->Assign(8, val_mgr->GetCount(rrsig->key_tag));
|
||||||
r->Assign(9, new StringVal(rrsig->signer_name));
|
r->Assign(9, make_intrusive<StringVal>(rrsig->signer_name));
|
||||||
r->Assign(10, new StringVal(rrsig->signature));
|
r->Assign(10, make_intrusive<StringVal>(rrsig->signature));
|
||||||
r->Assign(11, val_mgr->GetCount(is_query));
|
r->Assign(11, val_mgr->GetCount(is_query));
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
|
@ -1588,7 +1588,7 @@ Val* DNS_MsgInfo::BuildDNSKEY_Val(DNSKEY_DATA* dnskey)
|
||||||
r->Assign(2, val_mgr->GetCount(dnskey->dflags));
|
r->Assign(2, val_mgr->GetCount(dnskey->dflags));
|
||||||
r->Assign(3, val_mgr->GetCount(dnskey->dprotocol));
|
r->Assign(3, val_mgr->GetCount(dnskey->dprotocol));
|
||||||
r->Assign(4, val_mgr->GetCount(dnskey->dalgorithm));
|
r->Assign(4, val_mgr->GetCount(dnskey->dalgorithm));
|
||||||
r->Assign(5, new StringVal(dnskey->public_key));
|
r->Assign(5, make_intrusive<StringVal>(dnskey->public_key));
|
||||||
r->Assign(6, val_mgr->GetCount(is_query));
|
r->Assign(6, val_mgr->GetCount(is_query));
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
|
@ -1605,9 +1605,9 @@ Val* DNS_MsgInfo::BuildNSEC3_Val(NSEC3_DATA* nsec3)
|
||||||
r->Assign(3, val_mgr->GetCount(nsec3->nsec_hash_algo));
|
r->Assign(3, val_mgr->GetCount(nsec3->nsec_hash_algo));
|
||||||
r->Assign(4, val_mgr->GetCount(nsec3->nsec_iter));
|
r->Assign(4, val_mgr->GetCount(nsec3->nsec_iter));
|
||||||
r->Assign(5, val_mgr->GetCount(nsec3->nsec_salt_len));
|
r->Assign(5, val_mgr->GetCount(nsec3->nsec_salt_len));
|
||||||
r->Assign(6, new StringVal(nsec3->nsec_salt));
|
r->Assign(6, make_intrusive<StringVal>(nsec3->nsec_salt));
|
||||||
r->Assign(7, val_mgr->GetCount(nsec3->nsec_hlen));
|
r->Assign(7, val_mgr->GetCount(nsec3->nsec_hlen));
|
||||||
r->Assign(8, new StringVal(nsec3->nsec_hash));
|
r->Assign(8, make_intrusive<StringVal>(nsec3->nsec_hash));
|
||||||
r->Assign(9, nsec3->bitmaps);
|
r->Assign(9, nsec3->bitmaps);
|
||||||
r->Assign(10, val_mgr->GetCount(is_query));
|
r->Assign(10, val_mgr->GetCount(is_query));
|
||||||
|
|
||||||
|
@ -1624,7 +1624,7 @@ Val* DNS_MsgInfo::BuildDS_Val(DS_DATA* ds)
|
||||||
r->Assign(2, val_mgr->GetCount(ds->key_tag));
|
r->Assign(2, val_mgr->GetCount(ds->key_tag));
|
||||||
r->Assign(3, val_mgr->GetCount(ds->algorithm));
|
r->Assign(3, val_mgr->GetCount(ds->algorithm));
|
||||||
r->Assign(4, val_mgr->GetCount(ds->digest_type));
|
r->Assign(4, val_mgr->GetCount(ds->digest_type));
|
||||||
r->Assign(5, new StringVal(ds->digest_val));
|
r->Assign(5, make_intrusive<StringVal>(ds->digest_val));
|
||||||
r->Assign(6, val_mgr->GetCount(is_query));
|
r->Assign(6, val_mgr->GetCount(is_query));
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
|
|
|
@ -33,13 +33,13 @@ static Val* parse_port(const char* line)
|
||||||
good = 0;
|
good = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
r->Assign(0, new AddrVal(htonl(addr)));
|
r->Assign(0, make_intrusive<AddrVal>(htonl(addr)));
|
||||||
r->Assign(1, val_mgr->GetPort(port, TRANSPORT_TCP));
|
r->Assign(1, val_mgr->GetPort(port, TRANSPORT_TCP));
|
||||||
r->Assign(2, val_mgr->GetBool(good));
|
r->Assign(2, val_mgr->GetBool(good));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
r->Assign(0, new AddrVal(uint32_t(0)));
|
r->Assign(0, make_intrusive<AddrVal>(uint32_t(0)));
|
||||||
r->Assign(1, val_mgr->GetPort(0, TRANSPORT_TCP));
|
r->Assign(1, val_mgr->GetPort(0, TRANSPORT_TCP));
|
||||||
r->Assign(2, val_mgr->GetBool(0));
|
r->Assign(2, val_mgr->GetBool(0));
|
||||||
}
|
}
|
||||||
|
@ -109,7 +109,7 @@ static Val* parse_eftp(const char* line)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
r->Assign(0, new AddrVal(addr));
|
r->Assign(0, make_intrusive<AddrVal>(addr));
|
||||||
r->Assign(1, val_mgr->GetPort(port, TRANSPORT_TCP));
|
r->Assign(1, val_mgr->GetPort(port, TRANSPORT_TCP));
|
||||||
r->Assign(2, val_mgr->GetBool(good));
|
r->Assign(2, val_mgr->GetBool(good));
|
||||||
|
|
||||||
|
|
|
@ -97,15 +97,15 @@ Val* BuildEndUserAddr(const InformationElement* ie)
|
||||||
|
|
||||||
switch ( ie->end_user_addr()->pdp_type_num() ) {
|
switch ( ie->end_user_addr()->pdp_type_num() ) {
|
||||||
case 0x21:
|
case 0x21:
|
||||||
ev->Assign(2, new AddrVal(
|
ev->Assign(2, make_intrusive<AddrVal>(
|
||||||
IPAddr(IPv4, (const uint32*) d, IPAddr::Network)));
|
IPAddr(IPv4, (const uint32*) d, IPAddr::Network)));
|
||||||
break;
|
break;
|
||||||
case 0x57:
|
case 0x57:
|
||||||
ev->Assign(2, new AddrVal(
|
ev->Assign(2, make_intrusive<AddrVal>(
|
||||||
IPAddr(IPv6, (const uint32*) d, IPAddr::Network)));
|
IPAddr(IPv6, (const uint32*) d, IPAddr::Network)));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ev->Assign(3, new StringVal(
|
ev->Assign(3, make_intrusive<StringVal>(
|
||||||
new BroString((const u_char*) d, len, 0)));
|
new BroString((const u_char*) d, len, 0)));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -136,13 +136,13 @@ Val* BuildGSN_Addr(const InformationElement* ie)
|
||||||
const uint8* d = ie->gsn_addr()->value().data();
|
const uint8* d = ie->gsn_addr()->value().data();
|
||||||
|
|
||||||
if ( len == 4 )
|
if ( len == 4 )
|
||||||
ev->Assign(0, new AddrVal(
|
ev->Assign(0, make_intrusive<AddrVal>(
|
||||||
IPAddr(IPv4, (const uint32*) d, IPAddr::Network)));
|
IPAddr(IPv4, (const uint32*) d, IPAddr::Network)));
|
||||||
else if ( len == 16 )
|
else if ( len == 16 )
|
||||||
ev->Assign(0, new AddrVal(
|
ev->Assign(0, make_intrusive<AddrVal>(
|
||||||
IPAddr(IPv6, (const uint32*) d, IPAddr::Network)));
|
IPAddr(IPv6, (const uint32*) d, IPAddr::Network)));
|
||||||
else
|
else
|
||||||
ev->Assign(1, new StringVal(new BroString((const u_char*) d, len, 0)));
|
ev->Assign(1, make_intrusive<StringVal>(new BroString((const u_char*) d, len, 0)));
|
||||||
|
|
||||||
return ev;
|
return ev;
|
||||||
}
|
}
|
||||||
|
@ -162,7 +162,7 @@ Val* BuildQoS_Profile(const InformationElement* ie)
|
||||||
int len = ie->qos_profile()->data().length();
|
int len = ie->qos_profile()->data().length();
|
||||||
|
|
||||||
ev->Assign(0, val_mgr->GetCount(ie->qos_profile()->alloc_retention_priority()));
|
ev->Assign(0, val_mgr->GetCount(ie->qos_profile()->alloc_retention_priority()));
|
||||||
ev->Assign(1, new StringVal(new BroString(d, len, 0)));
|
ev->Assign(1, make_intrusive<StringVal>(new BroString(d, len, 0)));
|
||||||
|
|
||||||
return ev;
|
return ev;
|
||||||
}
|
}
|
||||||
|
@ -196,7 +196,7 @@ Val* BuildPrivateExt(const InformationElement* ie)
|
||||||
int len = ie->private_ext()->value().length();
|
int len = ie->private_ext()->value().length();
|
||||||
|
|
||||||
ev->Assign(0, val_mgr->GetCount(ie->private_ext()->id()));
|
ev->Assign(0, val_mgr->GetCount(ie->private_ext()->id()));
|
||||||
ev->Assign(1, new StringVal(new BroString((const u_char*) d, len, 0)));
|
ev->Assign(1, make_intrusive<StringVal>(new BroString((const u_char*) d, len, 0)));
|
||||||
|
|
||||||
return ev;
|
return ev;
|
||||||
}
|
}
|
||||||
|
|
|
@ -617,9 +617,9 @@ Val* HTTP_Message::BuildMessageStat(const int interrupted, const char* msg)
|
||||||
{
|
{
|
||||||
RecordVal* stat = new RecordVal(http_message_stat);
|
RecordVal* stat = new RecordVal(http_message_stat);
|
||||||
int field = 0;
|
int field = 0;
|
||||||
stat->Assign(field++, new Val(start_time, TYPE_TIME));
|
stat->Assign(field++, make_intrusive<Val>(start_time, TYPE_TIME));
|
||||||
stat->Assign(field++, val_mgr->GetBool(interrupted));
|
stat->Assign(field++, val_mgr->GetBool(interrupted));
|
||||||
stat->Assign(field++, new StringVal(msg));
|
stat->Assign(field++, make_intrusive<StringVal>(msg));
|
||||||
stat->Assign(field++, val_mgr->GetCount(body_length));
|
stat->Assign(field++, val_mgr->GetCount(body_length));
|
||||||
stat->Assign(field++, val_mgr->GetCount(content_gap_length));
|
stat->Assign(field++, val_mgr->GetCount(content_gap_length));
|
||||||
stat->Assign(field++, val_mgr->GetCount(header_length));
|
stat->Assign(field++, val_mgr->GetCount(header_length));
|
||||||
|
@ -1185,8 +1185,8 @@ void HTTP_Analyzer::GenStats()
|
||||||
RecordVal* r = new RecordVal(http_stats_rec);
|
RecordVal* r = new RecordVal(http_stats_rec);
|
||||||
r->Assign(0, val_mgr->GetCount(num_requests));
|
r->Assign(0, val_mgr->GetCount(num_requests));
|
||||||
r->Assign(1, val_mgr->GetCount(num_replies));
|
r->Assign(1, val_mgr->GetCount(num_replies));
|
||||||
r->Assign(2, new Val(request_version.ToDouble(), TYPE_DOUBLE));
|
r->Assign(2, make_intrusive<Val>(request_version.ToDouble(), TYPE_DOUBLE));
|
||||||
r->Assign(3, new Val(reply_version.ToDouble(), TYPE_DOUBLE));
|
r->Assign(3, make_intrusive<Val>(reply_version.ToDouble(), TYPE_DOUBLE));
|
||||||
|
|
||||||
// DEBUG_MSG("%.6f http_stats\n", network_time);
|
// DEBUG_MSG("%.6f http_stats\n", network_time);
|
||||||
ConnectionEventFast(http_stats, {BuildConnVal(), r});
|
ConnectionEventFast(http_stats, {BuildConnVal(), r});
|
||||||
|
|
|
@ -228,8 +228,8 @@ RecordVal* ICMP_Analyzer::BuildICMPVal(const struct icmp* icmpp, int len,
|
||||||
{
|
{
|
||||||
icmp_conn_val = new RecordVal(icmp_conn);
|
icmp_conn_val = new RecordVal(icmp_conn);
|
||||||
|
|
||||||
icmp_conn_val->Assign(0, new AddrVal(Conn()->OrigAddr()));
|
icmp_conn_val->Assign(0, make_intrusive<AddrVal>(Conn()->OrigAddr()));
|
||||||
icmp_conn_val->Assign(1, new AddrVal(Conn()->RespAddr()));
|
icmp_conn_val->Assign(1, make_intrusive<AddrVal>(Conn()->RespAddr()));
|
||||||
icmp_conn_val->Assign(2, val_mgr->GetCount(icmpp->icmp_type));
|
icmp_conn_val->Assign(2, val_mgr->GetCount(icmpp->icmp_type));
|
||||||
icmp_conn_val->Assign(3, val_mgr->GetCount(icmpp->icmp_code));
|
icmp_conn_val->Assign(3, val_mgr->GetCount(icmpp->icmp_code));
|
||||||
icmp_conn_val->Assign(4, val_mgr->GetCount(len));
|
icmp_conn_val->Assign(4, val_mgr->GetCount(len));
|
||||||
|
@ -356,9 +356,9 @@ RecordVal* ICMP_Analyzer::ExtractICMP4Context(int len, const u_char*& data)
|
||||||
RecordVal* iprec = new RecordVal(icmp_context);
|
RecordVal* iprec = new RecordVal(icmp_context);
|
||||||
RecordVal* id_val = new RecordVal(conn_id);
|
RecordVal* id_val = new RecordVal(conn_id);
|
||||||
|
|
||||||
id_val->Assign(0, new AddrVal(src_addr));
|
id_val->Assign(0, make_intrusive<AddrVal>(src_addr));
|
||||||
id_val->Assign(1, val_mgr->GetPort(src_port, proto));
|
id_val->Assign(1, val_mgr->GetPort(src_port, proto));
|
||||||
id_val->Assign(2, new AddrVal(dst_addr));
|
id_val->Assign(2, make_intrusive<AddrVal>(dst_addr));
|
||||||
id_val->Assign(3, val_mgr->GetPort(dst_port, proto));
|
id_val->Assign(3, val_mgr->GetPort(dst_port, proto));
|
||||||
|
|
||||||
iprec->Assign(0, id_val);
|
iprec->Assign(0, id_val);
|
||||||
|
@ -415,9 +415,9 @@ RecordVal* ICMP_Analyzer::ExtractICMP6Context(int len, const u_char*& data)
|
||||||
RecordVal* iprec = new RecordVal(icmp_context);
|
RecordVal* iprec = new RecordVal(icmp_context);
|
||||||
RecordVal* id_val = new RecordVal(conn_id);
|
RecordVal* id_val = new RecordVal(conn_id);
|
||||||
|
|
||||||
id_val->Assign(0, new AddrVal(src_addr));
|
id_val->Assign(0, make_intrusive<AddrVal>(src_addr));
|
||||||
id_val->Assign(1, val_mgr->GetPort(src_port, proto));
|
id_val->Assign(1, val_mgr->GetPort(src_port, proto));
|
||||||
id_val->Assign(2, new AddrVal(dst_addr));
|
id_val->Assign(2, make_intrusive<AddrVal>(dst_addr));
|
||||||
id_val->Assign(3, val_mgr->GetPort(dst_port, proto));
|
id_val->Assign(3, val_mgr->GetPort(dst_port, proto));
|
||||||
|
|
||||||
iprec->Assign(0, id_val);
|
iprec->Assign(0, id_val);
|
||||||
|
@ -778,7 +778,7 @@ VectorVal* ICMP_Analyzer::BuildNDOptionsVal(int caplen, const u_char* data)
|
||||||
if ( caplen >= length )
|
if ( caplen >= length )
|
||||||
{
|
{
|
||||||
BroString* link_addr = new BroString(data, length, 0);
|
BroString* link_addr = new BroString(data, length, 0);
|
||||||
rv->Assign(2, new StringVal(link_addr));
|
rv->Assign(2, make_intrusive<StringVal>(link_addr));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
set_payload_field = true;
|
set_payload_field = true;
|
||||||
|
@ -801,9 +801,9 @@ VectorVal* ICMP_Analyzer::BuildNDOptionsVal(int caplen, const u_char* data)
|
||||||
info->Assign(0, val_mgr->GetCount(prefix_len));
|
info->Assign(0, val_mgr->GetCount(prefix_len));
|
||||||
info->Assign(1, val_mgr->GetBool(L_flag));
|
info->Assign(1, val_mgr->GetBool(L_flag));
|
||||||
info->Assign(2, val_mgr->GetBool(A_flag));
|
info->Assign(2, val_mgr->GetBool(A_flag));
|
||||||
info->Assign(3, new IntervalVal((double)ntohl(valid_life), Seconds));
|
info->Assign(3, make_intrusive<IntervalVal>((double)ntohl(valid_life), Seconds));
|
||||||
info->Assign(4, new IntervalVal((double)ntohl(prefer_life), Seconds));
|
info->Assign(4, make_intrusive<IntervalVal>((double)ntohl(prefer_life), Seconds));
|
||||||
info->Assign(5, new AddrVal(IPAddr(prefix)));
|
info->Assign(5, make_intrusive<AddrVal>(IPAddr(prefix)));
|
||||||
rv->Assign(3, info);
|
rv->Assign(3, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -849,7 +849,7 @@ VectorVal* ICMP_Analyzer::BuildNDOptionsVal(int caplen, const u_char* data)
|
||||||
{
|
{
|
||||||
BroString* payload =
|
BroString* payload =
|
||||||
new BroString(data, min((int)length, caplen), 0);
|
new BroString(data, min((int)length, caplen), 0);
|
||||||
rv->Assign(6, new StringVal(payload));
|
rv->Assign(6, make_intrusive<StringVal>(payload));
|
||||||
}
|
}
|
||||||
|
|
||||||
data += length;
|
data += length;
|
||||||
|
|
|
@ -63,7 +63,7 @@ refine connection IMAP_Conn += {
|
||||||
for ( unsigned int i = 0; i< capabilities->size(); i++ )
|
for ( unsigned int i = 0; i< capabilities->size(); i++ )
|
||||||
{
|
{
|
||||||
const bytestring& capability = (*capabilities)[i]->cap();
|
const bytestring& capability = (*capabilities)[i]->cap();
|
||||||
capv->Assign(i, new StringVal(capability.length(), (const char*)capability.data()));
|
capv->Assign(i, make_intrusive<StringVal>(capability.length(), (const char*)capability.data()));
|
||||||
}
|
}
|
||||||
|
|
||||||
BifEvent::generate_imap_capabilities(bro_analyzer(), bro_analyzer()->Conn(), capv);
|
BifEvent::generate_imap_capabilities(bro_analyzer(), bro_analyzer()->Conn(), capv);
|
||||||
|
|
|
@ -853,14 +853,14 @@ void IRC_Analyzer::DeliverStream(int length, const u_char* line, bool orig)
|
||||||
for ( unsigned int i = 0; i < channels.size(); ++i )
|
for ( unsigned int i = 0; i < channels.size(); ++i )
|
||||||
{
|
{
|
||||||
RecordVal* info = new RecordVal(irc_join_info);
|
RecordVal* info = new RecordVal(irc_join_info);
|
||||||
info->Assign(0, new StringVal(nickname.c_str()));
|
info->Assign(0, make_intrusive<StringVal>(nickname.c_str()));
|
||||||
info->Assign(1, new StringVal(channels[i].c_str()));
|
info->Assign(1, make_intrusive<StringVal>(channels[i].c_str()));
|
||||||
if ( i < passwords.size() )
|
if ( i < passwords.size() )
|
||||||
info->Assign(2, new StringVal(passwords[i].c_str()));
|
info->Assign(2, make_intrusive<StringVal>(passwords[i].c_str()));
|
||||||
else
|
else
|
||||||
info->Assign(2, new StringVal(empty_string.c_str()));
|
info->Assign(2, make_intrusive<StringVal>(empty_string.c_str()));
|
||||||
// User mode.
|
// User mode.
|
||||||
info->Assign(3, new StringVal(empty_string.c_str()));
|
info->Assign(3, make_intrusive<StringVal>(empty_string.c_str()));
|
||||||
list->Assign(info, 0);
|
list->Assign(info, 0);
|
||||||
Unref(info);
|
Unref(info);
|
||||||
}
|
}
|
||||||
|
@ -916,12 +916,12 @@ void IRC_Analyzer::DeliverStream(int length, const u_char* line, bool orig)
|
||||||
mode = "voice";
|
mode = "voice";
|
||||||
}
|
}
|
||||||
|
|
||||||
info->Assign(0, new StringVal(nick.c_str()));
|
info->Assign(0, make_intrusive<StringVal>(nick.c_str()));
|
||||||
info->Assign(1, new StringVal(channel.c_str()));
|
info->Assign(1, make_intrusive<StringVal>(channel.c_str()));
|
||||||
// Password:
|
// Password:
|
||||||
info->Assign(2, new StringVal(empty_string.c_str()));
|
info->Assign(2, make_intrusive<StringVal>(empty_string.c_str()));
|
||||||
// User mode:
|
// User mode:
|
||||||
info->Assign(3, new StringVal(mode.c_str()));
|
info->Assign(3, make_intrusive<StringVal>(mode.c_str()));
|
||||||
list->Assign(info, 0);
|
list->Assign(info, 0);
|
||||||
Unref(info);
|
Unref(info);
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,7 +61,7 @@ RecordVal* proc_host_address(const BroAnalyzer a, const KRB_Host_Address* addr)
|
||||||
}
|
}
|
||||||
|
|
||||||
auto bytes = reinterpret_cast<const uint32_t*>(addr_bytes.data());
|
auto bytes = reinterpret_cast<const uint32_t*>(addr_bytes.data());
|
||||||
rv->Assign(0, new AddrVal(IPAddr(IPv4, bytes, IPAddr::Network)));
|
rv->Assign(0, make_intrusive<AddrVal>(IPAddr(IPv4, bytes, IPAddr::Network)));
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
case 24:
|
case 24:
|
||||||
|
@ -73,7 +73,7 @@ RecordVal* proc_host_address(const BroAnalyzer a, const KRB_Host_Address* addr)
|
||||||
}
|
}
|
||||||
|
|
||||||
auto bytes = reinterpret_cast<const uint32_t*>(addr_bytes.data());
|
auto bytes = reinterpret_cast<const uint32_t*>(addr_bytes.data());
|
||||||
rv->Assign(0, new AddrVal(IPAddr(IPv6, bytes, IPAddr::Network)));
|
rv->Assign(0, make_intrusive<AddrVal>(IPAddr(IPv6, bytes, IPAddr::Network)));
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
case 20:
|
case 20:
|
||||||
|
|
|
@ -45,12 +45,12 @@ refine flow MQTT_Flow += {
|
||||||
if ( mqtt_connect )
|
if ( mqtt_connect )
|
||||||
{
|
{
|
||||||
auto m = new RecordVal(BifType::Record::MQTT::ConnectMsg);
|
auto m = new RecordVal(BifType::Record::MQTT::ConnectMsg);
|
||||||
m->Assign(0, new StringVal(${msg.protocol_name.str}.length(),
|
m->Assign(0, make_intrusive<StringVal>(${msg.protocol_name.str}.length(),
|
||||||
reinterpret_cast<const char*>(${msg.protocol_name.str}.begin())));
|
reinterpret_cast<const char*>(${msg.protocol_name.str}.begin())));
|
||||||
m->Assign(1, val_mgr->GetCount(${msg.protocol_version}));
|
m->Assign(1, val_mgr->GetCount(${msg.protocol_version}));
|
||||||
m->Assign(2, new StringVal(${msg.client_id.str}.length(),
|
m->Assign(2, make_intrusive<StringVal>(${msg.client_id.str}.length(),
|
||||||
reinterpret_cast<const char*>(${msg.client_id.str}.begin())));
|
reinterpret_cast<const char*>(${msg.client_id.str}.begin())));
|
||||||
m->Assign(3, new IntervalVal(double(${msg.keep_alive}), Seconds));
|
m->Assign(3, make_intrusive<IntervalVal>(double(${msg.keep_alive}), Seconds));
|
||||||
|
|
||||||
m->Assign(4, val_mgr->GetBool(${msg.clean_session}));
|
m->Assign(4, val_mgr->GetBool(${msg.clean_session}));
|
||||||
m->Assign(5, val_mgr->GetBool(${msg.will_retain}));
|
m->Assign(5, val_mgr->GetBool(${msg.will_retain}));
|
||||||
|
@ -58,20 +58,20 @@ refine flow MQTT_Flow += {
|
||||||
|
|
||||||
if ( ${msg.will_flag} )
|
if ( ${msg.will_flag} )
|
||||||
{
|
{
|
||||||
m->Assign(7, new StringVal(${msg.will.topic.str}.length(),
|
m->Assign(7, make_intrusive<StringVal>(${msg.will.topic.str}.length(),
|
||||||
reinterpret_cast<const char*>(${msg.will.topic.str}.begin())));
|
reinterpret_cast<const char*>(${msg.will.topic.str}.begin())));
|
||||||
m->Assign(8, new StringVal(${msg.will.msg.str}.length(),
|
m->Assign(8, make_intrusive<StringVal>(${msg.will.msg.str}.length(),
|
||||||
reinterpret_cast<const char*>(${msg.will.msg.str}.begin())));
|
reinterpret_cast<const char*>(${msg.will.msg.str}.begin())));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ${msg.username} )
|
if ( ${msg.username} )
|
||||||
{
|
{
|
||||||
m->Assign(9, new StringVal(${msg.uname.str}.length(),
|
m->Assign(9, make_intrusive<StringVal>(${msg.uname.str}.length(),
|
||||||
reinterpret_cast<const char*>(${msg.uname.str}.begin())));
|
reinterpret_cast<const char*>(${msg.uname.str}.begin())));
|
||||||
}
|
}
|
||||||
if ( ${msg.password} )
|
if ( ${msg.password} )
|
||||||
{
|
{
|
||||||
m->Assign(10, new StringVal(${msg.pass.str}.length(),
|
m->Assign(10, make_intrusive<StringVal>(${msg.pass.str}.length(),
|
||||||
reinterpret_cast<const char*>(${msg.pass.str}.begin())));
|
reinterpret_cast<const char*>(${msg.pass.str}.begin())));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,7 @@ refine flow MySQL_Flow += {
|
||||||
|
|
||||||
auto& bstring = ${msg.row.first_field.val};
|
auto& bstring = ${msg.row.first_field.val};
|
||||||
auto ptr = reinterpret_cast<const char*>(bstring.data());
|
auto ptr = reinterpret_cast<const char*>(bstring.data());
|
||||||
vv->Assign(vv->Size(), new StringVal(bstring.length(), ptr));
|
vv->Assign(vv->Size(), make_intrusive<StringVal>(bstring.length(), ptr));
|
||||||
|
|
||||||
auto& fields = *${msg.row.fields};
|
auto& fields = *${msg.row.fields};
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ refine flow MySQL_Flow += {
|
||||||
{
|
{
|
||||||
auto& bstring = f->val();
|
auto& bstring = f->val();
|
||||||
auto ptr = reinterpret_cast<const char*>(bstring.data());
|
auto ptr = reinterpret_cast<const char*>(bstring.data());
|
||||||
vv->Assign(vv->Size(), new StringVal(bstring.length(), ptr));
|
vv->Assign(vv->Size(), make_intrusive<StringVal>(bstring.length(), ptr));
|
||||||
}
|
}
|
||||||
|
|
||||||
BifEvent::generate_mysql_result_row(connection()->bro_analyzer(),
|
BifEvent::generate_mysql_result_row(connection()->bro_analyzer(),
|
||||||
|
|
|
@ -38,8 +38,8 @@ refine flow NTP_Flow += {
|
||||||
RecordVal* rv = new RecordVal(BifType::Record::NTP::StandardMessage);
|
RecordVal* rv = new RecordVal(BifType::Record::NTP::StandardMessage);
|
||||||
|
|
||||||
rv->Assign(0, val_mgr->GetCount(${nsm.stratum}));
|
rv->Assign(0, val_mgr->GetCount(${nsm.stratum}));
|
||||||
rv->Assign(1, new Val(pow(2, ${nsm.poll}), TYPE_INTERVAL));
|
rv->Assign(1, make_intrusive<Val>(pow(2, ${nsm.poll}), TYPE_INTERVAL));
|
||||||
rv->Assign(2, new Val(pow(2, ${nsm.precision}), TYPE_INTERVAL));
|
rv->Assign(2, make_intrusive<Val>(pow(2, ${nsm.precision}), TYPE_INTERVAL));
|
||||||
rv->Assign(3, proc_ntp_short(${nsm.root_delay}));
|
rv->Assign(3, proc_ntp_short(${nsm.root_delay}));
|
||||||
rv->Assign(4, proc_ntp_short(${nsm.root_dispersion}));
|
rv->Assign(4, proc_ntp_short(${nsm.root_dispersion}));
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ refine flow NTP_Flow += {
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
const uint8* d = ${nsm.reference_id}.data();
|
const uint8* d = ${nsm.reference_id}.data();
|
||||||
rv->Assign(7, new AddrVal(IPAddr(IPv4, (const uint32*) d, IPAddr::Network)));
|
rv->Assign(7, make_intrusive<AddrVal>(IPAddr(IPv4, (const uint32*) d, IPAddr::Network)));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -201,16 +201,16 @@ val_list MOUNT_Interp::event_common_vl(RPC_CallInfo *c,
|
||||||
RecordVal* info = new RecordVal(BifType::Record::MOUNT3::info_t);
|
RecordVal* info = new RecordVal(BifType::Record::MOUNT3::info_t);
|
||||||
info->Assign(0, BifType::Enum::rpc_status->GetVal(rpc_status));
|
info->Assign(0, BifType::Enum::rpc_status->GetVal(rpc_status));
|
||||||
info->Assign(1, BifType::Enum::MOUNT3::status_t->GetVal(mount_status));
|
info->Assign(1, BifType::Enum::MOUNT3::status_t->GetVal(mount_status));
|
||||||
info->Assign(2, new Val(c->StartTime(), TYPE_TIME));
|
info->Assign(2, make_intrusive<Val>(c->StartTime(), TYPE_TIME));
|
||||||
info->Assign(3, new Val(c->LastTime() - c->StartTime(), TYPE_INTERVAL));
|
info->Assign(3, make_intrusive<Val>(c->LastTime() - c->StartTime(), TYPE_INTERVAL));
|
||||||
info->Assign(4, val_mgr->GetCount(c->RPCLen()));
|
info->Assign(4, val_mgr->GetCount(c->RPCLen()));
|
||||||
info->Assign(5, new Val(rep_start_time, TYPE_TIME));
|
info->Assign(5, make_intrusive<Val>(rep_start_time, TYPE_TIME));
|
||||||
info->Assign(6, new Val(rep_last_time - rep_start_time, TYPE_INTERVAL));
|
info->Assign(6, make_intrusive<Val>(rep_last_time - rep_start_time, TYPE_INTERVAL));
|
||||||
info->Assign(7, val_mgr->GetCount(reply_len));
|
info->Assign(7, val_mgr->GetCount(reply_len));
|
||||||
info->Assign(8, val_mgr->GetCount(c->Uid()));
|
info->Assign(8, val_mgr->GetCount(c->Uid()));
|
||||||
info->Assign(9, val_mgr->GetCount(c->Gid()));
|
info->Assign(9, val_mgr->GetCount(c->Gid()));
|
||||||
info->Assign(10, val_mgr->GetCount(c->Stamp()));
|
info->Assign(10, val_mgr->GetCount(c->Stamp()));
|
||||||
info->Assign(11, new StringVal(c->MachineName()));
|
info->Assign(11, make_intrusive<StringVal>(c->MachineName()));
|
||||||
info->Assign(12, auxgids);
|
info->Assign(12, auxgids);
|
||||||
|
|
||||||
vl.push_back(info);
|
vl.push_back(info);
|
||||||
|
|
|
@ -335,16 +335,16 @@ val_list NFS_Interp::event_common_vl(RPC_CallInfo *c, BifEnum::rpc_status rpc_st
|
||||||
RecordVal *info = new RecordVal(BifType::Record::NFS3::info_t);
|
RecordVal *info = new RecordVal(BifType::Record::NFS3::info_t);
|
||||||
info->Assign(0, BifType::Enum::rpc_status->GetVal(rpc_status));
|
info->Assign(0, BifType::Enum::rpc_status->GetVal(rpc_status));
|
||||||
info->Assign(1, BifType::Enum::NFS3::status_t->GetVal(nfs_status));
|
info->Assign(1, BifType::Enum::NFS3::status_t->GetVal(nfs_status));
|
||||||
info->Assign(2, new Val(c->StartTime(), TYPE_TIME));
|
info->Assign(2, make_intrusive<Val>(c->StartTime(), TYPE_TIME));
|
||||||
info->Assign(3, new Val(c->LastTime()-c->StartTime(), TYPE_INTERVAL));
|
info->Assign(3, make_intrusive<Val>(c->LastTime()-c->StartTime(), TYPE_INTERVAL));
|
||||||
info->Assign(4, val_mgr->GetCount(c->RPCLen()));
|
info->Assign(4, val_mgr->GetCount(c->RPCLen()));
|
||||||
info->Assign(5, new Val(rep_start_time, TYPE_TIME));
|
info->Assign(5, make_intrusive<Val>(rep_start_time, TYPE_TIME));
|
||||||
info->Assign(6, new Val(rep_last_time-rep_start_time, TYPE_INTERVAL));
|
info->Assign(6, make_intrusive<Val>(rep_last_time-rep_start_time, TYPE_INTERVAL));
|
||||||
info->Assign(7, val_mgr->GetCount(reply_len));
|
info->Assign(7, val_mgr->GetCount(reply_len));
|
||||||
info->Assign(8, val_mgr->GetCount(c->Uid()));
|
info->Assign(8, val_mgr->GetCount(c->Uid()));
|
||||||
info->Assign(9, val_mgr->GetCount(c->Gid()));
|
info->Assign(9, val_mgr->GetCount(c->Gid()));
|
||||||
info->Assign(10, val_mgr->GetCount(c->Stamp()));
|
info->Assign(10, val_mgr->GetCount(c->Stamp()));
|
||||||
info->Assign(11, new StringVal(c->MachineName()));
|
info->Assign(11, make_intrusive<StringVal>(c->MachineName()));
|
||||||
info->Assign(12, auxgids);
|
info->Assign(12, auxgids);
|
||||||
|
|
||||||
vl.push_back(info);
|
vl.push_back(info);
|
||||||
|
|
|
@ -25,7 +25,7 @@ refine connection SOCKS_Conn += {
|
||||||
if ( socks_request )
|
if ( socks_request )
|
||||||
{
|
{
|
||||||
RecordVal* sa = new RecordVal(socks_address);
|
RecordVal* sa = new RecordVal(socks_address);
|
||||||
sa->Assign(0, new AddrVal(htonl(${request.addr})));
|
sa->Assign(0, make_intrusive<AddrVal>(htonl(${request.addr})));
|
||||||
|
|
||||||
if ( ${request.v4a} )
|
if ( ${request.v4a} )
|
||||||
sa->Assign(1, array_to_string(${request.name}));
|
sa->Assign(1, array_to_string(${request.name}));
|
||||||
|
@ -49,7 +49,7 @@ refine connection SOCKS_Conn += {
|
||||||
if ( socks_reply )
|
if ( socks_reply )
|
||||||
{
|
{
|
||||||
RecordVal* sa = new RecordVal(socks_address);
|
RecordVal* sa = new RecordVal(socks_address);
|
||||||
sa->Assign(0, new AddrVal(htonl(${reply.addr})));
|
sa->Assign(0, make_intrusive<AddrVal>(htonl(${reply.addr})));
|
||||||
|
|
||||||
BifEvent::generate_socks_reply(bro_analyzer(),
|
BifEvent::generate_socks_reply(bro_analyzer(),
|
||||||
bro_analyzer()->Conn(),
|
bro_analyzer()->Conn(),
|
||||||
|
@ -86,16 +86,16 @@ refine connection SOCKS_Conn += {
|
||||||
switch ( ${request.remote_name.addr_type} )
|
switch ( ${request.remote_name.addr_type} )
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
sa->Assign(0, new AddrVal(htonl(${request.remote_name.ipv4})));
|
sa->Assign(0, make_intrusive<AddrVal>(htonl(${request.remote_name.ipv4})));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
sa->Assign(1, new StringVal(${request.remote_name.domain_name.name}.length(),
|
sa->Assign(1, make_intrusive<StringVal>(${request.remote_name.domain_name.name}.length(),
|
||||||
(const char*) ${request.remote_name.domain_name.name}.data()));
|
(const char*) ${request.remote_name.domain_name.name}.data()));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
sa->Assign(0, new AddrVal(IPAddr(IPv6, (const uint32_t*) ${request.remote_name.ipv6}, IPAddr::Network)));
|
sa->Assign(0, make_intrusive<AddrVal>(IPAddr(IPv6, (const uint32_t*) ${request.remote_name.ipv6}, IPAddr::Network)));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -128,16 +128,16 @@ refine connection SOCKS_Conn += {
|
||||||
switch ( ${reply.bound.addr_type} )
|
switch ( ${reply.bound.addr_type} )
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
sa->Assign(0, new AddrVal(htonl(${reply.bound.ipv4})));
|
sa->Assign(0, make_intrusive<AddrVal>(htonl(${reply.bound.ipv4})));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
sa->Assign(1, new StringVal(${reply.bound.domain_name.name}.length(),
|
sa->Assign(1, make_intrusive<StringVal>(${reply.bound.domain_name.name}.length(),
|
||||||
(const char*) ${reply.bound.domain_name.name}.data()));
|
(const char*) ${reply.bound.domain_name.name}.data()));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
sa->Assign(0, new AddrVal(IPAddr(IPv6, (const uint32_t*) ${reply.bound.ipv6}, IPAddr::Network)));
|
sa->Assign(0, make_intrusive<AddrVal>(IPAddr(IPv6, (const uint32_t*) ${reply.bound.ipv6}, IPAddr::Network)));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -32,7 +32,7 @@ VectorVal* name_list_to_vector(const bytestring& nl)
|
||||||
{
|
{
|
||||||
word = name_list.substr(start, split_pos - start);
|
word = name_list.substr(start, split_pos - start);
|
||||||
if ( word.size() > 0 && word[0] != ',' )
|
if ( word.size() > 0 && word[0] != ',' )
|
||||||
vv->Assign(vv->Size(), new StringVal(word));
|
vv->Assign(vv->Size(), make_intrusive<StringVal>(word));
|
||||||
|
|
||||||
start = split_pos + 1;
|
start = split_pos + 1;
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ VectorVal* name_list_to_vector(const bytestring& nl)
|
||||||
if ( start < name_list.size() )
|
if ( start < name_list.size() )
|
||||||
{
|
{
|
||||||
word = name_list.substr(start, name_list.size() - start);
|
word = name_list.substr(start, name_list.size() - start);
|
||||||
vv->Assign(vv->Size(), new StringVal(word));
|
vv->Assign(vv->Size(), make_intrusive<StringVal>(word));
|
||||||
}
|
}
|
||||||
return vv;
|
return vv;
|
||||||
}
|
}
|
||||||
|
|
|
@ -183,7 +183,7 @@ refine connection Handshake_Conn += {
|
||||||
if ( protocols )
|
if ( protocols )
|
||||||
{
|
{
|
||||||
for ( unsigned int i = 0; i < protocols->size(); ++i )
|
for ( unsigned int i = 0; i < protocols->size(); ++i )
|
||||||
plist->Assign(i, new StringVal((*protocols)[i]->name().length(), (const char*) (*protocols)[i]->name().data()));
|
plist->Assign(i, make_intrusive<StringVal>((*protocols)[i]->name().length(), (const char*) (*protocols)[i]->name().data()));
|
||||||
}
|
}
|
||||||
|
|
||||||
BifEvent::generate_ssl_extension_application_layer_protocol_negotiation(bro_analyzer(), bro_analyzer()->Conn(),
|
BifEvent::generate_ssl_extension_application_layer_protocol_negotiation(bro_analyzer(), bro_analyzer()->Conn(),
|
||||||
|
@ -208,7 +208,7 @@ refine connection Handshake_Conn += {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( servername->host_name() )
|
if ( servername->host_name() )
|
||||||
servers->Assign(j++, new StringVal(servername->host_name()->host_name().length(), (const char*) servername->host_name()->host_name().data()));
|
servers->Assign(j++, make_intrusive<StringVal>(servername->host_name()->host_name().length(), (const char*) servername->host_name()->host_name().data()));
|
||||||
else
|
else
|
||||||
bro_analyzer()->Weird("Empty server_name extension in ssl connection");
|
bro_analyzer()->Weird("Empty server_name extension in ssl connection");
|
||||||
}
|
}
|
||||||
|
@ -487,7 +487,7 @@ refine connection Handshake_Conn += {
|
||||||
for ( auto&& identity : *(identities->identities()) )
|
for ( auto&& identity : *(identities->identities()) )
|
||||||
{
|
{
|
||||||
RecordVal* el = new RecordVal(BifType::Record::SSL::PSKIdentity);
|
RecordVal* el = new RecordVal(BifType::Record::SSL::PSKIdentity);
|
||||||
el->Assign(0, new StringVal(identity->identity().length(), (const char*) identity->identity().data()));
|
el->Assign(0, make_intrusive<StringVal>(identity->identity().length(), (const char*) identity->identity().data()));
|
||||||
el->Assign(1, val_mgr->GetCount(identity->obfuscated_ticket_age()));
|
el->Assign(1, val_mgr->GetCount(identity->obfuscated_ticket_age()));
|
||||||
slist->Assign(slist->Size(), el);
|
slist->Assign(slist->Size(), el);
|
||||||
}
|
}
|
||||||
|
@ -497,7 +497,7 @@ refine connection Handshake_Conn += {
|
||||||
if ( binders && binders->binders() )
|
if ( binders && binders->binders() )
|
||||||
{
|
{
|
||||||
for ( auto&& binder : *(binders->binders()) )
|
for ( auto&& binder : *(binders->binders()) )
|
||||||
blist->Assign(blist->Size(), new StringVal(binder->binder().length(), (const char*) binder->binder().data()));
|
blist->Assign(blist->Size(), make_intrusive<StringVal>(binder->binder().length(), (const char*) binder->binder().data()));
|
||||||
}
|
}
|
||||||
|
|
||||||
BifEvent::generate_ssl_extension_pre_shared_key_client_hello(bro_analyzer(), bro_analyzer()->Conn(),
|
BifEvent::generate_ssl_extension_pre_shared_key_client_hello(bro_analyzer(), bro_analyzer()->Conn(),
|
||||||
|
|
|
@ -1366,7 +1366,7 @@ int TCP_Analyzer::ParseTCPOptions(const struct tcphdr* tcp, bool is_orig)
|
||||||
|
|
||||||
auto data_len = olen - 2;
|
auto data_len = olen - 2;
|
||||||
auto data = reinterpret_cast<const char*>(odata + 2);
|
auto data = reinterpret_cast<const char*>(odata + 2);
|
||||||
rv->Assign(2, new StringVal(data_len, data));
|
rv->Assign(2, make_intrusive<StringVal>(data_len, data));
|
||||||
};
|
};
|
||||||
|
|
||||||
for ( const auto& o : opts )
|
for ( const auto& o : opts )
|
||||||
|
|
|
@ -118,9 +118,9 @@ RecordVal* TeredoEncapsulation::BuildVal(const IP_Hdr* inner) const
|
||||||
uint8_t au_len = *((uint8_t*)(auth + 3));
|
uint8_t au_len = *((uint8_t*)(auth + 3));
|
||||||
uint64_t nonce = ntohll(*((uint64_t*)(auth + 4 + id_len + au_len)));
|
uint64_t nonce = ntohll(*((uint64_t*)(auth + 4 + id_len + au_len)));
|
||||||
uint8_t conf = *((uint8_t*)(auth + 4 + id_len + au_len + 8));
|
uint8_t conf = *((uint8_t*)(auth + 4 + id_len + au_len + 8));
|
||||||
teredo_auth->Assign(0, new StringVal(
|
teredo_auth->Assign(0, make_intrusive<StringVal>(
|
||||||
new BroString(auth + 4, id_len, 1)));
|
new BroString(auth + 4, id_len, 1)));
|
||||||
teredo_auth->Assign(1, new StringVal(
|
teredo_auth->Assign(1, make_intrusive<StringVal>(
|
||||||
new BroString(auth + 4 + id_len, au_len, 1)));
|
new BroString(auth + 4 + id_len, au_len, 1)));
|
||||||
teredo_auth->Assign(2, val_mgr->GetCount(nonce));
|
teredo_auth->Assign(2, val_mgr->GetCount(nonce));
|
||||||
teredo_auth->Assign(3, val_mgr->GetCount(conf));
|
teredo_auth->Assign(3, val_mgr->GetCount(conf));
|
||||||
|
@ -133,7 +133,7 @@ RecordVal* TeredoEncapsulation::BuildVal(const IP_Hdr* inner) const
|
||||||
uint16_t port = ntohs(*((uint16_t*)(origin_indication + 2))) ^ 0xFFFF;
|
uint16_t port = ntohs(*((uint16_t*)(origin_indication + 2))) ^ 0xFFFF;
|
||||||
uint32_t addr = ntohl(*((uint32_t*)(origin_indication + 4))) ^ 0xFFFFFFFF;
|
uint32_t addr = ntohl(*((uint32_t*)(origin_indication + 4))) ^ 0xFFFFFFFF;
|
||||||
teredo_origin->Assign(0, val_mgr->GetPort(port, TRANSPORT_UDP));
|
teredo_origin->Assign(0, val_mgr->GetPort(port, TRANSPORT_UDP));
|
||||||
teredo_origin->Assign(1, new AddrVal(htonl(addr)));
|
teredo_origin->Assign(1, make_intrusive<AddrVal>(htonl(addr)));
|
||||||
teredo_hdr->Assign(1, teredo_origin);
|
teredo_hdr->Assign(1, teredo_origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -321,7 +321,7 @@ struct val_converter {
|
||||||
if ( ! value_val )
|
if ( ! value_val )
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
rval->Assign(list_val.get(), value_val.release());
|
rval->Assign(list_val.get(), std::move(value_val));
|
||||||
}
|
}
|
||||||
|
|
||||||
return rval.release();
|
return rval.release();
|
||||||
|
@ -341,7 +341,7 @@ struct val_converter {
|
||||||
if ( ! item_val )
|
if ( ! item_val )
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
rval->Assign(rval->Size(), item_val.release());
|
rval->Assign(rval->Size(), std::move(item_val));
|
||||||
}
|
}
|
||||||
|
|
||||||
return rval.release();
|
return rval.release();
|
||||||
|
@ -410,7 +410,7 @@ struct val_converter {
|
||||||
if ( ! item_val )
|
if ( ! item_val )
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
rval->Assign(i, item_val.release());
|
rval->Assign(i, std::move(item_val));
|
||||||
++idx;
|
++idx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1040,7 +1040,7 @@ RecordVal* bro_broker::make_data_val(Val* v)
|
||||||
auto data = val_to_data(v);
|
auto data = val_to_data(v);
|
||||||
|
|
||||||
if ( data )
|
if ( data )
|
||||||
rval->Assign(0, new DataVal(move(*data)));
|
rval->Assign(0, make_intrusive<DataVal>(move(*data)));
|
||||||
else
|
else
|
||||||
reporter->Warning("did not get a value from val_to_data");
|
reporter->Warning("did not get a value from val_to_data");
|
||||||
|
|
||||||
|
@ -1050,7 +1050,7 @@ RecordVal* bro_broker::make_data_val(Val* v)
|
||||||
RecordVal* bro_broker::make_data_val(broker::data d)
|
RecordVal* bro_broker::make_data_val(broker::data d)
|
||||||
{
|
{
|
||||||
auto rval = new RecordVal(BifType::Record::Broker::Data);
|
auto rval = new RecordVal(BifType::Record::Broker::Data);
|
||||||
rval->Assign(0, new DataVal(move(d)));
|
rval->Assign(0, make_intrusive<DataVal>(move(d)));
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -733,7 +733,7 @@ RecordVal* Manager::MakeEvent(val_list* args, Frame* frame)
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
rval->Assign(0, new StringVal(func->Name()));
|
rval->Assign(0, make_intrusive<StringVal>(func->Name()));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1251,24 +1251,24 @@ void Manager::ProcessStatus(broker::status stat)
|
||||||
|
|
||||||
if ( ctx )
|
if ( ctx )
|
||||||
{
|
{
|
||||||
endpoint_info->Assign(0, new StringVal(to_string(ctx->node)));
|
endpoint_info->Assign(0, make_intrusive<StringVal>(to_string(ctx->node)));
|
||||||
auto ni = internal_type("Broker::NetworkInfo")->AsRecordType();
|
auto ni = internal_type("Broker::NetworkInfo")->AsRecordType();
|
||||||
auto network_info = new RecordVal(ni);
|
auto network_info = make_intrusive<RecordVal>(ni);
|
||||||
|
|
||||||
if ( ctx->network )
|
if ( ctx->network )
|
||||||
{
|
{
|
||||||
network_info->Assign(0, new StringVal(ctx->network->address.data()));
|
network_info->Assign(0, make_intrusive<StringVal>(ctx->network->address.data()));
|
||||||
network_info->Assign(1, val_mgr->GetPort(ctx->network->port, TRANSPORT_TCP));
|
network_info->Assign(1, val_mgr->GetPort(ctx->network->port, TRANSPORT_TCP));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// TODO: are there any status messages where the ctx->network
|
// TODO: are there any status messages where the ctx->network
|
||||||
// is not set and actually could be?
|
// is not set and actually could be?
|
||||||
network_info->Assign(0, new StringVal("<unknown>"));
|
network_info->Assign(0, make_intrusive<StringVal>("<unknown>"));
|
||||||
network_info->Assign(1, val_mgr->GetPort(0, TRANSPORT_TCP));
|
network_info->Assign(1, val_mgr->GetPort(0, TRANSPORT_TCP));
|
||||||
}
|
}
|
||||||
|
|
||||||
endpoint_info->Assign(1, network_info);
|
endpoint_info->Assign(1, std::move(network_info));
|
||||||
}
|
}
|
||||||
|
|
||||||
auto str = stat.message();
|
auto str = stat.message();
|
||||||
|
|
|
@ -28,7 +28,7 @@ inline RecordVal* query_result()
|
||||||
{
|
{
|
||||||
auto rval = new RecordVal(BifType::Record::Broker::QueryResult);
|
auto rval = new RecordVal(BifType::Record::Broker::QueryResult);
|
||||||
rval->Assign(0, query_status(false));
|
rval->Assign(0, query_status(false));
|
||||||
rval->Assign(1, new RecordVal(BifType::Record::Broker::Data));
|
rval->Assign(1, make_intrusive<RecordVal>(BifType::Record::Broker::Data));
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -109,16 +109,16 @@ function Broker::__peers%(%): PeerInfos
|
||||||
|
|
||||||
if ( n )
|
if ( n )
|
||||||
{
|
{
|
||||||
network_info->Assign(0, new AddrVal(IPAddr(n->address)));
|
network_info->Assign(0, make_intrusive<AddrVal>(IPAddr(n->address)));
|
||||||
network_info->Assign(1, val_mgr->GetPort(n->port, TRANSPORT_TCP));
|
network_info->Assign(1, val_mgr->GetPort(n->port, TRANSPORT_TCP));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
network_info->Assign(0, new AddrVal("0.0.0.0"));
|
network_info->Assign(0, make_intrusive<AddrVal>("0.0.0.0"));
|
||||||
network_info->Assign(1, val_mgr->GetPort(0, TRANSPORT_TCP));
|
network_info->Assign(1, val_mgr->GetPort(0, TRANSPORT_TCP));
|
||||||
}
|
}
|
||||||
|
|
||||||
endpoint_info->Assign(0, new StringVal(to_string(p.peer.node)));
|
endpoint_info->Assign(0, make_intrusive<StringVal>(to_string(p.peer.node)));
|
||||||
endpoint_info->Assign(1, network_info);
|
endpoint_info->Assign(1, network_info);
|
||||||
|
|
||||||
auto ps = (BifEnum::Broker::PeerStatus)p.status;
|
auto ps = (BifEnum::Broker::PeerStatus)p.status;
|
||||||
|
|
|
@ -154,7 +154,7 @@ function Broker::__set_iterator_value%(it: opaque of Broker::SetIterator%): Brok
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
rval->Assign(0, new bro_broker::DataVal(*set_it->it));
|
rval->Assign(0, make_intrusive<bro_broker::DataVal>(*set_it->it));
|
||||||
return rval;
|
return rval;
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
@ -312,8 +312,8 @@ function Broker::__table_iterator_value%(it: opaque of Broker::TableIterator%):
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
key_val->Assign(0, new bro_broker::DataVal(ti->it->first));
|
key_val->Assign(0, make_intrusive<bro_broker::DataVal>(ti->it->first));
|
||||||
val_val->Assign(0, new bro_broker::DataVal(ti->it->second));
|
val_val->Assign(0, make_intrusive<bro_broker::DataVal>(ti->it->second));
|
||||||
return rval;
|
return rval;
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
@ -431,7 +431,7 @@ function Broker::__vector_iterator_value%(it: opaque of Broker::VectorIterator%)
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
rval->Assign(0, new bro_broker::DataVal(*vi->it));
|
rval->Assign(0, make_intrusive<bro_broker::DataVal>(*vi->it));
|
||||||
return rval;
|
return rval;
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
@ -513,6 +513,6 @@ function Broker::__record_iterator_value%(it: opaque of Broker::RecordIterator%)
|
||||||
if ( caf::get_if<broker::none>(&(*ri->it)) )
|
if ( caf::get_if<broker::none>(&(*ri->it)) )
|
||||||
return rval; // field isn't set
|
return rval; // field isn't set
|
||||||
|
|
||||||
rval->Assign(0, new bro_broker::DataVal(*ri->it));
|
rval->Assign(0, make_intrusive<bro_broker::DataVal>(*ri->it));
|
||||||
return rval;
|
return rval;
|
||||||
%}
|
%}
|
||||||
|
|
|
@ -34,9 +34,9 @@ static Val* empty_connection_table()
|
||||||
static RecordVal* get_conn_id_val(const Connection* conn)
|
static RecordVal* get_conn_id_val(const Connection* conn)
|
||||||
{
|
{
|
||||||
RecordVal* v = new RecordVal(conn_id);
|
RecordVal* v = new RecordVal(conn_id);
|
||||||
v->Assign(0, new AddrVal(conn->OrigAddr()));
|
v->Assign(0, make_intrusive<AddrVal>(conn->OrigAddr()));
|
||||||
v->Assign(1, val_mgr->GetPort(ntohs(conn->OrigPort()), conn->ConnTransport()));
|
v->Assign(1, val_mgr->GetPort(ntohs(conn->OrigPort()), conn->ConnTransport()));
|
||||||
v->Assign(2, new AddrVal(conn->RespAddr()));
|
v->Assign(2, make_intrusive<AddrVal>(conn->RespAddr()));
|
||||||
v->Assign(3, val_mgr->GetPort(ntohs(conn->RespPort()), conn->ConnTransport()));
|
v->Assign(3, val_mgr->GetPort(ntohs(conn->RespPort()), conn->ConnTransport()));
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
@ -93,7 +93,7 @@ File::File(const string& file_id, const string& source_name, Connection* conn,
|
||||||
DBG_LOG(DBG_FILE_ANALYSIS, "[%s] Creating new File object", file_id.c_str());
|
DBG_LOG(DBG_FILE_ANALYSIS, "[%s] Creating new File object", file_id.c_str());
|
||||||
|
|
||||||
val = new RecordVal(fa_file_type);
|
val = new RecordVal(fa_file_type);
|
||||||
val->Assign(id_idx, new StringVal(file_id.c_str()));
|
val->Assign(id_idx, make_intrusive<StringVal>(file_id.c_str()));
|
||||||
SetSource(source_name);
|
SetSource(source_name);
|
||||||
|
|
||||||
if ( conn )
|
if ( conn )
|
||||||
|
@ -117,7 +117,7 @@ File::~File()
|
||||||
|
|
||||||
void File::UpdateLastActivityTime()
|
void File::UpdateLastActivityTime()
|
||||||
{
|
{
|
||||||
val->Assign(last_active_idx, new Val(network_time, TYPE_TIME));
|
val->Assign(last_active_idx, make_intrusive<Val>(network_time, TYPE_TIME));
|
||||||
}
|
}
|
||||||
|
|
||||||
double File::GetLastActivityTime() const
|
double File::GetLastActivityTime() const
|
||||||
|
@ -199,7 +199,7 @@ string File::GetSource() const
|
||||||
|
|
||||||
void File::SetSource(const string& source)
|
void File::SetSource(const string& source)
|
||||||
{
|
{
|
||||||
val->Assign(source_idx, new StringVal(source.c_str()));
|
val->Assign(source_idx, make_intrusive<StringVal>(source.c_str()));
|
||||||
}
|
}
|
||||||
|
|
||||||
double File::GetTimeoutInterval() const
|
double File::GetTimeoutInterval() const
|
||||||
|
@ -209,7 +209,7 @@ double File::GetTimeoutInterval() const
|
||||||
|
|
||||||
void File::SetTimeoutInterval(double interval)
|
void File::SetTimeoutInterval(double interval)
|
||||||
{
|
{
|
||||||
val->Assign(timeout_interval_idx, new Val(interval, TYPE_INTERVAL));
|
val->Assign(timeout_interval_idx, make_intrusive<Val>(interval, TYPE_INTERVAL));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool File::SetExtractionLimit(RecordVal* args, uint64_t bytes)
|
bool File::SetExtractionLimit(RecordVal* args, uint64_t bytes)
|
||||||
|
@ -305,7 +305,7 @@ bool File::SetMime(const string& mime_type)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
RecordVal* meta = new RecordVal(fa_metadata_type);
|
RecordVal* meta = new RecordVal(fa_metadata_type);
|
||||||
meta->Assign(meta_mime_type_idx, new StringVal(mime_type));
|
meta->Assign(meta_mime_type_idx, make_intrusive<StringVal>(mime_type));
|
||||||
meta->Assign(meta_inferred_idx, val_mgr->GetBool(0));
|
meta->Assign(meta_inferred_idx, val_mgr->GetBool(0));
|
||||||
|
|
||||||
FileEvent(file_sniff, {val->Ref(), meta});
|
FileEvent(file_sniff, {val->Ref(), meta});
|
||||||
|
@ -369,7 +369,7 @@ bool File::BufferBOF(const u_char* data, uint64_t len)
|
||||||
if ( bof_buffer.size > 0 )
|
if ( bof_buffer.size > 0 )
|
||||||
{
|
{
|
||||||
BroString* bs = concatenate(bof_buffer.chunks);
|
BroString* bs = concatenate(bof_buffer.chunks);
|
||||||
val->Assign(bof_buffer_idx, new StringVal(bs));
|
val->Assign(bof_buffer_idx, make_intrusive<StringVal>(bs));
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -528,7 +528,7 @@ VectorVal* file_analysis::GenMIMEMatchesVal(const RuleMatcher::MIME_Matches& m)
|
||||||
it2 != it->second.end(); ++it2 )
|
it2 != it->second.end(); ++it2 )
|
||||||
{
|
{
|
||||||
element->Assign(0, val_mgr->GetInt(it->first));
|
element->Assign(0, val_mgr->GetInt(it->first));
|
||||||
element->Assign(1, new StringVal(*it2));
|
element->Assign(1, make_intrusive<StringVal>(*it2));
|
||||||
}
|
}
|
||||||
|
|
||||||
rval->Assign(rval->Size(), element);
|
rval->Assign(rval->Size(), element);
|
||||||
|
|
|
@ -61,11 +61,11 @@ void Entropy::Finalize()
|
||||||
entropy->Get(&ent, &chisq, &mean, &montepi, &scc);
|
entropy->Get(&ent, &chisq, &mean, &montepi, &scc);
|
||||||
|
|
||||||
RecordVal* ent_result = new RecordVal(entropy_test_result);
|
RecordVal* ent_result = new RecordVal(entropy_test_result);
|
||||||
ent_result->Assign(0, new Val(ent, TYPE_DOUBLE));
|
ent_result->Assign(0, make_intrusive<Val>(ent, TYPE_DOUBLE));
|
||||||
ent_result->Assign(1, new Val(chisq, TYPE_DOUBLE));
|
ent_result->Assign(1, make_intrusive<Val>(chisq, TYPE_DOUBLE));
|
||||||
ent_result->Assign(2, new Val(mean, TYPE_DOUBLE));
|
ent_result->Assign(2, make_intrusive<Val>(mean, TYPE_DOUBLE));
|
||||||
ent_result->Assign(3, new Val(montepi, TYPE_DOUBLE));
|
ent_result->Assign(3, make_intrusive<Val>(montepi, TYPE_DOUBLE));
|
||||||
ent_result->Assign(4, new Val(scc, TYPE_DOUBLE));
|
ent_result->Assign(4, make_intrusive<Val>(scc, TYPE_DOUBLE));
|
||||||
|
|
||||||
mgr.QueueEventFast(file_entropy, {
|
mgr.QueueEventFast(file_entropy, {
|
||||||
GetFile()->GetVal()->Ref(),
|
GetFile()->GetVal()->Ref(),
|
||||||
|
|
|
@ -43,7 +43,7 @@ refine flow File += {
|
||||||
if ( pe_dos_header )
|
if ( pe_dos_header )
|
||||||
{
|
{
|
||||||
RecordVal* dh = new RecordVal(BifType::Record::PE::DOSHeader);
|
RecordVal* dh = new RecordVal(BifType::Record::PE::DOSHeader);
|
||||||
dh->Assign(0, new StringVal(${h.signature}.length(), (const char*) ${h.signature}.data()));
|
dh->Assign(0, make_intrusive<StringVal>(${h.signature}.length(), (const char*) ${h.signature}.data()));
|
||||||
dh->Assign(1, val_mgr->GetCount(${h.UsedBytesInTheLastPage}));
|
dh->Assign(1, val_mgr->GetCount(${h.UsedBytesInTheLastPage}));
|
||||||
dh->Assign(2, val_mgr->GetCount(${h.FileSizeInPages}));
|
dh->Assign(2, val_mgr->GetCount(${h.FileSizeInPages}));
|
||||||
dh->Assign(3, val_mgr->GetCount(${h.NumberOfRelocationItems}));
|
dh->Assign(3, val_mgr->GetCount(${h.NumberOfRelocationItems}));
|
||||||
|
@ -97,7 +97,7 @@ refine flow File += {
|
||||||
{
|
{
|
||||||
RecordVal* fh = new RecordVal(BifType::Record::PE::FileHeader);
|
RecordVal* fh = new RecordVal(BifType::Record::PE::FileHeader);
|
||||||
fh->Assign(0, val_mgr->GetCount(${h.Machine}));
|
fh->Assign(0, val_mgr->GetCount(${h.Machine}));
|
||||||
fh->Assign(1, new Val(static_cast<double>(${h.TimeDateStamp}), TYPE_TIME));
|
fh->Assign(1, make_intrusive<Val>(static_cast<double>(${h.TimeDateStamp}), TYPE_TIME));
|
||||||
fh->Assign(2, val_mgr->GetCount(${h.PointerToSymbolTable}));
|
fh->Assign(2, val_mgr->GetCount(${h.PointerToSymbolTable}));
|
||||||
fh->Assign(3, val_mgr->GetCount(${h.NumberOfSymbols}));
|
fh->Assign(3, val_mgr->GetCount(${h.NumberOfSymbols}));
|
||||||
fh->Assign(4, val_mgr->GetCount(${h.SizeOfOptionalHeader}));
|
fh->Assign(4, val_mgr->GetCount(${h.SizeOfOptionalHeader}));
|
||||||
|
@ -176,7 +176,7 @@ refine flow File += {
|
||||||
name_len = ${h.name}.length();
|
name_len = ${h.name}.length();
|
||||||
else
|
else
|
||||||
name_len = first_null - ${h.name}.data();
|
name_len = first_null - ${h.name}.data();
|
||||||
section_header->Assign(0, new StringVal(name_len, (const char*) ${h.name}.data()));
|
section_header->Assign(0, make_intrusive<StringVal>(name_len, (const char*) ${h.name}.data()));
|
||||||
|
|
||||||
section_header->Assign(1, val_mgr->GetCount(${h.virtual_size}));
|
section_header->Assign(1, val_mgr->GetCount(${h.virtual_size}));
|
||||||
section_header->Assign(2, val_mgr->GetCount(${h.virtual_addr}));
|
section_header->Assign(2, val_mgr->GetCount(${h.virtual_addr}));
|
||||||
|
|
|
@ -69,7 +69,7 @@ refine flow Flow += {
|
||||||
RecordVal* ids_event = new RecordVal(BifType::Record::Unified2::IDSEvent);
|
RecordVal* ids_event = new RecordVal(BifType::Record::Unified2::IDSEvent);
|
||||||
ids_event->Assign(0, val_mgr->GetCount(${ev.sensor_id}));
|
ids_event->Assign(0, val_mgr->GetCount(${ev.sensor_id}));
|
||||||
ids_event->Assign(1, val_mgr->GetCount(${ev.event_id}));
|
ids_event->Assign(1, val_mgr->GetCount(${ev.event_id}));
|
||||||
ids_event->Assign(2, new Val(ts_to_double(${ev.ts}), TYPE_TIME));
|
ids_event->Assign(2, make_intrusive<Val>(ts_to_double(${ev.ts}), TYPE_TIME));
|
||||||
ids_event->Assign(3, val_mgr->GetCount(${ev.signature_id}));
|
ids_event->Assign(3, val_mgr->GetCount(${ev.signature_id}));
|
||||||
ids_event->Assign(4, val_mgr->GetCount(${ev.generator_id}));
|
ids_event->Assign(4, val_mgr->GetCount(${ev.generator_id}));
|
||||||
ids_event->Assign(5, val_mgr->GetCount(${ev.signature_revision}));
|
ids_event->Assign(5, val_mgr->GetCount(${ev.signature_revision}));
|
||||||
|
@ -97,7 +97,7 @@ refine flow Flow += {
|
||||||
RecordVal* ids_event = new RecordVal(BifType::Record::Unified2::IDSEvent);
|
RecordVal* ids_event = new RecordVal(BifType::Record::Unified2::IDSEvent);
|
||||||
ids_event->Assign(0, val_mgr->GetCount(${ev.sensor_id}));
|
ids_event->Assign(0, val_mgr->GetCount(${ev.sensor_id}));
|
||||||
ids_event->Assign(1, val_mgr->GetCount(${ev.event_id}));
|
ids_event->Assign(1, val_mgr->GetCount(${ev.event_id}));
|
||||||
ids_event->Assign(2, new Val(ts_to_double(${ev.ts}), TYPE_TIME));
|
ids_event->Assign(2, make_intrusive<Val>(ts_to_double(${ev.ts}), TYPE_TIME));
|
||||||
ids_event->Assign(3, val_mgr->GetCount(${ev.signature_id}));
|
ids_event->Assign(3, val_mgr->GetCount(${ev.signature_id}));
|
||||||
ids_event->Assign(4, val_mgr->GetCount(${ev.generator_id}));
|
ids_event->Assign(4, val_mgr->GetCount(${ev.generator_id}));
|
||||||
ids_event->Assign(5, val_mgr->GetCount(${ev.signature_revision}));
|
ids_event->Assign(5, val_mgr->GetCount(${ev.signature_revision}));
|
||||||
|
@ -131,7 +131,7 @@ refine flow Flow += {
|
||||||
packet->Assign(0, val_mgr->GetCount(${pkt.sensor_id}));
|
packet->Assign(0, val_mgr->GetCount(${pkt.sensor_id}));
|
||||||
packet->Assign(1, val_mgr->GetCount(${pkt.event_id}));
|
packet->Assign(1, val_mgr->GetCount(${pkt.event_id}));
|
||||||
packet->Assign(2, val_mgr->GetCount(${pkt.event_second}));
|
packet->Assign(2, val_mgr->GetCount(${pkt.event_second}));
|
||||||
packet->Assign(3, new Val(ts_to_double(${pkt.packet_ts}), TYPE_TIME));
|
packet->Assign(3, make_intrusive<Val>(ts_to_double(${pkt.packet_ts}), TYPE_TIME));
|
||||||
packet->Assign(4, val_mgr->GetCount(${pkt.link_type}));
|
packet->Assign(4, val_mgr->GetCount(${pkt.link_type}));
|
||||||
packet->Assign(5, bytestring_to_val(${pkt.packet_data}));
|
packet->Assign(5, bytestring_to_val(${pkt.packet_data}));
|
||||||
|
|
||||||
|
|
|
@ -624,7 +624,7 @@ void file_analysis::OCSP::ParseResponse(OCSP_RESPONSE *resp)
|
||||||
|
|
||||||
//i2a_ASN1_OBJECT(bio, basic_resp->signature);
|
//i2a_ASN1_OBJECT(bio, basic_resp->signature);
|
||||||
//len = BIO_read(bio, buf, sizeof(buf));
|
//len = BIO_read(bio, buf, sizeof(buf));
|
||||||
//ocsp_resp_record->Assign(7, new StringVal(len, buf));
|
//ocsp_resp_record->Assign(7, make_intrusive<StringVal>(len, buf));
|
||||||
//BIO_reset(bio);
|
//BIO_reset(bio);
|
||||||
|
|
||||||
certs_vector = new VectorVal(internal_type("x509_opaque_vector")->AsVectorType());
|
certs_vector = new VectorVal(internal_type("x509_opaque_vector")->AsVectorType());
|
||||||
|
@ -644,7 +644,7 @@ void file_analysis::OCSP::ParseResponse(OCSP_RESPONSE *resp)
|
||||||
::X509 *this_cert = X509_dup(helper_sk_X509_value(certs, i));
|
::X509 *this_cert = X509_dup(helper_sk_X509_value(certs, i));
|
||||||
//::X509 *this_cert = X509_dup(sk_X509_value(certs, i));
|
//::X509 *this_cert = X509_dup(sk_X509_value(certs, i));
|
||||||
if (this_cert)
|
if (this_cert)
|
||||||
certs_vector->Assign(i, new file_analysis::X509Val(this_cert));
|
certs_vector->Assign(i, make_intrusive<file_analysis::X509Val>(this_cert));
|
||||||
else
|
else
|
||||||
reporter->Weird("OpenSSL returned null certificate");
|
reporter->Weird("OpenSSL returned null certificate");
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,12 +104,12 @@ RecordVal* file_analysis::X509::ParseCertificate(X509Val* cert_val, File* f)
|
||||||
pX509Cert->Assign(0, val_mgr->GetCount((uint64_t) X509_get_version(ssl_cert) + 1));
|
pX509Cert->Assign(0, val_mgr->GetCount((uint64_t) X509_get_version(ssl_cert) + 1));
|
||||||
i2a_ASN1_INTEGER(bio, X509_get_serialNumber(ssl_cert));
|
i2a_ASN1_INTEGER(bio, X509_get_serialNumber(ssl_cert));
|
||||||
int len = BIO_read(bio, buf, sizeof(buf));
|
int len = BIO_read(bio, buf, sizeof(buf));
|
||||||
pX509Cert->Assign(1, new StringVal(len, buf));
|
pX509Cert->Assign(1, make_intrusive<StringVal>(len, buf));
|
||||||
BIO_reset(bio);
|
BIO_reset(bio);
|
||||||
|
|
||||||
X509_NAME_print_ex(bio, X509_get_subject_name(ssl_cert), 0, XN_FLAG_RFC2253);
|
X509_NAME_print_ex(bio, X509_get_subject_name(ssl_cert), 0, XN_FLAG_RFC2253);
|
||||||
len = BIO_gets(bio, buf, sizeof(buf));
|
len = BIO_gets(bio, buf, sizeof(buf));
|
||||||
pX509Cert->Assign(2, new StringVal(len, buf));
|
pX509Cert->Assign(2, make_intrusive<StringVal>(len, buf));
|
||||||
BIO_reset(bio);
|
BIO_reset(bio);
|
||||||
|
|
||||||
X509_NAME *subject_name = X509_get_subject_name(ssl_cert);
|
X509_NAME *subject_name = X509_get_subject_name(ssl_cert);
|
||||||
|
@ -129,17 +129,17 @@ RecordVal* file_analysis::X509::ParseCertificate(X509Val* cert_val, File* f)
|
||||||
// we found a common name
|
// we found a common name
|
||||||
ASN1_STRING_print(bio, X509_NAME_ENTRY_get_data(X509_NAME_get_entry(subject_name, namepos)));
|
ASN1_STRING_print(bio, X509_NAME_ENTRY_get_data(X509_NAME_get_entry(subject_name, namepos)));
|
||||||
len = BIO_gets(bio, buf, sizeof(buf));
|
len = BIO_gets(bio, buf, sizeof(buf));
|
||||||
pX509Cert->Assign(4, new StringVal(len, buf));
|
pX509Cert->Assign(4, make_intrusive<StringVal>(len, buf));
|
||||||
BIO_reset(bio);
|
BIO_reset(bio);
|
||||||
}
|
}
|
||||||
|
|
||||||
X509_NAME_print_ex(bio, X509_get_issuer_name(ssl_cert), 0, XN_FLAG_RFC2253);
|
X509_NAME_print_ex(bio, X509_get_issuer_name(ssl_cert), 0, XN_FLAG_RFC2253);
|
||||||
len = BIO_gets(bio, buf, sizeof(buf));
|
len = BIO_gets(bio, buf, sizeof(buf));
|
||||||
pX509Cert->Assign(3, new StringVal(len, buf));
|
pX509Cert->Assign(3, make_intrusive<StringVal>(len, buf));
|
||||||
BIO_free(bio);
|
BIO_free(bio);
|
||||||
|
|
||||||
pX509Cert->Assign(5, new Val(GetTimeFromAsn1(X509_get_notBefore(ssl_cert), f, reporter), TYPE_TIME));
|
pX509Cert->Assign(5, make_intrusive<Val>(GetTimeFromAsn1(X509_get_notBefore(ssl_cert), f, reporter), TYPE_TIME));
|
||||||
pX509Cert->Assign(6, new Val(GetTimeFromAsn1(X509_get_notAfter(ssl_cert), f, reporter), TYPE_TIME));
|
pX509Cert->Assign(6, make_intrusive<Val>(GetTimeFromAsn1(X509_get_notAfter(ssl_cert), f, reporter), TYPE_TIME));
|
||||||
|
|
||||||
// we only read 255 bytes because byte 256 is always 0.
|
// we only read 255 bytes because byte 256 is always 0.
|
||||||
// if the string is longer than 255, that will be our null-termination,
|
// if the string is longer than 255, that will be our null-termination,
|
||||||
|
@ -149,7 +149,7 @@ RecordVal* file_analysis::X509::ParseCertificate(X509Val* cert_val, File* f)
|
||||||
if ( ! i2t_ASN1_OBJECT(buf, 255, algorithm) )
|
if ( ! i2t_ASN1_OBJECT(buf, 255, algorithm) )
|
||||||
buf[0] = 0;
|
buf[0] = 0;
|
||||||
|
|
||||||
pX509Cert->Assign(7, new StringVal(buf));
|
pX509Cert->Assign(7, make_intrusive<StringVal>(buf));
|
||||||
|
|
||||||
// Special case for RDP server certificates. For some reason some (all?) RDP server
|
// Special case for RDP server certificates. For some reason some (all?) RDP server
|
||||||
// certificates like to specify their key algorithm as md5WithRSAEncryption, which
|
// certificates like to specify their key algorithm as md5WithRSAEncryption, which
|
||||||
|
@ -171,25 +171,25 @@ RecordVal* file_analysis::X509::ParseCertificate(X509Val* cert_val, File* f)
|
||||||
if ( ! i2t_ASN1_OBJECT(buf, 255, OBJ_nid2obj(X509_get_signature_nid(ssl_cert))) )
|
if ( ! i2t_ASN1_OBJECT(buf, 255, OBJ_nid2obj(X509_get_signature_nid(ssl_cert))) )
|
||||||
buf[0] = 0;
|
buf[0] = 0;
|
||||||
|
|
||||||
pX509Cert->Assign(8, new StringVal(buf));
|
pX509Cert->Assign(8, make_intrusive<StringVal>(buf));
|
||||||
|
|
||||||
// Things we can do when we have the key...
|
// Things we can do when we have the key...
|
||||||
EVP_PKEY *pkey = X509_extract_key(ssl_cert);
|
EVP_PKEY *pkey = X509_extract_key(ssl_cert);
|
||||||
if ( pkey != NULL )
|
if ( pkey != NULL )
|
||||||
{
|
{
|
||||||
if ( EVP_PKEY_base_id(pkey) == EVP_PKEY_DSA )
|
if ( EVP_PKEY_base_id(pkey) == EVP_PKEY_DSA )
|
||||||
pX509Cert->Assign(9, new StringVal("dsa"));
|
pX509Cert->Assign(9, make_intrusive<StringVal>("dsa"));
|
||||||
|
|
||||||
else if ( EVP_PKEY_base_id(pkey) == EVP_PKEY_RSA )
|
else if ( EVP_PKEY_base_id(pkey) == EVP_PKEY_RSA )
|
||||||
{
|
{
|
||||||
pX509Cert->Assign(9, new StringVal("rsa"));
|
pX509Cert->Assign(9, make_intrusive<StringVal>("rsa"));
|
||||||
|
|
||||||
const BIGNUM *e;
|
const BIGNUM *e;
|
||||||
RSA_get0_key(EVP_PKEY_get0_RSA(pkey), NULL, &e, NULL);
|
RSA_get0_key(EVP_PKEY_get0_RSA(pkey), NULL, &e, NULL);
|
||||||
char *exponent = BN_bn2dec(e);
|
char *exponent = BN_bn2dec(e);
|
||||||
if ( exponent != NULL )
|
if ( exponent != NULL )
|
||||||
{
|
{
|
||||||
pX509Cert->Assign(11, new StringVal(exponent));
|
pX509Cert->Assign(11, make_intrusive<StringVal>(exponent));
|
||||||
OPENSSL_free(exponent);
|
OPENSSL_free(exponent);
|
||||||
exponent = NULL;
|
exponent = NULL;
|
||||||
}
|
}
|
||||||
|
@ -197,7 +197,7 @@ RecordVal* file_analysis::X509::ParseCertificate(X509Val* cert_val, File* f)
|
||||||
#ifndef OPENSSL_NO_EC
|
#ifndef OPENSSL_NO_EC
|
||||||
else if ( EVP_PKEY_base_id(pkey) == EVP_PKEY_EC )
|
else if ( EVP_PKEY_base_id(pkey) == EVP_PKEY_EC )
|
||||||
{
|
{
|
||||||
pX509Cert->Assign(9, new StringVal("ecdsa"));
|
pX509Cert->Assign(9, make_intrusive<StringVal>("ecdsa"));
|
||||||
pX509Cert->Assign(12, KeyCurve(pkey));
|
pX509Cert->Assign(12, KeyCurve(pkey));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -379,10 +379,10 @@ void file_analysis::X509::ParseSAN(X509_EXTENSION* ext)
|
||||||
uint32_t* addr = (uint32_t*) gen->d.ip->data;
|
uint32_t* addr = (uint32_t*) gen->d.ip->data;
|
||||||
|
|
||||||
if( gen->d.ip->length == 4 )
|
if( gen->d.ip->length == 4 )
|
||||||
ips->Assign(ips->Size(), new AddrVal(*addr));
|
ips->Assign(ips->Size(), make_intrusive<AddrVal>(*addr));
|
||||||
|
|
||||||
else if ( gen->d.ip->length == 16 )
|
else if ( gen->d.ip->length == 16 )
|
||||||
ips->Assign(ips->Size(), new AddrVal(addr));
|
ips->Assign(ips->Size(), make_intrusive<AddrVal>(addr));
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -263,12 +263,12 @@ void file_analysis::X509Common::ParseExtension(X509_EXTENSION* ex, const EventHa
|
||||||
ext_val = new StringVal(0, "");
|
ext_val = new StringVal(0, "");
|
||||||
|
|
||||||
RecordVal* pX509Ext = new RecordVal(BifType::Record::X509::Extension);
|
RecordVal* pX509Ext = new RecordVal(BifType::Record::X509::Extension);
|
||||||
pX509Ext->Assign(0, new StringVal(name));
|
pX509Ext->Assign(0, make_intrusive<StringVal>(name));
|
||||||
|
|
||||||
if ( short_name and strlen(short_name) > 0 )
|
if ( short_name and strlen(short_name) > 0 )
|
||||||
pX509Ext->Assign(1, new StringVal(short_name));
|
pX509Ext->Assign(1, make_intrusive<StringVal>(short_name));
|
||||||
|
|
||||||
pX509Ext->Assign(2, new StringVal(oid));
|
pX509Ext->Assign(2, make_intrusive<StringVal>(oid));
|
||||||
pX509Ext->Assign(3, val_mgr->GetBool(critical));
|
pX509Ext->Assign(3, val_mgr->GetBool(critical));
|
||||||
pX509Ext->Assign(4, ext_val);
|
pX509Ext->Assign(4, ext_val);
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ RecordVal* x509_result_record(uint64_t num, const char* reason, Val* chainVector
|
||||||
RecordVal* rrecord = new RecordVal(BifType::Record::X509::Result);
|
RecordVal* rrecord = new RecordVal(BifType::Record::X509::Result);
|
||||||
|
|
||||||
rrecord->Assign(0, val_mgr->GetInt(num));
|
rrecord->Assign(0, val_mgr->GetInt(num));
|
||||||
rrecord->Assign(1, new StringVal(reason));
|
rrecord->Assign(1, make_intrusive<StringVal>(reason));
|
||||||
if ( chainVector )
|
if ( chainVector )
|
||||||
rrecord->Assign(2, chainVector);
|
rrecord->Assign(2, chainVector);
|
||||||
|
|
||||||
|
@ -564,7 +564,7 @@ function x509_verify%(certs: x509_opaque_vector, root_certs: table_string_of_str
|
||||||
|
|
||||||
if ( currcert )
|
if ( currcert )
|
||||||
// X509Val takes ownership of currcert.
|
// X509Val takes ownership of currcert.
|
||||||
chainVector->Assign(i, new file_analysis::X509Val(currcert));
|
chainVector->Assign(i, make_intrusive<file_analysis::X509Val>(currcert));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
reporter->InternalWarning("OpenSSL returned null certificate");
|
reporter->InternalWarning("OpenSSL returned null certificate");
|
||||||
|
|
|
@ -1544,10 +1544,10 @@ bool Manager::FinishedRotation(WriterFrontend* writer, const char* new_name, con
|
||||||
// Create the RotationInfo record.
|
// Create the RotationInfo record.
|
||||||
RecordVal* info = new RecordVal(BifType::Record::Log::RotationInfo);
|
RecordVal* info = new RecordVal(BifType::Record::Log::RotationInfo);
|
||||||
info->Assign(0, winfo->type->Ref());
|
info->Assign(0, winfo->type->Ref());
|
||||||
info->Assign(1, new StringVal(new_name));
|
info->Assign(1, make_intrusive<StringVal>(new_name));
|
||||||
info->Assign(2, new StringVal(winfo->writer->Info().path));
|
info->Assign(2, make_intrusive<StringVal>(winfo->writer->Info().path));
|
||||||
info->Assign(3, new Val(open, TYPE_TIME));
|
info->Assign(3, make_intrusive<Val>(open, TYPE_TIME));
|
||||||
info->Assign(4, new Val(close, TYPE_TIME));
|
info->Assign(4, make_intrusive<Val>(close, TYPE_TIME));
|
||||||
info->Assign(5, val_mgr->GetBool(terminating));
|
info->Assign(5, val_mgr->GetBool(terminating));
|
||||||
|
|
||||||
Func* func = winfo->postprocessor;
|
Func* func = winfo->postprocessor;
|
||||||
|
|
|
@ -152,11 +152,11 @@ function get_proc_stats%(%): ProcStats
|
||||||
r->Assign(n++, val_mgr->GetCount(0));
|
r->Assign(n++, val_mgr->GetCount(0));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
r->Assign(n++, new Val(bro_start_time, TYPE_TIME));
|
r->Assign(n++, make_intrusive<Val>(bro_start_time, TYPE_TIME));
|
||||||
|
|
||||||
r->Assign(n++, new IntervalVal(elapsed_time, Seconds));
|
r->Assign(n++, make_intrusive<IntervalVal>(elapsed_time, Seconds));
|
||||||
r->Assign(n++, new IntervalVal(user_time, Seconds));
|
r->Assign(n++, make_intrusive<IntervalVal>(user_time, Seconds));
|
||||||
r->Assign(n++, new IntervalVal(system_time, Seconds));
|
r->Assign(n++, make_intrusive<IntervalVal>(system_time, Seconds));
|
||||||
|
|
||||||
uint64_t total_mem;
|
uint64_t total_mem;
|
||||||
get_memory_usage(&total_mem, NULL);
|
get_memory_usage(&total_mem, NULL);
|
||||||
|
|
|
@ -106,7 +106,7 @@ int vs_to_string_array(vector<const BroString*>& vs, TableVal* tbl,
|
||||||
for ( int i = start, j = 0; i <= end; ++i, ++j )
|
for ( int i = start, j = 0; i <= end; ++i, ++j )
|
||||||
{
|
{
|
||||||
Val* ind = val_mgr->GetCount(i);
|
Val* ind = val_mgr->GetCount(i);
|
||||||
tbl->Assign(ind, new StringVal(vs[j]->Len(),
|
tbl->Assign(ind, make_intrusive<StringVal>(vs[j]->Len(),
|
||||||
(const char *)vs[j]->Bytes()));
|
(const char *)vs[j]->Bytes()));
|
||||||
Unref(ind);
|
Unref(ind);
|
||||||
}
|
}
|
||||||
|
@ -266,7 +266,7 @@ VectorVal* do_split_string(StringVal* str_val, RE_Matcher* re, int incl_sep,
|
||||||
n=0;
|
n=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
rval->Assign(num++, new StringVal(offset, (const char*) s));
|
rval->Assign(num++, make_intrusive<StringVal>(offset, (const char*) s));
|
||||||
|
|
||||||
// No more separators will be needed if this is the end of string.
|
// No more separators will be needed if this is the end of string.
|
||||||
if ( n <= 0 )
|
if ( n <= 0 )
|
||||||
|
@ -274,7 +274,7 @@ VectorVal* do_split_string(StringVal* str_val, RE_Matcher* re, int incl_sep,
|
||||||
|
|
||||||
if ( incl_sep )
|
if ( incl_sep )
|
||||||
{ // including the part that matches the pattern
|
{ // including the part that matches the pattern
|
||||||
rval->Assign(num++, new StringVal(end_of_match, (const char*) s+offset));
|
rval->Assign(num++, make_intrusive<StringVal>(end_of_match, (const char*) s+offset));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( max_num_sep && num_sep >= max_num_sep )
|
if ( max_num_sep && num_sep >= max_num_sep )
|
||||||
|
@ -322,7 +322,7 @@ Val* do_split(StringVal* str_val, RE_Matcher* re, int incl_sep, int max_num_sep)
|
||||||
}
|
}
|
||||||
|
|
||||||
Val* ind = val_mgr->GetCount(++num);
|
Val* ind = val_mgr->GetCount(++num);
|
||||||
a->Assign(ind, new StringVal(offset, (const char*) s));
|
a->Assign(ind, make_intrusive<StringVal>(offset, (const char*) s));
|
||||||
Unref(ind);
|
Unref(ind);
|
||||||
|
|
||||||
// No more separators will be needed if this is the end of string.
|
// No more separators will be needed if this is the end of string.
|
||||||
|
@ -332,7 +332,7 @@ Val* do_split(StringVal* str_val, RE_Matcher* re, int incl_sep, int max_num_sep)
|
||||||
if ( incl_sep )
|
if ( incl_sep )
|
||||||
{ // including the part that matches the pattern
|
{ // including the part that matches the pattern
|
||||||
ind = val_mgr->GetCount(++num);
|
ind = val_mgr->GetCount(++num);
|
||||||
a->Assign(ind, new StringVal(end_of_match, (const char*) s+offset));
|
a->Assign(ind, make_intrusive<StringVal>(end_of_match, (const char*) s+offset));
|
||||||
Unref(ind);
|
Unref(ind);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -759,7 +759,7 @@ function str_split%(s: string, idx: index_vec%): string_vec
|
||||||
|
|
||||||
for ( BroString::VecIt it = result->begin();
|
for ( BroString::VecIt it = result->begin();
|
||||||
it != result->end(); ++it, ++i )
|
it != result->end(); ++it, ++i )
|
||||||
result_v->Assign(i, new StringVal(*it));
|
result_v->Assign(i, make_intrusive<StringVal>(*it));
|
||||||
// StringVal now possesses string.
|
// StringVal now possesses string.
|
||||||
|
|
||||||
delete result;
|
delete result;
|
||||||
|
|
|
@ -1109,19 +1109,19 @@ IntrusivePtr<RecordVal> Supervisor::NodeConfig::ToRecord() const
|
||||||
{
|
{
|
||||||
auto rt = BifType::Record::Supervisor::NodeConfig;
|
auto rt = BifType::Record::Supervisor::NodeConfig;
|
||||||
auto rval = make_intrusive<RecordVal>(rt);
|
auto rval = make_intrusive<RecordVal>(rt);
|
||||||
rval->Assign(rt->FieldOffset("name"), new StringVal(name));
|
rval->Assign(rt->FieldOffset("name"), make_intrusive<StringVal>(name));
|
||||||
|
|
||||||
if ( interface )
|
if ( interface )
|
||||||
rval->Assign(rt->FieldOffset("interface"), new StringVal(*interface));
|
rval->Assign(rt->FieldOffset("interface"), make_intrusive<StringVal>(*interface));
|
||||||
|
|
||||||
if ( directory )
|
if ( directory )
|
||||||
rval->Assign(rt->FieldOffset("directory"), new StringVal(*directory));
|
rval->Assign(rt->FieldOffset("directory"), make_intrusive<StringVal>(*directory));
|
||||||
|
|
||||||
if ( stdout_file )
|
if ( stdout_file )
|
||||||
rval->Assign(rt->FieldOffset("stdout_file"), new StringVal(*stdout_file));
|
rval->Assign(rt->FieldOffset("stdout_file"), make_intrusive<StringVal>(*stdout_file));
|
||||||
|
|
||||||
if ( stderr_file )
|
if ( stderr_file )
|
||||||
rval->Assign(rt->FieldOffset("stderr_file"), new StringVal(*stderr_file));
|
rval->Assign(rt->FieldOffset("stderr_file"), make_intrusive<StringVal>(*stderr_file));
|
||||||
|
|
||||||
if ( cpu_affinity )
|
if ( cpu_affinity )
|
||||||
rval->Assign(rt->FieldOffset("cpu_affinity"), val_mgr->GetInt(*cpu_affinity));
|
rval->Assign(rt->FieldOffset("cpu_affinity"), val_mgr->GetInt(*cpu_affinity));
|
||||||
|
@ -1131,7 +1131,7 @@ IntrusivePtr<RecordVal> Supervisor::NodeConfig::ToRecord() const
|
||||||
rval->Assign(rt->FieldOffset("scripts"), scripts_val);
|
rval->Assign(rt->FieldOffset("scripts"), scripts_val);
|
||||||
|
|
||||||
for ( const auto& s : scripts )
|
for ( const auto& s : scripts )
|
||||||
scripts_val->Assign(scripts_val->Size(), new StringVal(s));
|
scripts_val->Assign(scripts_val->Size(), make_intrusive<StringVal>(s));
|
||||||
|
|
||||||
auto tt = BifType::Record::Supervisor::NodeConfig->FieldType("cluster");
|
auto tt = BifType::Record::Supervisor::NodeConfig->FieldType("cluster");
|
||||||
auto cluster_val = new TableVal(tt->AsTableType());
|
auto cluster_val = new TableVal(tt->AsTableType());
|
||||||
|
@ -1146,13 +1146,13 @@ IntrusivePtr<RecordVal> Supervisor::NodeConfig::ToRecord() const
|
||||||
auto val = make_intrusive<RecordVal>(ept);
|
auto val = make_intrusive<RecordVal>(ept);
|
||||||
|
|
||||||
val->Assign(ept->FieldOffset("role"), BifType::Enum::Supervisor::ClusterRole->GetVal(ep.role));
|
val->Assign(ept->FieldOffset("role"), BifType::Enum::Supervisor::ClusterRole->GetVal(ep.role));
|
||||||
val->Assign(ept->FieldOffset("host"), new AddrVal(ep.host));
|
val->Assign(ept->FieldOffset("host"), make_intrusive<AddrVal>(ep.host));
|
||||||
val->Assign(ept->FieldOffset("p"), val_mgr->GetPort(ep.port, TRANSPORT_TCP));
|
val->Assign(ept->FieldOffset("p"), val_mgr->GetPort(ep.port, TRANSPORT_TCP));
|
||||||
|
|
||||||
if ( ep.interface )
|
if ( ep.interface )
|
||||||
val->Assign(ept->FieldOffset("interface"), new StringVal(*ep.interface));
|
val->Assign(ept->FieldOffset("interface"), make_intrusive<StringVal>(*ep.interface));
|
||||||
|
|
||||||
cluster_val->Assign(key.get(), val.release());
|
cluster_val->Assign(key.get(), std::move(val));
|
||||||
}
|
}
|
||||||
|
|
||||||
return rval;
|
return rval;
|
||||||
|
@ -1163,7 +1163,7 @@ IntrusivePtr<RecordVal> Supervisor::Node::ToRecord() const
|
||||||
auto rt = BifType::Record::Supervisor::NodeStatus;
|
auto rt = BifType::Record::Supervisor::NodeStatus;
|
||||||
auto rval = make_intrusive<RecordVal>(rt);
|
auto rval = make_intrusive<RecordVal>(rt);
|
||||||
|
|
||||||
rval->Assign(rt->FieldOffset("node"), config.ToRecord().release());
|
rval->Assign(rt->FieldOffset("node"), config.ToRecord());
|
||||||
|
|
||||||
if ( pid )
|
if ( pid )
|
||||||
rval->Assign(rt->FieldOffset("pid"), val_mgr->GetInt(pid));
|
rval->Assign(rt->FieldOffset("pid"), val_mgr->GetInt(pid));
|
||||||
|
@ -1219,18 +1219,18 @@ bool Supervisor::SupervisedNode::InitCluster() const
|
||||||
|
|
||||||
auto node_type = supervisor_role_to_cluster_node_type(ep.role);
|
auto node_type = supervisor_role_to_cluster_node_type(ep.role);
|
||||||
val->Assign(cluster_node_type->FieldOffset("node_type"), node_type);
|
val->Assign(cluster_node_type->FieldOffset("node_type"), node_type);
|
||||||
val->Assign(cluster_node_type->FieldOffset("ip"), new AddrVal(ep.host));
|
val->Assign(cluster_node_type->FieldOffset("ip"), make_intrusive<AddrVal>(ep.host));
|
||||||
val->Assign(cluster_node_type->FieldOffset("p"), val_mgr->GetPort(ep.port, TRANSPORT_TCP));
|
val->Assign(cluster_node_type->FieldOffset("p"), val_mgr->GetPort(ep.port, TRANSPORT_TCP));
|
||||||
|
|
||||||
if ( ep.interface )
|
if ( ep.interface )
|
||||||
val->Assign(cluster_node_type->FieldOffset("interface"),
|
val->Assign(cluster_node_type->FieldOffset("interface"),
|
||||||
new StringVal(*ep.interface));
|
make_intrusive<StringVal>(*ep.interface));
|
||||||
|
|
||||||
if ( manager_name && ep.role != BifEnum::Supervisor::MANAGER )
|
if ( manager_name && ep.role != BifEnum::Supervisor::MANAGER )
|
||||||
val->Assign(cluster_node_type->FieldOffset("manager"),
|
val->Assign(cluster_node_type->FieldOffset("manager"),
|
||||||
new StringVal(*manager_name));
|
make_intrusive<StringVal>(*manager_name));
|
||||||
|
|
||||||
cluster_nodes->Assign(key.get(), val.release());
|
cluster_nodes->Assign(key.get(), std::move(val));
|
||||||
}
|
}
|
||||||
|
|
||||||
cluster_manager_is_logger_id->SetVal({AdoptRef{}, val_mgr->GetBool(! has_logger)});
|
cluster_manager_is_logger_id->SetVal({AdoptRef{}, val_mgr->GetBool(! has_logger)});
|
||||||
|
@ -1329,7 +1329,7 @@ RecordVal* Supervisor::Status(std::string_view node_name)
|
||||||
const auto& node = n.second;
|
const auto& node = n.second;
|
||||||
auto key = make_intrusive<StringVal>(name);
|
auto key = make_intrusive<StringVal>(name);
|
||||||
auto val = node.ToRecord();
|
auto val = node.ToRecord();
|
||||||
node_table_val->Assign(key.get(), val.release());
|
node_table_val->Assign(key.get(), std::move(val));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1343,7 +1343,7 @@ RecordVal* Supervisor::Status(std::string_view node_name)
|
||||||
const auto& node = it->second;
|
const auto& node = it->second;
|
||||||
auto key = make_intrusive<StringVal>(name);
|
auto key = make_intrusive<StringVal>(name);
|
||||||
auto val = node.ToRecord();
|
auto val = node.ToRecord();
|
||||||
node_table_val->Assign(key.get(), val.release());
|
node_table_val->Assign(key.get(), std::move(val));
|
||||||
}
|
}
|
||||||
|
|
||||||
return rval;
|
return rval;
|
||||||
|
|
72
src/zeek.bif
72
src/zeek.bif
|
@ -1051,11 +1051,11 @@ function find_entropy%(data: string%): entropy_test_result
|
||||||
e.Get(&ent, &chisq, &mean, &montepi, &scc);
|
e.Get(&ent, &chisq, &mean, &montepi, &scc);
|
||||||
|
|
||||||
RecordVal* ent_result = new RecordVal(entropy_test_result);
|
RecordVal* ent_result = new RecordVal(entropy_test_result);
|
||||||
ent_result->Assign(0, new Val(ent, TYPE_DOUBLE));
|
ent_result->Assign(0, make_intrusive<Val>(ent, TYPE_DOUBLE));
|
||||||
ent_result->Assign(1, new Val(chisq, TYPE_DOUBLE));
|
ent_result->Assign(1, make_intrusive<Val>(chisq, TYPE_DOUBLE));
|
||||||
ent_result->Assign(2, new Val(mean, TYPE_DOUBLE));
|
ent_result->Assign(2, make_intrusive<Val>(mean, TYPE_DOUBLE));
|
||||||
ent_result->Assign(3, new Val(montepi, TYPE_DOUBLE));
|
ent_result->Assign(3, make_intrusive<Val>(montepi, TYPE_DOUBLE));
|
||||||
ent_result->Assign(4, new Val(scc, TYPE_DOUBLE));
|
ent_result->Assign(4, make_intrusive<Val>(scc, TYPE_DOUBLE));
|
||||||
return ent_result;
|
return ent_result;
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
@ -1102,11 +1102,11 @@ function entropy_test_finish%(handle: opaque of entropy%): entropy_test_result
|
||||||
static_cast<EntropyVal*>(handle)->Get(&ent, &chisq, &mean, &montepi, &scc);
|
static_cast<EntropyVal*>(handle)->Get(&ent, &chisq, &mean, &montepi, &scc);
|
||||||
|
|
||||||
RecordVal* ent_result = new RecordVal(entropy_test_result);
|
RecordVal* ent_result = new RecordVal(entropy_test_result);
|
||||||
ent_result->Assign(0, new Val(ent, TYPE_DOUBLE));
|
ent_result->Assign(0, make_intrusive<Val>(ent, TYPE_DOUBLE));
|
||||||
ent_result->Assign(1, new Val(chisq, TYPE_DOUBLE));
|
ent_result->Assign(1, make_intrusive<Val>(chisq, TYPE_DOUBLE));
|
||||||
ent_result->Assign(2, new Val(mean, TYPE_DOUBLE));
|
ent_result->Assign(2, make_intrusive<Val>(mean, TYPE_DOUBLE));
|
||||||
ent_result->Assign(3, new Val(montepi, TYPE_DOUBLE));
|
ent_result->Assign(3, make_intrusive<Val>(montepi, TYPE_DOUBLE));
|
||||||
ent_result->Assign(4, new Val(scc, TYPE_DOUBLE));
|
ent_result->Assign(4, make_intrusive<Val>(scc, TYPE_DOUBLE));
|
||||||
return ent_result;
|
return ent_result;
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
@ -1833,10 +1833,7 @@ function record_type_to_vector%(rt: string%): string_vec
|
||||||
if ( type )
|
if ( type )
|
||||||
{
|
{
|
||||||
for ( int i = 0; i < type->NumFields(); ++i )
|
for ( int i = 0; i < type->NumFields(); ++i )
|
||||||
{
|
result->Assign(i+1, make_intrusive<StringVal>(type->FieldName(i)));
|
||||||
StringVal* val = new StringVal(type->FieldName(i));
|
|
||||||
result->Assign(i+1, val);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -1865,7 +1862,7 @@ function zeek_args%(%): string_vec
|
||||||
auto rval = make_intrusive<VectorVal>(sv);
|
auto rval = make_intrusive<VectorVal>(sv);
|
||||||
|
|
||||||
for ( auto i = 0; i < bro_argc; ++i )
|
for ( auto i = 0; i < bro_argc; ++i )
|
||||||
rval->Assign(rval->Size(), new StringVal(bro_argv[i]));
|
rval->Assign(rval->Size(), make_intrusive<StringVal>(bro_argv[i]));
|
||||||
|
|
||||||
return rval.release();
|
return rval.release();
|
||||||
%}
|
%}
|
||||||
|
@ -1906,7 +1903,7 @@ function packet_source%(%): PacketSource
|
||||||
if ( ps )
|
if ( ps )
|
||||||
{
|
{
|
||||||
r->Assign(0, val_mgr->GetBool(ps->IsLive()));
|
r->Assign(0, val_mgr->GetBool(ps->IsLive()));
|
||||||
r->Assign(1, new StringVal(ps->Path()));
|
r->Assign(1, make_intrusive<StringVal>(ps->Path()));
|
||||||
r->Assign(2, val_mgr->GetInt(ps->LinkType()));
|
r->Assign(2, val_mgr->GetInt(ps->LinkType()));
|
||||||
r->Assign(3, val_mgr->GetCount(ps->Netmask()));
|
r->Assign(3, val_mgr->GetCount(ps->Netmask()));
|
||||||
}
|
}
|
||||||
|
@ -1956,8 +1953,8 @@ function global_ids%(%): id_table
|
||||||
for ( const auto& global : globals )
|
for ( const auto& global : globals )
|
||||||
{
|
{
|
||||||
ID* id = global.second;
|
ID* id = global.second;
|
||||||
RecordVal* rec = new RecordVal(script_id);
|
auto rec = make_intrusive<RecordVal>(script_id);
|
||||||
rec->Assign(0, new StringVal(type_name(id->Type()->Tag())));
|
rec->Assign(0, make_intrusive<StringVal>(type_name(id->Type()->Tag())));
|
||||||
rec->Assign(1, val_mgr->GetBool(id->IsExport()));
|
rec->Assign(1, val_mgr->GetBool(id->IsExport()));
|
||||||
rec->Assign(2, val_mgr->GetBool(id->IsConst()));
|
rec->Assign(2, val_mgr->GetBool(id->IsConst()));
|
||||||
rec->Assign(3, val_mgr->GetBool(id->IsEnumConst()));
|
rec->Assign(3, val_mgr->GetBool(id->IsEnumConst()));
|
||||||
|
@ -1971,9 +1968,8 @@ function global_ids%(%): id_table
|
||||||
rec->Assign(6, val);
|
rec->Assign(6, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
Val* id_name = new StringVal(id->Name());
|
auto id_name = make_intrusive<StringVal>(id->Name());
|
||||||
ids->Assign(id_name, rec);
|
ids->Assign(id_name.get(), std::move(rec));
|
||||||
Unref(id_name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ids;
|
return ids;
|
||||||
|
@ -2212,7 +2208,7 @@ function routing0_data_to_addrs%(s: string%): addr_vec
|
||||||
while ( len > 0 )
|
while ( len > 0 )
|
||||||
{
|
{
|
||||||
IPAddr a(IPv6, (const uint32_t*) bytes, IPAddr::Network);
|
IPAddr a(IPv6, (const uint32_t*) bytes, IPAddr::Network);
|
||||||
rval->Assign(rval->Size(), new AddrVal(a));
|
rval->Assign(rval->Size(), make_intrusive<AddrVal>(a));
|
||||||
bytes += 16;
|
bytes += 16;
|
||||||
len -= 16;
|
len -= 16;
|
||||||
}
|
}
|
||||||
|
@ -3316,26 +3312,26 @@ function lookup_connection%(cid: conn_id%): connection
|
||||||
RecordVal* c = new RecordVal(connection_type);
|
RecordVal* c = new RecordVal(connection_type);
|
||||||
|
|
||||||
RecordVal* id_val = new RecordVal(conn_id);
|
RecordVal* id_val = new RecordVal(conn_id);
|
||||||
id_val->Assign(0, new AddrVal((unsigned int) 0));
|
id_val->Assign(0, make_intrusive<AddrVal>((unsigned int) 0));
|
||||||
id_val->Assign(1, val_mgr->GetPort(ntohs(0), TRANSPORT_UDP));
|
id_val->Assign(1, val_mgr->GetPort(ntohs(0), TRANSPORT_UDP));
|
||||||
id_val->Assign(2, new AddrVal((unsigned int) 0));
|
id_val->Assign(2, make_intrusive<AddrVal>((unsigned int) 0));
|
||||||
id_val->Assign(3, val_mgr->GetPort(ntohs(0), TRANSPORT_UDP));
|
id_val->Assign(3, val_mgr->GetPort(ntohs(0), TRANSPORT_UDP));
|
||||||
c->Assign(0, id_val);
|
c->Assign(0, id_val);
|
||||||
|
|
||||||
RecordVal* orig_endp = new RecordVal(endpoint);
|
auto orig_endp = make_intrusive<RecordVal>(endpoint);
|
||||||
orig_endp->Assign(0, val_mgr->GetCount(0));
|
orig_endp->Assign(0, val_mgr->GetCount(0));
|
||||||
orig_endp->Assign(1, val_mgr->GetCount(int(0)));
|
orig_endp->Assign(1, val_mgr->GetCount(int(0)));
|
||||||
|
|
||||||
RecordVal* resp_endp = new RecordVal(endpoint);
|
auto resp_endp = make_intrusive<RecordVal>(endpoint);
|
||||||
resp_endp->Assign(0, val_mgr->GetCount(0));
|
resp_endp->Assign(0, val_mgr->GetCount(0));
|
||||||
resp_endp->Assign(1, val_mgr->GetCount(int(0)));
|
resp_endp->Assign(1, val_mgr->GetCount(int(0)));
|
||||||
|
|
||||||
c->Assign(1, orig_endp);
|
c->Assign(1, std::move(orig_endp));
|
||||||
c->Assign(2, resp_endp);
|
c->Assign(2, std::move(resp_endp));
|
||||||
|
|
||||||
c->Assign(3, new Val(network_time, TYPE_TIME));
|
c->Assign(3, make_intrusive<Val>(network_time, TYPE_TIME));
|
||||||
c->Assign(4, new Val(0.0, TYPE_INTERVAL));
|
c->Assign(4, make_intrusive<Val>(0.0, TYPE_INTERVAL));
|
||||||
c->Assign(5, new TableVal(string_set)); // service
|
c->Assign(5, make_intrusive<TableVal>(string_set)); // service
|
||||||
c->Assign(6, val_mgr->GetEmptyString()); // history
|
c->Assign(6, val_mgr->GetEmptyString()); // history
|
||||||
|
|
||||||
return c;
|
return c;
|
||||||
|
@ -3416,7 +3412,7 @@ function get_current_packet%(%) : pcap_packet
|
||||||
pkt->Assign(1, val_mgr->GetCount(uint32_t(p->ts.tv_usec)));
|
pkt->Assign(1, val_mgr->GetCount(uint32_t(p->ts.tv_usec)));
|
||||||
pkt->Assign(2, val_mgr->GetCount(p->cap_len));
|
pkt->Assign(2, val_mgr->GetCount(p->cap_len));
|
||||||
pkt->Assign(3, val_mgr->GetCount(p->len));
|
pkt->Assign(3, val_mgr->GetCount(p->len));
|
||||||
pkt->Assign(4, new StringVal(p->cap_len, (const char*)p->data));
|
pkt->Assign(4, make_intrusive<StringVal>(p->cap_len, (const char*)p->data));
|
||||||
pkt->Assign(5, BifType::Enum::link_encap->GetVal(p->link_type));
|
pkt->Assign(5, BifType::Enum::link_encap->GetVal(p->link_type));
|
||||||
|
|
||||||
return pkt;
|
return pkt;
|
||||||
|
@ -4617,8 +4613,8 @@ function rotate_file%(f: file%): rotate_info
|
||||||
info = new RecordVal(rotate_info);
|
info = new RecordVal(rotate_info);
|
||||||
info->Assign(0, val_mgr->GetEmptyString());
|
info->Assign(0, val_mgr->GetEmptyString());
|
||||||
info->Assign(1, val_mgr->GetEmptyString());
|
info->Assign(1, val_mgr->GetEmptyString());
|
||||||
info->Assign(2, new Val(0.0, TYPE_TIME));
|
info->Assign(2, make_intrusive<Val>(0.0, TYPE_TIME));
|
||||||
info->Assign(3, new Val(0.0, TYPE_TIME));
|
info->Assign(3, make_intrusive<Val>(0.0, TYPE_TIME));
|
||||||
|
|
||||||
return info;
|
return info;
|
||||||
%}
|
%}
|
||||||
|
@ -4658,8 +4654,8 @@ function rotate_file_by_name%(f: string%): rotate_info
|
||||||
// Record indicating error.
|
// Record indicating error.
|
||||||
info->Assign(0, val_mgr->GetEmptyString());
|
info->Assign(0, val_mgr->GetEmptyString());
|
||||||
info->Assign(1, val_mgr->GetEmptyString());
|
info->Assign(1, val_mgr->GetEmptyString());
|
||||||
info->Assign(2, new Val(0.0, TYPE_TIME));
|
info->Assign(2, make_intrusive<Val>(0.0, TYPE_TIME));
|
||||||
info->Assign(3, new Val(0.0, TYPE_TIME));
|
info->Assign(3, make_intrusive<Val>(0.0, TYPE_TIME));
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4667,12 +4663,12 @@ function rotate_file_by_name%(f: string%): rotate_info
|
||||||
|
|
||||||
if ( is_pkt_dumper )
|
if ( is_pkt_dumper )
|
||||||
{
|
{
|
||||||
info->Assign(2, new Val(pkt_dumper->OpenTime(), TYPE_TIME));
|
info->Assign(2, make_intrusive<Val>(pkt_dumper->OpenTime(), TYPE_TIME));
|
||||||
pkt_dumper->Open();
|
pkt_dumper->Open();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( is_addl_pkt_dumper )
|
if ( is_addl_pkt_dumper )
|
||||||
info->Assign(2, new Val(addl_pkt_dumper->OpenTime(), TYPE_TIME));
|
info->Assign(2, make_intrusive<Val>(addl_pkt_dumper->OpenTime(), TYPE_TIME));
|
||||||
|
|
||||||
return info;
|
return info;
|
||||||
%}
|
%}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue