diff options
author | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2012-05-22 05:53:28 +0000 |
---|---|---|
committer | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2012-05-22 05:53:28 +0000 |
commit | 50b992d13967d5793eaea38a9edb85f837d87dd3 (patch) | |
tree | ba1e6e802a691abb778c6d36b1ffdd3d9614f7f7 /epan/dissectors | |
parent | 920b760f15945411c37071477b8be3a6dfc08917 (diff) |
SMB: Dissect TRANS2_SET_FS_INFORMATION infolevel
From Stefan Metzmacher <metze@samba.org>
svn path=/trunk/; revision=42770
Diffstat (limited to 'epan/dissectors')
-rw-r--r-- | epan/dissectors/packet-smb.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/epan/dissectors/packet-smb.c b/epan/dissectors/packet-smb.c index bf78af2fdf..c3f2442750 100644 --- a/epan/dissectors/packet-smb.c +++ b/epan/dissectors/packet-smb.c @@ -557,6 +557,7 @@ static int hf_smb_storage_type = -1; static int hf_smb_resume = -1; static int hf_smb_max_referral_level = -1; static int hf_smb_qfsi_information_level = -1; +static int hf_smb_sfsi_information_level = -1; static int hf_smb_number_of_links = -1; static int hf_smb_delete_pending = -1; static int hf_smb_index_number = -1; @@ -10499,6 +10500,11 @@ static const value_string qfsi_vals[] = { {0, NULL} }; +static const value_string sfsi_vals[] = { + { 1006, "Set FS Quota Info"}, + {0, NULL} +}; + static const value_string nt_rename_vals[] = { { 0x0103, "Create Hard Link"}, {0, NULL} @@ -10939,6 +10945,21 @@ dissect_transaction2_request_parameters(tvbuff_t *tvb, packet_info *pinfo, "Unknown (0x%02x)")); break; + case 0x0004: /*TRANS2_SET_FS_INFORMATION*/ + /* level of interest */ + CHECK_BYTE_COUNT_TRANS(4); + si->info_level = tvb_get_letohs(tvb, offset+2); + if (t2i != NULL && !pinfo->fd->flags.visited) + t2i->info_level = si->info_level; + proto_tree_add_uint(tree, hf_smb_sfsi_information_level, tvb, offset+2, 2, si->info_level); + COUNT_BYTES_TRANS(4); + + if (check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", + val_to_str(si->info_level, sfsi_vals, + "Unknown (0x%02x)")); + + break; case 0x0005: /*TRANS2_QUERY_PATH_INFORMATION*/ /* level of interest */ CHECK_BYTE_COUNT_TRANS(2); @@ -16116,6 +16137,14 @@ dissect_transaction_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree * item=proto_tree_add_uint(tree, hf_smb_qfsi_information_level, tvb, 0, 0, si->info_level); PROTO_ITEM_SET_GENERATED(item); break; + + case 0x0004: /* SET_FS_INFORMATION */ + if (t2i->info_level == -1) + item=proto_tree_add_text(tree, tvb, 0, 0, "Level of Information: <UNKNOWN> since information level wasn't found in request packet"); + else + item=proto_tree_add_uint(tree, hf_smb_sfsi_information_level, tvb, 0, 0, si->info_level); + PROTO_ITEM_SET_GENERATED(item); + break; } if (check_col(pinfo->cinfo, COL_INFO)) { @@ -19609,6 +19638,10 @@ proto_register_smb(void) { "Level of Interest", "smb.qfsi_loi", FT_UINT16, BASE_HEX, VALS(qfsi_vals), 0, "Level of interest for QUERY_FS_INFORMATION2 command", HFILL }}, + { &hf_smb_sfsi_information_level, + { "Level of Interest", "smb.sfsi_loi", FT_UINT16, BASE_HEX, + VALS(sfsi_vals), 0, "Level of interest for SET_FS_INFORMATION2 command", HFILL }}, + { &hf_smb_nt_rename_level, { "Level of Interest", "smb.ntr_loi", FT_UINT16, BASE_DEC, VALS(nt_rename_vals), 0, "NT Rename level", HFILL }}, |