diff --git a/AUTHORS b/AUTHORS index 0ed193546c..6a08f1146d 100644 --- a/AUTHORS +++ b/AUTHORS @@ -100,6 +100,10 @@ Ashok Narayanan { RSVP } +Aaron Hillegass { + Summary dialogue +} + Alain Magloire was kind enough to give his permission to use his version of snprintf.c. diff --git a/Makefile.am b/Makefile.am index 99004846ea..9c02ce4307 100644 --- a/Makefile.am +++ b/Makefile.am @@ -90,6 +90,8 @@ ethereal_SOURCES = \ resolv.c \ resolv.h \ smb.h \ + summary.h \ + summary.c \ util.c \ util.h diff --git a/Makefile.in b/Makefile.in index b8922fbfa1..094fd82575 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated automatically by automake 1.4 from Makefile.am +# Makefile.in generated automatically by automake 1.4a from Makefile.am # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation @@ -46,9 +46,10 @@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_FLAG = transform = @program_transform_name@ NORMAL_INSTALL = : @@ -82,7 +83,7 @@ man_MANS = ethereal.1 sysconf_DATA = manuf -ethereal_SOURCES = alignment.h capture.c capture.h column.c column.h config.h display.c display.h ethereal.c ethereal.h ethertype.c etypes.h file.c file.h filter.c filter.h follow.c follow.h gtkpacket.c gtkpacket.h menu.c menu.h packet-aarp.c packet-arp.c packet-atalk.c packet-bootp.c packet-cdp.c packet-data.c packet-dns.c packet-dns.h packet-eth.c packet-fddi.c packet-ftp.c packet-giop.c packet-gre.c packet-http.c packet-icmpv6.c packet-ip.c packet-ip.h packet-ipsec.c packet-ipv6.c packet-ipv6.h packet-ipx.c packet-ipx.h packet-isakmp.c packet-llc.c packet-lpd.c packet-nbipx.c packet-nbns.c packet-ncp.c packet-ncp.h packet-nntp.c packet-null.c packet-osi.c packet-ospf.c packet-ospf.h packet-pop.c packet-ppp.c packet-pppoe.c packet-pptp.c packet-raw.c packet-rip.c packet-rip.h packet-rsvp.c packet-rsvp.h packet-smb.c packet-tcp.c packet-telnet.c packet-tftp.c packet-tr.c packet-trmac.c packet-udp.c packet-vines.c packet-vines.h packet.c packet.h prefs.c prefs.h print.c print.h ps.c ps.h resolv.c resolv.h smb.h util.c util.h +ethereal_SOURCES = alignment.h capture.c capture.h column.c column.h config.h display.c display.h ethereal.c ethereal.h ethertype.c etypes.h file.c file.h filter.c filter.h follow.c follow.h gtkpacket.c gtkpacket.h menu.c menu.h packet-aarp.c packet-arp.c packet-atalk.c packet-bootp.c packet-cdp.c packet-data.c packet-dns.c packet-dns.h packet-eth.c packet-fddi.c packet-ftp.c packet-giop.c packet-gre.c packet-http.c packet-icmpv6.c packet-ip.c packet-ip.h packet-ipsec.c packet-ipv6.c packet-ipv6.h packet-ipx.c packet-ipx.h packet-isakmp.c packet-llc.c packet-lpd.c packet-nbipx.c packet-nbns.c packet-ncp.c packet-ncp.h packet-nntp.c packet-null.c packet-osi.c packet-ospf.c packet-ospf.h packet-pop.c packet-ppp.c packet-pppoe.c packet-pptp.c packet-raw.c packet-rip.c packet-rip.h packet-rsvp.c packet-rsvp.h packet-smb.c packet-tcp.c packet-telnet.c packet-tftp.c packet-tr.c packet-trmac.c packet-udp.c packet-vines.c packet-vines.h packet.c packet.h prefs.c prefs.h print.c print.h ps.c ps.h resolv.c resolv.h smb.h summary.h summary.c util.c util.h EXTRA_ethereal_SOURCES = packet-snmp.c snprintf.c snprintf.h snprintf-imp.h strerror.c strerror.h @@ -119,7 +120,7 @@ packet-nbns.o packet-ncp.o packet-nntp.o packet-null.o packet-osi.o \ packet-ospf.o packet-pop.o packet-ppp.o packet-pppoe.o packet-pptp.o \ packet-raw.o packet-rip.o packet-rsvp.o packet-smb.o packet-tcp.o \ packet-telnet.o packet-tftp.o packet-tr.o packet-trmac.o packet-udp.o \ -packet-vines.o packet.o prefs.o print.o ps.o resolv.o util.o +packet-vines.o packet.o prefs.o print.o ps.o resolv.o summary.o util.o ethereal_LDFLAGS = CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -139,7 +140,7 @@ missing mkinstalldirs ylwrap DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) -TAR = tar +TAR = gtar GZIP_ENV = --best DEP_FILES = .deps/capture.P .deps/column.P .deps/display.P \ .deps/ethereal.P .deps/ethertype.P .deps/file.P .deps/filter.P \ @@ -160,7 +161,7 @@ DEP_FILES = .deps/capture.P .deps/column.P .deps/display.P \ .deps/packet-tr.P .deps/packet-trmac.P .deps/packet-udp.P \ .deps/packet-vines.P .deps/packet.P .deps/prefs.P .deps/print.P \ .deps/ps.P .deps/resolv.P .deps/snprintf.P .deps/strerror.P \ -.deps/util.P +.deps/summary.P .deps/util.P SOURCES = $(ethereal_SOURCES) $(EXTRA_ethereal_SOURCES) OBJECTS = $(ethereal_OBJECTS) @@ -224,8 +225,8 @@ install-binPROGRAMS: $(bin_PROGRAMS) $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ - echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ + $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ else :; fi; \ done @@ -449,7 +450,7 @@ distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ - cp -pr $$/$$file $(distdir)/$$file; \ + cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ @@ -523,7 +524,7 @@ uninstall: uninstall-recursive all-am: Makefile $(PROGRAMS) $(MANS) $(DATA) config.h all-redirect: all-recursive-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install + $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install installdirs: installdirs-recursive installdirs-am: $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(mandir)/man1 \ diff --git a/NEWS b/NEWS index 18860b379e..f1e1c0ff53 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,7 @@ Overview of changes in Ethereal 0.6.3: * PPPoE (PPP over Ethernet) added (Jeff Jahr) * ISAKMP, GRE, PPTP added (Brad Robel-Forrest) * RSVP added (Ashok Narayanan) +* Summary dialogue added (Aaron Hillegass) Overview of changes in Ethereal 0.6.2: * Almost-real-time capture and display (John, Laurent) diff --git a/aclocal.m4 b/aclocal.m4 index aa9e319f1e..fba6b3a302 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,7 +1,7 @@ -dnl aclocal.m4 generated automatically by aclocal 1.3 +dnl aclocal.m4 generated automatically by aclocal 1.4a -dnl Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. -dnl This Makefile.in is free software; the Free Software Foundation +dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -183,6 +183,8 @@ dnl AM_INIT_AUTOMAKE(package,version, [no-define]) AC_DEFUN(AM_INIT_AUTOMAKE, [AC_REQUIRE([AC_PROG_INSTALL]) +dnl We require 2.13 because we rely on SHELL being computed by configure. +AC_PREREQ([2.13]) PACKAGE=[$1] AC_SUBST(PACKAGE) VERSION=[$2] @@ -192,8 +194,8 @@ if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi ifelse([$3],, -AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE") -AC_DEFINE_UNQUOTED(VERSION, "$VERSION")) +AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) +AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) AC_REQUIRE([AM_SANITY_CHECK]) AC_REQUIRE([AC_ARG_PROGRAM]) dnl FIXME This is truly gross. @@ -205,15 +207,6 @@ AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) AC_REQUIRE([AC_PROG_MAKE_SET])]) - -# serial 1 - -AC_DEFUN(AM_PROG_INSTALL, -[AC_REQUIRE([AC_PROG_INSTALL]) -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' -AC_SUBST(INSTALL_SCRIPT)dnl -]) - # # Check to make sure that the build environment is sane. # @@ -276,7 +269,7 @@ AC_SUBST($1)]) # Configure paths for GTK+ # Owen Taylor 97-11-3 -dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS dnl AC_DEFUN(AM_PATH_GTK, @@ -290,6 +283,15 @@ AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program], , enable_gtktest=yes) + for module in . $4 + do + case "$module" in + gthread) + gtk_config_args="$gtk_config_args gthread" + ;; + esac + done + if test x$gtk_config_exec_prefix != x ; then gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" if test x${GTK_CONFIG+set} != xset ; then @@ -322,7 +324,7 @@ AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$LIBS $GTK_LIBS" + LIBS="$GTK_LIBS $LIBS" dnl dnl Now check if the installed GTK is sufficiently new. (Also sanity dnl checks the results of gtk-config to some extent @@ -331,6 +333,7 @@ dnl AC_TRY_RUN([ #include #include +#include int main () @@ -363,6 +366,17 @@ main () printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); printf("*** before re-running configure\n"); } +#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) + else if ((gtk_major_version != GTK_MAJOR_VERSION) || + (gtk_minor_version != GTK_MINOR_VERSION) || + (gtk_micro_version != GTK_MICRO_VERSION)) + { + printf("*** GTK+ header files (version %d.%d.%d) do not match\n", + GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + } +#endif /* defined (GTK_MAJOR_VERSION) ... */ else { if ((gtk_major_version > major) || diff --git a/capture.c b/capture.c index f60892a549..0b5ab5e3d1 100644 --- a/capture.c +++ b/capture.c @@ -1,7 +1,7 @@ /* capture.c * Routines for packet capture windows * - * $Id: capture.c,v 1.28 1999/06/21 19:04:34 gram Exp $ + * $Id: capture.c,v 1.29 1999/06/22 22:02:09 gram Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -561,9 +561,11 @@ capture(void) { #ifdef USE_ITEM set_menu_sensitivity("/File/Save", TRUE); set_menu_sensitivity("/File/Save as", FALSE); + set_menu_sensitivity("/Tools/Summary", TRUE); #else set_menu_sensitivity("
/File/Save", TRUE); set_menu_sensitivity("
/File/Save as", FALSE); + set_menu_sensitivity("
/Tools/Summary", TRUE); #endif } diff --git a/configure b/configure index f351f6913e..cdbdf58ad1 100755 --- a/configure +++ b/configure @@ -703,6 +703,7 @@ else fi + PACKAGE=ethereal VERSION=0.6.2 @@ -722,7 +723,7 @@ EOF missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 -echo "configure:726: checking for working aclocal" >&5 +echo "configure:727: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -735,7 +736,7 @@ else fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 -echo "configure:739: checking for working autoconf" >&5 +echo "configure:740: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -748,7 +749,7 @@ else fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 -echo "configure:752: checking for working automake" >&5 +echo "configure:753: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -761,7 +762,7 @@ else fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 -echo "configure:765: checking for working autoheader" >&5 +echo "configure:766: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -774,7 +775,7 @@ else fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 -echo "configure:778: checking for working makeinfo" >&5 +echo "configure:779: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -795,7 +796,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:799: checking host system type" >&5 +echo "configure:800: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -819,7 +820,7 @@ echo "$ac_t""$host" 1>&6 # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:823: checking for $ac_word" >&5 +echo "configure:824: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -849,7 +850,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:853: checking for $ac_word" >&5 +echo "configure:854: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -900,7 +901,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:904: checking for $ac_word" >&5 +echo "configure:905: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -932,7 +933,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:936: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:937: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -943,12 +944,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 947 "configure" +#line 948 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:953: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -974,12 +975,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:978: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:979: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:983: checking whether we are using GNU C" >&5 +echo "configure:984: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -988,7 +989,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:992: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:993: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1007,7 +1008,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1011: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1012: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1041,7 +1042,7 @@ fi # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1045: checking for $ac_word" >&5 +echo "configure:1046: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1071,7 +1072,7 @@ fi # If we're running gcc, add '-Wall' to CFLAGS. echo $ac_n "checking to see if we can add '-Wall' to CFLAGS""... $ac_c" 1>&6 -echo "configure:1075: checking to see if we can add '-Wall' to CFLAGS" >&5 +echo "configure:1076: checking to see if we can add '-Wall' to CFLAGS" >&5 if test x$GCC != x ; then CFLAGS="-Wall $CFLAGS" echo "$ac_t""yes" 1>&6 @@ -1097,7 +1098,7 @@ EOF case "$host_os" in solaris*) echo $ac_n "checking for LD_LIBRARY_PATH""... $ac_c" 1>&6 -echo "configure:1101: checking for LD_LIBRARY_PATH" >&5 +echo "configure:1102: checking for LD_LIBRARY_PATH" >&5 if test x$LD_LIBRARY_PATH != x ; then LIBS="$LIBS -R$LD_LIBRARY_PATH" echo "$ac_t""yes -- added LD_LIBRARY_PATH to run-time linker path" 1>&6 @@ -1158,7 +1159,7 @@ fi # Extract the first word of "gtk-config", so it can be a program name with args. set dummy gtk-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1162: checking for $ac_word" >&5 +echo "configure:1163: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GTK_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1193,7 +1194,7 @@ fi min_gtk_version=1.0.0 echo $ac_n "checking for GTK - version >= $min_gtk_version""... $ac_c" 1>&6 -echo "configure:1197: checking for GTK - version >= $min_gtk_version" >&5 +echo "configure:1198: checking for GTK - version >= $min_gtk_version" >&5 no_gtk="" if test "$GTK_CONFIG" = "no" ; then no_gtk=yes @@ -1216,7 +1217,7 @@ echo "configure:1197: checking for GTK - version >= $min_gtk_version" >&5 echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < @@ -1294,7 +1295,7 @@ main () } EOF -if { (eval echo configure:1298: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1299: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -1328,7 +1329,7 @@ fi CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$LIBS $GTK_LIBS" cat > conftest.$ac_ext < @@ -1338,7 +1339,7 @@ int main() { return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ; return 0; } EOF -if { (eval echo configure:1342: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1343: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GTK or finding the wrong" @@ -1379,7 +1380,7 @@ rm -f conftest* # Evidently, some systems have pcap.h, etc. in */include/pcap echo $ac_n "checking for extraneous pcap header directories""... $ac_c" 1>&6 -echo "configure:1383: checking for extraneous pcap header directories" >&5 +echo "configure:1384: checking for extraneous pcap header directories" >&5 found_pcap_dir="" for pcap_dir in /usr/include/pcap /usr/local/include/pcap do @@ -1399,7 +1400,7 @@ fi # Pcap checks echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1403: checking how to run the C preprocessor" >&5 +echo "configure:1404: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1414,13 +1415,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1424: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1425: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1431,13 +1432,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1441: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1442: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1448,13 +1449,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1458: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1459: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1480,17 +1481,17 @@ echo "$ac_t""$CPP" 1>&6 ac_safe=`echo "net/bpf.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for net/bpf.h""... $ac_c" 1>&6 -echo "configure:1484: checking for net/bpf.h" >&5 +echo "configure:1485: checking for net/bpf.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1494: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1495: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1514,17 +1515,17 @@ fi ac_safe=`echo "pcap.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for pcap.h""... $ac_c" 1>&6 -echo "configure:1518: checking for pcap.h" >&5 +echo "configure:1519: checking for pcap.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1528: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1529: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1547,7 +1548,7 @@ else fi echo $ac_n "checking for pcap_open_offline in -lpcap""... $ac_c" 1>&6 -echo "configure:1551: checking for pcap_open_offline in -lpcap" >&5 +echo "configure:1552: checking for pcap_open_offline in -lpcap" >&5 ac_lib_var=`echo pcap'_'pcap_open_offline | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1555,7 +1556,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpcap $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1597,7 +1598,7 @@ fi # Wiretap check echo $ac_n "checking whether to include wiretap library""... $ac_c" 1>&6 -echo "configure:1601: checking whether to include wiretap library" >&5 +echo "configure:1602: checking whether to include wiretap library" >&5 # Check whether --with-wiretap or --without-wiretap was given. if test "${with_wiretap+set}" = set; then withval="$with_wiretap" @@ -1639,7 +1640,7 @@ fi echo $ac_n "checking whether to enable ipv6 name resolution if available""... $ac_c" 1>&6 -echo "configure:1643: checking whether to enable ipv6 name resolution if available" >&5 +echo "configure:1644: checking whether to enable ipv6 name resolution if available" >&5 if test "x$enable_ipv6" = "xno" ; then echo "$ac_t""no" 1>&6 else @@ -1649,12 +1650,12 @@ else v6lib=none echo $ac_n "checking ipv6 stack type""... $ac_c" 1>&6 -echo "configure:1653: checking ipv6 stack type" >&5 +echo "configure:1654: checking ipv6 stack type" >&5 for i in v6d toshiba kame inria zeta linux; do case $i in v6d) cat > conftest.$ac_ext < @@ -1674,7 +1675,7 @@ rm -f conftest* ;; toshiba) cat > conftest.$ac_ext < @@ -1694,7 +1695,7 @@ rm -f conftest* ;; kame) cat > conftest.$ac_ext < @@ -1714,7 +1715,7 @@ rm -f conftest* ;; inria) cat > conftest.$ac_ext < @@ -1732,7 +1733,7 @@ rm -f conftest* ;; zeta) cat > conftest.$ac_ext < @@ -1781,12 +1782,12 @@ fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:1785: checking for ANSI C header files" >&5 +echo "configure:1786: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1794,7 +1795,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1798: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1799: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1811,7 +1812,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -1829,7 +1830,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -1850,7 +1851,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -1861,7 +1862,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:1865: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -1888,17 +1889,17 @@ for ac_hdr in fcntl.h sys/ioctl.h sys/time.h unistd.h stdarg.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1892: checking for $ac_hdr" >&5 +echo "configure:1893: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1902: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1903: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1929,17 +1930,17 @@ for ac_hdr in sys/sockio.h sys/types.h netinet/in.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1933: checking for $ac_hdr" >&5 +echo "configure:1934: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1943: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1944: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1979,7 +1980,7 @@ fi SNMP_A='' SNMP_O='' echo $ac_n "checking whether to use SNMP library if available""... $ac_c" 1>&6 -echo "configure:1983: checking whether to use SNMP library if available" >&5 +echo "configure:1984: checking whether to use SNMP library if available" >&5 if test "x$enable_snmp" = "xno" ; then echo "$ac_t""no" 1>&6 else @@ -1988,17 +1989,17 @@ else do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1992: checking for $ac_hdr" >&5 +echo "configure:1993: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2002: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2003: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2025,7 +2026,7 @@ fi done echo $ac_n "checking for asn_parse_header in -lsnmp""... $ac_c" 1>&6 -echo "configure:2029: checking for asn_parse_header in -lsnmp" >&5 +echo "configure:2030: checking for asn_parse_header in -lsnmp" >&5 ac_lib_var=`echo snmp'_'asn_parse_header | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2033,7 +2034,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsnmp $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2049: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2077,12 +2078,12 @@ fi # for get_interface_list(). echo $ac_n "checking for sa_len in struct sockaddr""... $ac_c" 1>&6 -echo "configure:2081: checking for sa_len in struct sockaddr" >&5 +echo "configure:2082: checking for sa_len in struct sockaddr" >&5 if eval "test \"`echo '$''{'ac_cv_ethereal_struct_sa_len'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2090,7 +2091,7 @@ int main() { struct sockaddr s; s.sa_len; ; return 0; } EOF -if { (eval echo configure:2094: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2095: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_ethereal_struct_sa_len=yes else @@ -2113,14 +2114,14 @@ fi # We must know our byte order echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:2117: checking whether byte ordering is bigendian" >&5 +echo "configure:2118: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -2131,11 +2132,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:2135: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2136: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -2146,7 +2147,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:2150: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2151: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -2166,7 +2167,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -2205,13 +2206,13 @@ fi if test $ac_cv_prog_gcc = yes; then echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6 -echo "configure:2209: checking whether ${CC-cc} needs -traditional" >&5 +echo "configure:2210: checking whether ${CC-cc} needs -traditional" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_pattern="Autoconf.*'x'" cat > conftest.$ac_ext < Autoconf TIOCGETP @@ -2229,7 +2230,7 @@ rm -f conftest* if test $ac_cv_prog_gcc_traditional = no; then cat > conftest.$ac_ext < Autoconf TCGETA @@ -2251,12 +2252,12 @@ echo "$ac_t""$ac_cv_prog_gcc_traditional" 1>&6 fi echo $ac_n "checking for socket""... $ac_c" 1>&6 -echo "configure:2255: checking for socket" >&5 +echo "configure:2256: checking for socket" >&5 if eval "test \"`echo '$''{'ac_cv_func_socket'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_socket=yes" else @@ -2305,12 +2306,12 @@ fi SNPRINTF_C="" SNPRINTF_O="" echo $ac_n "checking for snprintf""... $ac_c" 1>&6 -echo "configure:2309: checking for snprintf" >&5 +echo "configure:2310: checking for snprintf" >&5 if eval "test \"`echo '$''{'ac_cv_func_snprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_snprintf=yes" else @@ -2364,12 +2365,12 @@ fi echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:2368: checking for strerror" >&5 +echo "configure:2369: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2397: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else diff --git a/doc/ethereal.pod b/doc/ethereal.pod index ae16fc1a16..0ac1050934 100644 --- a/doc/ethereal.pod +++ b/doc/ethereal.pod @@ -377,6 +377,7 @@ B. Jeff Jahr Brad Robel-Forrest Ashok Narayanan + Aaron Hillegass Alain Magloire was kind enough to give his permission to use his version of snprintf.c. diff --git a/ethereal.c b/ethereal.c index 99b7630ff4..475e7bea54 100644 --- a/ethereal.c +++ b/ethereal.c @@ -1,6 +1,6 @@ /* ethereal.c * - * $Id: ethereal.c,v 1.43 1999/06/19 03:14:31 guy Exp $ + * $Id: ethereal.c,v 1.44 1999/06/22 22:02:10 gram Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -75,6 +75,7 @@ #include "timestamp.h" #include "packet.h" #include "capture.h" +#include "summary.h" #include "file.h" #include "menu.h" #include "etypes.h" @@ -142,6 +143,7 @@ about_ethereal( GtkWidget *w, gpointer data ) { "Jeff Jahr \n" "Brad Robel-Forrest \n" "Ashok Narayanan \n" + "Aaron Hillegass \n" "\nSee http://ethereal.zing.org for more information", VERSION, comp_info_str); @@ -169,9 +171,11 @@ file_sel_ok_cb(GtkWidget *w, GtkFileSelection *fs) { #ifdef USE_ITEM set_menu_sensitivity("/File/Save", FALSE); set_menu_sensitivity("/File/Save As...", TRUE); + set_menu_sensitivity("/Tools/Summary", TRUE); #else set_menu_sensitivity("
/File/Save", FALSE); set_menu_sensitivity("
/File/Save As...", TRUE); + set_menu_sensitivity("
/Tools/Summary", TRUE); #endif } @@ -326,9 +330,11 @@ file_close_cmd_cb(GtkWidget *widget, gpointer data) { #ifdef USE_ITEM set_menu_sensitivity("/File/Close", FALSE); set_menu_sensitivity("/File/Reload", FALSE); + set_menu_sensitivity("/Tools/Summary", FALSE); #else set_menu_sensitivity("
/File/Close", FALSE); set_menu_sensitivity("
/File/Reload", FALSE); + set_menu_sensitivity("
/Tools/Summary", FALSE); #endif } @@ -942,8 +948,10 @@ main(int argc, char *argv[]) cf_name[0] = '\0'; #ifdef USE_ITEM set_menu_sensitivity("/File/Save As...", TRUE); + set_menu_sensitivity("/Tools/Summary", TRUE); #else set_menu_sensitivity("
/File/Save As...", TRUE); + set_menu_sensitivity("
/Tools/Summary", TRUE); #endif } diff --git a/ethertype.c b/ethertype.c index 952723e729..e9ad98e2f0 100644 --- a/ethertype.c +++ b/ethertype.c @@ -2,7 +2,7 @@ * Routines for calling the right protocol for the ethertype. * This is called by both packet-eth.c (Ethernet II) and packet-llc.c (SNAP) * - * $Id: ethertype.c,v 1.14 1999/06/11 15:30:37 gram Exp $ + * $Id: ethertype.c,v 1.15 1999/06/22 22:02:11 gram Exp $ * * Gilbert Ramirez * @@ -51,6 +51,7 @@ ethertype_to_str(guint16 etype, const char *fmt) {ETHERTYPE_IPX, "Netware IPX/SPX"}, {ETHERTYPE_VINES, "Vines" }, {ETHERTYPE_CDP, "CDP" }, /* Cisco Discovery Protocol */ + {ETHERTYPE_TRAIN, "Netmon Train" }, {ETHERTYPE_LOOP, "Loopback" }, /* Ethernet Loopback */ {ETHERTYPE_PPPOED, "PPPoE Discovery"}, {ETHERTYPE_PPPOES, "PPPoE Session" }, @@ -126,3 +127,6 @@ ethertype(guint16 etype, int offset, break; } } + + + diff --git a/etypes.h b/etypes.h index 3447b5305e..3f50d600da 100644 --- a/etypes.h +++ b/etypes.h @@ -1,7 +1,7 @@ /* etypes.h * Defines ethernet packet types, similar to tcpdump's ethertype.h * - * $Id: etypes.h,v 1.5 1999/06/11 15:30:37 gram Exp $ + * $Id: etypes.h,v 1.6 1999/06/22 22:02:11 gram Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -70,6 +70,11 @@ #define ETHERTYPE_VINES 0xbad #endif +#ifndef ETHERTYPE_TRAIN +#define ETHERTYPE_TRAIN 0x1984 +/* Created by Netmon as a summary packet */ +#endif + #ifndef ETHERTYPE_CDP #define ETHERTYPE_CDP 0x2000 /* Cisco Discovery Protocol */ #endif @@ -88,3 +93,5 @@ #endif /* etypes.h */ + + diff --git a/file.c b/file.c index 03df57b114..24670409c5 100644 --- a/file.c +++ b/file.c @@ -1,7 +1,7 @@ /* file.c * File I/O routines * - * $Id: file.c,v 1.32 1999/06/22 03:39:06 guy Exp $ + * $Id: file.c,v 1.33 1999/06/22 22:02:11 gram Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -315,9 +315,11 @@ load_cap_file(char *fname, capture_file *cf) { #ifdef USE_ITEM set_menu_sensitivity("/File/Close", TRUE); set_menu_sensitivity("/File/Reload", TRUE); + set_menu_sensitivity("/Tools/Summary", TRUE); #else set_menu_sensitivity("
/File/Close", TRUE); set_menu_sensitivity("
/File/Reload", TRUE); + set_menu_sensitivity("
/Tools/Summary", TRUE); #endif } else { msg_len = strlen(name_ptr) + strlen(err_fmt) + 2; @@ -330,11 +332,14 @@ load_cap_file(char *fname, capture_file *cf) { set_menu_sensitivity("/File/Save", FALSE); set_menu_sensitivity("/File/Save As...", FALSE); set_menu_sensitivity("/File/Reload", FALSE); + set_menu_sensitivity("/Tools/Summary", FALSE); + #else set_menu_sensitivity("
/File/Close", FALSE); set_menu_sensitivity("
/File/Save", FALSE); set_menu_sensitivity("
/File/Save As...", FALSE); set_menu_sensitivity("
/File/Reload", FALSE); + set_menu_sensitivity("
/Tools/Summary", FALSE); #endif } return err; @@ -378,6 +383,8 @@ cap_file_input_cb (gpointer data, gint source, GdkInputCondition condition) { set_menu_sensitivity("/File/Reload", TRUE); set_menu_sensitivity("/Capture/Start...", TRUE); set_menu_sensitivity("/Tools/Capture...", TRUE); + set_menu_sensitivity("/Tools/Summary", TRUE); + #else set_menu_sensitivity("
/File/Open...", TRUE); set_menu_sensitivity("
/File/Close", TRUE); @@ -385,6 +392,7 @@ cap_file_input_cb (gpointer data, gint source, GdkInputCondition condition) { set_menu_sensitivity("
/File/Reload", TRUE); set_menu_sensitivity("
/Capture/Start...", TRUE); set_menu_sensitivity("
/Tools/Capture...", TRUE); + set_menu_sensitivity("
/Tools/Summary", TRUE); #endif gtk_statusbar_push(GTK_STATUSBAR(info_bar), file_ctx, " File: "); return; @@ -465,12 +473,16 @@ tail_cap_file(char *fname, capture_file *cf) { set_menu_sensitivity("/File/Reload", FALSE); set_menu_sensitivity("/Capture/Start...", FALSE); set_menu_sensitivity("/Tools/Capture...", FALSE); + set_menu_sensitivity("/Tools/Summary", FALSE); + #else set_menu_sensitivity("
/File/Open...", FALSE); set_menu_sensitivity("
/File/Close", FALSE); set_menu_sensitivity("
/File/Reload", FALSE); set_menu_sensitivity("
/Capture/Start...", FALSE); set_menu_sensitivity("
/Tools/Capture...", FALSE); + set_menu_sensitivity("
/Tools/Summary", FALSE); + #endif cf->fh = fopen(fname, "r"); tail_timeout_id = -1; @@ -489,11 +501,13 @@ tail_cap_file(char *fname, capture_file *cf) { set_menu_sensitivity("/File/Save", FALSE); set_menu_sensitivity("/File/Save As...", FALSE); set_menu_sensitivity("/File/Reload", FALSE); + set_menu_sensitivity("/Tools/Summary", FALSE); #else set_menu_sensitivity("
/File/Close", FALSE); set_menu_sensitivity("
/File/Save", FALSE); set_menu_sensitivity("
/File/Save As...", FALSE); set_menu_sensitivity("
/File/Reload", FALSE); + set_menu_sensitivity("
/Tools/Summary", FALSE); #endif close(sync_pipe[0]); } diff --git a/file.h b/file.h index 63088a8382..1da016cc40 100644 --- a/file.h +++ b/file.h @@ -1,7 +1,7 @@ /* file.h * Definitions for file structures and routines * - * $Id: file.h,v 1.16 1999/06/22 03:39:06 guy Exp $ + * $Id: file.h,v 1.17 1999/06/22 22:02:12 gram Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -149,3 +149,6 @@ char *file_read_error_message(int); char *file_write_error_message(int); #endif /* file.h */ + + + diff --git a/menu.c b/menu.c index 5fa7f395c7..fd5cab6843 100644 --- a/menu.c +++ b/menu.c @@ -1,7 +1,7 @@ /* menu.c * Menu routines * - * $Id: menu.c,v 1.20 1999/06/19 01:14:51 guy Exp $ + * $Id: menu.c,v 1.21 1999/06/22 22:02:12 gram Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -38,6 +38,7 @@ #include "menu.h" #include "packet.h" #include "capture.h" +#include "summary.h" #include "display.h" #include "prefs.h" #include "print.h" @@ -102,6 +103,7 @@ static GtkItemFactoryEntry menu_items[] = {"/Tools/_Capture...", NULL, GTK_MENU_FUNC(capture_prep_cb), 0, NULL}, {"/Tools/_Follow TCP Stream", NULL, GTK_MENU_FUNC(follow_stream_cb), 0, NULL}, {"/Tools/Graph", NULL, NULL, 0, NULL}, + {"/Tools/Summary", NULL, GTK_MENU_FUNC(summary_prep_cb), 0, NULL}, {"/_Help", NULL, NULL, 0, "" }, {"/Help/_About Ethereal...", NULL, GTK_MENU_FUNC(about_ethereal), 0, NULL} }; @@ -136,6 +138,7 @@ static GtkMenuEntry menu_items[] = {"
/Tools/Capture...", NULL, capture_prep_cb, NULL}, {"
/Tools/Follow TCP Stream", NULL, follow_stream_cb, NULL}, {"
/Tools/Graph", NULL, NULL, NULL}, + {"
/Tools/Summary", NULL, summary_prep_cb, NULL}, {"
/Help/About Ethereal...", NULL, about_ethereal, NULL} }; #endif @@ -207,6 +210,7 @@ menus_init(void) { set_menu_sensitivity("/Edit/Paste", FALSE); set_menu_sensitivity("/Edit/Find", FALSE); set_menu_sensitivity("/Tools/Graph", FALSE); + set_menu_sensitivity("/Tools/Summary", FALSE); #ifdef WITH_WIRETAP set_menu_sensitivity("/Tools/Follow TCP Stream", FALSE); #endif @@ -227,6 +231,7 @@ menus_init(void) { set_menu_sensitivity("
/Edit/Paste", FALSE); set_menu_sensitivity("
/Edit/Find", FALSE); set_menu_sensitivity("
/Tools/Graph", FALSE); + set_menu_sensitivity("
/Tools/Summary", FALSE); #ifdef WITH_WIRETAP set_menu_sensitivity("
/Tools/Follow TCP Stream", FALSE); #endif diff --git a/summary.c b/summary.c new file mode 100644 index 0000000000..7429d751f4 --- /dev/null +++ b/summary.c @@ -0,0 +1,311 @@ +/* summary.c + * Routines for capture file summary window + * + * $Id: summary.c,v 1.1 1999/06/22 22:02:12 gram Exp $ + * + * Ethereal - Network traffic analyzer + * By Gerald Combs + * Copyright 1998 Gerald Combs + * + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#ifdef HAVE_SYS_TYPES_H +# include +#endif + +#include +#include + +#include +#include +#include +#include + +#ifdef NEED_SNPRINTF_H +# ifdef HAVE_STDARG_H +# include +# else +# include +# endif +# include "snprintf.h" +#endif + +#ifdef HAVE_SYS_SOCKIO_H +# include +#endif + +#include "ethereal.h" +#include "packet.h" +#include "file.h" +#include "menu.h" +#include "summary.h" +#include "capture.h" +#include "etypes.h" +#include "util.h" +#include "prefs.h" + +extern capture_file cf; + +/* File selection data keys */ +#define E_SUM_PREP_FS_KEY "sum_prep_fs" +#define E_SUM_PREP_TE_KEY "sum_prep_te" + +/* Summary callback data keys */ +#define E_SUM_IFACE_KEY "sum_iface" +#define E_SUM_FILT_KEY "sum_filter" +#define E_SUM_COUNT_KEY "sum_count" +#define E_SUM_OPEN_KEY "sum_open" +#define E_SUM_SNAP_KEY "sum_snap" + +#define SUM_STR_MAX 1024 + +/* Summary filter key */ +#define E_SUM_FILT_TE_KEY "sum_filt_te" + +char * string_for_format(guint16 cd_t){ + switch (cd_t) { +#ifdef WITH_WIRETAP + case WTAP_FILE_WTAP: + return "wiretap"; + case WTAP_FILE_PCAP: + return "pcap"; + case WTAP_FILE_LANALYZER: + return "LanAlyzer"; + case WTAP_FILE_NGSNIFFER: + return "Sniffer"; + case WTAP_FILE_SNOOP: + return "snoop"; + case WTAP_FILE_IPTRACE: + return "iptrace"; + case WTAP_FILE_NETMON: + return "Network Monitor"; + case WTAP_FILE_NETXRAY: + return "NetXray/Sniffer Pro"; +#else + case CD_WIRE: + return "wiretap"; + case CD_SNOOP: + return "snoop"; + case CD_PCAP_BE: + return "pcap-be"; + case CD_PCAP_LE: + return "pcap-le"; + case CD_NA_UNCOMPR: + return "network-associates"; +#endif + default: + return "unknown"; + } +} + +double +secs_usecs( guint32 s, guint32 us) { + return (us / 1000000.0) + (double)s; +} + +void +tally_frame_data(gpointer cf, gpointer st) { + double cur_time; + summary_tally * sum_tally = (summary_tally *)st; + frame_data *cur_frame = (frame_data *)cf; + + cur_time = secs_usecs(cur_frame->abs_secs, cur_frame->abs_usecs); + if (cur_time < sum_tally->start_time) { + sum_tally->start_time = cur_time; + } + if (cur_time > sum_tally->stop_time){ + sum_tally->stop_time = cur_time; + } + sum_tally->bytes += cur_frame->pkt_len; + sum_tally->count++; +} + +void +add_string_to_box(gchar *str, GtkWidget *box) { + GtkWidget *lb; + lb = gtk_label_new(str); + gtk_misc_set_alignment(GTK_MISC(lb), 0.0, 0.5); + gtk_box_pack_start(GTK_BOX(box), lb,FALSE,FALSE, 0); + gtk_widget_show(lb); +} + +void +summary_prep_cb(GtkWidget *w, gpointer d) { + frame_data *first_frame, *cur_frame; + summary_tally *st; + GtkWidget *sum_open_w, + *main_vb, *file_fr, *data_fr, *capture_fr, *file_box, +*data_box, + *capture_box; + + gchar string_buff[SUM_STR_MAX]; + + guint32 traffic_bytes, i; + double seconds; + GList *cur_glist; + + /* initialize the tally */ + first_frame = (frame_data *)(cf.plist->data); + st = (summary_tally *)g_malloc(sizeof(summary_tally)); + st->start_time = secs_usecs(first_frame->abs_secs,first_frame->abs_usecs) +; + st->stop_time = secs_usecs(first_frame->abs_secs,first_frame->abs_usecs) +; + st->bytes = 0; + st->count = 0; + cur_glist = cf.plist; + + for (i = 0; i < cf.count; i++){ + cur_frame = (frame_data *)cur_glist->data; + tally_frame_data(cur_frame, st); + cur_glist = cur_glist->next; + } + + /* g_list_foreach(cf.plist_first, (GFunc)tally_frame_data, st); */ + + /* traffic_bytes will be computed here */ + traffic_bytes = st->bytes; + seconds = st->stop_time - st->start_time; + sum_open_w = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_set_title(GTK_WINDOW(sum_open_w), "Ethereal: Summary"); + + /* Container for each row of widgets */ + main_vb = gtk_vbox_new(FALSE, 3); + gtk_container_border_width(GTK_CONTAINER(main_vb), 5); + gtk_container_add(GTK_CONTAINER(sum_open_w), main_vb); + gtk_widget_show(main_vb); + + /* File frame */ + file_fr = gtk_frame_new("File"); + gtk_container_add(GTK_CONTAINER(main_vb), file_fr); + gtk_widget_show(file_fr); + + file_box = gtk_vbox_new(FALSE, 3); + gtk_container_add(GTK_CONTAINER(file_fr), file_box); + gtk_widget_show(file_box); + + /* filename */ + snprintf(string_buff, SUM_STR_MAX, "Name: %s", cf.filename); + add_string_to_box(string_buff, file_box); + + /* length */ + snprintf(string_buff, SUM_STR_MAX, "Length: %lu", cf.f_len); + add_string_to_box(string_buff, file_box); + + /* format */ + snprintf(string_buff, SUM_STR_MAX, "Format: %s", +string_for_format(cf.cd_t)); + add_string_to_box(string_buff, file_box); + + /* Data frame */ + data_fr = gtk_frame_new("Data"); + gtk_container_add(GTK_CONTAINER(main_vb), data_fr); + gtk_widget_show(data_fr); + + data_box = gtk_vbox_new(FALSE, 3); + gtk_container_add(GTK_CONTAINER(data_fr), data_box); + gtk_widget_show(data_box); + + /* seconds */ + snprintf(string_buff, SUM_STR_MAX, "Elapsed time: %.3f seconds", +secs_usecs(cf.esec,cf.eusec)); + add_string_to_box(string_buff, data_box); + + snprintf(string_buff, SUM_STR_MAX, "Between first and last packet: %.3f +seconds", seconds); + add_string_to_box(string_buff, data_box); + + /* Packet count */ + snprintf(string_buff, SUM_STR_MAX, "Packet count: %i", cf.count); + add_string_to_box(string_buff, data_box); + + /* Packets per second */ + if (seconds > 0){ + snprintf(string_buff, SUM_STR_MAX, "Avg. packets/sec: %.3f", +cf.count/seconds); + add_string_to_box(string_buff, data_box); + } + + /* Dropped count */ + snprintf(string_buff, SUM_STR_MAX, "Dropped packets: %i", cf.drops); + add_string_to_box(string_buff, data_box); + + /* Byte count */ + snprintf(string_buff, SUM_STR_MAX, "Bytes of traffic: %d", +traffic_bytes); + add_string_to_box(string_buff, data_box); + + /* Bytes per second */ + if (seconds > 0){ + snprintf(string_buff, SUM_STR_MAX, "Avg. bytes/sec: %.3f", +traffic_bytes/seconds); + add_string_to_box(string_buff, data_box); + } + + /* Capture frame */ + capture_fr = gtk_frame_new("Capture"); + gtk_container_add(GTK_CONTAINER(main_vb), capture_fr); + gtk_widget_show(capture_fr); + + capture_box = gtk_vbox_new(FALSE, 3); + gtk_container_add(GTK_CONTAINER(capture_fr), capture_box); + gtk_widget_show(capture_box); + + + /* interface */ + if (cf.iface) { + snprintf(string_buff, SUM_STR_MAX, "Interface: %s", cf.iface); + } else { + sprintf(string_buff, "Interface: unknown"); + } + add_string_to_box(string_buff, capture_box); + + /* Display filter */ + if (cf.dfilter) { + snprintf(string_buff, SUM_STR_MAX, "Display filter: %s", cf.dfilter); + } else { + sprintf(string_buff, "Display filter: none"); + } + add_string_to_box(string_buff, capture_box); + + + /* Capture filter */ + if (cf.cfilter) { + snprintf(string_buff, SUM_STR_MAX, "Capture filter: %s", cf.cfilter); + } else { + sprintf(string_buff, "Capture filter: none"); + } + add_string_to_box(string_buff, capture_box); + gtk_window_set_position(GTK_WINDOW(sum_open_w), GTK_WIN_POS_MOUSE); + gtk_widget_show(sum_open_w); +} + + +void +summary_prep_close_cb(GtkWidget *w, gpointer win) { + +#ifdef GTK_HAVE_FEATURES_1_1_0 + win = w; +#endif + gtk_grab_remove(GTK_WIDGET(win)); + gtk_widget_destroy(GTK_WIDGET(win)); +} diff --git a/summary.h b/summary.h new file mode 100644 index 0000000000..8e6ffba88b --- /dev/null +++ b/summary.h @@ -0,0 +1,46 @@ +/* summary.h + * Definitions for capture file summary windows + * + * $Id: summary.h,v 1.1 1999/06/22 22:02:12 gram Exp $ + * + * Ethereal - Network traffic analyzer + * By Gerald Combs + * Copyright 1998 Gerald Combs + * + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef __SUMMARY_H__ +#define __SUMMARY_H__ + +typedef struct _summary_tally { + guint32 bytes; + double start_time; + double stop_time; + guint32 count; +} summary_tally; + + + +void summary_prep_cb(GtkWidget *, gpointer); +void summary_prep_close_cb(GtkWidget *, gpointer); + +#endif /* summary.h */ + + + + + diff --git a/wiretap/config.h.in b/wiretap/config.h.in index 4ae27a3df1..4486b95254 100644 --- a/wiretap/config.h.in +++ b/wiretap/config.h.in @@ -6,11 +6,14 @@ /* Define if lex declares yytext as a char * by default, not a char[]. */ #undef YYTEXT_POINTER -#undef PACKAGE - -#undef VERSION - #undef HAVE_GLIB10 /* Define if you have the header file. */ #undef HAVE_UNISTD_H + +/* Name of package */ +#undef PACKAGE + +/* Version number of package */ +#undef VERSION +