summaryrefslogtreecommitdiff
path: root/epan/dissectors/packet-usb.c
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2007-03-25 09:55:49 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2007-03-25 09:55:49 +0000
commit1053745b1cba06c3f34d0e69c3c765ab36b4ca21 (patch)
treedb6c2729721c57633fa7552d88d9fa4bae3cd9e9 /epan/dissectors/packet-usb.c
parentab2e40bcb5195a0a0b5482fc1a78d6052ce460ea (diff)
downloadwireshark-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.c16
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