[PATCH 07/12] do not re-use v4 createmode. define a v4.1 specific ones.
Tigran Mkrtchyan
tigran.mkrtchyan at desy.de
Sun May 25 15:04:46 EDT 2008
---
epan/dissectors/packet-nfs.c | 27 ++++++++++++++++++++++-----
epan/dissectors/packet-nfs.h | 17 +++++++++++++++++
2 files changed, 39 insertions(+), 5 deletions(-)
diff --git a/epan/dissectors/packet-nfs.c b/epan/dissectors/packet-nfs.c
index af4a9e3..ea4a446 100644
--- a/epan/dissectors/packet-nfs.c
+++ b/epan/dissectors/packet-nfs.c
@@ -347,6 +347,7 @@ static int hf_nfs_callback_ident = -1;
static int hf_nfs_r_netid = -1;
static int hf_nfs_gsshandle4 = -1;
static int hf_nfs_r_addr = -1;
+static int hf_nfs_createmode4 = -1;
/* NFSv4.1 */
static int hf_nfs_length4_minlength = -1;
@@ -6964,26 +6965,38 @@ dissect_nfs_open_claim4(tvbuff_t *tvb, int offset,
return offset;
}
+static const value_string names_createmode4[] = {
+ { UNCHECKED4, "UNCHECKED4" },
+ { GUARDED4, "GUARDED4" },
+ { EXCLUSIVE4, "EXCLUSIVE4" },
+ { EXCLUSIVE4_1, "EXCLUSIVE4_1" },
+ { 0, NULL }
+};
+
static int
dissect_nfs_createhow4(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree)
{
guint mode;
- /* This is intentional; we're using the same flags as NFSv3 */
mode = tvb_get_ntohl(tvb, offset);
- proto_tree_add_uint(tree, hf_nfs_createmode3, tvb, offset, 4, mode);
+ proto_tree_add_uint(tree, hf_nfs_createmode4, tvb, offset, 4, mode);
offset += 4;
switch(mode)
{
- case UNCHECKED: /* UNCHECKED4 */
- case GUARDED: /* GUARDED4 */
+ case UNCHECKED4:
+ case GUARDED4:
offset = dissect_nfs_fattr4(tvb, offset, pinfo, tree);
break;
- case EXCLUSIVE: /* EXCLUSIVE4 */
+ case EXCLUSIVE4:
+ offset = dissect_rpc_uint64(tvb, tree, hf_nfs_verifier4, offset);
+ break;
+
+ case EXCLUSIVE4_1:
offset = dissect_rpc_uint64(tvb, tree, hf_nfs_verifier4, offset);
+ offset = dissect_nfs_fattr4(tvb, offset, pinfo, tree);
break;
default:
@@ -9912,6 +9925,10 @@ proto_register_nfs(void)
"owner", "nfs.lock_owner4", FT_BYTES, BASE_DEC,
NULL, 0, NULL, HFILL }},
+ { &hf_nfs_createmode4, {
+ "Create Mode", "nfs.createmode4", FT_UINT32, BASE_DEC,
+ VALS(names_createmode4), 0, NULL, HFILL }},
+
{ &hf_nfs_secinfo_rpcsec_gss_info_service, {
"service", "nfs.secinfo.rpcsec_gss_info.service", FT_UINT32, BASE_DEC,
VALS(rpc_authgss_svc), 0, NULL, HFILL }},
diff --git a/epan/dissectors/packet-nfs.h b/epan/dissectors/packet-nfs.h
index dd0fa71..ad56014 100644
--- a/epan/dissectors/packet-nfs.h
+++ b/epan/dissectors/packet-nfs.h
@@ -144,6 +144,23 @@
#define GUARDED 1
#define EXCLUSIVE 2
+/* for create4 */
+#define UNCHECKED4 0
+#define GUARDED4 1
+/* Deprecated in NFSv4.1. */
+#define EXCLUSIVE4 2
+/*
+* New to NFSv4.1. If session is persistent,
+* GUARDED4 MUST be used. Otherwise, use
+* EXCLUSIVE4_1 instead of EXCLUSIVE4.
+*/
+#define EXCLUSIVE4_1 3
+/*
+* New to NFSv4.1. If session is persistent,
+* GUARDED4 MUST be used. Otherwise, use
+* EXCLUSIVE4_1 instead of EXCLUSIVE4.
+*/
+
extern gboolean nfs_file_name_snooping;
extern int dissect_fhandle(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree,
--
1.5.5.1.211.g65ea3
--------------010504080207030209060809
Content-Type: text/x-patch;
name="0008-complete-list-of-nfsv4.1-ops.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="0008-complete-list-of-nfsv4.1-ops.patch"
More information about the pNFS
mailing list