aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-usb-video.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2013-11-12 13:46:51 +0000
committerMichael Mann <mmann78@netscape.net>2013-11-12 13:46:51 +0000
commit76bfa2ce1af4867baf4f6990ac233d04a1b3af23 (patch)
treec665d826554ef5c3256b9a9b3fdc1fc9841ae56c /epan/dissectors/packet-usb-video.c
parent2b729ba554b5b5681f2304d0a51b63d3b250a9c0 (diff)
Remove usb_conv_info_t from packet_info and pass the data directly into the subdissectors. Bug 9413 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9413)
svn path=/trunk/; revision=53274
Diffstat (limited to 'epan/dissectors/packet-usb-video.c')
-rw-r--r--epan/dissectors/packet-usb-video.c39
1 files changed, 12 insertions, 27 deletions
diff --git a/epan/dissectors/packet-usb-video.c b/epan/dissectors/packet-usb-video.c
index 355db03619..33f82c2150 100644
--- a/epan/dissectors/packet-usb-video.c
+++ b/epan/dissectors/packet-usb-video.c
@@ -891,7 +891,7 @@ dissect_usb_video_extension_unit(proto_tree *tree, tvbuff_t *tvb, int offset)
*/
static int
dissect_usb_video_control_interface_descriptor(proto_tree *parent_tree, tvbuff_t *tvb,
- guint8 descriptor_len, packet_info *pinfo)
+ guint8 descriptor_len, packet_info *pinfo, usb_conv_info_t *usb_conv_info)
{
video_conv_info_t *video_conv_info = NULL;
video_entity_t *entity = NULL;
@@ -1020,14 +1020,8 @@ dissect_usb_video_control_interface_descriptor(proto_tree *parent_tree, tvbuff_t
if (entity_id != 0)
proto_item_append_text(item, " (Entity %d)", entity_id);
- if (subtype != VC_HEADER && pinfo->usb_conv_info)
+ if (subtype != VC_HEADER && usb_conv_info)
{
- /* Remember the entity ID / type for GET/SET transactions */
- usb_conv_info_t* usb_conv_info;
-
- /* This is the usb_conv_info of the CONTROL endpoint */
- usb_conv_info = (usb_conv_info_t*) pinfo->usb_conv_info;
-
/* Switch to the usb_conv_info of the Video Control interface */
usb_conv_info = get_usb_iface_conv_info(pinfo, usb_conv_info->interfaceNum);
video_conv_info = (video_conv_info_t *)usb_conv_info->class_data;
@@ -1470,13 +1464,13 @@ dissect_usb_video_endpoint_descriptor(proto_tree *parent_tree, tvbuff_t *tvb,
* @return >0 amount of data in the descriptor
*/
static int
-dissect_usb_vid_descriptor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- void *data _U_)
+dissect_usb_vid_descriptor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
{
int offset = 0;
guint8 descriptor_len;
guint8 descriptor_type;
gint bytes_available;
+ usb_conv_info_t *usb_conv_info = (usb_conv_info_t *)data;
tvbuff_t *desc_tvb;
@@ -1493,14 +1487,11 @@ dissect_usb_vid_descriptor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
else if (descriptor_type == CS_INTERFACE)
{
- usb_conv_info_t *usb_conv_info;
-
- usb_conv_info = (usb_conv_info_t *)pinfo->usb_conv_info;
if (usb_conv_info->interfaceSubclass == SC_VIDEOCONTROL)
{
offset = dissect_usb_video_control_interface_descriptor(tree, desc_tvb,
descriptor_len,
- pinfo);
+ pinfo, usb_conv_info);
}
else if (usb_conv_info->interfaceSubclass == SC_VIDEOSTREAMING)
{
@@ -1997,22 +1988,16 @@ static const value_string setup_request_names_vals[] = {
* @return >0 amount of data in the descriptor
*/
static int
-dissect_usb_vid_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+dissect_usb_vid_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
{
- gboolean is_request;
- usb_conv_info_t *usb_conv_info;
- usb_trans_info_t *usb_trans_info;
+ gboolean is_request = (pinfo->srcport == NO_ENDPOINT);
+ usb_conv_info_t *usb_conv_info = (usb_conv_info_t *)data;
+ usb_trans_info_t *usb_trans_info = usb_conv_info->usb_trans_info;
int offset = 0;
- usb_setup_dissector dissector;
+ usb_setup_dissector dissector = NULL;
const usb_setup_dissector_table_t *tmp;
- is_request = (pinfo->srcport == NO_ENDPOINT);
-
- usb_conv_info = (usb_conv_info_t *)pinfo->usb_conv_info;
- usb_trans_info = usb_conv_info->usb_trans_info;
-
/* See if we can find a class specific dissector for this request */
- dissector = NULL;
for (tmp=setup_dissectors; tmp->dissector; tmp++)
{
if (tmp->request == usb_trans_info->setup.request)
@@ -2054,13 +2039,13 @@ dissect_usb_vid_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
* @return >0 amount of data in the descriptor
*/
static int
-dissect_usb_vid_interrupt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+dissect_usb_vid_interrupt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
{
usb_conv_info_t *usb_conv_info;
gint bytes_available;
int offset = 0;
- usb_conv_info = (usb_conv_info_t *)pinfo->usb_conv_info;
+ usb_conv_info = (usb_conv_info_t *)data;
bytes_available = tvb_length_remaining(tvb, offset);
col_set_str(pinfo->cinfo, COL_PROTOCOL, "USBVIDEO");