aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-scsi-osd.c
diff options
context:
space:
mode:
authorsahlberg <sahlberg@f5534014-38df-0310-8fa8-9805f1628bb7>2006-11-05 07:59:20 +0000
committersahlberg <sahlberg@f5534014-38df-0310-8fa8-9805f1628bb7>2006-11-05 07:59:20 +0000
commit5966cb40b2ad5d5267d034b1ce73b1018c0feb74 (patch)
tree151a55b7199324669772d4e244344e730e5b06f4 /epan/dissectors/packet-scsi-osd.c
parentcdf2f8efc21a87fc00466e9f1f2e01103e0ccddf (diff)
dissect the Get Attributes List Offset according to the really weird encoding in 4.12.5
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@19807 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-scsi-osd.c')
-rw-r--r--epan/dissectors/packet-scsi-osd.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/epan/dissectors/packet-scsi-osd.c b/epan/dissectors/packet-scsi-osd.c
index 6a90371943..4f395cdfd1 100644
--- a/epan/dissectors/packet-scsi-osd.c
+++ b/epan/dissectors/packet-scsi-osd.c
@@ -125,6 +125,9 @@ static gint ett_osd_permission_bitmask = -1;
static gint ett_osd_security_parameters = -1;
+#define PAGE_NUMBER_PARTITION 0x30000000
+#define PAGE_NUMBER_COLLECTION 0x60000000
+#define PAGE_NUMBER_ROOT 0x90000000
/* There will be one such structure create for each conversation ontop of which
* there is an OSD session
@@ -291,8 +294,11 @@ dissect_osd_attribute_parameters(tvbuff_t *tvb, int offset, proto_tree *parent_t
extra_data->get_list_length=tvb_get_ntohl(tvb, offset);
offset+=4;
- proto_tree_add_item(tree, hf_scsi_osd_get_attributes_list_offset, tvb, offset, 4, 0);
+ /* 4.12.5 */
extra_data->get_list_offset=tvb_get_ntohl(tvb, offset);
+ extra_data->get_list_offset=(extra_data->get_list_offset&0x0fffffff)<<((extra_data->get_list_offset>>28)&0x0f);
+ extra_data->get_list_offset<<=8;
+ proto_tree_add_uint(tree, hf_scsi_osd_get_attributes_list_offset, tvb, offset, 4, extra_data->get_list_offset);
offset+=4;
proto_tree_add_item(tree, hf_scsi_osd_get_attributes_allocation_length, tvb, offset, 4, 0);