]> git.tdb.fi Git - netvis.git/blobdiff - source/netvis.h
Handle ICMP packets
[netvis.git] / source / netvis.h
index 68eed052f3649255d4d9ee74655e624a89327968..1c8c2874f29d3236f85d073c74f8934e94d7e86b 100644 (file)
@@ -12,7 +12,10 @@ Distributed unter the GPL
 #include <map>
 #include <pcap.h>
 #include <netinet/ether.h>
+#include <netinet/icmp6.h>
 #include <netinet/ip.h>
+#include <netinet/ip_icmp.h>
+#include <netinet/ip6.h>
 #include <netinet/tcp.h>
 #include <netinet/udp.h>
 #include <msp/core/application.h>
@@ -23,6 +26,7 @@ Distributed unter the GPL
 #include <msp/gl/color.h>
 #include <msp/gl/font.h>
 #include <msp/time/timestamp.h>
+#include "address.h"
 
 class History;
 class Host;
@@ -48,16 +52,15 @@ private:
        std::string iface;
        pcap_t *pcap;
        Resolver *resolver;
-       unsigned localnet;
-       unsigned localnet_mask;
+       std::list<Address> localnets;
 
        Msp::Graphics::SimpleGLWindow *wnd;
        Msp::GL::Font *font;
 
        unsigned max_hosts;
        unsigned max_visible_hosts;
-       std::map<unsigned, Host *> hosts;
-       std::map<unsigned, Host *> disabled_hosts;
+       std::map<Address, Host *> hosts;
+       std::map<Address, Host *> disabled_hosts;
        std::list<Packet *> packets;
        std::map<unsigned, Port *> ports;
        History *history;
@@ -72,12 +75,12 @@ public:
        ~NetVis();
 
        const Msp::GL::Font &get_font() const { return *font; }
-       const std::map<unsigned, Host *> &get_hosts() const { return hosts; }
+       const std::map<Address, Host *> &get_hosts() const { return hosts; }
        const std::map<unsigned, Port *> &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;
        Port &get_port(unsigned);
        void create_history_texture();
@@ -85,8 +88,11 @@ private:
        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_icmp(CaptureContext &, const icmphdr *, unsigned);
+       void handle_icmp6(CaptureContext &, const icmp6_hdr *, unsigned);
        void handle_packet(CaptureContext &);
 
        void sighandler(int);