summaryrefslogtreecommitdiff
path: root/dissector.h
diff options
context:
space:
mode:
Diffstat (limited to 'dissector.h')
-rw-r--r--dissector.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/dissector.h b/dissector.h
new file mode 100644
index 0000000..fc2cd5a
--- /dev/null
+++ b/dissector.h
@@ -0,0 +1,64 @@
+/*
+ * netsniff-ng - the packet sniffing beast
+ * Copyright 2009 - 2013 Daniel Borkmann.
+ * Subject to the GPL, version 2.
+ */
+
+#ifndef DISSECTOR_H
+#define DISSECTOR_H
+
+#include <stdlib.h>
+#include <stdint.h>
+
+#include "ring.h"
+#include "tprintf.h"
+#include "pcap_io.h"
+
+#define PRINT_NORM 0
+#define PRINT_LESS 1
+#define PRINT_HEX 2
+#define PRINT_ASCII 3
+#define PRINT_HEX_ASCII 4
+#define PRINT_NONE 5
+
+static const char * const packet_types[256]={
+ "<", /* Incoming */
+ "B", /* Broadcast */
+ "M", /* Multicast */
+ "P", /* Promisc */
+ ">", /* Outgoing */
+ "?", /* Unknown */
+};
+
+extern char *if_indextoname(unsigned ifindex, char *ifname);
+
+static inline void show_frame_hdr(struct frame_map *hdr, int mode)
+{
+ char tmp[IFNAMSIZ];
+
+ if (mode == PRINT_NONE)
+ return;
+
+ switch (mode) {
+ case PRINT_LESS:
+ tprintf("%s %s %u",
+ packet_types[hdr->s_ll.sll_pkttype] ? : "?",
+ if_indextoname(hdr->s_ll.sll_ifindex, tmp) ? : "?",
+ hdr->tp_h.tp_len);
+ break;
+ default:
+ tprintf("%s %s %u %us.%uns\n",
+ packet_types[hdr->s_ll.sll_pkttype] ? : "?",
+ if_indextoname(hdr->s_ll.sll_ifindex, tmp) ? : "?",
+ hdr->tp_h.tp_len, hdr->tp_h.tp_sec,
+ hdr->tp_h.tp_nsec);
+ break;
+ }
+}
+
+extern void dissector_init_all(int fnttype);
+extern void dissector_entry_point(uint8_t *packet, size_t len, int linktype, int mode);
+extern void dissector_cleanup_all(void);
+extern int dissector_set_print_type(void *ptr, int type);
+
+#endif /* DISSECTOR_H */