aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--epan/dissectors/packet-nfs.c35
1 files changed, 34 insertions, 1 deletions
diff --git a/epan/dissectors/packet-nfs.c b/epan/dissectors/packet-nfs.c
index 5bbe34a065..12cf52efb6 100644
--- a/epan/dissectors/packet-nfs.c
+++ b/epan/dissectors/packet-nfs.c
@@ -355,6 +355,7 @@ static int hf_nfs4_want_flags = -1;
static int hf_nfs4_want_notify_flags = -1;
static int hf_nfs4_want_signal_deleg_when_resrc_avail = -1;
static int hf_nfs4_want_push_deleg_when_uncontended = -1;
+static int hf_nfs4_want_deleg_timestamps = -1;
static int hf_nfs4_seqid = -1;
static int hf_nfs4_lock_seqid = -1;
static int hf_nfs4_reqd_attr = -1;
@@ -416,6 +417,7 @@ static int hf_nfs4_fattr_security_label_pi = -1;
static int hf_nfs4_fattr_security_label_context = -1;
static int hf_nfs4_fattr_umask_mask = -1;
static int hf_nfs4_fattr_xattr_support = -1;
+static int hf_nfs4_fattr_offline = -1;
static int hf_nfs4_who = -1;
static int hf_nfs4_server = -1;
static int hf_nfs4_fslocation = -1;
@@ -6148,6 +6150,12 @@ static const value_string fattr4_names[] = {
{ FATTR4_MODE_UMASK, "Mode_Umask" },
#define FATTR4_XATTR_SUPPORT 82
{ FATTR4_XATTR_SUPPORT, "Xattr_Support" },
+#define FATTR4_OFFLINE 83
+ { FATTR4_OFFLINE, "Offline" },
+#define FATTR4_TIME_DELEG_ACCESS 84
+ { FATTR4_TIME_DELEG_ACCESS, "Time_Deleg_Access" },
+#define FATTR4_TIME_DELEG_MODIFY 85
+ { FATTR4_TIME_DELEG_MODIFY, "Time_Deleg_Modify" },
{ 0, NULL }
};
static value_string_ext fattr4_names_ext = VALUE_STRING_EXT_INIT(fattr4_names);
@@ -7124,6 +7132,8 @@ dissect_nfs4_fattrs(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *t
case FATTR4_TIME_MODIFY:
case FATTR4_DIR_NOTIF_DELAY:
case FATTR4_DIRENT_NOTIF_DELAY:
+ case FATTR4_TIME_DELEG_ACCESS:
+ case FATTR4_TIME_DELEG_MODIFY:
if (attr_tree)
dissect_nfs4_nfstime(tvb, offset, attr_tree);
offset += 12;
@@ -7176,6 +7186,11 @@ dissect_nfs4_fattrs(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *t
attr_tree, hf_nfs4_fattr_xattr_support, offset);
break;
+ case FATTR4_OFFLINE:
+ offset = dissect_rpc_bool(tvb,
+ attr_tree, hf_nfs4_fattr_offline, offset);
+ break;
+
default:
break;
}
@@ -7220,6 +7235,9 @@ static const value_string names_open4_share_access[] = {
#define OPEN4_SHARE_ACCESS_WANT_PUSH_DELEG_WHEN_UNCONTENDED 0x20000
{ OPEN4_SHARE_ACCESS_WANT_PUSH_DELEG_WHEN_UNCONTENDED,
"OPEN4_SHARE_ACCESS_WANT_PUSH_DELEG_WHEN_UNCONTENDED"},
+#define OPEN4_SHARE_ACCESS_WANT_DELEG_TIMESTAMPS 0x100000
+ {OPEN4_SHARE_ACCESS_WANT_DELEG_TIMESTAMPS,
+ "OPEN4_SHARE_ACCESS_WANT_DELEG_TIMESTAMPS"},
{ 0, NULL }
};
static value_string_ext names_open4_share_access_ext = VALUE_STRING_EXT_INIT(names_open4_share_access);
@@ -7236,7 +7254,7 @@ dissect_nfs4_open_share_access(tvbuff_t *tvb, int offset, proto_tree *tree)
want_notify_flags = tvb_get_ntohl(tvb, offset);
share_access = want_notify_flags & 0x3;
want_flags = want_notify_flags & 0xff00;
- want_notify_flags &= ~share_access & ~want_flags;
+ want_notify_flags &= 0x130000;
proto_tree_add_uint(tree, hf_nfs4_open_share_access, tvb, offset, 4, share_access);
if (want_flags)
proto_tree_add_uint(tree, hf_nfs4_want_flags, tvb, offset, 4, want_flags);
@@ -8117,11 +8135,15 @@ dissect_nfs4_open_write_delegation(tvbuff_t *tvb, int offset,
#define OPEN_DELEGATE_READ 1
#define OPEN_DELEGATE_WRITE 2
#define OPEN_DELEGATE_NONE_EXT 3 /* new to v4.1 */
+#define OPEN_DELEGATE_READ_ATTRS_DELEG 4 /* New to V4.2 */
+#define OPEN_DELEGATE_WRITE_ATTRS_DELEG 5
static const value_string names_open_delegation_type4[] = {
{ OPEN_DELEGATE_NONE, "OPEN_DELEGATE_NONE" },
{ OPEN_DELEGATE_READ, "OPEN_DELEGATE_READ" },
{ OPEN_DELEGATE_WRITE, "OPEN_DELEGATE_WRITE" },
{ OPEN_DELEGATE_NONE_EXT, "OPEN_DELEGATE_NONE_EXT"},
+ { OPEN_DELEGATE_READ_ATTRS_DELEG, "OPEN_DELEGATE_READ_ATTRS_DELEG"},
+ { OPEN_DELEGATE_WRITE_ATTRS_DELEG, "OPEN_DELEGATE_WRITE_ATTRS_DELEG"},
{ 0, NULL }
};
@@ -8166,10 +8188,12 @@ dissect_nfs4_open_delegation(tvbuff_t *tvb, int offset, packet_info *pinfo,
break;
case OPEN_DELEGATE_READ:
+ case OPEN_DELEGATE_READ_ATTRS_DELEG:
offset = dissect_nfs4_open_read_delegation(tvb, offset, pinfo, newftree);
break;
case OPEN_DELEGATE_WRITE:
+ case OPEN_DELEGATE_WRITE_ATTRS_DELEG:
offset = dissect_nfs4_open_write_delegation(tvb, offset, pinfo, newftree);
break;
case OPEN_DELEGATE_NONE_EXT:
@@ -12280,6 +12304,11 @@ proto_register_nfs(void)
"nfs.want_push_deleg_when_uncontended", FT_BOOLEAN, 32,
TFS(&tfs_set_notset), OPEN4_SHARE_ACCESS_WANT_PUSH_DELEG_WHEN_UNCONTENDED, NULL, HFILL }},
+ { &hf_nfs4_want_deleg_timestamps, {
+ "want_deleg_timestamps",
+ "nfs.want_deleg_timestamps", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), OPEN4_SHARE_ACCESS_WANT_DELEG_TIMESTAMPS, NULL, HFILL }},
+
{ &hf_nfs4_seqid, {
"seqid", "nfs.seqid", FT_UINT32, BASE_HEX,
NULL, 0, "Sequence ID", HFILL }},
@@ -12698,6 +12727,10 @@ proto_register_nfs(void)
"fattr4_xattr_support", "nfs.fattr4_xattr_support", FT_BOOLEAN, BASE_NONE,
TFS(&tfs_yes_no), 0x0, NULL, HFILL }},
+ { &hf_nfs4_fattr_offline, {
+ "fattr4_offline", "nfs.fattr4_offline", FT_BOOLEAN, BASE_NONE,
+ TFS(&tfs_yes_no), 0x0, NULL, HFILL }},
+
{ &hf_nfs4_fattr_security_label_pi, {
"policy_id", "nfs.fattr4.security_label.pi", FT_UINT32, BASE_DEC,
NULL, 0, NULL, HFILL }},