aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2005-12-01 10:34:00 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2005-12-01 10:34:00 +0000
commit1b2e68397aa341f0880325f0d5c3cfe2dd92b5ee (patch)
tree7e6b51716af3efb9218634cafc4fd0a5dadca6d0 /epan
parent646535de33e4a9a2cd70edba77b886653299ed97 (diff)
start implementing an ioctl dispatcher for different ioctl functions
svn path=/trunk/; revision=16636
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-smb2.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/epan/dissectors/packet-smb2.c b/epan/dissectors/packet-smb2.c
index aff24d65b3..46597a3745 100644
--- a/epan/dissectors/packet-smb2.c
+++ b/epan/dissectors/packet-smb2.c
@@ -567,6 +567,7 @@ static const true_false_string tfs_flags_response = {
static const value_string smb2_ioctl_vals[] = {
+ {0x0011c017, "DCE/RPC over named pipe"},
{0x00090000, "FSCTL_REQUEST_OPLOCK_LEVEL_1"},
{0x00090004, "FSCTL_REQUEST_OPLOCK_LEVEL_2"},
{0x00090008, "FSCTL_REQUEST_BATCH_OPLOCK"},
@@ -704,6 +705,7 @@ static const value_string smb2_ioctl_method_vals[] = {
{ 0, NULL }
};
+static int
dissect_smb2_ioctl_function(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, int offset, smb2_info_t *si)
{
proto_item *item=NULL;
@@ -2440,9 +2442,23 @@ dissect_smb2_write_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
}
static void
-dissect_smb2_ioctl_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, smb2_info_t *si)
+dissect_smb2_ioctl_dcerpc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, smb2_info_t *si)
+{
+ dissect_file_data_dcerpc(tvb, pinfo, tree, offset, tvb_length_remaining(tvb, offset), si);
+
+ return;
+}
+
+static void
+dissect_smb2_ioctl_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, smb2_info_t *si)
{
- dissect_file_data_dcerpc(tvb, pinfo, parent_tree, 0, tvb_length(tvb), si);
+ switch(si->ioctl_function){
+ case 0x0011c017: /* NamedPipoe function:5 */
+ dissect_smb2_ioctl_dcerpc(tvb, pinfo, tree, 0, si);
+ break;
+ default:
+ proto_tree_add_item(tree, hf_smb2_unknown, tvb, 0, tvb_length(tvb), TRUE);
+ }
return;
}