Deprecate TunnelEncapsulation BuildRecordVal/BuildVectorVal methods

Replaced with ToVal methods that return IntrusivePtr
This commit is contained in:
Jon Siwek 2020-05-05 10:32:25 -07:00
parent 61649d5da7
commit 2cfbbd8cdb
3 changed files with 19 additions and 12 deletions

View file

@ -146,7 +146,7 @@ void Connection::CheckEncapsulation(const EncapsulationStack* arg_encap)
{ {
if ( tunnel_changed ) if ( tunnel_changed )
EnqueueEvent(tunnel_changed, nullptr, ConnVal(), EnqueueEvent(tunnel_changed, nullptr, ConnVal(),
IntrusivePtr{AdoptRef{}, arg_encap->GetVectorVal()}); arg_encap->ToVal());
delete encapsulation; delete encapsulation;
encapsulation = new EncapsulationStack(*arg_encap); encapsulation = new EncapsulationStack(*arg_encap);
@ -158,8 +158,7 @@ void Connection::CheckEncapsulation(const EncapsulationStack* arg_encap)
if ( tunnel_changed ) if ( tunnel_changed )
{ {
EncapsulationStack empty; EncapsulationStack empty;
EnqueueEvent(tunnel_changed, nullptr, ConnVal(), EnqueueEvent(tunnel_changed, nullptr, ConnVal(), empty.ToVal());
IntrusivePtr{AdoptRef{}, empty.GetVectorVal()});
} }
delete encapsulation; delete encapsulation;
@ -169,8 +168,7 @@ void Connection::CheckEncapsulation(const EncapsulationStack* arg_encap)
else if ( arg_encap ) else if ( arg_encap )
{ {
if ( tunnel_changed ) if ( tunnel_changed )
EnqueueEvent(tunnel_changed, nullptr, ConnVal(), EnqueueEvent(tunnel_changed, nullptr, ConnVal(), arg_encap->ToVal());
IntrusivePtr{AdoptRef{}, arg_encap->GetVectorVal()});
encapsulation = new EncapsulationStack(*arg_encap); encapsulation = new EncapsulationStack(*arg_encap);
} }
@ -390,7 +388,7 @@ const IntrusivePtr<RecordVal>& Connection::ConnVal()
conn_val->Assign(7, make_intrusive<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->ToVal());
if ( vlan != 0 ) if ( vlan != 0 )
conn_val->Assign(9, val_mgr->Int(vlan)); conn_val->Assign(9, val_mgr->Int(vlan));

View file

@ -16,9 +16,9 @@ EncapsulatingConn::EncapsulatingConn(Connection* c, BifEnum::Tunnel::Type t)
} }
} }
RecordVal* EncapsulatingConn::GetRecordVal() const IntrusivePtr<RecordVal> EncapsulatingConn::ToVal() const
{ {
RecordVal *rv = new RecordVal(BifType::Record::Tunnel::EncapsulatingConn); auto rv = make_intrusive<RecordVal>(BifType::Record::Tunnel::EncapsulatingConn);
auto id_val = make_intrusive<RecordVal>(conn_id); auto id_val = make_intrusive<RecordVal>(conn_id);
id_val->Assign(0, make_intrusive<AddrVal>(src_addr)); id_val->Assign(0, make_intrusive<AddrVal>(src_addr));

View file

@ -3,6 +3,7 @@
#pragma once #pragma once
#include "zeek-config.h" #include "zeek-config.h"
#include "IntrusivePtr.h"
#include "NetVar.h" #include "NetVar.h"
#include "IPAddr.h" #include "IPAddr.h"
#include "Var.h" // for internal_type() #include "Var.h" // for internal_type()
@ -79,7 +80,11 @@ public:
/** /**
* Returns record value of type "EncapsulatingConn" representing the tunnel. * Returns record value of type "EncapsulatingConn" representing the tunnel.
*/ */
RecordVal* GetRecordVal() const; IntrusivePtr<RecordVal> ToVal() const;
[[deprecated("Remove in v4.1. Use ToVal() instead.")]]
RecordVal* GetRecordVal() const
{ return ToVal().release(); }
friend bool operator==(const EncapsulatingConn& ec1, friend bool operator==(const EncapsulatingConn& ec1,
const EncapsulatingConn& ec2) const EncapsulatingConn& ec2)
@ -190,20 +195,24 @@ public:
* Get the value of type "EncapsulatingConnVector" represented by the * Get the value of type "EncapsulatingConnVector" represented by the
* entire encapsulation chain. * entire encapsulation chain.
*/ */
VectorVal* GetVectorVal() const IntrusivePtr<VectorVal> ToVal() const
{ {
VectorVal* vv = new VectorVal( auto vv = make_intrusive<VectorVal>(
internal_type("EncapsulatingConnVector")->AsVectorType()); internal_type("EncapsulatingConnVector")->AsVectorType());
if ( conns ) if ( conns )
{ {
for ( size_t i = 0; i < conns->size(); ++i ) for ( size_t i = 0; i < conns->size(); ++i )
vv->Assign(i, (*conns)[i].GetRecordVal()); vv->Assign(i, (*conns)[i].ToVal());
} }
return vv; return vv;
} }
[[deprecated("Remove in v4.1. Use ToVal() instead.")]]
VectorVal* GetVectorVal() const
{ return ToVal().release(); }
friend bool operator==(const EncapsulationStack& e1, friend bool operator==(const EncapsulationStack& e1,
const EncapsulationStack& e2); const EncapsulationStack& e2);