#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>
#include <msp/gl/color.h>
#include <msp/gl/font.h>
#include <msp/time/timestamp.h>
+#include "address.h"
class History;
class Host;
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;
~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();
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);