diff options
-rw-r--r-- | packet-afs-macros.h | 10 | ||||
-rw-r--r-- | packet-afs-register-info.h | 6 | ||||
-rw-r--r-- | packet-afs.c | 33 |
3 files changed, 32 insertions, 17 deletions
diff --git a/packet-afs-macros.h b/packet-afs-macros.h index a523366949..887900b1d6 100644 --- a/packet-afs-macros.h +++ b/packet-afs-macros.h @@ -8,7 +8,7 @@ * Portions based on information/specs retrieved from the OpenAFS sources at * www.openafs.org, Copyright IBM. * - * $Id: packet-afs-macros.h,v 1.12 2001/09/14 07:10:05 guy Exp $ + * $Id: packet-afs-macros.h,v 1.13 2002/01/18 21:30:05 nneul Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -215,7 +215,7 @@ "VolSync"); \ save = tree; \ tree = proto_item_add_subtree(ti, ett_afs_volsync); \ - OUT_UINT(hf_afs_fs_volsync_spare1); \ + OUT_DATE(hf_afs_fs_volsync_spare1); \ OUT_UINT(hf_afs_fs_volsync_spare2); \ OUT_UINT(hf_afs_fs_volsync_spare3); \ OUT_UINT(hf_afs_fs_volsync_spare4); \ @@ -272,9 +272,9 @@ /* Output a AFSBulkStats */ #define OUT_FS_AFSBulkStats() \ { \ - unsigned int j,i; \ - j = tvb_get_guint8(tvb,offset); \ - offset += 1; \ + guint32 j,i; \ + j = tvb_get_ntohl(tvb,offset); \ + offset += 4; \ for (i=0; i<j; i++) { \ OUT_FS_AFSFetchStatus("Status"); \ } \ diff --git a/packet-afs-register-info.h b/packet-afs-register-info.h index 4f03d216db..e23858c957 100644 --- a/packet-afs-register-info.h +++ b/packet-afs-register-info.h @@ -8,7 +8,7 @@ * Portions based on information/specs retrieved from the OpenAFS sources at * www.openafs.org, Copyright IBM. * - * $Id: packet-afs-register-info.h,v 1.8 2001/06/18 02:17:44 guy Exp $ + * $Id: packet-afs-register-info.h,v 1.9 2002/01/18 21:30:05 nneul Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@zing.org> @@ -218,8 +218,8 @@ FT_UINT32, BASE_DEC, 0, 0, "Length", HFILL }}, -{ &hf_afs_fs_volsync_spare1, { "Spare 1", "afs.fs.volsync.spare1", - FT_UINT32, BASE_DEC, 0, 0, "Spare 1", HFILL }}, +{ &hf_afs_fs_volsync_spare1, { "Volume Creation Timestamp", "afs.fs.volsync.spare1", + FT_ABSOLUTE_TIME, BASE_DEC, 0, 0, "Volume Creation Timestamp", HFILL }}, { &hf_afs_fs_volsync_spare2, { "Spare 2", "afs.fs.volsync.spare2", FT_UINT32, BASE_DEC, 0, 0, "Spare 2", HFILL }}, { &hf_afs_fs_volsync_spare3, { "Spare 3", "afs.fs.volsync.spare3", diff --git a/packet-afs.c b/packet-afs.c index 68679eaa83..62ddb0d25e 100644 --- a/packet-afs.c +++ b/packet-afs.c @@ -8,7 +8,7 @@ * Portions based on information/specs retrieved from the OpenAFS sources at * www.openafs.org, Copyright IBM. * - * $Id: packet-afs.c,v 1.36 2001/12/10 00:25:26 guy Exp $ + * $Id: packet-afs.c,v 1.37 2002/01/18 21:30:05 nneul Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -373,8 +373,14 @@ dissect_afs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) /* until we do cache, can't handle replies */ ti = NULL; if ( !reply && node != 0 ) { - ti = proto_tree_add_uint(afs_tree, - node, tvb, offset, 4, opcode); + if ( rxinfo->seq == 1 ) + { + ti = proto_tree_add_uint(afs_tree, + node, tvb, offset, 4, opcode); + } else { + ti = proto_tree_add_uint(afs_tree, + node, tvb, offset, 0, opcode); + } } else if ( reply && node != 0 ) { /* the opcode isn't in this packet */ ti = proto_tree_add_uint(afs_tree, @@ -571,6 +577,7 @@ dissect_fs_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int off break; case 155: /* bulk status */ OUT_FS_AFSBulkStats(); + SKIP(4); OUT_FS_AFSCBs(); OUT_FS_AFSVolSync(); break; @@ -602,7 +609,11 @@ dissect_fs_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int off static void dissect_fs_request(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode) { - offset += 4; /* skip the opcode */ + /* skip the opcode if this is the first packet in the stream */ + if ( rxinfo->seq == 1 ) + { + offset += 4; /* skip the opcode */ + } switch ( opcode ) { @@ -618,11 +629,15 @@ dissect_fs_request(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int o OUT_FS_AFSFid("Target"); break; case 133: /* Store Data */ - OUT_FS_AFSFid("Destination"); - OUT_FS_AFSStoreStatus("Status"); - OUT_UINT(hf_afs_fs_offset); - OUT_UINT(hf_afs_fs_length); - OUT_UINT(hf_afs_fs_flength); + if ( rxinfo->seq == 1 ) + { + OUT_FS_AFSFid("Destination"); + OUT_FS_AFSStoreStatus("Status"); + OUT_UINT(hf_afs_fs_offset); + OUT_UINT(hf_afs_fs_length); + OUT_UINT(hf_afs_fs_flength); + } + OUT_BYTES_ALL(hf_afs_fs_data); break; case 134: /* Store ACL */ OUT_FS_AFSFid("Target"); |