mirror of
https://github.com/zeek/zeek.git
synced 2025-10-09 10:08:20 +00:00
Change Packet::ip_hdr to be a shared_ptr so it can be copied into EncapsulatingConn
This commit is contained in:
parent
d4f57a6100
commit
ed798c6aba
24 changed files with 91 additions and 42 deletions
10
src/Frag.cc
10
src/Frag.cc
|
@ -31,7 +31,7 @@ void FragTimer::Dispatch(double t, bool /* is_expire */)
|
|||
reporter->InternalWarning("fragment timer dispatched w/o reassembler");
|
||||
}
|
||||
|
||||
FragReassembler::FragReassembler(session::Manager* arg_s, const std::unique_ptr<IP_Hdr>& ip,
|
||||
FragReassembler::FragReassembler(session::Manager* arg_s, const std::shared_ptr<IP_Hdr>& ip,
|
||||
const u_char* pkt, const FragReassemblerKey& k, double t)
|
||||
: Reassembler(0, REASSEM_FRAG)
|
||||
{
|
||||
|
@ -74,7 +74,7 @@ FragReassembler::~FragReassembler()
|
|||
delete[] proto_hdr;
|
||||
}
|
||||
|
||||
void FragReassembler::AddFragment(double t, const std::unique_ptr<IP_Hdr>& ip, const u_char* pkt)
|
||||
void FragReassembler::AddFragment(double t, const std::shared_ptr<IP_Hdr>& ip, const u_char* pkt)
|
||||
{
|
||||
const struct ip* ip4 = ip->IP4_Hdr();
|
||||
|
||||
|
@ -294,7 +294,7 @@ void FragReassembler::BlockInserted(DataBlockMap::const_iterator /* it */)
|
|||
{
|
||||
struct ip* reassem4 = (struct ip*)pkt_start;
|
||||
reassem4->ip_len = htons(frag_size + proto_hdr_len);
|
||||
reassembled_pkt = std::make_unique<IP_Hdr>(reassem4, true, true);
|
||||
reassembled_pkt = std::make_shared<IP_Hdr>(reassem4, true, true);
|
||||
DeleteTimer();
|
||||
}
|
||||
|
||||
|
@ -303,7 +303,7 @@ void FragReassembler::BlockInserted(DataBlockMap::const_iterator /* it */)
|
|||
struct ip6_hdr* reassem6 = (struct ip6_hdr*)pkt_start;
|
||||
reassem6->ip6_plen = htons(frag_size + proto_hdr_len - 40);
|
||||
const IPv6_Hdr_Chain* chain = new IPv6_Hdr_Chain(reassem6, next_proto, n);
|
||||
reassembled_pkt = std::make_unique<IP_Hdr>(reassem6, true, n, chain, true);
|
||||
reassembled_pkt = std::make_shared<IP_Hdr>(reassem6, true, n, chain, true);
|
||||
DeleteTimer();
|
||||
}
|
||||
|
||||
|
@ -338,7 +338,7 @@ FragmentManager::~FragmentManager()
|
|||
Clear();
|
||||
}
|
||||
|
||||
FragReassembler* FragmentManager::NextFragment(double t, const std::unique_ptr<IP_Hdr>& ip,
|
||||
FragReassembler* FragmentManager::NextFragment(double t, const std::shared_ptr<IP_Hdr>& ip,
|
||||
const u_char* pkt)
|
||||
{
|
||||
uint32_t frag_id = ip->ID();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue