forked from osmocom/wireshark
First step in creating an API to register TAPs for use with ethereal instead of hardcoding them in main.c/menu.c
This adds functions to register the command line arguments to use the API in the same way as is done for tethereal. Later it may be extended to also register the GUI/Menu entry point to ethereal using this api but that iwll be later since the changes required to menu.c are not as intrusive as the main.c command line parsing ones were. Some of the latest changes (before this checkin) has made ethereal to produce lots of GTK errors when starting up the extension windows. They were there before this checking but will be investigated. svn path=/trunk/; revision=6566
This commit is contained in:
parent
d4e632c5ea
commit
b3e0a56390
|
@ -1,7 +1,7 @@
|
|||
# Makefile.am
|
||||
# Automake file for the GTK interface routines for Ethereal
|
||||
#
|
||||
# $Id: Makefile.am,v 1.44 2002/11/03 17:38:32 oabad Exp $
|
||||
# $Id: Makefile.am,v 1.45 2002/11/06 10:53:36 sahlberg Exp $
|
||||
#
|
||||
# Ethereal - Network traffic analyzer
|
||||
# By Gerald Combs <gerald@ethereal.com>
|
||||
|
@ -27,6 +27,19 @@ CLEANFILES = \
|
|||
libui.a \
|
||||
*~
|
||||
|
||||
ETHEREAL_TAP_SRC = \
|
||||
dcerpc_stat.c \
|
||||
dcerpc_stat.h \
|
||||
rpc_stat.c \
|
||||
rpc_stat.h \
|
||||
rpc_progs.c \
|
||||
rpc_progs.h
|
||||
|
||||
ethereal-tap-register.c: $(ETHEREAL_TAP_SRC)
|
||||
@echo Making tethereal-tap-register.c
|
||||
../make-tapreg-dotc ethereal-tap-register.c . $(ETHEREAL_TAP_SRC)
|
||||
|
||||
|
||||
if USE_GTK2
|
||||
libui_a_SOURCES = \
|
||||
capture_dlg.c \
|
||||
|
@ -41,8 +54,6 @@ libui_a_SOURCES = \
|
|||
color_utils.h \
|
||||
column_prefs.c \
|
||||
column_prefs.h \
|
||||
dcerpc_stat.c \
|
||||
dcerpc_stat.h \
|
||||
decode_as_dlg.c \
|
||||
decode_as_dlg.h \
|
||||
dfilter_expr_dlg.c \
|
||||
|
@ -51,6 +62,7 @@ libui_a_SOURCES = \
|
|||
display_opts.h \
|
||||
dlg_utils.c \
|
||||
dlg_utils.h \
|
||||
ethereal-tap-register.c \
|
||||
file_dlg.c \
|
||||
file_dlg.h \
|
||||
filter_prefs.c \
|
||||
|
@ -89,10 +101,6 @@ libui_a_SOURCES = \
|
|||
proto_draw.h \
|
||||
proto_hier_stats_dlg.h \
|
||||
proto_hier_stats_dlg.c \
|
||||
rpc_stat.c \
|
||||
rpc_stat.h \
|
||||
rpc_progs.c \
|
||||
rpc_progs.h \
|
||||
simple_dialog.c \
|
||||
stream_prefs.c \
|
||||
stream_prefs.h \
|
||||
|
@ -101,7 +109,8 @@ libui_a_SOURCES = \
|
|||
tcp_graph.c \
|
||||
tcp_graph.h \
|
||||
ui_util.c \
|
||||
ui_util.h
|
||||
ui_util.h \
|
||||
$(ETHEREAL_TAP_SRC)
|
||||
else
|
||||
libui_a_SOURCES = \
|
||||
capture_dlg.c \
|
||||
|
@ -116,8 +125,6 @@ libui_a_SOURCES = \
|
|||
color_utils.h \
|
||||
column_prefs.c \
|
||||
column_prefs.h \
|
||||
dcerpc_stat.c \
|
||||
dcerpc_stat.h \
|
||||
decode_as_dlg.c \
|
||||
decode_as_dlg.h \
|
||||
dfilter_expr_dlg.c \
|
||||
|
@ -126,6 +133,7 @@ libui_a_SOURCES = \
|
|||
display_opts.h \
|
||||
dlg_utils.c \
|
||||
dlg_utils.h \
|
||||
ethereal-tap-register.c \
|
||||
file_dlg.c \
|
||||
file_dlg.h \
|
||||
filter_prefs.c \
|
||||
|
@ -166,10 +174,6 @@ libui_a_SOURCES = \
|
|||
proto_draw.h \
|
||||
proto_hier_stats_dlg.h \
|
||||
proto_hier_stats_dlg.c \
|
||||
rpc_stat.c \
|
||||
rpc_stat.h \
|
||||
rpc_progs.c \
|
||||
rpc_progs.h \
|
||||
simple_dialog.c \
|
||||
stream_prefs.c \
|
||||
stream_prefs.h \
|
||||
|
@ -178,7 +182,8 @@ libui_a_SOURCES = \
|
|||
tcp_graph.c \
|
||||
tcp_graph.h \
|
||||
ui_util.c \
|
||||
ui_util.h
|
||||
ui_util.h \
|
||||
$(ETHEREAL_TAP_SRC)
|
||||
endif
|
||||
|
||||
EXTRA_DIST = \
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
## Makefile for building ethereal.exe with Microsoft C and nmake
|
||||
## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
|
||||
#
|
||||
# $Id: Makefile.nmake,v 1.33 2002/10/25 01:08:46 guy Exp $
|
||||
# $Id: Makefile.nmake,v 1.34 2002/11/06 10:53:36 sahlberg Exp $
|
||||
|
||||
include ..\config.nmake
|
||||
|
||||
|
@ -21,6 +21,11 @@ CVARSDLL=-DWIN32 -DNULL=0 -D_MT -D_DLL
|
|||
.c.obj::
|
||||
$(CC) $(CVARSDLL) $(CFLAGS) -Fd.\ -c $<
|
||||
|
||||
ETHEREAL_TAP_SRC = \
|
||||
dcerpc_stat.obj \
|
||||
rpc_stat.obj \
|
||||
rpc_progs.obj
|
||||
|
||||
# gtkclist.obj is not in here because it is gtk+-1.2 code,
|
||||
# while the DLL for GTK+ on windows is gtk+-1.3, and there's
|
||||
# some functions that have disappeared in gtk+-1.3. I might
|
||||
|
@ -31,11 +36,11 @@ OBJECTS=capture_dlg.obj \
|
|||
colors.obj \
|
||||
color_utils.obj \
|
||||
column_prefs.obj \
|
||||
dcerpc_stat.obj \
|
||||
decode_as_dlg.obj \
|
||||
dfilter_expr_dlg.obj \
|
||||
display_opts.obj \
|
||||
dlg_utils.obj \
|
||||
ethereal-tap-register.obj \
|
||||
file_dlg.obj \
|
||||
filter_prefs.obj \
|
||||
find_dlg.obj \
|
||||
|
@ -57,14 +62,12 @@ OBJECTS=capture_dlg.obj \
|
|||
proto_dlg.obj \
|
||||
proto_draw.obj \
|
||||
proto_hier_stats_dlg.obj \
|
||||
rpc_stat.obj \
|
||||
rpc_progs.obj \
|
||||
simple_dialog.obj \
|
||||
stream_prefs.obj \
|
||||
summary_dlg.obj \
|
||||
tcp_graph.obj \
|
||||
ui_util.obj
|
||||
|
||||
ui_util.obj \
|
||||
$(ETHEREAL_TAP_SRC)
|
||||
|
||||
libui.lib : ..\config.h $(OBJECTS)
|
||||
lib /out:libui.lib $(OBJECTS)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* dcerpc_stat.c
|
||||
* dcerpc_stat 2002 Ronnie Sahlberg
|
||||
*
|
||||
* $Id: dcerpc_stat.c,v 1.1 2002/10/25 01:08:46 guy Exp $
|
||||
* $Id: dcerpc_stat.c,v 1.2 2002/11/06 10:53:36 sahlberg Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@ethereal.com>
|
||||
|
@ -36,6 +36,7 @@
|
|||
#include "epan/packet_info.h"
|
||||
#include "simple_dialog.h"
|
||||
#include "tap.h"
|
||||
#include "../register.h"
|
||||
#include "packet-dcerpc.h"
|
||||
#include "dcerpc_stat.h"
|
||||
#include "../globals.h"
|
||||
|
@ -243,8 +244,8 @@ win_destroy_cb(GtkWindow *win _U_, gpointer data)
|
|||
|
||||
/* When called, this function will create a new instance of gtk-dcerpcstat.
|
||||
*/
|
||||
void
|
||||
gtk_dcerpcstat_init(e_uuid_t *uuid, int major, int minor, char *filter)
|
||||
static void
|
||||
gtk_dcerpcstat_init(char *optarg)
|
||||
{
|
||||
rpcstat_t *rs;
|
||||
guint32 i, max_procs;
|
||||
|
@ -255,16 +256,44 @@ gtk_dcerpcstat_init(e_uuid_t *uuid, int major, int minor, char *filter)
|
|||
GtkWidget *filter_label;
|
||||
GtkWidget *tmp;
|
||||
dcerpc_sub_dissector *procs;
|
||||
e_uuid_t uuid;
|
||||
int d1,d2,d3,d40,d41,d42,d43,d44,d45,d46,d47;
|
||||
int major, minor;
|
||||
int pos=0;
|
||||
char *filter=NULL;
|
||||
|
||||
rs=g_malloc(sizeof(rpcstat_t));
|
||||
rs->prog=dcerpc_get_proto_name(uuid, (minor<<8)|(major&0xff) );
|
||||
if(!rs->prog){
|
||||
g_free(rs);
|
||||
fprintf(stderr,"tethereal: dcerpcstat_init() Protocol with uuid:%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x v%d.%d not supported\n",uuid->Data1,uuid->Data2,uuid->Data3,uuid->Data4[0],uuid->Data4[1],uuid->Data4[2],uuid->Data4[3],uuid->Data4[4],uuid->Data4[5],uuid->Data4[6],uuid->Data4[7],major,minor);
|
||||
if(sscanf(optarg,"dcerpc,rtt,%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x,%d.%d%n", &d1,&d2,&d3,&d40,&d41,&d42,&d43,&d44,&d45,&d46,&d47,&major,&minor,&pos)==13){
|
||||
uuid.Data1=d1;
|
||||
uuid.Data2=d2;
|
||||
uuid.Data3=d3;
|
||||
uuid.Data4[0]=d40;
|
||||
uuid.Data4[1]=d41;
|
||||
uuid.Data4[2]=d42;
|
||||
uuid.Data4[3]=d43;
|
||||
uuid.Data4[4]=d44;
|
||||
uuid.Data4[5]=d45;
|
||||
uuid.Data4[6]=d46;
|
||||
uuid.Data4[7]=d47;
|
||||
if(pos){
|
||||
filter=optarg+pos;
|
||||
} else {
|
||||
filter=NULL;
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "tethereal: invalid \"-z dcerpc,rtt,<uuid>,<major version>.<minor version>[,<filter>]\" argument\n");
|
||||
exit(1);
|
||||
}
|
||||
procs=dcerpc_get_proto_sub_dissector(uuid, (minor<<8)|(major&0xff) );
|
||||
rs->uuid=*uuid;
|
||||
|
||||
|
||||
rs=g_malloc(sizeof(rpcstat_t));
|
||||
rs->prog=dcerpc_get_proto_name(&uuid, (minor<<8)|(major&0xff) );
|
||||
if(!rs->prog){
|
||||
g_free(rs);
|
||||
fprintf(stderr,"tethereal: dcerpcstat_init() Protocol with uuid:%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x v%d.%d not supported\n",uuid.Data1,uuid.Data2,uuid.Data3,uuid.Data4[0],uuid.Data4[1],uuid.Data4[2],uuid.Data4[3],uuid.Data4[4],uuid.Data4[5],uuid.Data4[6],uuid.Data4[7],major,minor);
|
||||
exit(1);
|
||||
}
|
||||
procs=dcerpc_get_proto_sub_dissector(&uuid, (minor<<8)|(major&0xff) );
|
||||
rs->uuid=uuid;
|
||||
rs->ver=(minor<<8)|(major&0xff);
|
||||
|
||||
rs->win=gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
|
@ -404,12 +433,17 @@ static void
|
|||
dcerpcstat_start_button_clicked(GtkWidget *item _U_, gpointer data _U_)
|
||||
{
|
||||
char *filter;
|
||||
char str[256];
|
||||
|
||||
filter=(char *)gtk_entry_get_text(GTK_ENTRY(filter_entry));
|
||||
if(filter[0]==0){
|
||||
filter=NULL;
|
||||
sprintf(str, "dcerpc,rtt,%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x,%d.%d",dcerpc_uuid_program->Data1,dcerpc_uuid_program->Data2,dcerpc_uuid_program->Data3,dcerpc_uuid_program->Data4[0],dcerpc_uuid_program->Data4[1],dcerpc_uuid_program->Data4[2],dcerpc_uuid_program->Data4[3],dcerpc_uuid_program->Data4[4],dcerpc_uuid_program->Data4[5],dcerpc_uuid_program->Data4[6],dcerpc_uuid_program->Data4[7],dcerpc_version&0xff,dcerpc_version>>8);
|
||||
|
||||
} else {
|
||||
sprintf(str, "dcerpc,rtt,%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x,%d.%d,%s",dcerpc_uuid_program->Data1,dcerpc_uuid_program->Data2,dcerpc_uuid_program->Data3,dcerpc_uuid_program->Data4[0],dcerpc_uuid_program->Data4[1],dcerpc_uuid_program->Data4[2],dcerpc_uuid_program->Data4[3],dcerpc_uuid_program->Data4[4],dcerpc_uuid_program->Data4[5],dcerpc_uuid_program->Data4[6],dcerpc_uuid_program->Data4[7],dcerpc_version&0xff,dcerpc_version>>8, filter);
|
||||
}
|
||||
gtk_dcerpcstat_init(dcerpc_uuid_program, dcerpc_version&0xff, dcerpc_version>>8, filter);
|
||||
|
||||
gtk_dcerpcstat_init(str);
|
||||
}
|
||||
|
||||
|
||||
|
@ -574,3 +608,8 @@ gtk_dcerpcstat_cb(GtkWidget *w _U_, gpointer d _U_)
|
|||
gtk_widget_show_all(dlg);
|
||||
}
|
||||
|
||||
void
|
||||
register_tap_listener_gtkdcerpcstat(void)
|
||||
{
|
||||
register_ethereal_tap("dcerpc,rtt,", gtk_dcerpcstat_init, NULL, NULL);
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* dcerpc_stat.h
|
||||
* dcerpc_stat 2002 Ronnie Sahlberg
|
||||
*
|
||||
* $Id: dcerpc_stat.h,v 1.1 2002/10/25 01:08:46 guy Exp $
|
||||
* $Id: dcerpc_stat.h,v 1.2 2002/11/06 10:53:36 sahlberg Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@ethereal.com>
|
||||
|
@ -25,7 +25,6 @@
|
|||
#ifndef __DCERPCSTAT_H__
|
||||
#define __DCERPCSTAT_H__
|
||||
|
||||
void gtk_dcerpcstat_init(e_uuid_t *uuid, int major, int minor, char *filter);
|
||||
void gtk_dcerpcstat_cb(GtkWidget *w, gpointer d);
|
||||
|
||||
#endif
|
||||
|
|
106
gtk/main.c
106
gtk/main.c
|
@ -1,6 +1,6 @@
|
|||
/* main.c
|
||||
*
|
||||
* $Id: main.c,v 1.272 2002/11/03 17:38:33 oabad Exp $
|
||||
* $Id: main.c,v 1.273 2002/11/06 10:53:36 sahlberg Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@ethereal.com>
|
||||
|
@ -129,10 +129,6 @@
|
|||
#include "image/clist_ascend.xpm"
|
||||
#include "image/clist_descend.xpm"
|
||||
#include "../tap.h"
|
||||
#include "rpc_stat.h"
|
||||
#include "rpc_progs.h"
|
||||
#include "../packet-dcerpc.h"
|
||||
#include "dcerpc_stat.h"
|
||||
|
||||
#ifdef WIN32
|
||||
#include "capture-wpcap.h"
|
||||
|
@ -1339,6 +1335,28 @@ unprotect_thread_critical_region(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
/* structure to keep track of what tap listeners have been registered.
|
||||
*/
|
||||
typedef struct _ethereal_tap_list {
|
||||
struct _ethereal_tap_list *next;
|
||||
char *cmd;
|
||||
void (*func)(char *arg);
|
||||
} ethereal_tap_list;
|
||||
static ethereal_tap_list *tap_list=NULL;
|
||||
|
||||
void
|
||||
register_ethereal_tap(char *cmd, void (*func)(char *arg), char *dummy _U_, void (*dummy2)(void) _U_)
|
||||
{
|
||||
ethereal_tap_list *newtl;
|
||||
|
||||
newtl=malloc(sizeof(ethereal_tap_list));
|
||||
newtl->next=tap_list;
|
||||
tap_list=newtl;
|
||||
newtl->cmd=cmd;
|
||||
newtl->func=func;
|
||||
|
||||
}
|
||||
|
||||
/* And now our feature presentation... [ fade to music ] */
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
|
@ -1391,6 +1409,7 @@ main(int argc, char *argv[])
|
|||
#endif
|
||||
gint desk_x, desk_y;
|
||||
gboolean prefs_write_needed = FALSE;
|
||||
ethereal_tap_list *tli;
|
||||
|
||||
#define OPTSTRING_INIT "a:b:B:c:f:hi:klm:nN:o:pP:Qr:R:Ss:t:T:w:vz:"
|
||||
|
||||
|
@ -1441,6 +1460,7 @@ main(int argc, char *argv[])
|
|||
dissectors, and we must do it before we read the preferences, in
|
||||
case any dissectors register preferences. */
|
||||
epan_init(PLUGIN_DIR,register_all_protocols,register_all_protocol_handoffs);
|
||||
register_all_tap_listeners();
|
||||
|
||||
/* Now register the preferences for any non-dissector modules.
|
||||
We must do that before we read the preferences as well. */
|
||||
|
@ -1815,68 +1835,22 @@ main(int argc, char *argv[])
|
|||
cfile.save_file_fd = atoi(optarg);
|
||||
break;
|
||||
#endif
|
||||
case 'z':
|
||||
if(!strncmp(optarg,"rpc,",4)){
|
||||
if(!strncmp(optarg,"rpc,rtt,",8)){
|
||||
int rpcprogram, rpcversion;
|
||||
int pos=0;
|
||||
if(sscanf(optarg,"rpc,rtt,%d,%d,%n",&rpcprogram,&rpcversion,&pos)==2){
|
||||
if(pos){
|
||||
gtk_rpcstat_init(rpcprogram,rpcversion,optarg+pos);
|
||||
} else {
|
||||
gtk_rpcstat_init(rpcprogram,rpcversion,NULL);
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "ethereal: invalid \"-z rpc,rtt,<program>,<version>[,<filter>]\" argument\n");
|
||||
exit(1);
|
||||
}
|
||||
} else if(!strncmp(optarg,"rpc,programs",12)){
|
||||
gtk_rpcprogs_init();
|
||||
} else {
|
||||
fprintf(stderr, "ethereal: invalid -z argument. Argument must be one of:\n");
|
||||
fprintf(stderr, " \"-z rpc,rtt,<program>,<version>[,<filter>]\"\n");
|
||||
fprintf(stderr, " \"-z rpc,programs\"\n");
|
||||
exit(1);
|
||||
}
|
||||
} else if(!strncmp(optarg,"dcerpc,",7)){
|
||||
if(!strncmp(optarg,"dcerpc,rtt,",11)){
|
||||
e_uuid_t uuid;
|
||||
int d1,d2,d3,d40,d41,d42,d43,d44,d45,d46,d47;
|
||||
int major, minor;
|
||||
int pos=0;
|
||||
if(sscanf(optarg,"dcerpc,rtt,%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x,%d.%d%n", &d1,&d2,&d3,&d40,&d41,&d42,&d43,&d44,&d45,&d46,&d47,&major,&minor,&pos)==13){
|
||||
uuid.Data1=d1;
|
||||
uuid.Data2=d2;
|
||||
uuid.Data3=d3;
|
||||
uuid.Data4[0]=d40;
|
||||
uuid.Data4[1]=d41;
|
||||
uuid.Data4[2]=d42;
|
||||
uuid.Data4[3]=d43;
|
||||
uuid.Data4[4]=d44;
|
||||
uuid.Data4[5]=d45;
|
||||
uuid.Data4[6]=d46;
|
||||
uuid.Data4[7]=d47;
|
||||
if(pos){
|
||||
gtk_dcerpcstat_init(&uuid,major,minor,optarg+pos);
|
||||
} else {
|
||||
gtk_dcerpcstat_init(&uuid,major,minor,NULL);
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "ethereal: invalid \"-z dcerpc,rtt,<uuid>,<major version>.<minor version>[,<filter>]\" argument\n");
|
||||
exit(1);
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "tethereal: invalid -z argument. Argument must be one of:\n");
|
||||
fprintf(stderr, " \"-z dcerpc,rtt,<uuid>,<major version>.<minor version>[,<filter>]\"\n");
|
||||
exit(1);
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "ethereal: invalid -z argument. Argument must be one of:\n");
|
||||
fprintf(stderr, " \"-z rpc,...\"\n");
|
||||
fprintf(stderr, " \"-z dcerpc,...\"\n");
|
||||
exit(1);
|
||||
}
|
||||
case 'z':
|
||||
for(tli=tap_list;tli;tli=tli->next){
|
||||
if(!strncmp(tli->cmd,optarg,strlen(tli->cmd))){
|
||||
(*tli->func)(optarg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!tli){
|
||||
fprintf(stderr,"ethereal: invalid -z argument.\n");
|
||||
fprintf(stderr," -z argument must be one of :\n");
|
||||
for(tli=tap_list;tli;tli=tli->next){
|
||||
fprintf(stderr," %s\n",tli->cmd);
|
||||
}
|
||||
exit(1);
|
||||
}
|
||||
break;
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifdef HAVE_LIBPCAP
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* menu.c
|
||||
* Menu routines
|
||||
*
|
||||
* $Id: menu.c,v 1.70 2002/11/03 17:38:33 oabad Exp $
|
||||
* $Id: menu.c,v 1.71 2002/11/06 10:53:36 sahlberg Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@ethereal.com>
|
||||
|
@ -178,7 +178,7 @@ static GtkItemFactoryEntry menu_items[] =
|
|||
{"/Tools/Statistics", NULL, NULL, 0, "<Branch>" },
|
||||
{"/Tools/Statistics/ONC-RPC", NULL, NULL, 0, "<Branch>", },
|
||||
{"/Tools/Statistics/ONC-RPC/RTT", NULL, GTK_MENU_FUNC(gtk_rpcstat_cb), 0, NULL, },
|
||||
{"/Tools/Statistics/ONC-RPC/Programs", NULL, GTK_MENU_FUNC(gtk_rpcprogs_init), 0, NULL, },
|
||||
{"/Tools/Statistics/ONC-RPC/Programs", NULL, GTK_MENU_FUNC(gtk_rpcprogs_cb), 0, NULL, },
|
||||
{"/Tools/Statistics/DCE-RPC", NULL, NULL, 0, "<Branch>", },
|
||||
{"/Tools/Statistics/DCE-RPC/RTT", NULL, GTK_MENU_FUNC(gtk_dcerpcstat_cb), 0, NULL, },
|
||||
{"/_Help", NULL, NULL, 0, "<LastBranch>" },
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* rpc_progs.c
|
||||
* rpc_progs 2002 Ronnie Sahlberg
|
||||
*
|
||||
* $Id: rpc_progs.c,v 1.3 2002/10/23 23:17:11 guy Exp $
|
||||
* $Id: rpc_progs.c,v 1.4 2002/11/06 10:53:36 sahlberg Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@ethereal.com>
|
||||
|
@ -35,6 +35,7 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include "epan/packet_info.h"
|
||||
#include "tap.h"
|
||||
#include "../register.h"
|
||||
#include "rpc_progs.h"
|
||||
#include "packet-rpc.h"
|
||||
#include "../globals.h"
|
||||
|
@ -301,8 +302,8 @@ win_destroy_cb(void *dummy _U_, gpointer data _U_)
|
|||
|
||||
/* When called, this function will start rpcprogs
|
||||
*/
|
||||
void
|
||||
gtk_rpcprogs_init(void)
|
||||
static void
|
||||
gtk_rpcprogs_init(char *optarg _U_)
|
||||
{
|
||||
char title_string[60];
|
||||
GtkWidget *vbox;
|
||||
|
@ -375,3 +376,14 @@ gtk_rpcprogs_init(void)
|
|||
redissect_packets(&cfile);
|
||||
}
|
||||
|
||||
void
|
||||
gtk_rpcprogs_cb(GtkWidget *w _U_, gpointer d _U_)
|
||||
{
|
||||
gtk_rpcprogs_init("");
|
||||
}
|
||||
|
||||
void
|
||||
register_tap_listener_gtkrpcprogs(void)
|
||||
{
|
||||
register_ethereal_tap("rpc,programs", gtk_rpcprogs_init, NULL, NULL);
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* rpc_progs.h
|
||||
* rpc_progs 2002 Ronnie Sahlberg
|
||||
*
|
||||
* $Id: rpc_progs.h,v 1.1 2002/09/07 10:02:32 sahlberg Exp $
|
||||
* $Id: rpc_progs.h,v 1.2 2002/11/06 10:53:36 sahlberg Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@ethereal.com>
|
||||
|
@ -25,7 +25,6 @@
|
|||
#ifndef __RPC_PROGS_H__
|
||||
#define __RPC_PROGS_H__
|
||||
|
||||
void gtk_rpcprogs_init(void);
|
||||
void gtk_rpcprogs_cb(GtkWidget *w, gpointer d);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* rpc_stat.c
|
||||
* rpc_stat 2002 Ronnie Sahlberg
|
||||
*
|
||||
* $Id: rpc_stat.c,v 1.4 2002/10/23 23:17:11 guy Exp $
|
||||
* $Id: rpc_stat.c,v 1.5 2002/11/06 10:53:36 sahlberg Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@ethereal.com>
|
||||
|
@ -36,6 +36,7 @@
|
|||
#include "epan/packet_info.h"
|
||||
#include "simple_dialog.h"
|
||||
#include "tap.h"
|
||||
#include "../register.h"
|
||||
#include "rpc_stat.h"
|
||||
#include "packet-rpc.h"
|
||||
#include "../globals.h"
|
||||
|
@ -268,8 +269,8 @@ win_destroy_cb(GtkWindow *win _U_, gpointer data)
|
|||
|
||||
/* When called, this function will create a new instance of gtk2-rpcstat.
|
||||
*/
|
||||
void
|
||||
gtk_rpcstat_init(guint32 program, guint32 version, char *filter)
|
||||
static void
|
||||
gtk_rpcstat_init(char *optarg)
|
||||
{
|
||||
rpcstat_t *rs;
|
||||
guint32 i;
|
||||
|
@ -279,6 +280,20 @@ gtk_rpcstat_init(guint32 program, guint32 version, char *filter)
|
|||
GtkWidget *stat_label;
|
||||
GtkWidget *filter_label;
|
||||
GtkWidget *tmp;
|
||||
int program, version, pos;
|
||||
char *filter=NULL;
|
||||
|
||||
pos=0;
|
||||
if(sscanf(optarg,"rpc,rtt,%d,%d,%n",&program,&version,&pos)==2){
|
||||
if(pos){
|
||||
filter=optarg+pos;
|
||||
} else {
|
||||
filter=NULL;
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "ethereal: invalid \"-z rpc,rtt,<program>,<version>[,<filter>]\" argument\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
rpc_program=program;
|
||||
rpc_version=version;
|
||||
|
@ -412,12 +427,16 @@ static void
|
|||
rpcstat_start_button_clicked(GtkWidget *item _U_, gpointer data _U_)
|
||||
{
|
||||
char *filter;
|
||||
char str[256];
|
||||
|
||||
filter=(char *)gtk_entry_get_text(GTK_ENTRY(filter_entry));
|
||||
if(filter[0]==0){
|
||||
filter=NULL;
|
||||
sprintf(str, "rpc,rtt,%d,%d", rpc_program, rpc_version);
|
||||
filter="";
|
||||
} else {
|
||||
sprintf(str, "rpc,rtt,%d,%d,%s", rpc_program, rpc_version, filter);
|
||||
}
|
||||
gtk_rpcstat_init(rpc_program, rpc_version, filter);
|
||||
gtk_rpcstat_init(str);
|
||||
}
|
||||
|
||||
|
||||
|
@ -583,3 +602,8 @@ gtk_rpcstat_cb(GtkWidget *w _U_, gpointer d _U_)
|
|||
}
|
||||
|
||||
|
||||
void
|
||||
register_tap_listener_gtkrpcstat(void)
|
||||
{
|
||||
register_ethereal_tap("rpc,rtt,", gtk_rpcstat_init, NULL, NULL);
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* rpc_stat.h
|
||||
* rpc_stat 2002 Ronnie Sahlberg
|
||||
*
|
||||
* $Id: rpc_stat.h,v 1.2 2002/09/27 11:07:10 sahlberg Exp $
|
||||
* $Id: rpc_stat.h,v 1.3 2002/11/06 10:53:36 sahlberg Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@ethereal.com>
|
||||
|
@ -25,7 +25,6 @@
|
|||
#ifndef __RPCSTAT_H__
|
||||
#define __RPCSTAT_H__
|
||||
|
||||
void gtk_rpcstat_init(guint32 program, guint32 version, char *filter);
|
||||
void gtk_rpcstat_cb(GtkWidget *w, gpointer d);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue