mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
Reformat Zeek in Spicy style
This largely copies over Spicy's `.clang-format` configuration file. The one place where we deviate is header include order since Zeek depends on headers being included in a certain order.
This commit is contained in:
parent
7b8e7ed72c
commit
f5a76c1aed
786 changed files with 131714 additions and 153609 deletions
113
src/Frag.h
113
src/Frag.h
|
@ -10,102 +10,95 @@
|
|||
#include "zeek/Timer.h"
|
||||
#include "zeek/util.h" // for zeek_uint_t
|
||||
|
||||
namespace zeek
|
||||
{
|
||||
namespace zeek {
|
||||
|
||||
class IP_Hdr;
|
||||
|
||||
namespace session
|
||||
{
|
||||
namespace session {
|
||||
class Manager;
|
||||
}
|
||||
}
|
||||
|
||||
namespace detail
|
||||
{
|
||||
namespace detail {
|
||||
|
||||
class FragReassembler;
|
||||
class FragTimer;
|
||||
|
||||
using FragReassemblerKey = std::tuple<IPAddr, IPAddr, zeek_uint_t>;
|
||||
|
||||
class FragReassembler : public Reassembler
|
||||
{
|
||||
class FragReassembler : public Reassembler {
|
||||
public:
|
||||
FragReassembler(session::Manager* s, const std::shared_ptr<IP_Hdr>& ip, const u_char* pkt,
|
||||
const FragReassemblerKey& k, double t);
|
||||
~FragReassembler() override;
|
||||
FragReassembler(session::Manager* s, const std::shared_ptr<IP_Hdr>& ip, const u_char* pkt,
|
||||
const FragReassemblerKey& k, double t);
|
||||
~FragReassembler() override;
|
||||
|
||||
void AddFragment(double t, const std::shared_ptr<IP_Hdr>& ip, const u_char* pkt);
|
||||
void AddFragment(double t, const std::shared_ptr<IP_Hdr>& ip, const u_char* pkt);
|
||||
|
||||
void Expire(double t);
|
||||
void DeleteTimer();
|
||||
void ClearTimer() { expire_timer = nullptr; }
|
||||
void Expire(double t);
|
||||
void DeleteTimer();
|
||||
void ClearTimer() { expire_timer = nullptr; }
|
||||
|
||||
std::shared_ptr<IP_Hdr> ReassembledPkt() { return std::move(reassembled_pkt); }
|
||||
const FragReassemblerKey& Key() const { return key; }
|
||||
std::shared_ptr<IP_Hdr> ReassembledPkt() { return std::move(reassembled_pkt); }
|
||||
const FragReassemblerKey& Key() const { return key; }
|
||||
|
||||
protected:
|
||||
void BlockInserted(DataBlockMap::const_iterator it) override;
|
||||
void Overlap(const u_char* b1, const u_char* b2, uint64_t n) override;
|
||||
void Weird(const char* name) const;
|
||||
void BlockInserted(DataBlockMap::const_iterator it) override;
|
||||
void Overlap(const u_char* b1, const u_char* b2, uint64_t n) override;
|
||||
void Weird(const char* name) const;
|
||||
|
||||
u_char* proto_hdr;
|
||||
std::shared_ptr<IP_Hdr> reassembled_pkt;
|
||||
session::Manager* s;
|
||||
uint64_t frag_size; // size of fully reassembled fragment
|
||||
FragReassemblerKey key;
|
||||
uint16_t next_proto; // first IPv6 fragment header's next proto field
|
||||
uint16_t proto_hdr_len;
|
||||
u_char* proto_hdr;
|
||||
std::shared_ptr<IP_Hdr> reassembled_pkt;
|
||||
session::Manager* s;
|
||||
uint64_t frag_size; // size of fully reassembled fragment
|
||||
FragReassemblerKey key;
|
||||
uint16_t next_proto; // first IPv6 fragment header's next proto field
|
||||
uint16_t proto_hdr_len;
|
||||
|
||||
FragTimer* expire_timer;
|
||||
};
|
||||
FragTimer* expire_timer;
|
||||
};
|
||||
|
||||
class FragTimer final : public Timer
|
||||
{
|
||||
class FragTimer final : public Timer {
|
||||
public:
|
||||
FragTimer(FragReassembler* arg_f, double arg_t) : Timer(arg_t, TIMER_FRAG) { f = arg_f; }
|
||||
~FragTimer() override;
|
||||
FragTimer(FragReassembler* arg_f, double arg_t) : Timer(arg_t, TIMER_FRAG) { f = arg_f; }
|
||||
~FragTimer() override;
|
||||
|
||||
void Dispatch(double t, bool is_expire) override;
|
||||
void Dispatch(double t, bool is_expire) override;
|
||||
|
||||
// Break the association between this timer and its creator.
|
||||
void ClearReassembler() { f = nullptr; }
|
||||
// Break the association between this timer and its creator.
|
||||
void ClearReassembler() { f = nullptr; }
|
||||
|
||||
protected:
|
||||
FragReassembler* f;
|
||||
};
|
||||
FragReassembler* f;
|
||||
};
|
||||
|
||||
class FragmentManager
|
||||
{
|
||||
class FragmentManager {
|
||||
public:
|
||||
FragmentManager() = default;
|
||||
~FragmentManager();
|
||||
FragmentManager() = default;
|
||||
~FragmentManager();
|
||||
|
||||
FragReassembler* NextFragment(double t, const std::shared_ptr<IP_Hdr>& ip, const u_char* pkt);
|
||||
void Clear();
|
||||
void Remove(detail::FragReassembler* f);
|
||||
FragReassembler* NextFragment(double t, const std::shared_ptr<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; }
|
||||
size_t Size() const { return fragments.size(); }
|
||||
size_t MaxFragments() const { return max_fragments; }
|
||||
|
||||
private:
|
||||
using FragmentMap = std::map<detail::FragReassemblerKey, detail::FragReassembler*>;
|
||||
FragmentMap fragments;
|
||||
size_t max_fragments = 0;
|
||||
};
|
||||
using FragmentMap = std::map<detail::FragReassemblerKey, detail::FragReassembler*>;
|
||||
FragmentMap fragments;
|
||||
size_t max_fragments = 0;
|
||||
};
|
||||
|
||||
extern FragmentManager* fragment_mgr;
|
||||
|
||||
class FragReassemblerTracker
|
||||
{
|
||||
class FragReassemblerTracker {
|
||||
public:
|
||||
FragReassemblerTracker(FragReassembler* f) : frag_reassembler(f) { }
|
||||
FragReassemblerTracker(FragReassembler* f) : frag_reassembler(f) {}
|
||||
|
||||
~FragReassemblerTracker() { fragment_mgr->Remove(frag_reassembler); }
|
||||
~FragReassemblerTracker() { fragment_mgr->Remove(frag_reassembler); }
|
||||
|
||||
private:
|
||||
FragReassembler* frag_reassembler;
|
||||
};
|
||||
FragReassembler* frag_reassembler;
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
} // namespace zeek
|
||||
} // namespace detail
|
||||
} // namespace zeek
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue