aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-smb.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-smb.c')
-rw-r--r--epan/dissectors/packet-smb.c40
1 files changed, 37 insertions, 3 deletions
diff --git a/epan/dissectors/packet-smb.c b/epan/dissectors/packet-smb.c
index 6141d2739a..c2bcd1cea6 100644
--- a/epan/dissectors/packet-smb.c
+++ b/epan/dissectors/packet-smb.c
@@ -620,6 +620,8 @@ static int hf_smb_unix_find_file_resumekey = -1;
static int hf_smb_network_unknown = -1;
static int hf_smb_disposition_delete_on_close = -1;
static int hf_smb_mode = -1;
+static int hf_smb_attribute = -1;
+static int hf_smb_reparse_tag = -1;
static gint ett_smb = -1;
static gint ett_smb_hdr = -1;
@@ -10921,8 +10923,8 @@ dissect_4_2_16_13(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
/* this dissects the SMB_QUERY_FILE_NETWORK_OPEN_INFO
*/
-static int
-dissect_smb_query_file_network_open_info(tvbuff_t *tvb,
+int
+dissect_qfi_SMB_FILE_NETWORK_OPEN_INFO(tvbuff_t *tvb,
packet_info *pinfo, proto_tree *tree,
int offset, guint16 *bcp, gboolean *trunc)
{
@@ -10956,6 +10958,27 @@ dissect_smb_query_file_network_open_info(tvbuff_t *tvb,
return offset;
}
+/* this dissects the SMB_QUERY_FILE_NETWORK_OPEN_INFO
+*/
+int
+dissect_qfi_SMB_FILE_ATTRIBUTE_TAG_INFO(tvbuff_t *tvb,
+ packet_info *pinfo, proto_tree *tree,
+ int offset, guint16 *bcp, gboolean *trunc)
+{
+ /* attribute */
+ CHECK_BYTE_COUNT_SUBR(4);
+ proto_tree_add_item(tree, hf_smb_attribute, tvb, offset, 4, TRUE);
+ COUNT_BYTES_SUBR(4);
+
+ /* reparse tag */
+ CHECK_BYTE_COUNT_SUBR(4);
+ proto_tree_add_item(tree, hf_smb_reparse_tag, tvb, offset, 4, TRUE);
+ COUNT_BYTES_SUBR(4);
+
+ *trunc = FALSE;
+ return offset;
+}
+
/* this dissects the SMB_SET_FILE_DISPOSITION_INFO
as described in 4.2.19.2
*/
@@ -11171,7 +11194,10 @@ dissect_qpi_loi_vals(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree,
&trunc);
break;
case 1034: /* SMB_FILE_NETWORK_OPEN_INFO */
- offset = dissect_smb_query_file_network_open_info(tvb, pinfo, tree, offset, bcp, &trunc);
+ offset = dissect_qfi_SMB_FILE_NETWORK_OPEN_INFO(tvb, pinfo, tree, offset, bcp, &trunc);
+ break;
+ case 1035: /* SMB_FILE_ATTRIBUTE_TAG_INFO */
+ offset = dissect_qfi_SMB_FILE_ATTRIBUTE_TAG_INFO(tvb, pinfo, tree, offset, bcp, &trunc);
break;
case 0x0200: /* Query File Unix Basic*/
offset = dissect_4_2_16_12(tvb, pinfo, tree, offset, bcp,
@@ -17653,6 +17679,14 @@ proto_register_smb(void)
{ "Mode", "smb.mode", FT_UINT32, BASE_HEX,
NULL, 0, "", HFILL }},
+ { &hf_smb_attribute,
+ { "Attribute", "smb.attribute", FT_UINT32, BASE_HEX,
+ NULL, 0, "", HFILL }},
+
+ { &hf_smb_reparse_tag,
+ { "Reparse Tag", "smb.reparse_tag", FT_UINT32, BASE_HEX,
+ NULL, 0, "", HFILL }},
+
{ &hf_smb_disposition_delete_on_close,
{ "Delete on close", "smb.disposition.delete_on_close", FT_BOOLEAN, 8,
TFS(&tfs_disposition_delete_on_close), 0x01, "", HFILL }},