mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
Move IP and IP tunnel code from Sessions into packet analyzers
This commit is contained in:
parent
69da2d7b1d
commit
1cf251d1ca
53 changed files with 1226 additions and 907 deletions
38
src/Frag.h
38
src/Frag.h
|
@ -32,7 +32,7 @@ public:
|
|||
void DeleteTimer();
|
||||
void ClearTimer() { expire_timer = nullptr; }
|
||||
|
||||
const IP_Hdr* ReassembledPkt() { return reassembled_pkt; }
|
||||
IP_Hdr* ReassembledPkt() { return reassembled_pkt; }
|
||||
const FragReassemblerKey& Key() const { return key; }
|
||||
|
||||
protected:
|
||||
|
@ -67,4 +67,40 @@ protected:
|
|||
FragReassembler* f;
|
||||
};
|
||||
|
||||
class FragmentManager {
|
||||
public:
|
||||
|
||||
FragmentManager() = default;
|
||||
~FragmentManager();
|
||||
|
||||
FragReassembler* NextFragment(double t, const IP_Hdr* ip, const u_char* pkt);
|
||||
void Clear();
|
||||
void Remove(detail::FragReassembler* f);
|
||||
|
||||
size_t Size() const { return fragments.size(); }
|
||||
size_t MaxFragments() const { return max_fragments; }
|
||||
uint32_t MemoryAllocation() const;
|
||||
|
||||
private:
|
||||
|
||||
using FragmentMap = std::map<detail::FragReassemblerKey, detail::FragReassembler*>;
|
||||
FragmentMap fragments;
|
||||
size_t max_fragments = 0;
|
||||
};
|
||||
|
||||
extern FragmentManager* fragment_mgr;
|
||||
|
||||
class FragReassemblerTracker {
|
||||
public:
|
||||
FragReassemblerTracker(FragReassembler* f)
|
||||
: frag_reassembler(f)
|
||||
{ }
|
||||
|
||||
~FragReassemblerTracker()
|
||||
{ fragment_mgr->Remove(frag_reassembler); }
|
||||
|
||||
private:
|
||||
FragReassembler* frag_reassembler;
|
||||
};
|
||||
|
||||
} // namespace zeek::detail
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue