#include <list>
#include <map>
#include <pcap.h>
+#include <netinet/ether.h>
+#include <netinet/ip.h>
+#include <netinet/tcp.h>
+#include <netinet/udp.h>
#include <msp/core/application.h>
#include <msp/debug/profiler.h>
#include <msp/graphics/display.h>
class NetVis: public Msp::RegisteredApplication<NetVis>
{
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;
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_tcp(CaptureContext &, const tcphdr *, unsigned);
+ void handle_udp(CaptureContext &, const udphdr *, unsigned);
+ void handle_packet(CaptureContext &);
void sighandler(int);
};