usb.h revision 190214
1219820Sjeff/*
2219820Sjeff * Copyright (c) 2006 Paolo Abeni (Italy)
3219820Sjeff * All rights reserved.
4219820Sjeff *
5219820Sjeff * Redistribution and use in source and binary forms, with or without
6219820Sjeff * modification, are permitted provided that the following conditions
7219820Sjeff * are met:
8219820Sjeff *
9219820Sjeff * 1. Redistributions of source code must retain the above copyright
10219820Sjeff * notice, this list of conditions and the following disclaimer.
11219820Sjeff * 2. Redistributions in binary form must reproduce the above copyright
12219820Sjeff * notice, this list of conditions and the following disclaimer in the
13219820Sjeff * documentation and/or other materials provided with the distribution.
14219820Sjeff * 3. The name of the author may not be used to endorse or promote
15219820Sjeff * products derived from this software without specific prior written
16219820Sjeff * permission.
17219820Sjeff *
18219820Sjeff * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19219820Sjeff * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20219820Sjeff * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21219820Sjeff * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22219820Sjeff * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23219820Sjeff * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24219820Sjeff * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25219820Sjeff * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26219820Sjeff * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27219820Sjeff * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28219820Sjeff * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29219820Sjeff *
30219820Sjeff * Basic USB data struct
31219820Sjeff * By Paolo Abeni <paolo.abeni@email.it>
32219820Sjeff *
33219820Sjeff * @(#) $Header: /tcpdump/master/libpcap/pcap/usb.h,v 1.6 2007/09/22 02:06:08 guy Exp $
34219820Sjeff */
35219820Sjeff
36219820Sjeff#ifndef _PCAP_USB_STRUCTS_H__
37219820Sjeff#define _PCAP_USB_STRUCTS_H__
38219820Sjeff
39219820Sjeff/*
40219820Sjeff * possible transfer mode
41219820Sjeff */
42219820Sjeff#define URB_TRANSFER_IN   0x80
43219820Sjeff#define URB_ISOCHRONOUS   0x0
44219820Sjeff#define URB_INTERRUPT     0x1
45219820Sjeff#define URB_CONTROL       0x2
46219820Sjeff#define URB_BULK          0x3
47219820Sjeff
48219820Sjeff/*
49219820Sjeff * possible event type
50219820Sjeff */
51219820Sjeff#define URB_SUBMIT        'S'
52219820Sjeff#define URB_COMPLETE      'C'
53219820Sjeff#define URB_ERROR         'E'
54219820Sjeff
55219820Sjeff/*
56219820Sjeff * USB setup header as defined in USB specification.
57219820Sjeff * Appears at the front of each packet in DLT_USB captures.
58219820Sjeff */
59219820Sjefftypedef struct _usb_setup {
60219820Sjeff	u_int8_t bmRequestType;
61219820Sjeff	u_int8_t bRequest;
62219820Sjeff	u_int16_t wValue;
63219820Sjeff	u_int16_t wIndex;
64219820Sjeff	u_int16_t wLength;
65219820Sjeff} pcap_usb_setup;
66
67
68/*
69 * Header prepended by linux kernel to each event.
70 * Appears at the front of each packet in DLT_USB_LINUX captures.
71 */
72typedef struct _usb_header {
73	u_int64_t id;
74	u_int8_t event_type;
75	u_int8_t transfer_type;
76	u_int8_t endpoint_number;
77	u_int8_t device_address;
78	u_int16_t bus_id;
79	char setup_flag;/*if !=0 the urb setup header is not present*/
80	char data_flag; /*if !=0 no urb data is present*/
81	int64_t ts_sec;
82	int32_t ts_usec;
83	int32_t status;
84	u_int32_t urb_len;
85	u_int32_t data_len; /* amount of urb data really present in this event*/
86	pcap_usb_setup setup;
87} pcap_usb_header;
88
89
90#endif
91