Update CREDITS to give Jon Smirl credit for some of the USB fixes.
Rename DLT_USB_LINUX_MMAP to DLT_USB_LINUX_MMAPPED, and declare a
structure for the header of packets in DLT_USB_LINUX_MMAPPED captures.
-@(#) $Header: /tcpdump/master/libpcap/CHANGES,v 1.67.2.8 2008-12-15 00:28:29 guy Exp $ (LBL)
+@(#) $Header: /tcpdump/master/libpcap/CHANGES,v 1.67.2.9 2008-12-23 20:14:12 guy Exp $ (LBL)
Install headers unconditionally, and include vlan.h/bluetooth.h if enabled
Autoconf fixes+cleanup
Support enabling/disabling bluetooth (--{en,dis}able-bluetooth)
attempt to open it in Monitor mode
Add support for snapshot length for USB Memory-Mapped Interface
Fix configure and build on recent Linux kernels
+ Fixes for Linux USB capture
DLT: Add DLT_LINUX_EVDEV
DLT: Add DLT_GSMTAP_UM
DLT: Add DLT_GSMTAP_ABIS
Joerg Mayer <jmayer at loplof dot de>
John Bankier <jbankier at rainfinity dot com>
Jon Lindgren <jonl at yubyub dot net>
+ Jon Smirl <jonsmirl at gmail dot com>
Juergen Schoenwaelder <schoenw at ibr dot cs dot tu-bs dot de>
Jung-uk Kim <jkim at FreeBSD dot org>
Kazushi Sugyo <sugyo at pb dot jp dot nec dot com>
*/
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/libpcap/gencode.c,v 1.290.2.18 2008-12-23 18:04:28 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/libpcap/gencode.c,v 1.290.2.19 2008-12-23 20:14:12 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
off_nl_nosnap = -1;
return;
- case DLT_USB_LINUX_MMAP:
+ case DLT_USB_LINUX_MMAPPED:
/*
* Currently, only raw "link[N:M]" filtering is supported.
*/
case DLT_USB:
case DLT_USB_LINUX:
- case DLT_USB_LINUX_MMAP:
+ case DLT_USB_LINUX_MMAPPED:
bpf_error("USB link-layer type filtering not implemented");
case DLT_BLUETOOTH_HCI_H4:
*/
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/libpcap/pcap-usb-linux.c,v 1.16.2.13 2008-12-23 19:05:48 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/libpcap/pcap-usb-linux.c,v 1.16.2.14 2008-12-23 20:14:13 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
/* binary api is available, try to use fast mmap access */
if (usb_mmap(handle)) {
- handle->linktype = DLT_USB_LINUX_MMAP;
+ handle->linktype = DLT_USB_LINUX_MMAPPED;
handle->stats_op = usb_stats_linux_bin;
handle->read_op = usb_read_linux_mmap;
handle->cleanup_op = usb_cleanup_linux_mmap;
clen = hdr->data_len;
/* get packet info from header*/
- pkth.caplen = clen + MMAPPED_USB_HEADER_SIZE;
- pkth.len = hdr->data_len + MMAPPED_USB_HEADER_SIZE;
+ pkth.caplen = clen + sizeof(pcap_usb_header_mmapped);
+ pkth.len = hdr->data_len + sizeof(pcap_usb_header_mmapped);
pkth.ts.tv_sec = hdr->ts_sec;
pkth.ts.tv_usec = hdr->ts_usec;
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/libpcap/pcap.c,v 1.112.2.15 2008-12-23 18:04:29 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/libpcap/pcap.c,v 1.112.2.16 2008-12-23 20:14:13 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
DLT_CHOICE(DLT_AX25_KISS, "AX.25 with KISS header"),
DLT_CHOICE(DLT_IEEE802_15_4_NONASK_PHY, "IEEE 802.15.4 with non-ASK PHY data"),
DLT_CHOICE(DLT_MPLS, "MPLS with label as link-layer header"),
- DLT_CHOICE(DLT_USB_LINUX_MMAP, "USB with padded Linux header"),
+ DLT_CHOICE(DLT_USB_LINUX_MMAPPED, "USB with padded Linux header"),
DLT_CHOICE_SENTINEL
};
*
* @(#)bpf.h 7.1 (Berkeley) 5/7/91
*
- * @(#) $Header: /tcpdump/master/libpcap/pcap/bpf.h,v 1.19.2.12 2008-12-23 18:04:29 guy Exp $ (LBL)
+ * @(#) $Header: /tcpdump/master/libpcap/pcap/bpf.h,v 1.19.2.13 2008-12-23 20:14:13 guy Exp $ (LBL)
*/
/*
* USB packets, beginning with a Linux USB header, with the USB header
* padded to 64 bytes; required for memory-mapped access.
*/
-#define DLT_USB_LINUX_MMAP 220
+#define DLT_USB_LINUX_MMAPPED 220
/*
* Basic USB data struct
*
- * @(#) $Header: /tcpdump/master/libpcap/pcap/usb.h,v 1.6.2.2 2008-12-23 18:13:02 guy Exp $
+ * @(#) $Header: /tcpdump/master/libpcap/pcap/usb.h,v 1.6.2.3 2008-12-23 20:14:13 guy Exp $
*/
#ifndef _PCAP_USB_STRUCTS_H__
/*
* Header prepended by linux kernel to each event.
* Appears at the front of each packet in DLT_USB_LINUX captures.
- * Appears at the front of each packet, followed by padding to a multiple
- * of 64 bytes, in DLT_USB_LINUX_MMAP captures.
*/
typedef struct _usb_header {
u_int64_t id;
} pcap_usb_header;
/*
- * In DLT_USB_LINUX_MMAP captures, the header is padded to 64 bytes.
+ * Header prepended by linux kernel to each event, plus padding in the
+ * internal buffer.
+ * Appears at the front of each packet in DLT_USB_LINUX_MMAPPED captures.
*/
-#define MMAPPED_USB_HEADER_SIZE ((sizeof (pcap_usb_header) + 63) & ~63)
+typedef struct _usb_header_mmapped {
+ u_int64_t id;
+ u_int8_t event_type;
+ u_int8_t transfer_type;
+ u_int8_t endpoint_number;
+ u_int8_t device_address;
+ u_int16_t bus_id;
+ char setup_flag;/*if !=0 the urb setup header is not present*/
+ char data_flag; /*if !=0 no urb data is present*/
+ int64_t ts_sec;
+ int32_t ts_usec;
+ int32_t status;
+ u_int32_t urb_len;
+ u_int32_t data_len; /* amount of urb data really present in this event*/
+ pcap_usb_setup setup;
+ u_int8_t padding[16];
+} pcap_usb_header_mmapped;
#endif
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/libpcap/savefile.c,v 1.168.2.14 2008-12-23 18:04:29 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/libpcap/savefile.c,v 1.168.2.15 2008-12-23 20:14:13 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
* USB packets, beginning with a Linux USB header, with the USB header
* padded to 64 bytes; required for memory-mapped access.
*/
-#define LINKTYPE_USB_LINUX_MMAP 220
+#define LINKTYPE_USB_LINUX_MMAPPED 220
static struct linktype_map {
{ DLT_MPLS, LINKTYPE_MPLS },
/* USB with padded Linux header */
- { DLT_USB_LINUX_MMAP, LINKTYPE_USB_LINUX_MMAP },
+ { DLT_USB_LINUX_MMAPPED, LINKTYPE_USB_LINUX_MMAPPED },
{ -1, -1 }
};
}
/*
- * The DLT_USB_LINUX and DLT_USB_LINUX_MMAP headers are in host
+ * The DLT_USB_LINUX and DLT_USB_LINUX_MMAPPED headers are in host
* byte order when capturing (it's supplied directly from a
* memory-mapped buffer shared by the kernel).
*
- * When reading a DLT_USB_LINUX or DLT_USB_LINUX_MMAP capture file,
+ * When reading a DLT_USB_LINUX or DLT_USB_LINUX_MMAPPED capture file,
* we need to convert it from the capturing host's byte order to
* the reading host's byte order.
*/
if (p->sf.swapped &&
- (p->linktype == DLT_USB_LINUX || p->linktype == DLT_USB_LINUX_MMAP)) {
+ (p->linktype == DLT_USB_LINUX || p->linktype == DLT_USB_LINUX_MMAPPED)) {
pcap_usb_header* uhdr = (pcap_usb_header*) buf;
/*
* The URB id is a totally opaque value; do we really need to