summaryrefslogtreecommitdiff
path: root/tethereal.c
AgeCommit message (Collapse)AuthorFilesLines
2001-06-08Move the fragment reassembly code into "reassemble.c" andGuy Harris1-1/+14
"reassemble.h", and remove IPv4 dependencies from it. Use it for OSI CLNP segment reassembly as well. svn path=/trunk/; revision=3525
2001-06-05Enable "Match Selected" only if there's a field selected *and* we can doGuy Harris1-3/+2
a "Match Selected" on it - we can't do a "Match Selected" if the field has no value (e.g., FT_NULL) and has a length of 0. If we unselect the current packet, we don't have a protocol tree, so we don't have a currently selected field - clear the "Match Selected" menu item and the display in the status line of information about the currently selected field. Move the low-level statusbar manipulation into "gtk/main.c", in routines whose API doesn't expose anything GTK+-ish. "close_cap_file()" calls one of those routines to clear out the status bar, so it doesn't need to take a pointer to the statusbar widget as an argument. "clear_tree_and_hex_views()" is purely a display-manipulating routine; move it to "gtk/proto_draw.c". Extract from "tree_view_unselect_row_cb()" an "unselect_field()" routine to do all the work that needs to be done if the currently selected protocol tree row is unselected, and call it if the currently selected packet list row is unselected (if it's unselected, there *is* no protocol tree, so no row can be selected), as well as from "tree_view_unselect_row_cb()". Before pushing a new field-description message onto the statusbar, pop the old one off. Get rid of an unused variable (set, but not used). svn path=/trunk/; revision=3513
2001-05-31Support for "-N" flag enabling selected forms of name resolution, fromGuy Harris1-12/+23
Joerg Meyer. Support for saving to the preferences file the settings for all types of name resolution. Do a case-insensitive check for "true" and "false" in Boolean preference settings. svn path=/trunk/; revision=3489
2001-04-20In ANSI C (and in pre-ANSI UNIX implementations), if you return fromGuy Harris1-3/+2
"main()", the program exits, and exits with an exit status equal to the return value of "main()", so "return 0;" is sufficient at the end of "main()". svn path=/trunk/; revision=3350
2001-04-20Add a "return 0;" at the end of main() to pacify MSVC 5 (and probablyGilbert Ramirez1-1/+2
other compilers, too.) svn path=/trunk/; revision=3347
2001-04-18Check the validity of numbers specified in command-line options.Guy Harris1-3/+29
svn path=/trunk/; revision=3326
2001-04-15There's no "enable name resolution in captures" preference in Ethereal,Guy Harris1-2/+2
and never was - there's only an Ethereal-wide "enable name resolution" preference. Name it just "name_resolve". Replace all tests of "g_resolving_actif" with tests of "prefs.name_resolv", and replace all code that sets "g_resolving_actif" with code that sets "prefs.name_resolv", so that the setting of "prefs.name_resolv" actually affects whether names are resolved or not. svn path=/trunk/; revision=3300
2001-04-11The Software Porting And Archive Centre for HP-UX now has libpcap 0.6.2Guy Harris1-12/+9
binaries, so users only need to make sure they have that version installed in order to have Ethereal (and tcpdump, and snort, and so on) accept "lanN"-style names (i.e., names of the sort reported by lanscan and handled by ifconfig), rather than "dlpiN". Get rid of the patches to update libpcap, get rid of the discussion in "README.hpux" of patching libpcap and just say "get 0.6.2", and make the notes on HP-UX kernel patches to fix problems with capturing outgoing packets a separate item in the list of items in "README.hpux". Also update the error messages Ethereal and Tethereal display if they can't open a device and the error is "can't find PPA for XXX" to say "get 0.6.2" rather than "patch libpcap and recompile. svn path=/trunk/; revision=3288
2001-04-07Don't hand "fdata" to "clear_fdata()" if you haven't filled it in.Guy Harris1-2/+3
svn path=/trunk/; revision=3266
2001-04-05Win32 build fix, show "0.5.2 (WinPcap 2.1)" as the libpcap versionGilbert Ramirez1-2/+2
for Win32, and show a slightly more informative (i.e., geared to the user) help message when trying to capture without having WinPcap installed. svn path=/trunk/; revision=3261
2001-04-03Try to load WinPcap only on Windows.Guy Harris1-1/+3
svn path=/trunk/; revision=3251
2001-04-03Now that WinPcap is a DLL, I can load it at run-time rather than load-time.Gilbert Ramirez1-1/+16
That means that I no longer need to distribute capture and non-capture versions of Ethereal for Win32; one version (compiled with WinPcap headers) can run on systems with or without WinPcap. For systems that don't have WinPcap, instead of disabling the Capture menu, Capture|Start brings up a dialogue informing the user that wpcap.dll was not loadable, and gives a URL to the WinPcap home page. svn path=/trunk/; revision=3249
2001-04-02Added two new arguments to epan_init() and proto_init() toEd Warnicke1-2/+3
allow the passing of register_all_protocols() and register_all_protocol_handoffs() through epan_init() to proto_init(). This allows the removal of the compile time dependence of proto.c on register.h. Modified dftest.c, tethereal.c, and gtk/main.c to use the new style epan_init() and depend on register.h. svn path=/trunk/; revision=3237
2001-03-27Make "comp_info_str" static in Ethereal - there's no need for it outsideGuy Harris1-21/+32
"gtk/main.c" in Ethereal. Add the GLib version to it in Ethereal, and put in the GLib version rather than the GTK+ version in Tethereal (which isn't linked with GTK+...). Make it a GString; this makes the code to construct it slightly less ugly, especially now that we're putting the GLib version in. Fix the code for the "-D" flag in Tethereal to compile in a no-libpcap version (in a no-libpcap version, it just says that this version of Tethereal wasn't compiled with capture support). svn path=/trunk/; revision=3196
2001-03-27Give Tethereal a "-D" flag, inspired by WinPcap's "-D" flag, whichGuy Harris1-3/+25
prints a list of all network interfaces it found on which it can capture (the same list as the one that shows up in the "Interface" combo box in Ethereal's "Capture Preferences" dialog). svn path=/trunk/; revision=3194
2001-03-24Clear "fdata->data_src" when initializing a "frame_data" structure.Guy Harris1-1/+15
When we're done with a "frame_data" structure, free all data attached to it. svn path=/trunk/; revision=3182
2001-03-23Added named data sources printing support, written by Guy HarrisJeff Foster1-3/+2
svn path=/trunk/; revision=3167
2001-02-18In the MSVC++ 6.0 C library, "line-buffered" doesn't mean what one mightGuy Harris1-3/+38
expect - it means "same as fully-buffered". This means that the "-l" flag is a no-op on Windows. Instead of setting line-buffered mode with "setvbuf()", set a flag and, if that flag is set, flush the standard output after the information for ever packet is printed; this isn't "line-buffered", either, but, as the reason for doing line-buffering is to allow the output of Tethereal to be piped to a program and to have that program see the output for a packet as soon as the packet is seen and dissected, it should be just as good as line-buffered. svn path=/trunk/; revision=3047
2001-02-11Report failures of "pcap_stats()", as tcpdump does.Guy Harris1-8/+21
Print the "Capturing on <interface>" message, the running count of packets captured, and error messages to the standard error in Tethereal, so that you can pipe the output of a live capture that's printing packets to a program or script without that script having to worry about parsing stuff other than dissected packet summaries or details (tcpdump does the same). svn path=/trunk/; revision=3017
2001-02-11In Ethereal, attempt to get the packet statistics from libpcap whenGuy Harris1-3/+12
capturing; if we succeed, display the packet drops count as the "Drops" value in the status line and as the "Dropped packets" statistics in the summary dialog box, otherwise don't display it at all. In Tethereal, attempt to get the packet statistics from libpcap when capturing; if we succeed, and if there were any dropped packets, print out the count of dropped packets when the capture finishes. svn path=/trunk/; revision=3016
2001-02-10Check for errors when writing a capture file.Guy Harris1-12/+81
Report errors when writing or closing a capture file. Clean up some I/O error messages. svn path=/trunk/; revision=3011
2001-02-01Create a more modular type system for the FT_* types. Put themGilbert Ramirez1-5/+5
into epan/ftypes. Re-write display filter routines using Lemon parser instead of yacc. Besides using a different tool, the new grammar is much simpler, while the display filter engine itself is more powerful and more easily extended. Add dftest executable, to test display filter "bytecode" generation. Add option to "configure" to build dftest or randpkt, both of which are not built by default. Implement Ed Warnicke's ideas about dranges in the new display filter and ftype code. Remove type FT_TEXT_ONLY in favor of FT_NONE, and have protocols registered as FT_PROTOCOL. Thus, FT_NONE is used only for simple labels in the proto tree, while FT_PROTOCOL is used for protocols. This was necessary for being able to make byte slices (ranges) out of protocols, like "frame[0:3]" Win32 Makefile.nmake's will be added tonight. svn path=/trunk/; revision=2967
2001-01-29There's no need for a member of a "capture_file" structure holding aGuy Harris1-1/+3
compiled capture filter program, so remove it, and remove the include of <pcap.h> from "file.h"; instead, have local "struct bpf_program" structures where needed, and have those files that need stuff from <pcap.h> include it. This cleans stuff up a bit, and should eliminate a pile of compile warnings with Visual C++ due to <pcap.h> and some GTK+/GLib header file (or files they include) both defining "inline". svn path=/trunk/; revision=2955
2001-01-28There's no need for a member of a "capture_file" structure holding aGuy Harris1-3/+6
compiled capture filter program, so remove it, and remove the include of <pcap.h> from "file.h"; instead, have local "struct bpf_program" structures where needed, and have those files that need stuff from <pcap.h> include it. This cleans stuff up a bit, and should eliminate a pile of compile warnings with Visual C++ due to <pcap.h> and some GTK+/GLib header file (or files they include) both defining "inline". svn path=/trunk/; revision=2954
2001-01-04Don't define "promisc_mode" if we weren't built with libpcap support.Guy Harris1-1/+3
svn path=/trunk/; revision=2821
2000-12-03Pull the code to set the fields in the "cfile.cinfo" structure into aGuy Harris1-8/+2
common routine to initialize a "column_info()" structure, shared by Ethereal and Tethereal. svn path=/trunk/; revision=2739
2000-11-21Tethereal includes no GUI stuff, so it doesn't need to includeGuy Harris1-2/+1
"ui_util.h". svn path=/trunk/; revision=2691
2000-11-20Initialize winsock as we do in Ethereal.Gilbert Ramirez1-1/+11
svn path=/trunk/; revision=2680
2000-11-19For each column, have both a buffer into which strings for that columnGuy Harris1-10/+13
can be put, and a pointer to the string for the column, which might or might not point to that buffer. Add a routine "col_set_str()", which sets the string for the column to the string passed to it as an argument; it should only be handed a static string (a string constant would be ideal). It doesn't do any copying, so it's faster than "col_add_str()". Make the routines that append to columns check whether the pointer to the string for the column points to the buffer for the column and, if not, copy the string for the column to the buffer for the column so that you can append to it (so you can use "col_set_str()" and then use "col_append_str()" or "col_append_fstr()"). Convert a bunch of "col_add_str()" calls that take a string constant as an argument to "col_set_str()" calls. Convert some "col_add_fstr()" calls that take a string constant as the only argument - i.e., the format string doesn't have any "%" slots into which to put strings for subsequent arguments to "col_set_str()" calls (those calls are just like "col_add_str()" calls). Replace an END_OF_FRAME reference in a tvbuffified dissector with a "tvb_length(tvb)" call. svn path=/trunk/; revision=2670
2000-11-09Move a "putchar('\n')" that caused an extra newline to be printed afterGuy Harris1-2/+2
the protocol tree was printed. svn path=/trunk/; revision=2586
2000-11-06In Tethereal, when printing summary lines, print the fields specified inGuy Harris1-32/+182
the preferences file, don't just print a wired-in list of fields. Always print the time stamp. svn path=/trunk/; revision=2573
2000-11-01Add a fourth choice of time format in the packet list display, whichGuy Harris1-2/+4
shows the date (in YYYY-MM-DD format) as well as the time of day when the packet arrived. svn path=/trunk/; revision=2547
2000-11-01Instead of failing if we can't find a netmask for the interface on whichGuy Harris1-4/+9
we're capturing, just use a netmask of 0, and warn the user in Tethereal (doing it in Ethereal would be more disruptive, and doing so only once per interface in a session is a bit of work, as, in an "Update list of packets in real time" capture the child process would have to tell the parent that it couldn't get the netmask). svn path=/trunk/; revision=2546
2000-10-31Get rid of a statement that should've been deleted when we started usingGuy Harris1-2/+1
"compute_timestamp_diff()" to compute the difference betwen time stamps but that wasn't deleted, causing the time difference between a frame and the previous frame to be computed incorrectly in Tethereal. svn path=/trunk/; revision=2543
2000-10-16Give libethereal its own configuration file, and have that configurationGuy Harris1-2/+2
file, rather than the top-level Ethereal configuration file, check for "inet_aton()", "inet_pton()", and "inet_ntop()". Then make its Makefile.am include the appropriate object files if necessary. Otherwise, they don't get built and put into libethereal, and therefore attempts to link with anything in libethereal that uses them fail on platforms that lack ethem, causing the build to fail. That means a bunch of things need to be fixed to cope with libethereal having its own "config.h" file; this means removing the include of "config.h" from some libethereal header files. Move the definitions of the path names used only by "resolv.c" to "resolv.c" from "resolv.h" (so "resolv.h" doesn't need "config.h", define HAVE_PLUGINS in the configure script (so we don't have to include it in "plugins.h" to check whether HAVE_DLFCN_H is defined). Unfortunately, stuff outside libethereal needs to know PLUGIN_DIR; for now, define that in the top-level configuration file, and have Ethereal and Tethereal pass it as an argument to "epan_init()" - that should be cleaned up at some point. Remove from the top-level configure script checks for things used only in libethereal. svn path=/trunk/; revision=2498
2000-10-08Change addresses from ethereal.zing.org to www.ethereal.com.Gerald Combs1-2/+2
svn path=/trunk/; revision=2481
2000-10-06Implement epan_dissect_new() and epan_dissect_free(). These are theGilbert Ramirez1-3/+10
"top-level" dissectors that libepan-users call, instead of dissect_packet(). The epan_dissect_t holds the tvbuff after dissection so that the tvbuff's memory is not cleared until after the proto_tree is freed. (I might stuff the proto_tree into the epan_dissect_t, too). What remains of dissect_packet() in packet.c handles the tvbuff initialiation. The real meat of dissect_packet() is now in dissect_frame(), in packet-frame.c This means that "packet.c" is no longer a dissector, os it is no longer passed to make-reg-dotc. Once dissect_fddi() gets two wrapper functions (dissect_fddi_swapped() and dissect_fddi_nonswapped()), the a dissector handoff routine could be used instead of the switch statement in dissect_frame(). I'd register a field like "wtap.encap" svn path=/trunk/; revision=2478
2000-09-27First step in moving core Ethereal routines to libepan.Gilbert Ramirez1-8/+11
svn path=/trunk/; revision=2458
2000-09-20Give Tethereal a "-l" flag, as tcpdump has, to make the standard outputGuy Harris1-4/+7
line-buffered. svn path=/trunk/; revision=2451
2000-09-15Add a "-p" command-line option, and a checkbox in the "CaptureGuy Harris1-4/+13
Preferences" dialog box, to control whether to put the interface in promiscuous mode or not; Debian bug #34376 asked for this. svn path=/trunk/; revision=2439
2000-09-10Compute and display negative relative and delta time stamps correctly,Guy Harris1-18/+14
just in case time goes backwards (yes, it sometimes does happen in captures). svn path=/trunk/; revision=2407
2000-08-23Remove the -D option.Laurent Deniel1-6/+3
svn path=/trunk/; revision=2349
2000-08-22Initialize all the fields of the "frame_data" structure, so that, forGuy Harris1-6/+8
example, "fdata->pfd" doesn't contain junk that upsets dissectors that try to attach data to the frame (not that it does them much good in Tethereal, as the frame is never revisited). svn path=/trunk/; revision=2331
2000-08-19Fix potential buffer overflows.Laurent Deniel1-3/+4
svn path=/trunk/; revision=2298
2000-08-14PPP/WAN captures work on Windows 9x, so speak of them not working onlyGuy Harris1-8/+9
on NT/2000. Refer to Tethereal, not to Ethereal, in the long explanations of capture problems in Tethereal. svn path=/trunk/; revision=2270
2000-08-13On Win32, if the attempt to open the capture device fails, don't talkGuy Harris1-7/+43
about checking permissions, as the capture devices are probably available to all users, and talking about permissions will only confuse the user. Do, however, warn that Ethereal can't capture on Token Ring or PPP/WAN interfaces. On UNIX, if the attempt to open the capture device fails, and the error message starts with "can't find PPA for ", they are probably running on HP-UX with a version of libpcap not patched to properly look up PPAs for network interfaces given the interface name; give them a detailed warning about this, telling them that they'll have to fix libpcap and build Ethereal from source, and pointing them at the "README.hpux" file. svn path=/trunk/; revision=2265
2000-08-11Miscellaneous code cleaningLaurent Deniel1-6/+11
- add <stdarg.h> or <varargs.h> in snprintf.h and remove those inclusions in the other #ifdef NEED_SNPRINTF_H codes - remove the check of multiple inclusions in source (.c) code (there is a bit loss of _cpp_ performance, but I prefer the gain of code reading and maintenance; and nowadays, disk caches and VM are correctly optimized ;-). - protect all (well almost) header files against multiple inclusions - add header (i.e. GPL license) in some include files - reorganize a bit the way header files are included: First: #include <system_include_files> #include <external_package_include_files (e.g. gtk, glib etc.)> Then #include "ethereal_include_files" with the correct HAVE_XXX or NEED_XXX protections. - add some HAVE_XXX checks before including some system header files - add the same HAVE_XXX in wiretap as in ethereal Please forgive me, if I break something (I've only compiled and regression tested on Linux). svn path=/trunk/; revision=2254
2000-08-03Add a "Save As" feature to the TCP Follow dialogue, to save the streamGilbert Ramirez1-2/+1
file to a user-specified file. Move the file-copy routine in save_cap_file() to an indepenent function in file.c (copy_binary_file()) so that follow_dlg.c can use it. Remove #include "follow.h" from the C files that don't need it. svn path=/trunk/; revision=2200
2000-07-24Correct packet count displayed while capturing with -w option. (there wasGilbert Ramirez1-2/+6
an extra increment of cfile.count). Print a newline to stdout at the end of a capture with "-w" so that the final packet count isn't obliterated by the shell prompt. svn path=/trunk/; revision=2156
2000-07-20In Tethereal:Guy Harris1-37/+9
When capturing, report errors trying to create the output file with "file_open_error_message()". Make the "for_writing" argument to "file_open_error_message()" a "gboolean", as it's either TRUE (if the file is being opened for writing) or FALSE (if it's being opened for reading). Report EISDIR as "XXX is a directory (folder), not a file.". When checking whether an "open()" of a capture file succeeded, check whether "open()" returns a negative number, not whether it returns 0. In "wtap_open_offline()", if the file to be opened is a directory, return EISDIR, not WTAP_ERR_NOT_REGULAR_FILE, so that the error message can say "that's a directory, not a file". If "wtap_open_offline()" returns WTAP_ERR_NOT_REGULAR_FILE, don't just say the file is "invalid", say it's a "special file" or socket or some other weird type of file. svn path=/trunk/; revision=2144