diff options
author | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2007-03-25 09:55:49 +0000 |
---|---|---|
committer | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2007-03-25 09:55:49 +0000 |
commit | 1053745b1cba06c3f34d0e69c3c765ab36b4ca21 (patch) | |
tree | db6c2729721c57633fa7552d88d9fa4bae3cd9e9 /epan/dissectors/packet-usb.c | |
parent | ab2e40bcb5195a0a0b5482fc1a78d6052ce460ea (diff) | |
download | wireshark-1053745b1cba06c3f34d0e69c3c765ab36b4ca21.tar.gz |
create a tap for usb so that we can do conversation/host lists
svn path=/trunk/; revision=21176
Diffstat (limited to 'epan/dissectors/packet-usb.c')
-rw-r--r-- | epan/dissectors/packet-usb.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/epan/dissectors/packet-usb.c b/epan/dissectors/packet-usb.c index 00e5f6b7f9..a0e33915db 100644 --- a/epan/dissectors/packet-usb.c +++ b/epan/dissectors/packet-usb.c @@ -32,6 +32,7 @@ #include <epan/etypes.h> #include <epan/addr_resolv.h> #include <epan/emem.h> +#include <epan/tap.h> #include <epan/conversation.h> #include <string.h> #include "packet-usb.h" @@ -113,6 +114,8 @@ static gint ett_configuration_bEndpointAddress = -1; static gint ett_endpoint_bmAttributes = -1; +static int usb_tap = -1; + static dissector_table_t usb_bulk_dissector_table; static dissector_table_t usb_control_dissector_table; @@ -845,6 +848,7 @@ dissect_linux_usb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent) usb_conv_info_t *usb_conv_info=NULL; usb_trans_info_t *usb_trans_info=NULL; conversation_t *conversation; + usb_tap_data_t *tap_data=NULL; if (check_col(pinfo->cinfo, COL_PROTOCOL)) col_set_str(pinfo->cinfo, COL_PROTOCOL, "USB"); @@ -956,7 +960,6 @@ dissect_linux_usb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent) conversation=get_usb_conversation(pinfo, pinfo->srcport, pinfo->destport); usb_conv_info=get_usb_conv_info(conversation); - pinfo->usb_conv_info=usb_conv_info; @@ -1009,7 +1012,7 @@ dissect_linux_usb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent) PROTO_ITEM_SET_GENERATED(ti); } } - + /* For DLT189 it seems * that all INTERRUPT or BULK packets as well as all CONTROL responses * are prepended with 8 mysterious bytes. @@ -1028,6 +1031,14 @@ dissect_linux_usb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent) DISSECTOR_ASSERT_NOT_REACHED(); } + tap_data=ep_alloc(sizeof(usb_tap_data_t)); + tap_data->urb_type=(guint8)pinfo->pseudo_header->linux_usb.event_type; + tap_data->transfer_type=(guint8)type; + tap_data->conv_info=usb_conv_info; + tap_data->trans_info=usb_trans_info; + tap_queue_packet(usb_tap, pinfo, tap_data); + + switch(type){ case URB_BULK: { @@ -1484,6 +1495,7 @@ proto_register_usb(void) usb_control_dissector_table = register_dissector_table("usb.control", "USB control endpoint", FT_UINT8, BASE_DEC); + usb_tap=register_tap("usb"); } void |