aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-scsi-osd.c
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2006-11-05 07:59:20 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2006-11-05 07:59:20 +0000
commitebf95252d06838a59c6711b305a8b5e277e97f0a (patch)
tree151a55b7199324669772d4e244344e730e5b06f4 /epan/dissectors/packet-scsi-osd.c
parent98eb8f4a5c6163266a029aa26c41b65610d20192 (diff)
dissect the Get Attributes List Offset according to the really weird encoding in 4.12.5
svn path=/trunk/; revision=19807
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);