Commit Graph

500 Commits

Author SHA1 Message Date
Gilbert Ramirez 7843c01d38 Changes to compile in win32.
svn path=/trunk/; revision=515
1999-08-18 22:49:48 +00:00
Guy Harris 0f62ffc5df In "wtap_dump_close()", don't shove the return value of "fclose()" into
the variable for the return value of "wtap_dump_close()", just check it
against EOF; shoving it into "ret" means it gets set to 0 on a
successful close, but a return value of 0 means "wtap_dump_close()"
failed.

svn path=/trunk/; revision=514
1999-08-18 17:49:34 +00:00
Guy Harris 31d104a9c5 "wtap_pcap_encap_to_wtap_encap()" shouldn't return a file type if it
can't translate the encapsulation type, it should return an
encapsulation type; we add a new one, WTAP_ENCAP_UNKNOWN. and have it
return that.

Have "capture()" handle "wtap_pcap_encap_to_wtap_encap()" returning that
encapsulation type (if it happens, we need to add a new Wiretap
encapsulation type to handle the new "libpcap" encapsulation type).

svn path=/trunk/; revision=513
1999-08-18 17:08:47 +00:00
Gilbert Ramirez c1adce9762 Re-arranged Ethereal's definitions of DLT_RAW et al. since capture.c
is the only file that uses them. I hope to avoid some compiler warnings
with this.

svn path=/trunk/; revision=512
1999-08-18 16:28:22 +00:00
Gilbert Ramirez 648ffa1435 Small change to create_tempfile, initializing static vars.
svn path=/trunk/; revision=511
1999-08-18 15:29:06 +00:00
Guy Harris 28809e2002 Make "wtap_dump()" and "wtap_dump_close()" return error codes, and check
for errors when closing a file to which we've written packets (we don't
bother checking if we're giving up on a capture).

Add some more error checks in Wiretap.

Make a single list of all Wiretap error codes, giving them all different
values (some can be returned by more than one routine, so they shouldn't
be per-routine).

svn path=/trunk/; revision=510
1999-08-18 04:41:20 +00:00
Guy Harris df490a7085 Add to Wiretap the ability to write capture files; for now, it can only
write them in "libpcap" format, but the mechanism can have other formats
added.

When creating the temporary file for a capture, use "create_tempfile()",
to close a security hole opened by the fact that "tempnam()" creates a
temporary file, but doesn't open it, and we open the file with the name
it gives us - somebody could remove the file and plant a link to some
file, and, if as may well be the case when Ethereal is capturing
packets, it's running as "root", that means we write a capture on top of
that file....  (The aforementioned changes to Wiretap let you open a
capture file for writing given an file descriptor, "fdopen()"-style,
which this change requires.)

svn path=/trunk/; revision=509
1999-08-18 04:17:38 +00:00
Guy Harris bc3c8c0641 Fix up the call to "reassemble_tcp()" to use "pi.len" and
"pi.captured_len" to compute the total amount of TCP payload and the
captured amount of TCP payload.

svn path=/trunk/; revision=508
1999-08-18 03:11:14 +00:00
Guy Harris fca713e47f Make a "create_tempfile()" routine that constructs the template to be
used by "mkstemp()" into a buffer supplied as an argument, trying
several directories for the tempfile, in the same fashion that the BSD
(and probably other) "tempnam()" routines do.

Have that routine cope with temporary-file directory names that don't
end with "/", as "P_tmpdir" doesn't necessarily end with "/" (and
doesn't, in GNU "libc" 2.x, at least on Linux); thanks to Gilbert
Ramirez for catching this one, and supplying the code to cope with that.

Have the code that creates the temporary file for the "Follow TCP
Stream" text use it.

svn path=/trunk/; revision=507
1999-08-18 02:59:05 +00:00
Guy Harris ac4f87218d Declare the "packet_info" structure "pi" in "packet.h", rather than in a
bunch of source files.

Replace the "payload" field of a "packet_info" structure with "len" and
"captured_len" fields, which contain the total packet length and total
captured packet length (including all headers) at the current protocol
layer (i.e., if a given layer has a length field, and that length field
says its shorter than the length we got from the capture, reduce the
"pi.len" and "pi.captured_len" values appropriately).  Those fields can
be used in the future if we add checks to make sure a field we're
extracting from a packet doesn't go past the end of the packet, or past
the captured part of the packet.

Get rid of the additional payload argument to some dissection functions;
use "pi.captured_len - offset" instead.

Have the END_OF_FRAME macro use "pi.captured_len" rather than
"fd->cap_len", so that "dissect the rest of the frame" becomes "dissect
the rest of the packet", and doesn't dissect end-of-frame padding such
as padding added to make an Ethernet frame 60 or more octets long.  (We
might want to rename it END_OF_PACKET; if we ever want to label the
end-of-frame padding for the benefit of people curious what that extra
gunk is, we could have a separate END_OF_FRAME macro that uses
"fd->cap_len".)

svn path=/trunk/; revision=506
1999-08-18 00:57:54 +00:00
Gilbert Ramirez d4331d4329 Converted more of the IP fields to filterable fields.
svn path=/trunk/; revision=505
1999-08-17 03:09:39 +00:00
Guy Harris b1e9d314f0 Fix a typo in a comment.
svn path=/trunk/; revision=504
1999-08-17 00:26:37 +00:00
Guy Harris ac4a2e40ef Expand some comments.
Check for errors reading the "Follow TCP Stream" temporary file.

Unlink the temporary file after attempting to open and read the file,
even if the attempt to open it failed.

svn path=/trunk/; revision=503
1999-08-17 00:10:22 +00:00
Guy Harris ce732a3267 Pick up a change from the OpenBSD ports collection, to use "mkstemp()"
to create the temporary file to which the "Follow TCP Stream" code
writes the contents of the TCP stream; this was presumably done to close
a potential security hole opened by the possibility of somebody
replacing the file referred to by the name generated by "tmpnam()"
before we open it.

(We may have to provide our own version of "mkstemp()" if there are any
platforms on which we run that lack it.  Note that Solaris 2.5.1 has it,
even though it's not documented and isn't declare in its "stdlib.h".)

Have the "Follow TCP Stream" code put up a dialog box, rather than
spitting a message out to the standard error, if the attempt to create
the temporary file fails.

Check also whether the attempt to open the "Follow TCP Stream" temporary
file for reading fails, and put up a dialog box for that as well.

svn path=/trunk/; revision=502
1999-08-16 23:58:30 +00:00
Guy Harris afe2eecfd7 Get rid of the comments saying "make ["decode_numeric_bitfield()"] shift
the value appropriately!" - a change from Olivier Abad did so.

svn path=/trunk/; revision=501
1999-08-16 05:54:32 +00:00
Gilbert Ramirez 49734a369e Fixed segfault with new gtk_tree_item deselection routine and -S option.
svn path=/trunk/; revision=500
1999-08-15 23:40:33 +00:00
Guy Harris 714eefd24e The "loop_data" structure is used only in "capture.c"; move its
definition from "capture.h" to "capture.c".

svn path=/trunk/; revision=499
1999-08-15 22:31:22 +00:00
Guy Harris 4df5d62d6e "open_cap_file()", if it succeeds, closes any capture file we had open;
that means it destroys any read filter we had, so we don't need to
destroy it in "capture()" after "open_cap_file()" succeeds.

svn path=/trunk/; revision=498
1999-08-15 22:16:59 +00:00
Guy Harris 0171508113 Don't preserve the read filter from file to file - you won't necessarily
want to read the next file with the same filter that you used on the
last file.

In the "File/Open" dialog box, parse the read filter before trying to
open the file, and if the parse fails, leave the dialog box up so the
user still has the filter and file name around and can try to fix the
problem.

Keep the compiled read filter attached to the "capture_file" structure,
so you don't have to reparse it on a "File/Reload".

svn path=/trunk/; revision=497
1999-08-15 19:18:46 +00:00
Gilbert Ramirez 77e429e1b9 Fixed the problem with an assert coming from gtkwidget.c:3196 when
selecting a field from more than one protocol tree. It turns out that
gtktree.c doesn't clear the tree-item selection list when you use
gtk_tree_clear_items() (which calls gtk_tree_remove_items() ). So the next
time a tree item is selected in a new protocol tree (which is our old
protocol tree, with everything removed, and new things added), gtk_tree
tries to _deselect_ our old selection. But that tree-item which is trying
to be deselected is long gone, resulting in the assert because widget == NULL.
A function needs to be added to gtk_tree to deselect the tree-item selection
for us. (or we need to go through the hassle of creating a new gtk_tree
instead of recycling tree_view over and over).

I stole some code from another section of gtktree.c which lets us clear
the selection in clear_tree_and_hex_views().

Also, I modified the argument to gtk_tree_set_view_mode. We were using
"TRUE", when really we should have used a member of the GtkTreeViewMode
enumeration, namely GTK_TREE_VIEW_ITEM ( which is 1, which is TRUE :-)

svn path=/trunk/; revision=496
1999-08-15 07:28:23 +00:00
Guy Harris 8f0acf3551 Have "wtap_open_offline()" return, on failure, an indication of the
reason for the failure, and have it do the checks to make sure the file
being opened is a plain file or a pipe.

Have "open_cap_file()" make use of that.

Don't automatically set "last_open_dir" if a "-r" flag was specified on
the command line - do so only if the file in question could actually be
opened.

svn path=/trunk/; revision=495
1999-08-15 06:59:13 +00:00
Guy Harris f452748340 "read_cap_file()" doesn't need to be passed a file name as an argument -
it's called after "open_cap_file()" has been called, and is always
passed the file name passed to "open_cap_file()", and that file name is
stored as "cf->filename", so "read_cap_file()" can just use
"cf->filename" as the pathname of the file.

svn path=/trunk/; revision=494
1999-08-15 01:02:26 +00:00
Guy Harris 8042652058 Oops, forgot to get rid of the "open_cap_file()" in "load_cap_file()"
when I turned the latter into "read_cap_file()".

svn path=/trunk/; revision=493
1999-08-15 00:55:22 +00:00
Guy Harris ea6a522b28 Split "load_cap_file()" into "open_cap_file()" and "read_cap_file()".
The former, which used to be called by "load_cap_file()", now just opens
the file and, if the open succeeds, closes any capture file we
previously had open, reinitializes any protocols that need
reinitialization, and saves information about the new capture file in
the "capture_file" structure to which it was passed a pointer.  The
latter reads the file already opened by "read_cap_file()".

For "File/Open", call "open_cap_file()" before dismissing the file
selection box; if it fails, "open_cap_file()" will have popped up a
message box complaining about it - just return, leaving the file
selection box open so the user can, after dismissing the message box,
either try again with a different file name, or dismiss the file
selection box.  (Other file selection boxes should be made to work the
same way.)  If "open_cap_file()" succeeds, dismiss the file selection
box, and read the capture file in.

svn path=/trunk/; revision=492
1999-08-15 00:26:11 +00:00
Guy Harris 9e58014e7f Add ICMP to the set of packet types counted in the window shown while a
capture is in progress.

svn path=/trunk/; revision=491
1999-08-14 23:47:20 +00:00
Gilbert Ramirez 499f907269 Fixed File|Save As (it was using wrong variable for source filename).
Ethereal now remembers the directory where it last opened a file, either
via the GUI File|Open or command-line '-r' option. The next time File|Open
is used, browsing starts from that directory.

svn path=/trunk/; revision=490
1999-08-14 19:53:31 +00:00
Gilbert Ramirez cb61bf1ede Fixed segfault with combination of new dfilter struct usage, rfcode,
and File | Open option.

svn path=/trunk/; revision=489
1999-08-14 18:51:26 +00:00
Gilbert Ramirez 2287f6de4e Added dfilter-int.h to list of deliverables.
svn path=/trunk/; revision=488
1999-08-14 06:42:36 +00:00
Gilbert Ramirez 8030084e93 Modified YACC grammar to use non-yy symbols, to avoid conflicts with
libpcap's that were compiled with symbols beginning with 'yy'.

svn path=/trunk/; revision=487
1999-08-14 06:24:27 +00:00
Guy Harris 6572382f9a Have the "delta" format for time stamps show the time delta between a
packet and the previous *displayed* packet, rather than the previous
packet in a capture.

svn path=/trunk/; revision=486
1999-08-14 04:23:22 +00:00
Guy Harris c7a00d29f8 Fix up the code that changes the "command-line-specified" time format to
handle a display with a display filter.

(Also, don't have it recompute the time stamps - they were computed when
the packet was added to the packet list in the first place.)

svn path=/trunk/; revision=485
1999-08-14 03:36:30 +00:00
Guy Harris edb0a778ed Enable the "Display/Options" menu item when we're capturing with "-S",
so you can change the time stamp column while you're capturing.

svn path=/trunk/; revision=484
1999-08-14 01:33:29 +00:00
Guy Harris fa50f8aa46 In "change_time_formats()", you have to set "fd->cinfo" before you can
use "check_col()", otherwise "check_col()" always fails, and the time
column never gets changed.  (How did I manage to break that?)

svn path=/trunk/; revision=483
1999-08-14 01:27:29 +00:00
Gilbert Ramirez 719c7f3ab2 Removed unneeded 'color' field from header_field_info.
svn path=/trunk/; revision=482
1999-08-14 01:26:39 +00:00
Gilbert Ramirez cd55daeefa Added Brad's <brad@openbsd.org> patch to fix compilation from
separate directory.

svn path=/trunk/; revision=481
1999-08-13 23:52:49 +00:00
Gilbert Ramirez ab6490398c Moved global memory alloction used in display filters (which was stored
in dfilter-grammar.y) to a new struct dfilter. Display filters now have
their own struct, rather than simply being GNode's. This allows multiple
display filters to exist at once, aiding John McDermott in his
work on colorization.

svn path=/trunk/; revision=480
1999-08-13 23:47:43 +00:00
Guy Harris a5acc58fe3 Create a "dfilter-int.h" file, containing stuff used internally to the
display filter code but not outside it (and not static to one of the
modules in the display filter code), with most of that stuff moved there
from "dfilter.h".

Add a declaration of "byte_str_to_guint8_array()" to "dfilter-int.h".

svn path=/trunk/; revision=479
1999-08-12 21:16:32 +00:00
Gilbert Ramirez 6c9276f03c One small regex change, just to be safe.
svn path=/trunk/; revision=478
1999-08-12 15:20:18 +00:00
Gilbert Ramirez 336b94f506 Fixed two bugs in display filter parsing.
1. Some IP addresses (like 0.0.0.0) would be interpreted as byte ranges.
2. Parens were being ignored.

Thanks to Guy for pointing these out to me.

svn path=/trunk/; revision=477
1999-08-12 15:10:48 +00:00
Guy Harris 2fd7555110 "file_sel_ok_cb()" isn't used except with the "File/Open" dialog box;
rename it to "file_open_ok_cb()", move it next to the routine to create
that dialog box, and make it static.

svn path=/trunk/; revision=476
1999-08-12 07:36:41 +00:00
Gilbert Ramirez f5d36ff3cd Added Ashok's fix for RSVP and support for RSVP+.
svn path=/trunk/; revision=475
1999-08-12 05:19:06 +00:00
Guy Harris 0b424dc9b9 The "-R" command-line filter is applied when reading the capture file;
it's not a display filter (packets that don't match the filter are
discarded completely, not just filtered out of the display), although it
has the same syntax as a display filter.

svn path=/trunk/; revision=473
1999-08-11 20:10:38 +00:00
Guy Harris d31ad7cb55 The changes to file loading decreased file loading time rather than
increasing it.

svn path=/trunk/; revision=472
1999-08-11 20:08:32 +00:00
Gilbert Ramirez 499eff7b0d Changed two #include <>'s to #include "" 's, for stylistic reasons only.
svn path=/trunk/; revision=471
1999-08-11 17:02:28 +00:00
Gilbert Ramirez d42b2df23f Fixed packaging problem (the list of deliverables in the doc/ directory).
Updated NEWS file.
Moved version to 0.7.2 for imminent release.

svn path=/trunk/; revision=470
1999-08-11 16:42:51 +00:00
Gilbert Ramirez 8b3ee0f761 Modified the flex scanner to use symbols that start with "dfilter_"
instead of "yy". (dfilter-grammar.y was modified to #define yylex as
dfilter_lex).

VERSION is no longer needed since the doc/Makefile now uses @VERSION@,
passed to it from 'configure'.

svn path=/trunk/; revision=469
1999-08-11 16:25:07 +00:00
Gilbert Ramirez c0fa3841ee Modified autoconf/automake files for doc subdirectory so that all of
Ethereal can be compiled in a build directory separated from the source
directory.

svn path=/trunk/; revision=468
1999-08-11 16:05:19 +00:00
Guy Harris 0d5e441ea0 Display counts of NetBEUI/NBF frames as "NetBIOS".
svn path=/trunk/; revision=467
1999-08-10 20:13:21 +00:00
Guy Harris 37ddd5f5ed Jeff Foster's changes to add support for NetBEUI/NBF (NetBIOS atop 802.2
LLC, the original NetBIOS encapsulation).

svn path=/trunk/; revision=466
1999-08-10 20:06:39 +00:00
Laurent Deniel 64c0d52928 Change the test of pcap_dispatch returned value
which might be -1.

svn path=/trunk/; revision=465
1999-08-10 11:30:03 +00:00