aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2001-12-28 20:18:45 +0000
committerGuy Harris <guy@alum.mit.edu>2001-12-28 20:18:45 +0000
commit6e4c4ab00a4b32d719299f2f36e48f45192f59d7 (patch)
tree500408ea69da9e110ce89004a269f4fbdade828e
parent853b34a828d56cdf674eda90cadc8d5151cb812e (diff)
downloadwireshark-6e4c4ab00a4b32d719299f2f36e48f45192f59d7.tar.gz
wireshark-6e4c4ab00a4b32d719299f2f36e48f45192f59d7.tar.bz2
wireshark-6e4c4ab00a4b32d719299f2f36e48f45192f59d7.zip
From Ronnie Sahlberg: add time between request and reply as a field to
ONC RPC replies. svn path=/trunk/; revision=4457
-rw-r--r--AUTHORS1
-rw-r--r--packet-rpc.c23
2 files changed, 23 insertions, 1 deletions
diff --git a/AUTHORS b/AUTHORS
index 71d2586d7d..269d558497 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -567,6 +567,7 @@ Ronnie Sahlberg <sahlberg[AT]optushome.com.au> {
ONC RPC dissector to allow ONC RPC subdissectors to use it
SMB tvbuffication
NDMPv3 support
+ Add time between request and reply as a field to ONC RPC replies
}
Borosa Tomislav <tomislav.borosa[AT]SIEMENS.HR> {
diff --git a/packet-rpc.c b/packet-rpc.c
index 2f95331849..adf027d992 100644
--- a/packet-rpc.c
+++ b/packet-rpc.c
@@ -2,7 +2,7 @@
* Routines for rpc dissection
* Copyright 1999, Uwe Girlich <Uwe.Girlich@philosys.de>
*
- * $Id: packet-rpc.c,v 1.77 2001/12/10 00:25:33 guy Exp $
+ * $Id: packet-rpc.c,v 1.78 2001/12/28 20:18:45 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -184,6 +184,7 @@ static int hf_rpc_call_dup = -1;
static int hf_rpc_reply_dup = -1;
static int hf_rpc_value_follows = -1;
static int hf_rpc_array_len = -1;
+static int hf_rpc_time = -1;
static gint ett_rpc = -1;
static gint ett_rpc_string = -1;
@@ -398,6 +399,7 @@ typedef struct _rpc_call_info_value {
guint32 gss_proc;
guint32 gss_svc;
rpc_proc_info_value* proc_info;
+ nstime_t req_time;
} rpc_call_info_value;
static GMemChunk *rpc_call_info_value_chunk;
@@ -1433,6 +1435,7 @@ dissect_rpc_message(tvbuff_t *tvb, int offset, packet_info *pinfo,
rpc_proc_info_value *value = NULL;
conversation_t* conversation;
static address null_address = { AT_NONE, 0, NULL };
+ nstime_t ns;
dissect_function_t *dissect_function = NULL;
@@ -1758,6 +1761,9 @@ dissect_rpc_message(tvbuff_t *tvb, int offset, packet_info *pinfo,
rpc_call->gss_proc = gss_proc;
rpc_call->gss_svc = gss_svc;
rpc_call->proc_info = value;
+ rpc_call->req_time.secs=pinfo->fd->abs_secs;
+ rpc_call->req_time.nsecs=pinfo->fd->abs_usecs*1000;
+
/* store it */
g_hash_table_insert(rpc_calls, new_rpc_call_key,
rpc_call);
@@ -1786,6 +1792,16 @@ dissect_rpc_message(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree_add_text(rpc_tree, tvb, 0, 0,
"This is a reply to a request in frame %u",
rpc_call->req_num);
+ ns.secs= pinfo->fd->abs_secs-rpc_call->req_time.secs;
+ ns.nsecs=pinfo->fd->abs_usecs*1000-rpc_call->req_time.nsecs;
+ if(ns.nsecs<0){
+ ns.nsecs+=1000000000;
+ ns.secs--;
+ }
+ proto_tree_add_time(rpc_tree, hf_rpc_time, tvb, offset, 0,
+ &ns);
+
+
if (rpc_call->proc_info != NULL) {
dissect_function = rpc_call->proc_info->dissect_reply;
@@ -2366,6 +2382,11 @@ proto_register_rpc(void)
{ &hf_rpc_array_len, {
"num", "rpc.array.len", FT_UINT32, BASE_DEC,
NULL, 0, "Length of RPC array", HFILL }},
+
+ { &hf_rpc_time, {
+ "Time from request", "rpc.time", FT_RELATIVE_TIME, BASE_NONE,
+ NULL, 0, "Time between Request and Reply for ONC-RPC calls", HFILL }},
+
};
static gint *ett[] = {
&ett_rpc,