aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2013-12-03 19:44:32 +0000
committerPascal Quantin <pascal.quantin@gmail.com>2013-12-03 19:44:32 +0000
commit8b3f82def11470cc0b407894c44a7a734c30dbe6 (patch)
tree37b28bc7fe91b7e548b40ad8cdcf183d641ecd82 /epan
parentc28c8ed2145e50cee06a3496976914f6cabc4f75 (diff)
Add request / response tracking to MBIM_FUNCTION_ERROR_MSG messages
svn path=/trunk/; revision=53762
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-mbim.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/epan/dissectors/packet-mbim.c b/epan/dissectors/packet-mbim.c
index c9aa9c43ca..720ea26680 100644
--- a/epan/dissectors/packet-mbim.c
+++ b/epan/dissectors/packet-mbim.c
@@ -3981,8 +3981,30 @@ dissect_mbim_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
}
}
break;
- case MBIM_HOST_ERROR_MSG:
case MBIM_FUNCTION_ERROR_MSG:
+ open_count = GPOINTER_TO_UINT(wmem_tree_lookup32_le(mbim_conv->open, PINFO_FD_NUM(pinfo)));
+ trans_id_key[0].length = 1;
+ trans_id_key[0].key = &open_count;
+ trans_id_key[1].length = 1;
+ trans_id_key[1].key = &trans_id;
+ trans_id_key[2].length = 0;
+ trans_id_key[2].key = NULL;
+ if (!PINFO_FD_VISITED(pinfo)) {
+ mbim_info = (struct mbim_info *)wmem_tree_lookup32_array(mbim_conv->trans, trans_id_key);
+ if (mbim_info) {
+ mbim_info->resp_frame = PINFO_FD_NUM(pinfo);
+ }
+ } else {
+ mbim_info = (struct mbim_info *)wmem_tree_lookup32_array(mbim_conv->trans, trans_id_key);
+ if (mbim_info && mbim_info->req_frame) {
+ proto_item *req_it;
+
+ req_it = proto_tree_add_uint(header_tree, hf_mbim_request_in, tvb, 0, 0, mbim_info->req_frame);
+ PROTO_ITEM_SET_GENERATED(req_it);
+ }
+ }
+ /* FALLTHROUGH */
+ case MBIM_HOST_ERROR_MSG:
proto_tree_add_item(mbim_tree, hf_mbim_error_status_code, tvb, offset, 4, ENC_LITTLE_ENDIAN);
break;
case MBIM_OPEN_DONE: