diff options
author | guy <guy> | 2006-12-20 03:30:32 +0000 |
---|---|---|
committer | guy <guy> | 2006-12-20 03:30:32 +0000 |
commit | d959f6403da743f8864ae1ee3004e34c932eb133 (patch) | |
tree | dffa343bff6418f17ec19381157cdf64805b3667 /pcap/usb.h | |
parent | 8a391f392c60f141854c2d4a1749c5b8a0fe1c5b (diff) |
From Paolo Abeni: add support for the binary USB sniffing interface in
Linux. The USB sniffing code for Linux now supplies a per-packet header
based on the one supplied by the Linux binary sniffing interface, so we
add a new DLT_ value and use that.
Fix his e-mail address, and add him to the credits.
Diffstat (limited to 'pcap/usb.h')
-rw-r--r-- | pcap/usb.h | 68 |
1 files changed, 43 insertions, 25 deletions
@@ -30,42 +30,60 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Basic USB data struct - * By Paolo Abeni <paolo.abeni@email.com> + * By Paolo Abeni <paolo.abeni@email.it> * */ #ifndef _PCAP_USB_STRUCTS_H__ #define _PCAP_USB_STRUCTS_H__ -typedef enum { - URB_CONTROL_INPUT, - URB_CONTROL_OUTPUT, - URB_ISOCHRONOUS_INPUT, - URB_ISOCHRONOUS_OUTPUT, - URB_INTERRUPT_INPUT, - URB_INTERRUPT_OUTPUT, - URB_BULK_INPUT, - URB_BULK_OUTPUT, - URB_UNKNOWN -} pcap_urb_type_t; - -typedef struct _usb_header { - bpf_u_int32 urb_type; - bpf_u_int32 device_address; - bpf_u_int32 endpoint_number; - bpf_u_int32 setup_packet; -} pcap_usb_header; +/* + * possible transfer mode + */ +#define URB_TRANSFER_IN 0x80 +#define URB_ISOCHRONOUS 0x0 +#define URB_INTERRUPT 0x1 +#define URB_CONTROL 0x2 +#define URB_BULK 0x3 +/* + * possible event type + */ +#define URB_SUBMIT 'S' +#define URB_COMPLETE 'C' +#define URB_ERROR 'E' /* - * defined in USB specification + * USB setup header as defined in USB specification */ typedef struct _usb_setup { - u_int8_t bmRequestType; - u_int8_t bRequest; - u_int16_t wValue; - u_int16_t wIndex; - u_int16_t wLength; + u_int8_t bmRequestType; + u_int8_t bRequest; + u_int16_t wValue; + u_int16_t wIndex; + u_int16_t wLength; } pcap_usb_setup; + +/* + * Header prepent by linux kernel to each event + */ +typedef struct _usb_header { + 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; +} pcap_usb_header; + + #endif |