Wireshark-dev: [Wireshark-dev] [PATCH] Tweaked NFSv4 packet dissectors for wireshark

From: Steve Dickson <SteveD@xxxxxxxxxx>
Date: Fri, 20 May 2011 10:21:05 -0400
Hello,

Here are a couple tweaks to the NFSv4 dissectors
that will show all the ops and their status on in the
packet detail window. Showing all the ops in that 
window I think works well the new configuration
of only showing 'significant' v4 opts in the packet 
list window. Plus there is plenty of  real estate
on that line. 
 
I also put NFS4_OP_SEQUENCE on the same tier as NFS4_OP_PUTFH
since when NFSv4.1 is used, the SEQUENCE will in every 
compound like PUTFHs are.

Please cc me with any comments since I am not a member of
this list.

tia,

steved. 


Index: epan/dissectors/packet-nfs.c
===================================================================
--- epan/dissectors/packet-nfs.c	(revision 37323)
+++ epan/dissectors/packet-nfs.c	(working copy)
@@ -768,7 +768,7 @@
 		 1 /* 50, NFS4_OP_LAYOUTGET */,
 		 1 /* 51, NFS4_OP_LAYOUTRETURN */,
 		 1 /* 52, NFS4_OP_SECINFO_NO_NAME */,
-		 1 /* 53, NFS4_OP_SEQUENCE */,
+		 4 /* 53, NFS4_OP_SEQUENCE */,
 		 1 /* 54, NFS4_OP_SET_SSV */,
 		 1 /* 55, NFS4_OP_TEST_STATEID */,
 		 1 /* 56, NFS4_OP_WANT_DELEGATION  */,
@@ -8970,6 +8970,8 @@
 		ftree = proto_item_add_subtree(fitem, ett_nfs_argop4);
 	}
 
+	proto_item_append_text(tree, ", Ops(%d):", ops);
+
 	for (ops_counter=0; ops_counter<ops; ops_counter++)
 	{
 		op_summary[ops_counter].optext = g_string_new("");
@@ -9003,6 +9005,7 @@
 		g_string_printf (op_summary[ops_counter].optext, "%s",
                                  val_to_str_ext_const(opcode, &names_nfsv4_operation_ext, "Unknown"));
 
+		proto_item_append_text(tree, " %s", opname);
 
 		switch(opcode)
 		{
@@ -9621,6 +9624,8 @@
 		ftree = proto_item_add_subtree(fitem, ett_nfs_resop4);
 	}
 
+	proto_item_append_text(tree, ", Ops(%d):", ops);
+
 	for (ops_counter = 0; ops_counter < ops; ops_counter++)
 	{
 		op_summary[ops_counter].optext = g_string_new("");
@@ -9654,6 +9659,12 @@
 		g_string_append_printf (op_summary[ops_counter].optext, "%s", opname);
 
 		offset = dissect_nfs_nfsstat4(tvb, offset, newftree, &status);
+		if (status != NFS4_OK) {
+			proto_item_append_text(tree, " %s(%s)", opname,
+				val_to_str_ext(status, &names_nfs_stat_ext, "Unknown error:%u"));
+		} else {
+			proto_item_append_text(tree, " %s", opname);
+		}
 
 		/*
 		 * With the exception of NFS4_OP_LOCK, NFS4_OP_LOCKT, and