X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fnetvis.h;h=cd451339880c4fc5d40ceaf0666df937f34461f2;hb=e4b57e21ec2bc7f99c182eea23ecec297e111799;hp=eb8c0a8e9d66fab276be8e6cd93687302a11db78;hpb=d44d45bee2c3b6b5a8822ecdc23528dcf039ee2a;p=netvis.git diff --git a/source/netvis.h b/source/netvis.h index eb8c0a8..cd45133 100644 --- a/source/netvis.h +++ b/source/netvis.h @@ -11,38 +11,57 @@ Distributed unter the GPL #include #include #include +#include +#include +#include +#include +#include #include #include -#include -#include -#include +#include +#include +#include #include #include #include +#include "address.h" +class History; class Host; class Packet; class Port; class Resolver; -class NetVis: public Msp::Application +class NetVis: public Msp::RegisteredApplication { private: + struct CaptureContext + { + const pcap_pkthdr *cap_hdr; + Host *src_host; + Port *src_port; + Host *dst_host; + Port *dst_port; + unsigned size; + + CaptureContext(); + }; + std::string iface; pcap_t *pcap; Resolver *resolver; - unsigned localnet; - unsigned localnet_mask; + std::list
localnets; Msp::Graphics::SimpleGLWindow *wnd; Msp::GL::Font *font; unsigned max_hosts; unsigned max_visible_hosts; - std::map hosts; - std::map disabled_hosts; + std::map hosts; + std::map disabled_hosts; std::list packets; std::map ports; + History *history; Msp::Time::TimeStamp tick_t; Msp::Time::TimeStamp fps_t; @@ -54,20 +73,25 @@ public: ~NetVis(); const Msp::GL::Font &get_font() const { return *font; } - const std::map &get_hosts() const { return hosts; } + const std::map &get_hosts() const { return hosts; } const std::map &get_ports() const { return ports; } private: virtual void tick(); void render(); - Host &get_host(unsigned); + Host &get_host(const Address &); Msp::GL::Color generate_color(bool) const; - const Port &get_port(unsigned); + Port &get_port(unsigned); + void create_history_texture(); static void capture_handler(unsigned char *, const pcap_pkthdr *, const unsigned char *); + void handle_ethernet(CaptureContext &, const ethhdr *, unsigned); + void handle_ipv4(CaptureContext &, const iphdr *, unsigned); + void handle_ipv6(CaptureContext &, const ip6_hdr *, unsigned); + void handle_tcp(CaptureContext &, const tcphdr *, unsigned); + void handle_udp(CaptureContext &, const udphdr *, unsigned); + void handle_packet(CaptureContext &); void sighandler(int); - - static Application::RegApp reg; }; #endif