Move IP and IP tunnel code from Sessions into packet analyzers

This commit is contained in:
Tim Wojtulewicz 2020-09-23 16:17:06 -07:00
parent 69da2d7b1d
commit 1cf251d1ca
53 changed files with 1226 additions and 907 deletions

View file

@ -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