*
* $Id$
*
- * Ethereal - Network traffic analyzer
- * By Gerald Combs <gerald@ethereal.com>
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* This program is free software; you can redistribute it and/or
#include <string.h>
#include "epan/packet_info.h"
#include <epan/tap.h>
+#include <epan/emem.h>
+#include <epan/stat_cmd_args.h>
#include "epan/value_string.h"
-#include "smb.h"
+#include <epan/dissectors/packet-smb.h>
#include "register.h"
#include "timestats.h"
{
smbstat_t *ss=(smbstat_t *)pss;
const smb_info_t *si=psi;
- nstime_t delta;
+ nstime_t t, deltat;
timestat_t *sp=NULL;
/* we are only interested in reply packets */
return 0;
}
- if(si->cmd==0xA0){
+ if(si->cmd==0xA0 && si->sip->extra_info_type == SMB_EI_NTI){
smb_nt_transact_info_t *sti=(smb_nt_transact_info_t *)si->sip->extra_info;
/*nt transaction*/
if(sti){
sp=&(ss->nt_trans[sti->subcmd]);
}
- } else if(si->cmd==0x32){
+ } else if(si->cmd==0x32 && si->sip->extra_info_type == SMB_EI_T2I){
smb_transact2_info_t *st2i=(smb_transact2_info_t *)si->sip->extra_info;
/*transaction2*/
}
/* calculate time delta between request and reply */
- delta.secs=pinfo->fd->abs_secs-si->sip->req_time.secs;
- delta.nsecs=pinfo->fd->abs_usecs*1000-si->sip->req_time.nsecs;
- if(delta.nsecs<0){
- delta.nsecs+=1000000000;
- delta.secs--;
- }
+ t=pinfo->fd->abs_ts;
+ nstime_delta(&deltat, &t, &si->sip->req_time);
if(sp){
- time_stat_update(sp,&delta, pinfo);
+ time_stat_update(sp,&deltat, pinfo);
}
return 1;
static void
-smbstat_init(char *optarg)
+smbstat_init(const char *optarg,void* userdata _U_)
{
smbstat_t *ss;
guint32 i;
- char *filter=NULL;
+ const char *filter=NULL;
GString *error_string;
if(!strncmp(optarg,"smb,rtt,",8)){
g_free(ss->filter);
g_free(ss);
- fprintf(stderr, "tethereal: Couldn't register smb,rtt tap: %s\n",
+ fprintf(stderr, "tshark: Couldn't register smb,rtt tap: %s\n",
error_string->str);
g_string_free(error_string, TRUE);
exit(1);
void
register_tap_listener_smbstat(void)
{
- register_ethereal_tap("smb,rtt", smbstat_init);
+ register_stat_cmd_arg("smb,rtt", smbstat_init,NULL);
}