[pnfs] wireshark
J. Bruce Fields
bfields at fieldses.org
Wed May 28 15:10:06 EDT 2008
On Mon, May 26, 2008 at 09:13:20AM +0200, Tigran Mkrtchyan wrote:
>
> Hi Bruce et al,
>
>
> finally I got all staff as you want - one fix per commit.
> The patches itself mostly from Robert Gordon - I did code review and
> make them 'Bruce complaint' :) .
Yipes, OK, thanks for the work! On a quick glance they certainly seem
nice. Could you bug me again if I haven't handled these by next week?
--b.
>
>
> Regards,
> Tigran.
>
>
>
> J. Bruce Fields wrote:
>> At Connectathon I think you had a few more patches for wireshark?
>>
>> No rush, I just want to make sure we don't forget forever.... Whenever
>> you've got something I'll take a look, bundle it up with the stuff you
>> and/or Benny sent before, and pass it along to the wireshark people.
>>
>> What I've currently got is in
>>
>> git://linux-nfs.org/~bfields/wireshark.git
>>
>> in the branch named "master".
>>
>> Hope all's well there.
>>
>> --b.
>
> --
> ________________________________________________________________________
> Tigran Mkrtchyan DESY, IT,
> tigran.mkrtchyan at desy.de Notkestrasse 85,
> Tel: + 49 40 89983946 Hamburg 22607,
> Fax: + 49 40 89984429 Germany.
> >From aa6ab2d4377c3e837eee53f7b2340762629c2792 Mon Sep 17 00:00:00 2001
> From: Tigran Mkrtchyan <tigran.mkrtchyan at desy.de>
> Date: Sat, 24 May 2008 22:47:39 +0200
> Subject: [PATCH 01/12] added definitions for: NFS4_OP_BACKCHANNEL_CTL NFS4_OP_BIND_CONN_TO_SESSION
>
> ---
> epan/dissectors/packet-nfs.h | 44 ++++++++++++++++++++++++++---------------
> 1 files changed, 28 insertions(+), 16 deletions(-)
>
> diff --git a/epan/dissectors/packet-nfs.h b/epan/dissectors/packet-nfs.h
> index b569341..dd0fa71 100644
> --- a/epan/dissectors/packet-nfs.h
> +++ b/epan/dissectors/packet-nfs.h
> @@ -104,20 +104,33 @@
> #define NFS4_OP_VERIFY 37
> #define NFS4_OP_WRITE 38
> #define NFS4_OP_RELEASE_LOCKOWNER 39
> +
> /* Minor version 1 */
> -#define NFS4_OP_EXCHANGE_ID 42
> -#define NFS4_OP_CREATE_SESSION 43
> -#define NFS4_OP_DESTROY_SESSION 44
> -#define NFS4_OP_GETDEVINFO 47
> -#define NFS4_OP_GETDEVLIST 48
> -#define NFS4_OP_LAYOUTCOMMIT 49
> -#define NFS4_OP_LAYOUTGET 50
> -#define NFS4_OP_LAYOUTRETURN 51
> -#define NFS4_OP_SEQUENCE 53
> -#define NFS4_OP_NOTIFYDS 60
> -#define NFS4_OP_PNFS_CREATE 61
> -#define NFS4_OP_PNFS_WRITE 62
> -#define NFS4_OP_PNFS_READ 63
> +#define NFS4_OP_BACKCHANNEL_CTL 40
> +#define NFS4_OP_BIND_CONN_TO_SESSION 41
> +#define NFS4_OP_EXCHANGE_ID 42
> +#define NFS4_OP_CREATE_SESSION 43
> +#define NFS4_OP_DESTROY_SESSION 44
> +#define NFS4_OP_FREE_STATEID 45
> +#define NFS4_OP_GET_DIR_DELEGATION 46
> +#define NFS4_OP_GETDEVINFO 47
> +#define NFS4_OP_GETDEVLIST 48
> +#define NFS4_OP_LAYOUTCOMMIT 49
> +#define NFS4_OP_LAYOUTGET 50
> +#define NFS4_OP_LAYOUTRETURN 51
> +#define NFS4_OP_SECINFO_NO_NAME 52
> +#define NFS4_OP_SEQUENCE 53
> +#define NFS4_OP_SET_SSV 54
> +#define NFS4_OP_TEST_STATEID 55
> +#define NFS4_OP_WANT_DELEGATION 56
> +#define NFS4_OP_DESTROY_CLIENTID 57
> +#define NFS4_OP_RECLAIM_COMPLETE 58
> +
> +/* Not part of the IEFT draft specification */
> +#define NFS4_OP_NOTIFYDS 60
> +#define NFS4_OP_PNFS_CREATE 61
> +#define NFS4_OP_PNFS_WRITE 62
> +#define NFS4_OP_PNFS_READ 63
>
> #define NFS4_OP_ILLEGAL 10044
>
> @@ -138,7 +151,7 @@ extern int dissect_fhandle(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_
> extern int dissect_nfs_fh3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree,
> const char *name, guint32 *hash);
>
> -int dissect_nfs_post_op_attr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree,
> +int dissect_nfs_post_op_attr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree,
> const char* name);
>
> void nfs_name_snoop_add_name(int xid, tvbuff_t *tvb, int name_offset, int name_len, int parent_offset, int parent_len, unsigned char *name);
> @@ -155,7 +168,7 @@ void dissect_fhandle_hidden(packet_info *pinfo, proto_tree *tree, int frame);
> typedef int (diss_p)(tvbuff_t *tvb, int offset, proto_tree *tree, int hf);
>
> /* Used in packet-nfsacl.c for NFS_ACL dissection */
> -extern int dissect_fattr(tvbuff_t *tvb, int offset, proto_tree *tree,
> +extern int dissect_fattr(tvbuff_t *tvb, int offset, proto_tree *tree,
> const char* name);
>
> extern int dissect_access(tvbuff_t *tvb, int offset, proto_tree *tree,
> @@ -165,4 +178,3 @@ extern gint default_nfs_fhandle_type;
> extern gint hf_nfs_nfsstat;
>
> #endif /* packet-nfs.h */
> -
> --
> 1.5.5.1.211.g65ea3
>
> >From 26b732189a788b735730d8b95ad5eb26df91b1db Mon Sep 17 00:00:00 2001
> From: Tigran Mkrtchyan <tigran.mkrtchyan at desy.de>
> Date: Sat, 24 May 2008 22:51:44 +0200
> Subject: [PATCH 02/12] removed traing spaces
>
> ---
> epan/dissectors/packet-nfs.c | 212 +++++++++++++++++++++---------------------
> 1 files changed, 106 insertions(+), 106 deletions(-)
>
> diff --git a/epan/dissectors/packet-nfs.c b/epan/dissectors/packet-nfs.c
> index ffaef77..a816f55 100644
> --- a/epan/dissectors/packet-nfs.c
> +++ b/epan/dissectors/packet-nfs.c
> @@ -1310,7 +1310,7 @@ dissect_fhandle_data_NETAPP(tvbuff_t* tvb, packet_info *pinfo _U_, proto_tree *t
> guint32 fsid = tvb_get_letohl(tvb, offset + 20);
> guint32 export = tvb_get_letohl(tvb, offset + 24);
> guint32 export_snapgen = tvb_get_letohl(tvb, offset + 28);
> -
> +
> proto_item *item;
> proto_tree *subtree;
> char *flag_string;
> @@ -1381,7 +1381,7 @@ dissect_fhandle_data_NETAPP_V4(tvbuff_t* tvb, packet_info *pinfo _U_, proto_tree
> guint32 fileid, snapgen, generation, fsid;
> guint32 handle_type = tvb_get_ntohl(tvb, offset + 24);
> guint32 inum = tvb_get_ntohl(tvb, offset + 12);
> -
> +
> const char *handle_string=NULL;
> const char *handle_type_strings [] = { "NORMAL",
> "UNEXP",
> @@ -1392,11 +1392,11 @@ dissect_fhandle_data_NETAPP_V4(tvbuff_t* tvb, packet_info *pinfo _U_, proto_tree
> };
>
> char *flag_string;
> - const char *strings[] = { " MNT_PNT",
> - " SNAPDIR",
> + const char *strings[] = { " MNT_PNT",
> + " SNAPDIR",
> " SNAPDIR_ENT",
> - " EMPTY",
> - " VBN_ACCESS",
> + " EMPTY",
> + " VBN_ACCESS",
> " MULTIVOLUME",
> " METADATA",
> " ORPHAN",
> @@ -1449,7 +1449,7 @@ dissect_fhandle_data_NETAPP_V4(tvbuff_t* tvb, packet_info *pinfo _U_, proto_tree
> flag_string[512-1] = '\0';
> item = proto_tree_add_text(tree, tvb, offset + 0, 8, "export (inode %u)", fileid);
> subtree = proto_item_add_subtree(item, ett_nfsv4_fh_export);
> -
> +
> item = proto_tree_add_uint(subtree, hf_nfs_fh_export_fileid,
> tvb, offset + 0, 4, fileid);
> item = proto_tree_add_uint(subtree, hf_nfs_fh_export_generation,
> @@ -1523,7 +1523,7 @@ dissect_fhandle_data_NETAPP_GX_v3(tvbuff_t* tvb, packet_info *pinfo _U_, proto_t
> guint8 utility;
> guint8 volcnt;
> guint32 offset = 0;
> -
> +
> if (tree) {
> /* = utility = */
> utility = tvb_get_guint8(tvb, offset);
> @@ -1534,47 +1534,47 @@ dissect_fhandle_data_NETAPP_GX_v3(tvbuff_t* tvb, packet_info *pinfo _U_, proto_t
>
> field_tree = proto_item_add_subtree(tf, ett_nfs_gxfh3_utlfield);
> if (utility & NFS3GX_FH_TREE_MASK) {
> - proto_tree_add_uint(field_tree, hf_gxfh3_utlfield_tree_w, tvb,
> + proto_tree_add_uint(field_tree, hf_gxfh3_utlfield_tree_w, tvb,
> offset, 1, utility);
> }
> else {
> - proto_tree_add_uint(field_tree, hf_gxfh3_utlfield_tree_r, tvb,
> + proto_tree_add_uint(field_tree, hf_gxfh3_utlfield_tree_r, tvb,
> offset, 1, utility);
> }
> if (utility & NFS3GX_FH_JUN_MASK) {
> - proto_tree_add_uint(field_tree, hf_gxfh3_utlfield_jun, tvb,
> + proto_tree_add_uint(field_tree, hf_gxfh3_utlfield_jun, tvb,
> offset, 1, utility);
> }
> else {
> - proto_tree_add_uint(field_tree, hf_gxfh3_utlfield_jun_not, tvb,
> + proto_tree_add_uint(field_tree, hf_gxfh3_utlfield_jun_not, tvb,
> offset, 1, utility);
> }
> - proto_tree_add_uint(field_tree, hf_gxfh3_utlfield_ver, tvb,
> + proto_tree_add_uint(field_tree, hf_gxfh3_utlfield_ver, tvb,
> offset, 1, utility);
>
> /* = volume count== */
> - volcnt = tvb_get_guint8(tvb, offset+1);
> + volcnt = tvb_get_guint8(tvb, offset+1);
> proto_tree_add_uint_format(tree, hf_gxfh3_volcnt, tvb,
> offset+1, 1, volcnt,
> " volume count: 0x%02x (%d)", volcnt, volcnt);
> /* = epoch = */
> - epoch = tvb_get_letohs(tvb, offset+2);
> + epoch = tvb_get_letohs(tvb, offset+2);
> proto_tree_add_uint_format(tree, hf_gxfh3_epoch, tvb,
> offset+2, 2, epoch,
> " epoch: 0x%04x (%u)", epoch, epoch);
> /* = spin file handle = */
> - local_dsid = tvb_get_letohl(tvb, offset+4);
> - cluster_id = tvb_get_letohs(tvb, offset+8);
> - reserved = tvb_get_guint8(tvb, offset+10);
> - flags = tvb_get_guint8(tvb, offset+11);
> - spinfile_id = tvb_get_letohl(tvb, offset+12);
> - spinfile_uid = tvb_get_letohl(tvb, offset+16);
> -
> - tf = proto_tree_add_text(tree, tvb, offset+4, 16,
> + local_dsid = tvb_get_letohl(tvb, offset+4);
> + cluster_id = tvb_get_letohs(tvb, offset+8);
> + reserved = tvb_get_guint8(tvb, offset+10);
> + flags = tvb_get_guint8(tvb, offset+11);
> + spinfile_id = tvb_get_letohl(tvb, offset+12);
> + spinfile_uid = tvb_get_letohl(tvb, offset+16);
> +
> + tf = proto_tree_add_text(tree, tvb, offset+4, 16,
> " spin file handle");
> field_tree = proto_item_add_subtree(tf, ett_nfs_gxfh3_sfhfield);
>
> - proto_tree_add_uint_format(field_tree, hf_gxfh3_ldsid, tvb,
> + proto_tree_add_uint_format(field_tree, hf_gxfh3_ldsid, tvb,
> offset+4, 4, local_dsid,
> " local dsid: 0x%08x (%u)", local_dsid, local_dsid);
> proto_tree_add_uint_format(field_tree, hf_gxfh3_cid, tvb,
> @@ -1589,49 +1589,49 @@ dissect_fhandle_data_NETAPP_GX_v3(tvbuff_t* tvb, packet_info *pinfo _U_, proto_t
> offset+11, 1, utility,
> " flags: 0x%02x", flags);
> field_tree = proto_item_add_subtree(tf, ett_nfs_gxfh3_sfhflags);
> - proto_tree_add_uint(field_tree, hf_gxfh3_sfhflags_resv1, tvb,
> + proto_tree_add_uint(field_tree, hf_gxfh3_sfhflags_resv1, tvb,
> offset+11, 1, flags);
> - proto_tree_add_uint(field_tree, hf_gxfh3_sfhflags_resv2, tvb,
> + proto_tree_add_uint(field_tree, hf_gxfh3_sfhflags_resv2, tvb,
> offset+11, 1, flags);
>
> if (flags & SPINNP_FH_FLAG_ONTAP_MASK) {
> - proto_tree_add_uint(field_tree, hf_gxfh3_sfhflags_ontap7G, tvb,
> + proto_tree_add_uint(field_tree, hf_gxfh3_sfhflags_ontap7G, tvb,
> offset+11, 1, flags);
> }
> else {
> - proto_tree_add_uint(field_tree, hf_gxfh3_sfhflags_ontapGX, tvb,
> + proto_tree_add_uint(field_tree, hf_gxfh3_sfhflags_ontapGX, tvb,
> offset+11, 1, flags);
> }
> - proto_tree_add_boolean(field_tree, hf_gxfh3_sfhflags_striped, tvb,
> + proto_tree_add_boolean(field_tree, hf_gxfh3_sfhflags_striped, tvb,
> offset+11, 1, flags);
> - proto_tree_add_boolean(field_tree, hf_gxfh3_sfhflags_empty, tvb,
> + proto_tree_add_boolean(field_tree, hf_gxfh3_sfhflags_empty, tvb,
> offset+11, 1, flags);
> - proto_tree_add_boolean(field_tree, hf_gxfh3_sfhflags_snapdirent, tvb,
> + proto_tree_add_boolean(field_tree, hf_gxfh3_sfhflags_snapdirent, tvb,
> offset+11, 1, flags);
> - proto_tree_add_boolean(field_tree, hf_gxfh3_sfhflags_snapdir, tvb,
> + proto_tree_add_boolean(field_tree, hf_gxfh3_sfhflags_snapdir, tvb,
> offset+11, 1, flags);
> - proto_tree_add_boolean(field_tree, hf_gxfh3_sfhflags_streamdir, tvb,
> + proto_tree_add_boolean(field_tree, hf_gxfh3_sfhflags_streamdir, tvb,
> offset+11, 1, flags);
> - proto_tree_add_uint_format(field_tree, hf_gxfh3_spinfid, tvb,
> + proto_tree_add_uint_format(field_tree, hf_gxfh3_spinfid, tvb,
> offset+12, 4, spinfile_id,
> "spin file id: 0x%08x (%u)", spinfile_id, spinfile_id);
> - proto_tree_add_uint_format(field_tree, hf_gxfh3_spinfuid, tvb,
> + proto_tree_add_uint_format(field_tree, hf_gxfh3_spinfuid, tvb,
> offset+16, 4, spinfile_id,
> "spin file unique id: 0x%08x (%u)", spinfile_uid, spinfile_uid);
>
> - /* = spin file handle (mount point) = */
> - local_dsid = tvb_get_letohl(tvb, offset+20);
> - cluster_id = tvb_get_letohs(tvb, offset+24);
> - reserved = tvb_get_guint8(tvb, offset+26);
> - flags = tvb_get_guint8(tvb, offset+27);
> - spinfile_id = tvb_get_letohl(tvb, offset+28);
> - spinfile_uid = tvb_get_letohl(tvb, offset+32);
> + /* = spin file handle (mount point) = */
> + local_dsid = tvb_get_letohl(tvb, offset+20);
> + cluster_id = tvb_get_letohs(tvb, offset+24);
> + reserved = tvb_get_guint8(tvb, offset+26);
> + flags = tvb_get_guint8(tvb, offset+27);
> + spinfile_id = tvb_get_letohl(tvb, offset+28);
> + spinfile_uid = tvb_get_letohl(tvb, offset+32);
>
> - tf = proto_tree_add_text(tree, tvb, offset+20, 16,
> + tf = proto_tree_add_text(tree, tvb, offset+20, 16,
> " spin (mount point) file handle");
> field_tree = proto_item_add_subtree(tf, ett_nfs_gxfh3_sfhfield);
>
> - proto_tree_add_uint_format(field_tree, hf_gxfh3_ldsid, tvb,
> + proto_tree_add_uint_format(field_tree, hf_gxfh3_ldsid, tvb,
> offset+20, 4, local_dsid,
> " local dsid: 0x%08x (%u)", local_dsid, local_dsid);
> proto_tree_add_uint_format(field_tree, hf_gxfh3_cid, tvb,
> @@ -1646,44 +1646,44 @@ dissect_fhandle_data_NETAPP_GX_v3(tvbuff_t* tvb, packet_info *pinfo _U_, proto_t
> offset+27, 1, utility,
> " flags: 0x%02x", flags);
> field_tree = proto_item_add_subtree(tf, ett_nfs_gxfh3_sfhflags);
> - proto_tree_add_uint(field_tree, hf_gxfh3_sfhflags_resv1, tvb,
> + proto_tree_add_uint(field_tree, hf_gxfh3_sfhflags_resv1, tvb,
> offset+27, 1, flags);
> - proto_tree_add_uint(field_tree, hf_gxfh3_sfhflags_resv2, tvb,
> + proto_tree_add_uint(field_tree, hf_gxfh3_sfhflags_resv2, tvb,
> offset+27, 1, flags);
>
> if (flags & SPINNP_FH_FLAG_ONTAP_MASK) {
> - proto_tree_add_uint(field_tree, hf_gxfh3_sfhflags_ontap7G, tvb,
> + proto_tree_add_uint(field_tree, hf_gxfh3_sfhflags_ontap7G, tvb,
> offset+27, 1, flags);
> - }
> + }
> else {
> - proto_tree_add_uint(field_tree, hf_gxfh3_sfhflags_ontapGX, tvb,
> + proto_tree_add_uint(field_tree, hf_gxfh3_sfhflags_ontapGX, tvb,
> offset+27, 1, flags);
> }
> - proto_tree_add_boolean(field_tree, hf_gxfh3_sfhflags_striped, tvb,
> + proto_tree_add_boolean(field_tree, hf_gxfh3_sfhflags_striped, tvb,
> offset+27, 1, flags);
> - proto_tree_add_boolean(field_tree, hf_gxfh3_sfhflags_empty, tvb,
> + proto_tree_add_boolean(field_tree, hf_gxfh3_sfhflags_empty, tvb,
> offset+27, 1, flags);
> - proto_tree_add_boolean(field_tree, hf_gxfh3_sfhflags_snapdirent, tvb,
> + proto_tree_add_boolean(field_tree, hf_gxfh3_sfhflags_snapdirent, tvb,
> offset+27, 1, flags);
> - proto_tree_add_boolean(field_tree, hf_gxfh3_sfhflags_snapdir, tvb,
> + proto_tree_add_boolean(field_tree, hf_gxfh3_sfhflags_snapdir, tvb,
> offset+27, 1, flags);
> - proto_tree_add_boolean(field_tree, hf_gxfh3_sfhflags_streamdir, tvb,
> + proto_tree_add_boolean(field_tree, hf_gxfh3_sfhflags_streamdir, tvb,
> offset+27, 1, flags);
> - proto_tree_add_uint_format(field_tree, hf_gxfh3_spinfid, tvb,
> + proto_tree_add_uint_format(field_tree, hf_gxfh3_spinfid, tvb,
> offset+28, 4, spinfile_id,
> "spin file id: 0x%08x (%u)", spinfile_id, spinfile_id);
> - proto_tree_add_uint_format(field_tree, hf_gxfh3_spinfuid, tvb,
> + proto_tree_add_uint_format(field_tree, hf_gxfh3_spinfuid, tvb,
> offset+32, 4, spinfile_id,
> - "spin file unique id: 0x%08x (%u)", spinfile_uid, spinfile_uid);
> - /* = export point id = */
> - export_id = tvb_get_letohl(tvb, offset+36);
> - export_uid = tvb_get_letohl(tvb, offset+40);
> - proto_tree_add_uint_format(tree, hf_gxfh3_exportptid, tvb,
> + "spin file unique id: 0x%08x (%u)", spinfile_uid, spinfile_uid);
> + /* = export point id = */
> + export_id = tvb_get_letohl(tvb, offset+36);
> + export_uid = tvb_get_letohl(tvb, offset+40);
> + proto_tree_add_uint_format(tree, hf_gxfh3_exportptid, tvb,
> offset+36, 4, spinfile_id,
> " export point id: 0x%08x (%u)", export_id, export_id);
> - /* = export point unique id = */
> - export_uid = tvb_get_letohl(tvb, offset+40);
> - proto_tree_add_uint_format(tree, hf_gxfh3_exportptuid, tvb,
> + /* = export point unique id = */
> + export_uid = tvb_get_letohl(tvb, offset+40);
> + proto_tree_add_uint_format(tree, hf_gxfh3_exportptuid, tvb,
> offset+40, 4, spinfile_id,
> " export point unique id: 0x%08x (%u)", export_uid, export_uid);
>
> @@ -1743,7 +1743,7 @@ dissect_fhandle_data_LINUX_KNFSD_NEW(tvbuff_t* tvb, packet_info *pinfo _U_, prot
> {
> proto_tree* encoding_tree = proto_item_add_subtree(encoding_item,
> ett_nfs_fh_encoding);
> -
> +
> proto_tree_add_uint(encoding_tree, hf_nfs_fh_auth_type,
> tvb, offset+1, 1, auth_type);
> proto_tree_add_uint(encoding_tree, hf_nfs_fh_fsid_type,
> @@ -1832,7 +1832,7 @@ dissect_fhandle_data_LINUX_KNFSD_NEW(tvbuff_t* tvb, packet_info *pinfo _U_, prot
> {
> proto_tree* fileid_tree = proto_item_add_subtree(
> fileid_item, ett_nfs_fh_fn);
> -
> +
> proto_tree_add_uint(fileid_tree, hf_nfs_fh_fn_inode,
> tvb, offset+0, 4, inode);
> proto_tree_add_uint(fileid_tree, hf_nfs_fh_fn_generation,
> @@ -3438,7 +3438,7 @@ dissect_specdata3(tvbuff_t *tvb, int offset, proto_tree *tree, const char* name)
> if (tree) {
> specdata3_item = proto_tree_add_text(tree, tvb, offset, 8,
> "%s: %u,%u", name, specdata1, specdata2);
> -
> +
> specdata3_tree = proto_item_add_subtree(specdata3_item,
> ett_nfs_specdata3);
>
> @@ -3472,7 +3472,7 @@ dissect_nfs_fh3(tvbuff_t *tvb, int offset, packet_info *pinfo,
> if (tree) {
> fitem = proto_tree_add_text(tree, tvb, offset, 4+fh3_len_full,
> "%s", name);
> -
> +
> ftree = proto_item_add_subtree(fitem, ett_nfs_fh3);
> }
>
> @@ -3857,7 +3857,7 @@ dissect_set_mode3(tvbuff_t *tvb, int offset, proto_tree *tree, const char* name)
>
> if (tree) {
> set_it_name = val_to_str(set_it,value_follows,"Unknown");
> -
> +
> set_mode3_item = proto_tree_add_text(tree, tvb, offset, -1,
> "%s: %s", name, set_it_name);
> set_mode3_tree = proto_item_add_subtree(set_mode3_item,
> @@ -3989,7 +3989,7 @@ dissect_set_size3(tvbuff_t *tvb, int offset, proto_tree *tree, const char* name)
>
> if (tree) {
> set_it_name = val_to_str(set_it,value_follows,"Unknown");
> -
> +
> set_size3_item = proto_tree_add_text(tree, tvb, offset, -1,
> "%s: %s", name, set_it_name);
> set_size3_tree = proto_item_add_subtree(set_size3_item,
> @@ -4047,7 +4047,7 @@ dissect_set_atime(tvbuff_t *tvb, int offset, proto_tree *tree, const char* name)
>
> if (tree) {
> set_it_name = val_to_str(set_it,time_how,"Unknown");
> -
> +
> set_atime_item = proto_tree_add_text(tree, tvb, offset, -1,
> "%s: %s", name, set_it_name);
> set_atime_tree = proto_item_add_subtree(set_atime_item,
> @@ -5567,7 +5567,7 @@ dissect_nfs3_fsinfo_reply(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
>
> properties_tree = proto_item_add_subtree(properties_item,
> ett_nfs_fsinfo_properties);
> -
> +
> proto_tree_add_text(properties_tree, tvb,
> offset, 4, "%s",
> decode_boolean_bitfield(properties,
> @@ -6210,7 +6210,7 @@ dissect_nfs_fh4(tvbuff_t *tvb, int offset, packet_info *pinfo,
> }
>
> static int
> -dissect_nfs_server4(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
> +dissect_nfs_server4(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
> {
> return dissect_nfs_utf8string(tvb, offset, tree, hf_nfs_server, NULL);
> }
> @@ -6290,7 +6290,7 @@ dissect_nfs_fattr4_fh_expire_type(tvbuff_t *tvb, int offset, proto_tree *tree)
> {
> expire_type_item = proto_tree_add_text(tree, tvb, offset, 4,
> "fattr4_fh_expire_type: 0x%08x", expire_type);
> -
> +
> expire_type_tree = proto_item_add_subtree(expire_type_item,
> ett_nfs_fattr4_fh_expire_type);
> }
> @@ -6794,7 +6794,7 @@ dissect_nfs_attributes(tvbuff_t *tvb, int offset, packet_info *pinfo,
> attr_vals_offset, attr_newftree, "settime4");
> break;
> case FATTR4_MOUNTED_ON_FILEID:
> - attr_vals_offset = dissect_rpc_uint64(tvb, attr_newftree,
> + attr_vals_offset = dissect_rpc_uint64(tvb, attr_newftree,
> hf_nfs_fattr4_mounted_on_fileid, attr_vals_offset);
> break;
>
> @@ -8010,11 +8010,11 @@ dissect_nfs_argop4(tvbuff_t *tvb, int offset, packet_info *pinfo,
> {
> opcode = tvb_get_ntohl(tvb, offset);
> if (check_col(pinfo->cinfo, COL_INFO)) {
> - col_append_fstr(pinfo->cinfo, COL_INFO, "%c%s",
> + col_append_fstr(pinfo->cinfo, COL_INFO, "%c%s",
> ops_counter==0?' ':';',
> val_to_str(opcode, names_nfsv4_operation, "Unknown"));
> }
> -
> +
>
> fitem = proto_tree_add_uint(ftree, hf_nfs_argop4, tvb, offset, 4,
> opcode);
> @@ -8242,7 +8242,7 @@ dissect_nfs_argop4(tvbuff_t *tvb, int offset, packet_info *pinfo,
> proto_tree *callback_tree = NULL;
>
> fitem = proto_tree_add_text(newftree, tvb, offset, 0, "client");
> -
> +
> client_tree = proto_item_add_subtree(fitem, ett_nfs_client_id4);
>
> offset = dissect_nfs_client_id4(tvb, offset, client_tree);
> @@ -8478,7 +8478,7 @@ dissect_nfs_resop4(tvbuff_t *tvb, int offset, packet_info *pinfo,
> break;
>
> if (check_col(pinfo->cinfo, COL_INFO)) {
> - col_append_fstr(pinfo->cinfo, COL_INFO, "%c%s",
> + col_append_fstr(pinfo->cinfo, COL_INFO, "%c%s",
> ops_counter==0?' ':';',
> val_to_str(opcode, names_nfsv4_operation, "Unknown"));
> }
> @@ -9596,8 +9596,8 @@ proto_register_nfs(void)
> NULL, 0, NULL, HFILL }},
>
> { &hf_nfs_fslocation4, {
> - "fs_location4", "nfs.fattr4.fs_location", FT_STRING, BASE_DEC,
> - NULL, 0, NULL, HFILL }},
> + "fs_location4", "nfs.fattr4.fs_location", FT_STRING, BASE_DEC,
> + NULL, 0, NULL, HFILL }},
>
> { &hf_nfs_fattr4_owner, {
> "fattr4_owner", "nfs.fattr4_owner", FT_STRING, BASE_DEC,
> @@ -9782,7 +9782,7 @@ proto_register_nfs(void)
> { &hf_nfs_fattr4_space_used, {
> "space_used", "nfs.fattr4.space_used", FT_UINT64, BASE_DEC,
> NULL, 0, NULL, HFILL }},
> -
> +
> { &hf_nfs_fattr4_mounted_on_fileid, {
> "fileid", "nfs.fattr4.mounted_on_fileid", FT_UINT64, BASE_HEX,
> NULL, 0, NULL, HFILL }},
> @@ -9962,51 +9962,51 @@ proto_register_nfs(void)
> { &hf_gxfh3_utlfield, {
> "utility", "nfs.gxfh3.utility", FT_UINT8, BASE_HEX,
> NULL, 0, NULL, HFILL }},
> -
> +
> { &hf_gxfh3_utlfield_tree_r, {
> "tree R", "nfs.gxfh3.utlfield.treeR", FT_UINT8, BASE_HEX,
> NULL, NFS3GX_FH_TREE_MASK, NULL, HFILL }},
> -
> +
> { &hf_gxfh3_utlfield_tree_w, {
> "tree W", "nfs.gxfh3.utlfield.treeW", FT_UINT8, BASE_HEX,
> NULL, NFS3GX_FH_TREE_MASK, NULL, HFILL }},
> -
> +
> { &hf_gxfh3_utlfield_jun, {
> "broken junction", "nfs.gxfh3.utlfield.junction", FT_UINT8, BASE_HEX,
> NULL, NFS3GX_FH_JUN_MASK, NULL, HFILL }},
> -
> +
> { &hf_gxfh3_utlfield_jun_not, {
> "not broken junction", "nfs.gxfh3.utlfield.notjunction", FT_UINT8, BASE_HEX,
> NULL, NFS3GX_FH_JUN_MASK, NULL, HFILL }},
> -
> +
> { &hf_gxfh3_utlfield_ver, {
> "file handle version","nfs.gxfh3.utlfield.version", FT_UINT8, BASE_HEX,
> NULL, NFS3GX_FH_VER_MASK, NULL, HFILL }},
> -
> +
> { &hf_gxfh3_volcnt, {
> "volume count", "nfs.gxfh3.volcnt", FT_UINT8, BASE_HEX,
> NULL, 0, NULL, HFILL }},
> -
> +
> { &hf_gxfh3_epoch, {
> "epoch", "nfs.gxfh3.epoch", FT_UINT16, BASE_HEX,
> NULL, 0, NULL, HFILL }},
> -
> +
> { &hf_gxfh3_ldsid, {
> " local dsid", "nfs.gxfh3.ldsid", FT_UINT32, BASE_HEX,
> NULL, 0, NULL, HFILL }},
> -
> +
> { &hf_gxfh3_cid, {
> " cluster id", "nfs.gxfh3.cid", FT_UINT16, BASE_HEX,
> NULL, 0, NULL, HFILL }},
> -
> +
> { &hf_gxfh3_resv, {
> " reserved", "nfs.gxfh3.reserved", FT_UINT16, BASE_HEX,
> NULL, 0, NULL, HFILL }},
> -
> +
> { &hf_gxfh3_sfhflags, {
> " flags", "nfs.gxfh3.sfhflags", FT_UINT8, BASE_HEX,
> NULL, 0, NULL, HFILL }},
> -
> +
> { &hf_gxfh3_sfhflags_resv1, {
> "reserved", "nfs.gxfh3.sfhflags.reserve1", FT_UINT8, BASE_HEX,
> NULL, SPINNP_FH_FLAG_RESV1, NULL, HFILL }},
> @@ -10018,31 +10018,31 @@ proto_register_nfs(void)
> { &hf_gxfh3_sfhflags_ontap7G, {
> "ontap-7g", "nfs.gxfh3.sfhflags.ontap7g", FT_UINT8, BASE_HEX,
> NULL, SPINNP_FH_FLAG_ONTAP_MASK, NULL, HFILL }},
> -
> +
> { &hf_gxfh3_sfhflags_ontapGX, {
> "ontap-gx", "nfs.gxfh3.sfhflags.ontapgx", FT_UINT8, BASE_HEX,
> NULL, SPINNP_FH_FLAG_ONTAP_MASK, NULL, HFILL }},
> -
> +
> { &hf_gxfh3_sfhflags_striped, {
> "striped", "nfs.gxfh3.sfhflags.striped", FT_BOOLEAN, 8,
> TFS(&flags_set_truth), SPINNP_FH_FLAG_STRIPED_MASK, NULL, HFILL }},
> -
> +
> { &hf_gxfh3_sfhflags_empty, {
> - "empty", "nfs.gxfh3.sfhflags.empty", FT_BOOLEAN, 8,
> + "empty", "nfs.gxfh3.sfhflags.empty", FT_BOOLEAN, 8,
> TFS(&flags_set_truth), SPINNP_FH_FLAG_EMPTY_MASK, NULL, HFILL }},
> -
> +
> { &hf_gxfh3_sfhflags_snapdirent, {
> "snap dir ent", "nfs.gxfh3.sfhflags.snapdirent", FT_BOOLEAN, 8,
> TFS(&flags_set_truth), SPINNP_FH_FLAG_SNAPDIR_ENT_MASK, NULL, HFILL }},
> -
> +
> { &hf_gxfh3_sfhflags_snapdir, {
> "snap dir", "nfs.gxfh3.sfhflags.snapdir", FT_BOOLEAN, 8,
> TFS(&flags_set_truth), SPINNP_FH_FLAG_SNAPDIR_MASK, NULL, HFILL }},
> -
> +
> { &hf_gxfh3_sfhflags_streamdir, {
> "stream dir", "nfs.gxfh3.sfhflags.streamdir", FT_BOOLEAN, 8,
> TFS(&flags_set_truth), SPINNP_FH_FLAG_STREAMDIR_MASK, NULL, HFILL }},
> -
> +
> { &hf_gxfh3_spinfid, {
> "spin file id", "nfs.gxfh3.spinfid", FT_UINT32, BASE_HEX,
> NULL, 0, NULL, HFILL }},
> @@ -10050,7 +10050,7 @@ proto_register_nfs(void)
> { &hf_gxfh3_spinfuid, {
> "spin file unique id", "nfs.gxfh3.spinfuid", FT_UINT32, BASE_HEX,
> NULL, 0, NULL, HFILL }},
> -
> +
> { &hf_gxfh3_exportptid, {
> "export point id", "nfs.gxfh3.exportptid", FT_UINT32, BASE_HEX,
> NULL, 0, NULL, HFILL }},
> @@ -10487,7 +10487,7 @@ proto_reg_handoff_nfs(void)
>
> /* Register the protocol as RPC */
> rpc_init_prog(proto_nfs, NFS_PROGRAM, ett_nfs);
> -
> +
> /* Register the procedure tables */
> rpc_init_proc_table(NFS_PROGRAM, 2, nfs2_proc, hf_nfs_procedure_v2);
> rpc_init_proc_table(NFS_PROGRAM, 3, nfs3_proc, hf_nfs_procedure_v3);
> @@ -10507,13 +10507,13 @@ proto_reg_handoff_nfs(void)
>
> fhandle_handle=create_dissector_handle(dissect_fhandle_data_NETAPP, proto_nfs);
> dissector_add("nfs_fhandle.type", FHT_NETAPP, fhandle_handle);
> -
> +
> fhandle_handle=create_dissector_handle(dissect_fhandle_data_NETAPP_V4, proto_nfs);
> dissector_add("nfs_fhandle.type", FHT_NETAPP_V4, fhandle_handle);
>
> fhandle_handle=create_dissector_handle(dissect_fhandle_data_NETAPP_GX_v3, proto_nfs);
> dissector_add("nfs_fhandle.type", FHT_NETAPP_GX_V3, fhandle_handle);
> -
> +
> fhandle_handle=create_dissector_handle(dissect_fhandle_data_unknown, proto_nfs);
> dissector_add("nfs_fhandle.type", FHT_UNKNOWN, fhandle_handle);
>
> --
> 1.5.5.1.211.g65ea3
>
> >From e2a7414de3c3e8c2a51fbde31bf8ea9751962284 Mon Sep 17 00:00:00 2001
> From: Tigran Mkrtchyan <tigran.mkrtchyan at desy.de>
> Date: Sat, 24 May 2008 22:54:01 +0200
> Subject: [PATCH 03/12] fixed get_device_list according draft >= 19
>
> ---
> epan/dissectors/packet-nfs.c | 11 -----------
> 1 files changed, 0 insertions(+), 11 deletions(-)
>
> diff --git a/epan/dissectors/packet-nfs.c b/epan/dissectors/packet-nfs.c
> index a816f55..da7f994 100644
> --- a/epan/dissectors/packet-nfs.c
> +++ b/epan/dissectors/packet-nfs.c
> @@ -7812,20 +7812,9 @@ dissect_nfs_devicelist4(tvbuff_t *tvb, int offset, proto_tree *tree)
> count = tvb_get_ntohl(tvb, offset);
> offset = dissect_rpc_uint32(tvb, tree, hf_nfs_devicenum4, offset);
> for (i = 0; i < count; i++) {
> - int opaque_devs, dev_limit;
> offset = dissect_rpc_opaque_data(tvb, offset, tree, NULL,
> hf_nfs_deviceid4, TRUE, 16,
> FALSE, NULL, NULL);
> -
> -
> - offset = dissect_rpc_uint32(tvb, tree, hf_nfs_layouttype4, offset);
> -
> - opaque_devs = tvb_get_ntohl(tvb, offset);
> - offset += 4;
> - dev_limit = opaque_devs + offset;
> - while (offset < dev_limit) {
> - offset = dissect_nfs_devices4(tvb, offset, tree);
> - }
> }
> return offset;
> }
> --
> 1.5.5.1.211.g65ea3
>
> >From 1ee3544d7356fa4b5a72755533335a2cf9679aa9 Mon Sep 17 00:00:00 2001
> From: Tigran Mkrtchyan <tigran.mkrtchyan at desy.de>
> Date: Sat, 24 May 2008 22:57:20 +0200
> Subject: [PATCH 04/12] fixed device_addr4 decoding according draft >= 19
>
> ---
> epan/dissectors/packet-nfs.c | 3 +--
> 1 files changed, 1 insertions(+), 2 deletions(-)
>
> diff --git a/epan/dissectors/packet-nfs.c b/epan/dissectors/packet-nfs.c
> index da7f994..79a94c3 100644
> --- a/epan/dissectors/packet-nfs.c
> +++ b/epan/dissectors/packet-nfs.c
> @@ -7790,9 +7790,8 @@ dissect_nfs_devices4(tvbuff_t *tvb, int offset, proto_tree *tree)
> static int
> dissect_nfs_deviceaddr4(tvbuff_t *tvb, int offset, proto_tree *tree)
> {
> - /* No layout type - argh */
>
> - /* Assume file layout for now */
> + /* layout type */
> offset = dissect_rpc_uint32(tvb, tree, hf_nfs_layouttype4, offset);
>
> /* skip da_addr_body size */
> --
> 1.5.5.1.211.g65ea3
>
> >From 5946406235b4fa12305e4a967747edd83aa3ceb7 Mon Sep 17 00:00:00 2001
> From: Tigran Mkrtchyan <tigran.mkrtchyan at desy.de>
> Date: Sat, 24 May 2008 23:56:52 +0200
> Subject: [PATCH 05/12] fixed layoutget reply decode according to draft >= 19
>
> ---
> epan/dissectors/packet-nfs.c | 88 +++++++++++++++++++++++++++++-------------
> 1 files changed, 61 insertions(+), 27 deletions(-)
>
> diff --git a/epan/dissectors/packet-nfs.c b/epan/dissectors/packet-nfs.c
> index 79a94c3..37f9512 100644
> --- a/epan/dissectors/packet-nfs.c
> +++ b/epan/dissectors/packet-nfs.c
> @@ -408,6 +408,8 @@ static int hf_nfs_layout_count = -1;
> static int hf_nfs_pattern_offset = -1;
> static int hf_nfs_notification_bitmap4 = -1;
> static int hf_nfs_lrs_present = -1;
> +static int hf_nfs_nfl_util = -1;
> +static int hf_nfs_nfl_first_stripe_index = -1;
>
> /* Hidden field for v2, v3, and v4 status */
> int hf_nfs_nfsstat = -1;
> @@ -565,6 +567,8 @@ static gint ett_nfs_uid4 = -1;
> static gint ett_nfs_gid4 = -1;
> static gint ett_nfs_service4 = -1;
> static gint ett_nfs_sessionid4 = -1;
> +static gint ett_nfs_layoutseg = -1;
> +static gint ett_nfs_layoutseg_fh = -1;
>
> /* what type of fhandles shoudl we dissect as */
> static dissector_table_t nfs_fhandle_table;
> @@ -7946,31 +7950,58 @@ static int
> dissect_nfs_layout(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
> {
> guint layout_type;
> + guint fh_num;
> + guint lo_seg_count;
> + guint i, lo_seg;
> + proto_item *fitem;
> + proto_item *fh_fitem;
> + proto_tree *newtree = NULL;
> + proto_tree *fh_tree = NULL;
>
> - layout_type = tvb_get_ntohl(tvb, offset);
> - offset = dissect_rpc_uint32(tvb, tree, hf_nfs_layouttype4, offset);
> + lo_seg_count = tvb_get_ntohl(tvb, offset);
> +
> + fitem = proto_tree_add_text(tree, tvb, offset, 4,
> + "Layout Segment (count: %u)", lo_seg_count);
> + offset += 4;
> +
> + newtree = proto_item_add_subtree(fitem, ett_nfs_layoutseg);
> +
> + for (lo_seg = 0; lo_seg < lo_seg_count; lo_seg++) {
> + offset = dissect_rpc_uint64(tvb, newtree, hf_nfs_offset4, offset);
> + offset = dissect_rpc_uint64(tvb, newtree, hf_nfs_length4, offset);
>
> - if (layout_type == 1) { /* NFS Files */
> - guint num;
> - guint i;
> + offset = dissect_rpc_uint32(tvb, newtree, hf_nfs_iomode4, offset);
> +
> + layout_type = tvb_get_ntohl(tvb, offset);
> + offset = dissect_rpc_uint32(tvb, newtree, hf_nfs_layouttype4, offset);
> +
> + /* If not files layout type eat the rest and move on.. */
> + if (layout_type != 1) {
> + offset = dissect_nfsdata(tvb, offset, newtree, hf_nfs_layout4);
> + continue;
> + }
> +
> + /* NFS Files */
> offset += 4; /* Skip past opaque count */
> - offset = dissect_rpc_opaque_data(tvb, offset, tree, NULL,
> - hf_nfs_deviceid4, TRUE, 16,
> - FALSE, NULL, NULL);
>
> - offset = dissect_rpc_uint32(tvb, tree, hf_nfs_util4, offset);
> - offset = dissect_rpc_uint32(tvb, tree, hf_nfs_first_stripe_idx4, offset);
> - offset = dissect_rpc_uint64(tvb, tree, hf_nfs_pattern_offset, offset);
> + offset = dissect_rpc_opaque_data(tvb, offset, newtree, NULL,
> + hf_nfs_deviceid4, TRUE, 16, FALSE, NULL, NULL);
> +
> + offset = dissect_rpc_uint32(tvb, newtree, hf_nfs_nfl_util, offset);
> + offset = dissect_rpc_uint32(tvb, newtree, hf_nfs_nfl_first_stripe_index, offset);
> + offset = dissect_rpc_uint64(tvb, newtree, hf_nfs_offset4, offset);
> +
> + fh_num = tvb_get_ntohl(tvb, offset); /* Len of FH list */
>
> - num = tvb_get_ntohl(tvb, offset); /* Len of dev list */
> + fh_fitem = proto_tree_add_text(newtree, tvb, offset, 4,
> + "File Handles (count: %u)", fh_num);
> offset += 4;
> - for (i = 0; i < num; i++) {
> - offset = dissect_nfs_fh4(tvb, offset, pinfo, tree, "filehandle");
> +
> + fh_tree = proto_item_add_subtree(fh_fitem, ett_nfs_layoutseg_fh);
> + for (i = 0; i < fh_num; i++) {
> + offset = dissect_nfs_fh4(tvb, offset, pinfo, fh_tree, "lo_filehandle");
> }
> - } else {
> - offset = dissect_nfsdata(tvb, offset, tree, hf_nfs_layout4);
> }
> -
> return offset;
> }
>
> @@ -8439,7 +8470,7 @@ static int
> dissect_nfs_resop4(tvbuff_t *tvb, int offset, packet_info *pinfo,
> proto_tree *tree)
> {
> - guint32 ops, ops_counter, count;
> + guint32 ops, ops_counter;
> guint32 opcode;
> proto_item *fitem;
> proto_tree *ftree = NULL;
> @@ -8652,14 +8683,7 @@ dissect_nfs_resop4(tvbuff_t *tvb, int offset, packet_info *pinfo,
> offset = dissect_rpc_bool(tvb, newftree, hf_nfs_return_on_close4,
> offset);
> offset = dissect_nfs_stateid4(tvb, offset, newftree);
> - count = tvb_get_ntohl(tvb, offset);
> - offset = dissect_rpc_uint32(tvb, newftree, hf_nfs_layout_count, offset);
> - while (count-- > 0) {
> - offset = dissect_rpc_uint64(tvb, newftree, hf_nfs_offset4, offset);
> - offset = dissect_rpc_uint64(tvb, newftree, hf_nfs_length4, offset);
> - offset = dissect_rpc_uint32(tvb, newftree, hf_nfs_iomode4, offset);
> - offset = dissect_nfs_layout(tvb, offset, pinfo, newftree);
> - }
> + offset = dissect_nfs_layout(tvb, offset, pinfo, newftree);
> break;
>
> case NFS4_OP_LAYOUTCOMMIT:
> @@ -10148,6 +10172,14 @@ proto_register_nfs(void)
> "return on close?", "nfs.retclose4", FT_BOOLEAN, BASE_NONE,
> TFS(&tfs_yes_no), 0, NULL, HFILL }},
>
> + { &hf_nfs_nfl_util, {
> + "nfl_util", "nfs.nfl_util", FT_UINT32, BASE_HEX,
> + NULL, 0, NULL, HFILL }},
> +
> + { &hf_nfs_nfl_first_stripe_index, {
> + "first stripe to use index", "nfs.nfl_first_stripe_index", FT_UINT32, BASE_DEC,
> + NULL, 0, NULL, HFILL }},
> +
> { &hf_nfs_slotid4, {
> "slot ID", "nfs.slotid4", FT_UINT32, BASE_DEC,
> NULL, 0, NULL, HFILL }},
> @@ -10429,7 +10461,9 @@ proto_register_nfs(void)
> &ett_nfs_uid4,
> &ett_nfs_gid4,
> &ett_nfs_service4,
> - &ett_nfs_sessionid4
> + &ett_nfs_sessionid4,
> + &ett_nfs_layoutseg,
> + &ett_nfs_layoutseg_fh
> };
> module_t *nfs_module;
>
> --
> 1.5.5.1.211.g65ea3
>
> >From bfe801cb783b8a62788c08b15fbdae2ac2865ae2 Mon Sep 17 00:00:00 2001
> From: Tigran Mkrtchyan <tigran.mkrtchyan at desy.de>
> Date: Sun, 25 May 2008 00:26:36 +0200
> Subject: [PATCH 06/12] show nfs_lrf_body_content as an entity
>
> ---
> epan/dissectors/packet-nfs.c | 7 ++++++-
> 1 files changed, 6 insertions(+), 1 deletions(-)
>
> diff --git a/epan/dissectors/packet-nfs.c b/epan/dissectors/packet-nfs.c
> index 37f9512..af4a9e3 100644
> --- a/epan/dissectors/packet-nfs.c
> +++ b/epan/dissectors/packet-nfs.c
> @@ -410,6 +410,7 @@ static int hf_nfs_notification_bitmap4 = -1;
> static int hf_nfs_lrs_present = -1;
> static int hf_nfs_nfl_util = -1;
> static int hf_nfs_nfl_first_stripe_index = -1;
> +static int hf_nfs_lrf_body_content = -1;
>
> /* Hidden field for v2, v3, and v4 status */
> int hf_nfs_nfsstat = -1;
> @@ -7723,7 +7724,7 @@ dissect_nfs_layoutreturn4(tvbuff_t *tvb, int offset, proto_tree *tree)
> offset = dissect_rpc_uint64(tvb, tree, hf_nfs_offset4, offset);
> offset = dissect_rpc_uint64(tvb, tree, hf_nfs_length4, offset);
> offset = dissect_nfs_stateid4(tvb, offset, tree);
> - offset = dissect_nfsdata(tvb, offset, tree, hf_nfs_data);
> + offset = dissect_nfsdata(tvb, offset, tree, hf_nfs_lrf_body_content);
> }
>
> return offset;
> @@ -10083,6 +10084,10 @@ proto_register_nfs(void)
> "return type", "nfs.returntype", FT_UINT32, BASE_DEC,
> VALS(layoutreturn_names), 0, NULL, HFILL }},
>
> + { &hf_nfs_lrf_body_content, {
> + "lrf_body_content", "nfs.lrf_body_content", FT_BYTES, BASE_HEX,
> + NULL, 0, NULL, HFILL }},
> +
> { &hf_nfs_iomode4, {
> "IO mode", "nfs.iomode", FT_UINT32, BASE_DEC,
> VALS(iomode_names), 0, NULL, HFILL }},
> --
> 1.5.5.1.211.g65ea3
>
> >From e97937c17aef3541120abfb072fb010b4984b1b9 Mon Sep 17 00:00:00 2001
> From: Tigran Mkrtchyan <tigran.mkrtchyan at desy.de>
> Date: Sun, 25 May 2008 21:04:46 +0200
> Subject: [PATCH 07/12] do not re-use v4 createmode. define a v4.1 specific ones.
>
> ---
> 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
>
> >From 4b289b8b87ce45780c234699097208a87fb048c5 Mon Sep 17 00:00:00 2001
> From: Tigran Mkrtchyan <tigran.mkrtchyan at desy.de>
> Date: Sun, 25 May 2008 21:31:38 +0200
> Subject: [PATCH 08/12] complete list of nfsv4.1 ops
>
> ---
> epan/dissectors/packet-nfs.c | 83 ++++++++++++++++++++++++------------------
> 1 files changed, 47 insertions(+), 36 deletions(-)
>
> diff --git a/epan/dissectors/packet-nfs.c b/epan/dissectors/packet-nfs.c
> index ea4a446..80657fe 100644
> --- a/epan/dissectors/packet-nfs.c
> +++ b/epan/dissectors/packet-nfs.c
> @@ -7101,56 +7101,67 @@ dissect_nfs_stable_how4(tvbuff_t *tvb, int offset,
>
> static const value_string names_nfsv4_operation[] = {
> { NFS4_OP_ACCESS, "ACCESS" },
> - { NFS4_OP_CLOSE, "CLOSE" },
> + { NFS4_OP_CLOSE, "CLOSE" },
> { NFS4_OP_COMMIT, "COMMIT" },
> { NFS4_OP_CREATE, "CREATE" },
> { NFS4_OP_DELEGPURGE, "DELEGPURGE" },
> - { NFS4_OP_DELEGRETURN, "DELEGRETURN" },
> - { NFS4_OP_GETATTR, "GETATTR" },
> - { NFS4_OP_GETFH, "GETFH" },
> - { NFS4_OP_LINK, "LINK" },
> - { NFS4_OP_LOCK, "LOCK" },
> - { NFS4_OP_LOCKT, "LOCKT" },
> - { NFS4_OP_LOCKU, "LOCKU" },
> + { NFS4_OP_DELEGRETURN, "DELEGRETURN" },
> + { NFS4_OP_GETATTR, "GETATTR" },
> + { NFS4_OP_GETFH, "GETFH" },
> + { NFS4_OP_LINK, "LINK" },
> + { NFS4_OP_LOCK, "LOCK" },
> + { NFS4_OP_LOCKT, "LOCKT" },
> + { NFS4_OP_LOCKU, "LOCKU" },
> { NFS4_OP_LOOKUP, "LOOKUP" },
> - { NFS4_OP_LOOKUPP, "LOOKUPP" },
> - { NFS4_OP_NVERIFY, "NVERIFY" },
> - { NFS4_OP_OPEN, "OPEN" },
> - { NFS4_OP_OPENATTR, "OPENATTR" },
> + { NFS4_OP_LOOKUPP, "LOOKUPP" },
> + { NFS4_OP_NVERIFY, "NVERIFY" },
> + { NFS4_OP_OPEN, "OPEN" },
> + { NFS4_OP_OPENATTR, "OPENATTR" },
> { NFS4_OP_OPEN_CONFIRM, "OPEN_CONFIRM" },
> { NFS4_OP_OPEN_DOWNGRADE, "OPEN_DOWNGRADE" },
> - { NFS4_OP_PUTFH, "PUTFH" },
> - { NFS4_OP_PUTPUBFH, "PUTPUBFH" },
> + { NFS4_OP_PUTFH, "PUTFH" },
> + { NFS4_OP_PUTPUBFH, "PUTPUBFH" },
> { NFS4_OP_PUTROOTFH, "PUTROOTFH" },
> - { NFS4_OP_READ, "READ" },
> - { NFS4_OP_READDIR, "READDIR" },
> - { NFS4_OP_READLINK, "READLINK" },
> + { NFS4_OP_READ, "READ" },
> + { NFS4_OP_READDIR, "READDIR" },
> + { NFS4_OP_READLINK, "READLINK" },
> { NFS4_OP_REMOVE, "REMOVE" },
> { NFS4_OP_RENAME, "RENAME" },
> - { NFS4_OP_RENEW, "RENEW" },
> + { NFS4_OP_RENEW, "RENEW" },
> { NFS4_OP_RESTOREFH, "RESTOREFH" },
> { NFS4_OP_SAVEFH, "SAVEFH" },
> - { NFS4_OP_SECINFO, "SECINFO" },
> - { NFS4_OP_SETATTR, "SETATTR" },
> - { NFS4_OP_SETCLIENTID, "SETCLIENTID" },
> + { NFS4_OP_SECINFO, "SECINFO" },
> + { NFS4_OP_SETATTR, "SETATTR" },
> + { NFS4_OP_SETCLIENTID, "SETCLIENTID" },
> { NFS4_OP_SETCLIENTID_CONFIRM, "SETCLIENTID_CONFIRM" },
> { NFS4_OP_VERIFY, "VERIFY" },
> - { NFS4_OP_WRITE, "WRITE" },
> + { NFS4_OP_WRITE, "WRITE" },
> { NFS4_OP_RELEASE_LOCKOWNER, "RELEASE_LOCKOWNER" },
> - { NFS4_OP_EXCHANGE_ID, "EXCHANGE_ID" },
> - { NFS4_OP_CREATE_SESSION, "CREATE_SESSION" },
> - { NFS4_OP_DESTROY_SESSION, "DESTROY_SESSION" },
> - { NFS4_OP_SEQUENCE, "SEQUENCE" },
> - { NFS4_OP_GETDEVINFO, "GETDEVINFO"},
> - { NFS4_OP_GETDEVLIST, "GETDEVLIST"},
> - { NFS4_OP_LAYOUTCOMMIT, "LAYOUTCOMMIT" },
> - { NFS4_OP_LAYOUTGET, "LAYOUTGET" },
> - { NFS4_OP_LAYOUTRETURN, "LAYOUTRETURN" },
> - { NFS4_OP_NOTIFYDS, "PNFS_NOTIFYDS"},
> - { NFS4_OP_PNFS_CREATE, "PNFS_CREATE"},
> - { NFS4_OP_PNFS_WRITE, "PNFS_WRITE"},
> - { NFS4_OP_PNFS_READ, "PNFS_READ"},
> - { NFS4_OP_ILLEGAL, "ILLEGAL"},
> + { NFS4_OP_BACKCHANNEL_CTL, "BACKCHANNEL_CTL" },
> + { NFS4_OP_BIND_CONN_TO_SESSION, "BIND_CONN_TO_SESSION" },
> + { NFS4_OP_EXCHANGE_ID, "EXCHANGE_ID" },
> + { NFS4_OP_CREATE_SESSION, "CREATE_SESSION" },
> + { NFS4_OP_DESTROY_SESSION, "DESTROY_SESSION" },
> + { NFS4_OP_FREE_STATEID, "FREE_STATEID"},
> + { NFS4_OP_GET_DIR_DELEGATION, "GET_DIR_DELEGATION"},
> + { NFS4_OP_GETDEVINFO, "GETDEVINFO"},
> + { NFS4_OP_GETDEVLIST, "GETDEVLIST"},
> + { NFS4_OP_LAYOUTCOMMIT, "LAYOUTCOMMIT" },
> + { NFS4_OP_LAYOUTGET, "LAYOUTGET" },
> + { NFS4_OP_LAYOUTRETURN, "LAYOUTRETURN" },
> + { NFS4_OP_SECINFO_NO_NAME, "SECINFO_NO_NAME" },
> + { NFS4_OP_SEQUENCE, "SEQUENCE" },
> + { NFS4_OP_SET_SSV, "SET-SSV"},
> + { NFS4_OP_TEST_STATEID, "TEST-STATEID"},
> + { NFS4_OP_WANT_DELEGATION, "WANT-DELEG" },
> + { NFS4_OP_DESTROY_CLIENTID, "DESTROY-CLIENTID" },
> + { NFS4_OP_RECLAIM_COMPLETE, "RECLAIM-COMPLETE" },
> + /* Linux NFS 4.1 protocol hackery */
> + { NFS4_OP_NOTIFYDS, "PNFS_NOTIFYDS"},
> + { NFS4_OP_PNFS_CREATE, "PNFS_CREATE"},
> + { NFS4_OP_PNFS_WRITE, "PNFS_WRITE"},
> + { NFS4_OP_PNFS_READ, "PNFS_READ"},
> + { NFS4_OP_ILLEGAL, "ILLEGAL"},
> { 0, NULL }
> };
>
> --
> 1.5.5.1.211.g65ea3
>
> >From 2eadd1f029aca03d17ae97ab7c69a358bc1d24f2 Mon Sep 17 00:00:00 2001
> From: Tigran Mkrtchyan <tigran.mkrtchyan at desy.de>
> Date: Sun, 25 May 2008 21:37:24 +0200
> Subject: [PATCH 09/12] added nfsv4 specific etts
>
> ---
> epan/dissectors/packet-nfs.c | 26 ++++++++++++++------------
> 1 files changed, 14 insertions(+), 12 deletions(-)
>
> diff --git a/epan/dissectors/packet-nfs.c b/epan/dissectors/packet-nfs.c
> index 80657fe..0d1d1e9 100644
> --- a/epan/dissectors/packet-nfs.c
> +++ b/epan/dissectors/packet-nfs.c
> @@ -7204,28 +7204,30 @@ gint *nfsv4_operation_ett[] =
> &ett_nfs_verify4 ,
> &ett_nfs_write4,
> &ett_nfs_release_lockowner4,
> - NULL,
> - NULL,
> + NULL, /* backchannel_ctl */
> + NULL, /* bind connection to session */
> &ett_nfs_exchange_id4,
> &ett_nfs_create_session4,
> &ett_nfs_destroy_session4,
> - NULL,
> - NULL,
> + NULL, /* free stateid */
> + NULL, /* get dir delegation */
> &ett_nfs_getdevinfo4,
> &ett_nfs_getdevlist4,
> &ett_nfs_layoutcommit4,
> &ett_nfs_layoutget4,
> &ett_nfs_layoutreturn4,
> - NULL,
> + NULL, /* secinfo no name */
> &ett_nfs_sequence4,
> - NULL,
> - NULL,
> - NULL,
> - NULL,
> - NULL,
> - NULL,
> + NULL, /* set ssv */
> + NULL, /* test stateid */
> + NULL, /* want delegation */
> + NULL, /* destroy clientid */
> + NULL, /* reclaim complete*/
> + NULL, /* bogus pad to get to 60*/
> &ett_nfs_notifyds4,
> - &ett_nfs_pnfs_create4
> + &ett_nfs_pnfs_create4,
> + NULL, /* pnfs_write */
> + NULL /* pnfs_read */
> };
>
> static int
> --
> 1.5.5.1.211.g65ea3
>
> >From f0de753af163965fe1b9c92053425439422dfc95 Mon Sep 17 00:00:00 2001
> From: Tigran Mkrtchyan <tigran.mkrtchyan at desy.de>
> Date: Sun, 25 May 2008 22:01:32 +0200
> Subject: [PATCH 10/12] decode/display all delication flags
>
> ---
> epan/dissectors/packet-nfs.c | 33 +++++++++++++++++++++++++++++----
> 1 files changed, 29 insertions(+), 4 deletions(-)
>
> diff --git a/epan/dissectors/packet-nfs.c b/epan/dissectors/packet-nfs.c
> index 0d1d1e9..fc2b296 100644
> --- a/epan/dissectors/packet-nfs.c
> +++ b/epan/dissectors/packet-nfs.c
> @@ -6845,6 +6845,22 @@ static const value_string names_open4_share_access[] = {
> { OPEN4_SHARE_ACCESS_WRITE, "OPEN4_SHARE_ACCESS_WRITE" },
> #define OPEN4_SHARE_ACCESS_BOTH 0x00000003
> { OPEN4_SHARE_ACCESS_BOTH, "OPEN4_SHARE_ACCESS_BOTH" },
> +#define OPEN4_SHARE_ACCESS_WANT_NO_PREFERENCE 0x0000
> + { OPEN4_SHARE_ACCESS_WANT_NO_PREFERENCE, "OPEN4_SHARE_ACCESS_WANT_NO_PREFERENCE" },
> +#define OPEN4_SHARE_ACCESS_WANT_READ_DELEG 0x0100
> + { OPEN4_SHARE_ACCESS_WANT_READ_DELEG, "OPEN4_SHARE_ACCESS_WANT_READ_DELEG" },
> +#define OPEN4_SHARE_ACCESS_WANT_WRITE_DELEG 0x0200
> + { OPEN4_SHARE_ACCESS_WANT_WRITE_DELEG, "OPEN4_SHARE_ACCESS_WANT_WRITE_DELEG" },
> +#define OPEN4_SHARE_ACCESS_WANT_ANY_DELEG 0x0300
> + { OPEN4_SHARE_ACCESS_WANT_ANY_DELEG, "OPEN4_SHARE_ACCESS_WANT_ANY_DELEG" },
> +#define OPEN4_SHARE_ACCESS_WANT_NO_DELEG 0x0400
> + { OPEN4_SHARE_ACCESS_WANT_NO_DELEG, "OPEN4_SHARE_ACCESS_WANT_NO_DELEG" },
> +#define OPEN4_SHARE_ACCESS_WANT_CANCEL 0x0500
> + { OPEN4_SHARE_ACCESS_WANT_CANCEL, "OPEN4_SHARE_ACCESS_WANT_CANCEL" },
> +#define OPEN4_SHARE_ACCESS_WANT_SIGNAL_DELEG_WHEN_RESRC_AVAIL 0x10000
> + { OPEN4_SHARE_ACCESS_WANT_SIGNAL_DELEG_WHEN_RESRC_AVAIL, "OPEN4_SHARE_ACCESS_WANT_SIGNAL_DELEG_WHEN_RESRC_AVAIL"},
> +#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"},
> { 0, NULL }
> };
>
> @@ -6910,16 +6926,23 @@ dissect_nfs_open_claim_delegate_cur4(tvbuff_t *tvb, int offset,
> #define CLAIM_NULL 0
> #define CLAIM_PREVIOUS 1
> #define CLAIM_DELEGATE_CUR 2
> -#define CLAIM_DELEGATE_PREV 3
> +#define CLAIM_DELEGATE_PREV 3
> +#define CLAIM_FH 4
> +#define CLAIM_DELEG_CUR_FH 5
> +#define CLAIM_DELEG_CUR_PREV_FH 6
>
> static const value_string names_claim_type4[] = {
> { CLAIM_NULL, "CLAIM_NULL" },
> { CLAIM_PREVIOUS, "CLAIM_PREVIOUS" },
> - { CLAIM_DELEGATE_CUR, "CLAIM_DELEGATE_CUR" },
> - { CLAIM_DELEGATE_PREV, "CLAIM_DELEGATE_PREV" },
> + { CLAIM_DELEGATE_CUR, "CLAIM_DELEGATE_CUR" },
> + { CLAIM_DELEGATE_PREV,"CLAIM_DELEGATE_PREV" },
> + { CLAIM_FH, "CLAIM_FH" },
> + { CLAIM_DELEG_CUR_FH, "CLAIM_DELEG_CUR_FH"},
> + { CLAIM_DELEG_CUR_PREV_FH, "CLAIN_DELEG_CUR_PREV_FH"},
> { 0, NULL }
> };
>
> +
> static int
> dissect_nfs_open_claim4(tvbuff_t *tvb, int offset,
> proto_tree *tree)
> @@ -7590,10 +7613,12 @@ dissect_nfs_open_write_delegation4(tvbuff_t *tvb, int offset,
> #define OPEN_DELEGATE_NONE 0
> #define OPEN_DELEGATE_READ 1
> #define OPEN_DELEGATE_WRITE 2
> +#define OPEN_DELEGATE_NONE_EXT 3 /* new to v4.1 */
> static const value_string names_open_delegation_type4[] = {
> - { OPEN_DELEGATE_NONE, "OPEN_DELEGATE_NONE" },
> + { 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"},
> { 0, NULL }
> };
>
> --
> 1.5.5.1.211.g65ea3
>
> >From 2bf22455c11532a60718d4d623dbdcdb3ed367b1 Mon Sep 17 00:00:00 2001
> From: Tigran Mkrtchyan <tigran.mkrtchyan at desy.de>
> Date: Sun, 25 May 2008 22:44:03 +0200
> Subject: [PATCH 11/12] display all file attribytes defined by v41
> decode fattr4_layout_blksize
>
> ---
> epan/dissectors/packet-nfs.c | 54 +++++++++++++++++++++++++++++++++++-------
> 1 files changed, 45 insertions(+), 9 deletions(-)
>
> diff --git a/epan/dissectors/packet-nfs.c b/epan/dissectors/packet-nfs.c
> index fc2b296..291da56 100644
> --- a/epan/dissectors/packet-nfs.c
> +++ b/epan/dissectors/packet-nfs.c
> @@ -293,6 +293,7 @@ static int hf_nfs_fattr4_space_free = -1;
> static int hf_nfs_fattr4_space_total = -1;
> static int hf_nfs_fattr4_space_used = -1;
> static int hf_nfs_fattr4_mounted_on_fileid = -1;
> +static int hf_nfs_fattr4_layout_blksize = -1;
> static int hf_nfs_who = -1;
> static int hf_nfs_server = -1;
> static int hf_nfs_fslocation4 = -1;
> @@ -6451,16 +6452,44 @@ static const value_string names_fattr4[] = {
> { FATTR4_DIR_NOTIF_DELAY, "FATTR4_DIR_NOTIF_DELAY" },
> #define FATTR4_DIRENT_NOTIF_DELAY 57
> { FATTR4_DIRENT_NOTIF_DELAY, "FATTR4_DIRENT_NOTIF_DELAY" },
> -#define FATTR4_SEND_IMPL_ID 58
> - { FATTR4_SEND_IMPL_ID, "FATTR4_SEND_IMPL_ID" },
> -#define FATTR4_RECV_IMPL_ID 59
> - { FATTR4_RECV_IMPL_ID, "FATTR4_RECV_IMPL_ID" },
> -#define FATTR4_ABSENT 60
> - { FATTR4_ABSENT, "FATTR4_ABSENT" },
> +#define FATTR4_DACL 58
> + { FATTR4_DACL, "FATTR4_DACL" },
> +#define FATTR4_SACL 59
> + { FATTR4_SACL, "FATTR4_SACL" },
> +#define FATTR4_CHANGE_POLICY 60
> + { FATTR4_CHANGE_POLICY, "FATTR4_CHANGE_POLICY" },
> #define FATTR4_FS_STATUS 61
> { FATTR4_FS_STATUS, "FATTR4_FS_STATUS" },
> -#define FATTR4_FS_LAYOUT_TYPES 62
> - { FATTR4_MOUNTED_ON_FILEID, "FATTR4_FS_LAYOUT_TYPES" },
> +#define FATTR4_FS_LAYOUT_TYPE 62
> + { FATTR4_FS_LAYOUT_TYPE, "FATTR4_FS_LAYOUT_TYPE" },
> +#define FATTR4_LAYOUT_HINT 63
> + { FATTR4_LAYOUT_HINT, "FATTR4_LAYOUT_HINT" },
> +#define FATTR4_LAYOUT_TYPE 64
> + { FATTR4_LAYOUT_TYPE, "FATTR4_LAYOUT_TYPE" },
> +#define FATTR4_LAYOUT_BLKSIZE 65
> + { FATTR4_LAYOUT_BLKSIZE, "FATTR4_LAYOUT_BLKSIZE" },
> +#define FATTR4_LAYOUT_ALIGNMENT 66
> + { FATTR4_LAYOUT_ALIGNMENT, "FATTR4_LAYOUT_ALIGNMENT" },
> +#define FATTR4_FS_LOCATIONS_INFO 67
> + { FATTR4_FS_LOCATIONS_INFO, "FATTR4_FS_LOCATIONS_INFO" },
> +#define FATTR4_MDSTHRESHOLD 68
> + { FATTR4_MDSTHRESHOLD, "FATTR4_MDSTHRESHOLD" },
> +#define FATTR4_RETENTION_GET 69
> + { FATTR4_RETENTION_GET, "FATTR4_RETENTION_GET" },
> +#define FATTR4_RETENTION_SET 70
> + { FATTR4_RETENTION_SET, "FATTR4_RETENTION_SET" },
> +#define FATTR4_RETENTEVT_GET 71
> + { FATTR4_RETENTEVT_GET, "FATTR4_RETENTEVT_GET" },
> +#define FATTR4_RETENTEVT_SET 72
> + { FATTR4_RETENTEVT_SET, "FATTR4_RETENTEVT_SET" },
> +#define FATTR4_RETENTION_HOLD 73
> + { FATTR4_RETENTION_HOLD, "FATTR4_RETENTION_HOLD" },
> +#define FATTR4_MODE_SET_MASKED 74
> + { FATTR4_MODE_SET_MASKED, "FATTR4_MODE_SET_MASKED" },
> +#define FATTR4_SUPPATTR_EXCLCREAT 75
> + { FATTR4_SUPPATTR_EXCLCREAT, "FATTR4_SUPPATTR_EXCLCREAT" },
> +#define FATTR4_FS_CHARSET_CAP 76
> + { FATTR4_FS_CHARSET_CAP, "FATTR4_FS_CHARSET_CAP" },
> { 0, NULL }
> };
>
> @@ -6803,7 +6832,10 @@ dissect_nfs_attributes(tvbuff_t *tvb, int offset, packet_info *pinfo,
> attr_vals_offset = dissect_rpc_uint64(tvb, attr_newftree,
> hf_nfs_fattr4_mounted_on_fileid, attr_vals_offset);
> break;
> -
> + case FATTR4_LAYOUT_BLKSIZE:
> + attr_vals_offset = dissect_rpc_uint32(tvb, attr_newftree,
> + hf_nfs_fattr4_layout_blksize, attr_vals_offset);
> + break;
> default:
> break;
> }
> @@ -9851,6 +9883,10 @@ proto_register_nfs(void)
> "fileid", "nfs.fattr4.mounted_on_fileid", FT_UINT64, BASE_HEX,
> NULL, 0, NULL, HFILL }},
>
> + { &hf_nfs_fattr4_layout_blksize, {
> + "fileid", "nfs.fattr4.layout_blksize", FT_UINT32, BASE_DEC,
> + NULL, 0, NULL, HFILL }},
> +
> { &hf_nfs_verifier4, {
> "verifier", "nfs.verifier4", FT_UINT64, BASE_HEX,
> NULL, 0, NULL, HFILL }},
> --
> 1.5.5.1.211.g65ea3
>
> >From a27a1457cf66a85725b6a4ea7adbbb0b7ca52b48 Mon Sep 17 00:00:00 2001
> From: Tigran Mkrtchyan <tigran.mkrtchyan at desy.de>
> Date: Mon, 26 May 2008 08:55:01 +0200
> Subject: [PATCH 12/12] complete list of error codes
>
> ---
> epan/dissectors/packet-nfs.c | 13 +++++++++++++
> 1 files changed, 13 insertions(+), 0 deletions(-)
>
> diff --git a/epan/dissectors/packet-nfs.c b/epan/dissectors/packet-nfs.c
> index 291da56..479e7ff 100644
> --- a/epan/dissectors/packet-nfs.c
> +++ b/epan/dissectors/packet-nfs.c
> @@ -5837,6 +5837,19 @@ static const value_string names_nfs_nfsstat4[] = {
> { 10071, "NFS4ERR_OP_NOT_IN_SESSION" },
> { 10072, "NFS4ERR_HASH_ALG_UNSUPP" },
> { 10073, "NFS4ERR_CONN_BINDING_NOT_ENFORCED" },
> + { 10074, "NFS4ERR_CLIENTID_BUSY" },
> + { 10075, "NFS4ERR_PNFS_IO_HOLE" },
> + { 10076, "NFS4ERR_SEQ_FALSE_RETRY" },
> + { 10077, "NFS4ERR_BAD_HIGH_SLOT" },
> + { 10078, "NFS4ERR_DEADSESSION" },
> + { 10079, "NFS4ERR_ENCR_ALG_UNSUPP" },
> + { 10080, "NFS4ERR_PNFS_NO_LAYOUT" },
> + { 10081, "NFS4ERR_NOT_ONLY_OP" },
> + { 10082, "NFS4ERR_WRONG_CRED" },
> + { 10083, "NFS4ERR_WRONG_TYPE" },
> + { 10084, "NFS4ERR_DIRDELEG_UNAVAIL" },
> + { 10085, "NFS4ERR_REJECT_DELEG" },
> + { 10086, "NFS4ERR_RETURNCONFLICT" },
> { 0, NULL }
> };
>
> --
> 1.5.5.1.211.g65ea3
>
More information about the pNFS
mailing list