From 6b85cfef15902cac483e922c0bcf1f055ba7ed4e Mon Sep 17 00:00:00 2001 From: Vadim Kochan Date: Mon, 27 Apr 2015 21:36:08 +0300 Subject: [PATCH] netsniff-ng: Show packet number Show the packet number as part of the dissector output. Example: > wlp3s0 107 1430159373s.693002029ns (#5) [ Eth MAC (6c:88:14:ac:51:e4 => 10:fe:ed:90:22:12), Proto (0x0800, IPv4) ] Signed-off-by: Vadim Kochan Signed-off-by: Tobias Klauser --- dissector.h | 18 +++++++++++------- netsniff-ng.c | 13 ++++++++----- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/dissector.h b/dissector.h index d7492057..04b2e92d 100644 --- a/dissector.h +++ b/dissector.h @@ -51,7 +51,7 @@ static inline const char *__show_ts_source(uint32_t status) static inline void __show_frame_hdr(uint8_t *packet, size_t len, int linktype, struct sockaddr_ll *s_ll, void *raw_hdr, - int mode, bool v3) + int mode, bool v3, unsigned long count) { char tmp[IFNAMSIZ]; union tpacket_uhdr hdr; @@ -76,27 +76,31 @@ static inline void __show_frame_hdr(uint8_t *packet, size_t len, int linktype, hdr.raw = raw_hdr; switch (mode) { case PRINT_LESS: - tprintf("%s %s %u", + tprintf("%s %s %u (#%lu) ", packet_types[pkttype] ? : "?", if_indextoname(s_ll->sll_ifindex, tmp) ? : "?", - tpacket_uhdr(hdr, tp_len, v3)); + tpacket_uhdr(hdr, tp_len, v3), + count); break; default: - tprintf("%s %s %u %us.%uns %s\n", + tprintf("%s %s %u %us.%uns %s (#%lu)\n", packet_types[pkttype] ? : "?", if_indextoname(s_ll->sll_ifindex, tmp) ? : "?", tpacket_uhdr(hdr, tp_len, v3), tpacket_uhdr(hdr, tp_sec, v3), tpacket_uhdr(hdr, tp_nsec, v3), - v3 ? "" : __show_ts_source(hdr.h2->tp_status)); + v3 ? "" : __show_ts_source(hdr.h2->tp_status), + count); break; } } static inline void show_frame_hdr(uint8_t *packet, size_t len, int linktype, - struct frame_map *hdr, int mode) + struct frame_map *hdr, int mode, + unsigned long count) { - __show_frame_hdr(packet, len, linktype, &hdr->s_ll, &hdr->tp_h, mode, false); + __show_frame_hdr(packet, len, linktype, &hdr->s_ll, &hdr->tp_h, mode, + false, count); } extern void dissector_init_all(int fnttype); diff --git a/netsniff-ng.c b/netsniff-ng.c index 6cd0cf41..9655c597 100644 --- a/netsniff-ng.c +++ b/netsniff-ng.c @@ -311,7 +311,8 @@ static void pcap_to_xmit(struct ctx *ctx) ctx->tx_packets++; show_frame_hdr(out, hdr->tp_h.tp_snaplen, - ctx->link_type, hdr, ctx->print_mode); + ctx->link_type, hdr, ctx->print_mode, + ctx->tx_packets); dissector_entry_point(out, hdr->tp_h.tp_snaplen, ctx->link_type, ctx->print_mode, @@ -461,7 +462,8 @@ static void receive_to_xmit(struct ctx *ctx) } show_frame_hdr(in, hdr_in->tp_h.tp_snaplen, - ctx->link_type, hdr_in, ctx->print_mode); + ctx->link_type, hdr_in, ctx->print_mode, + frame_count); dissector_entry_point(in, hdr_in->tp_h.tp_snaplen, ctx->link_type, ctx->print_mode, @@ -645,7 +647,7 @@ static void read_pcap(struct ctx *ctx) ctx->tx_packets++; show_frame_hdr(out, fm.tp_h.tp_snaplen, ctx->link_type, &fm, - ctx->print_mode); + ctx->print_mode, ctx->tx_packets); dissector_entry_point(out, fm.tp_h.tp_snaplen, ctx->link_type, ctx->print_mode, @@ -913,7 +915,7 @@ static void walk_t3_block(struct block_desc *pbd, struct ctx *ctx, } __show_frame_hdr(packet, hdr->tp_snaplen, ctx->link_type, sll, - hdr, ctx->print_mode, true); + hdr, ctx->print_mode, true, *frame_count); dissector_entry_point(packet, hdr->tp_snaplen, ctx->link_type, ctx->print_mode, sll->sll_protocol); @@ -1047,7 +1049,8 @@ static void recv_only_or_dump(struct ctx *ctx) } show_frame_hdr(packet, hdr->tp_h.tp_snaplen, - ctx->link_type, hdr, ctx->print_mode); + ctx->link_type, hdr, ctx->print_mode, + frame_count); dissector_entry_point(packet, hdr->tp_h.tp_snaplen, ctx->link_type, ctx->print_mode, -- 2.11.4.GIT