From eaa0a2777dc29e5f701efbc037b303b52f3e08be Mon Sep 17 00:00:00 2001 From: Daniel Borkmann Date: Wed, 3 Jul 2013 17:41:04 +0200 Subject: pcap: invoke dev->type to pcap linktype mapper Invoke dev->type to pcap linktype mapper in order to write a correct pcap file header for various link types. Also fix two bugs in pcap file header parsing and print a warning with the magic link number in case of an unknown link type. Signed-off-by: Daniel Borkmann --- netsniff-ng.c | 3 ++- pcap_io.h | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/netsniff-ng.c b/netsniff-ng.c index 19d4db3..960ceaa 100644 --- a/netsniff-ng.c +++ b/netsniff-ng.c @@ -1102,7 +1102,6 @@ int main(int argc, char **argv) bool prio_high = false, setsockmem = true; void (*main_loop)(struct ctx *ctx) = NULL; struct ctx ctx = { - .link_type = LINKTYPE_EN10MB, .print_mode = PRINT_NORM, .cpu = -1, .packet_type = -1, @@ -1364,6 +1363,8 @@ int main(int argc, char **argv) if (ctx.device_in && (device_mtu(ctx.device_in) || !strncmp("any", ctx.device_in, strlen(ctx.device_in)))) { + if (!ctx.rfraw) + ctx.link_type = pcap_devtype_to_linktype(ctx.device_in); if (!ctx.device_out) { ctx.dump = 0; main_loop = recv_only_or_dump; diff --git a/pcap_io.h b/pcap_io.h index b61e042..310ac6c 100644 --- a/pcap_io.h +++ b/pcap_io.h @@ -663,17 +663,17 @@ static inline void pcap_validate_header(const struct pcap_filehdr *hdr) pcap_check_magic(hdr->magic); if (hdr->linktype < LINKTYPE_MAX) { - if (!pcap_supported_linktypes[hdr->linktype]) + if (pcap_supported_linktypes[hdr->linktype]) good = true; } if (linktype_swab < LINKTYPE_MAX) { - if (!pcap_supported_linktypes[linktype_swab]) + if (pcap_supported_linktypes[linktype_swab]) good = true; } if (!good) - panic("This file has an unsupported pcap header!\n"); + panic("This file has an unsupported pcap link type (%d)!\n", hdr->linktype); if (unlikely(hdr->version_major != PCAP_VERSION_MAJOR) && ___constant_swab16(hdr->version_major) != PCAP_VERSION_MAJOR) panic("This file has not a valid pcap header\n"); -- cgit v1.2.3-54-g00ecf