Commit graph

192 commits

Author SHA1 Message Date
Olivier Abad
a04e67e0ab Implement plugins status save/restore :
Add a "Save status" button to the Plugins window which saves the status
(enabled/disabled) and the filter used by all the plugins in
~/.ethereal/plugins.status

Moved plugins_scan_dir() from gtk/plugins_dlg.c to plugins.c because it is
GUI independent. Read plugins.status in this function and restore the saved
status.

Add a init_plugins() function in plugins.c which calls plugins_scan_dir() in
order to build the plugin_list. It is called by ethereal_proto_init() in
gtk/main.c

svn path=/trunk/; revision=1417
2000-01-04 20:37:18 +00:00
Olivier Abad
a12e96ee07 Add a "Default" button to reset the filter string to its default value.
svn path=/trunk/; revision=1415
2000-01-03 20:18:25 +00:00
Guy Harris
4096029a66 Take the "simple_dialog()" stuff out of "ui_util.h" and "gtk/ui_util.c",
and move it to "simple_dialog.h" and "gtk/simple_dialog.c".

svn path=/trunk/; revision=1414
2000-01-03 06:59:25 +00:00
Guy Harris
302c116483 Don't have "write_prefs()" display a dialog box if the attempt to open
the preferences file fails, have it return an error indication and the
path of the preferences file, and have its caller display the dialog
box.  That way you don't have to drag in the dialog box code if you're
going to use the preferences code in, say, a "line-mode" Ethereal.

svn path=/trunk/; revision=1413
2000-01-03 06:29:39 +00:00
Guy Harris
77e59876a7 Use the right #define to control inclusion of "ui_util.h".
svn path=/trunk/; revision=1412
2000-01-03 06:28:44 +00:00
Guy Harris
91801fd5dd Make "menus_init()", set_menu_sensitivity()", and "grp" static to
"gtk/menu.c", as they're not used outside it.

Move the definition of "GTK_MENU_FUNC()" from "gtk/menu.h" to
"gtk/menu.c", as it's not used outside of "gtk/menu.c".

Get rid of the declaration of "menus_create()" in "gtk/menu.h", as that
routine doesn't exist.

svn path=/trunk/; revision=1411
2000-01-03 04:06:09 +00:00
Guy Harris
2ef301bcf6 Have "gtk/menu.c" (and, in the future, code for other UIs) export a set
of routines to enable and disable various sets of menu items; call only
those routines, not routines to enable or disable particular menu items,
from files in the top-level directory, as other UIs may not refer to
menu items with path strings of the sort used in GTK+, and as this
buries knowledge of the menu items available in "gtk/menu.c" rather than
requiring stuff outside of "gtk/menu.c" to know what menu items exist.

svn path=/trunk/; revision=1410
2000-01-03 03:57:04 +00:00
Gilbert Ramirez
5694165915 A little hack for the really lazy (i.e., me). Allow users to type a
directory name in the filename box in the file open dialoge box. If what
you type is a directory, the file selection gui chdir's to that diretory
and shows you the files in that directory.

svn path=/trunk/; revision=1405
2000-01-01 04:28:45 +00:00
Gilbert Ramirez
8be6563d38 Allow user to modify appearance of lines and expanders in GUI protocol
tree.

svn path=/trunk/; revision=1400
1999-12-30 23:02:56 +00:00
Gilbert Ramirez
df9ce260fb Disallow multiple selections in the CTree and CList widgets.
In order to use GTK_SELECTION_BROWSE correctly, I had to set auto_resize
to TRUE for the GtkCTree column.

Yes, I'm using terminology that's opposite that of GTK+.

When I say the selection bar "browses", I mean that you can browse the rest
of the widget with an outline selection bar, without changing the
selection. This corresponds to mode GTK_SELECTION_SINGLE.

When I say "select", I mean that the arrow keys change the selection.
This corresponds to mode GTK_SELECTION_BROWSE.

Go figure. But I like my terminology better.

svn path=/trunk/; revision=1398
1999-12-30 19:53:11 +00:00
Gilbert Ramirez
8162d65615 Changed the protocol tree widget from a GtkTree to a GtkCTree. The two reasons
I did this:

First, Havoc Pennington, in "GTK+/Gnome Application Development", in
Appendix seciton A.3.88, recommends using GtkCTree instead of GtkTree
because GtkCtree is faster, and GtkTree has limitation on its total row
height: since it must fit inside a GdkWindow, it is limited to 32,768
pixels of height. GtkTree is more flexible with regards to the types of
widgets that can be placed in the tree, but since we deal only with text,
that doesn't matter, at least for now.

Secondly, a GtkTree doesn't allow arrow-key navigation (at least as far
as I could tell). It always bothered me that the up and down arrow keys
worked in the packet list and in the hex dump, but no in the protocol tree.
GtkCTree does allow arrow-key navigation. In fact, GtkCTree is a subclass
of GtkCList (the packet list widget), so they behave a lot alike.

I went ahead and fixed the selection bar which has been bothering Richard
for a long time now. :) In the GUI preferences dialogue, you can now set
both the packet list selection bar and the protocol tree selection bar
to either "browse" or "select" mode. "browse" mode is what you're used to:
the arrow keys move an outline of the selection bar, but do not change
the selection. "select" mode does change the selection when the arrow keys
are pressed. The default behavior is set to "select", which seems more
natural for a first-time user.

svn path=/trunk/; revision=1393
1999-12-29 20:10:12 +00:00
Guy Harris
868eb7518a Update a comment.
svn path=/trunk/; revision=1390
1999-12-29 07:39:51 +00:00
Guy Harris
b0a46e6052 Move the definition of "prefs" from "gtk/prefs_dlg.c" to "prefs.c", so
that you don't have to have "gtk/prefs_dlg.c" to get it defined - future
non-GTK (text mode, curses, etc.) programs wouldn't have it.

svn path=/trunk/; revision=1387
1999-12-29 05:53:48 +00:00
Gerald Combs
335f0b4647 Add support for "--with-plugindir=<plugin install dir>" to configure.
Make the default plugindir $(libdir)/ethereal/plugins/0.8.  Ethereal now
looks for plugins in the following directories:
  /usr/lib/ethereal/plugins/0.8
  /usr/local/lib/ethereal/plugins/0.8
  $plugindir (if different from above)
  $HOME/.ethereal/plugins

svn path=/trunk/; revision=1382
1999-12-28 04:40:24 +00:00
Gerald Combs
45babe7bb5 Integrate libtool/libltdl with the plugin code. Add libtool and libltdl
to the distribution.

svn path=/trunk/; revision=1379
1999-12-26 22:38:07 +00:00
Guy Harris
b96ac8c220 I thought I'd seen a problem with the combo box in the "Capture:Start"
dialog box if we hadn't found any interfaces on which we could capture,
but perhaps the problem was that "gtk_combo_set_popdown_strings()"
doesn't like it if you set the list of items to a NULL list - if you
don't set it at all, you get a combo box with only one blank entry in
the list, but you don't seem to get complaints from GTK+ 1.2.6, at
least.

Pop up the "Capture:Start" dialog box even if we don't find any
interfaces on which we could capture; at least this way, they won't just
get confronted with a

	There are no network interfaces that can be opened.
	Please check to make sure you have sufficient permission
	to capture packets.

message box and no way to give us any more information other than "it
said 'There are no network interfaces that can be opened...'" - they can
at least try the interfaces that *should* work, and report the error
messages they get, giving us a better chance at figuring out what the
problem is.

Trim white space from the entry in that combo box, and, if there isn't
anything other than possibly white space, pop up a

	You didn't specify an interface on which to capture packets.

message box and leave the dialog box up so that the user can supply an
interface name.

svn path=/trunk/; revision=1373
1999-12-23 09:31:09 +00:00
Guy Harris
a4738ae15a Move the code to raise a window into a "reactivate_window()" routine,
and have that routine also de-iconify the window.

svn path=/trunk/; revision=1365
1999-12-20 06:05:15 +00:00
Gilbert Ramirez
f34e877593 Add a new page to the Preferences notebook: a GUI page. The sole
option right now is the placement of the vertical scrollbars in the 3 panes.
(it's one decision; you can't have the placement of the vertical scrollbar
in the packet list pane different than the placement in the protocol tree
pane, for example).

I did this because I find it convenient to have the vertical scrollbars
on the *left* side of the text. My mouse cursor is usually expanding and
collapsing the protocol tree widgets, and once the protocol tree changes
size, I usually have to scroll. I'd rather move my mouse cursor just a few
pixels over to find the vertical scrollbar.

svn path=/trunk/; revision=1351
1999-12-16 06:20:18 +00:00
Gilbert Ramirez
1063eaaecc Reduce the About box to a reasonable size. Gerald's name remains
with the copyright, and everyone else has been relegated to the
man page and AUTHORS file.

svn path=/trunk/; revision=1350
1999-12-16 04:11:33 +00:00
Guy Harris
e588b8057b A first cut, untested.
svn path=/trunk/; revision=1347
1999-12-15 08:20:30 +00:00
Gilbert Ramirez
e996e3d661 Oops. My last commit was made form the wrong tree and code that
was under development was accidentally checked in. This reverses the
changes.

svn path=/trunk/; revision=1342
1999-12-15 07:03:11 +00:00
Gilbert Ramirez
b906ce0a17 Add Dearborn Group Technology's Gryphon dissector as our first
shipped plugin.

svn path=/trunk/; revision=1341
1999-12-15 06:53:36 +00:00
Guy Harris
096134536e Stuart Stanley's ISIS dissection support.
svn path=/trunk/; revision=1340
1999-12-15 04:34:44 +00:00
Gilbert Ramirez
423b152c0c Do a better check of 'bend'. The code works w/o it, but only because
I got lucky when I introduced 'bend'. The behavior is the same, but
now it's due to planning, not luck.

svn path=/trunk/; revision=1324
1999-12-14 06:52:09 +00:00
Gilbert Ramirez
66674a789e Remove the horizontal scroll bar under the hex dump. It did nothing
at all since the GtkText widget does not scroll horizontally (it says
so in the GTK+ docs and in the gtktext.c file in the GTK+ distribution).
Even if the Ethereal window is shrunk horizontally, the text widget will
line wrap (we could turn that off, but it just truncates the line, instead
of making the text widget horizontally-scrollable).

Also, change the packet list scrollbar policy to AUTOMATIC so that scroll
bars only appear when needed. This is how the protocol tree pane has
been configured already.

svn path=/trunk/; revision=1308
1999-12-13 04:20:33 +00:00
Gilbert Ramirez
490fcbb775 One final fix to the 3-pane GUI behavior. Now when the the Ethereal
window is extended veritically, either up or down, the packet list
and hex dump pane sizes stay the same, and the protocol tree pane
is the one that grows. Hurrah! Of course you can still modify the
size of each pane with the little separator between each pane.

svn path=/trunk/; revision=1307
1999-12-13 03:45:33 +00:00
Gilbert Ramirez
4a15f6582a Added Bert Driehuis <driehuis@playbeing.org>'s I4B wiretap module
and V.120 decoder.

svn path=/trunk/; revision=1304
1999-12-12 22:40:10 +00:00
Olivier Abad
7aef27dd3c Avoid loading "." and ".." when scanning directories for plugins
svn path=/trunk/; revision=1299
1999-12-12 10:22:41 +00:00
Gilbert Ramirez
d85f804b4b Add the who protocol (rwho/rwhod/ruptime)
In packet_hex_print(), compute (bstart + blen) only once.

In time_secs_to_str(), return a meaningful string when time == 0, instead
of returing pointer to char buffer with old, inappropriate data in it.

svn path=/trunk/; revision=1297
1999-12-12 05:11:57 +00:00
Guy Harris
19af67b894 Change the comments to reflect the fact that this is now no longer a tab
of the "Edit:Preferences" dialog box.

svn path=/trunk/; revision=1279
1999-12-10 07:20:57 +00:00
Guy Harris
f47ff8dfd0 Squelch a GCC complaint.
svn path=/trunk/; revision=1278
1999-12-10 07:04:30 +00:00
Gilbert Ramirez
53017596ca Make the protocol tree GUI pane associate with the packet list pane
instead of the hex dump pane.

svn path=/trunk/; revision=1276
1999-12-10 06:44:39 +00:00
Guy Harris
7537c5cc73 Jerry Talkington's patch to remove the filter stuff from
"Edit:Preferences" and put it directly under "Edit:Filters", and to add
an "Apply" button to it, which makes the currently selected filter the
current filter and applies it to the current capture.

svn path=/trunk/; revision=1275
1999-12-10 06:28:24 +00:00
Gilbert Ramirez
71b7cd5031 Move GTK code out of summary.c and into gtk/summary_dlg.c
summary.c now provides a struct of info (see summary.h)

Changed the name of the summary dialogue callback (hence the change
in menu.c), and added a close button to the dialogue.

Moved #include <gtk/gtk.h> out of print.c and into prefs.h where it
was needed for GdkColor.

svn path=/trunk/; revision=1273
1999-12-10 04:21:04 +00:00
Olivier Abad
7ce8202f00 Put in an RCS ID.
svn path=/trunk/; revision=1267
1999-12-09 20:55:49 +00:00
Olivier Abad
564a1c1d62 plugins support (i.e. Dynamically loadable dissectors)
depends on dlopen() being available on the target platform

svn path=/trunk/; revision=1263
1999-12-09 20:43:38 +00:00
Guy Harris
80618858d6 Move the GTK+ implementations of various UI utilities out of "util.c"
into "gtk/ui_util.c", and move the declarations of those UI utilities
out of "util.h" into "ui_util.h".  (The header file is in the top-level
directory, rather than the "gtk" directory, because it declares
window-system-independent interfaces to routines with
window-system-dependent implementations.)

Add to "gtk/ui_util.c" a routine to set the window and icon title.

Use that routine to make the title of an Ethereal top-level window be

	{filename} - Ethereal

if there's a capture open, and have "{filename}" be "<capture>" if it's
a temporary capture file.

svn path=/trunk/; revision=1255
1999-12-09 07:19:20 +00:00
Guy Harris
6198327782 Add Dave Chapeskie's name to the list of contributors.
svn path=/trunk/; revision=1240
1999-12-07 22:59:31 +00:00
Guy Harris
4c691e81ad It appears that the IRIX SIOCSNOOPLEN "ioctl", as used by "libpcap" to
set the capture length on IRIX, may fail if the capture length supplied
is too large, rather than just truncating it.  Use MIN_PACKET_SIZE,
rather than WTAP_MAX_PACKET_SIZE, in our sample open.

Let's hope some *other* platform doesn't barf if the capture length is
too *small*....

(Sigh.  Would that "pcap_open_live()" accepted 0 as a capture size,
meaning "give me the whole packet".  Unfortunately, it doesn't, so IRIX
users may have to crank the capture size back in the capture dialog
box.)

svn path=/trunk/; revision=1239
1999-12-07 22:11:02 +00:00
Gilbert Ramirez
1b7ba3f862 Remove 3 GTK+ header files and have our gtkclist.c use
the the system version of the gtk header files.

svn path=/trunk/; revision=1238
1999-12-07 22:06:27 +00:00
Guy Harris
b01c9d20d4 Add the "-R" flag to the usage message.
Don't list capture-oriented flags in the usage message if Ethereal was
built without "libpcap".

If a capture-oriented flag is given to an Ethereal built without
"libpcap", print a message noting that and give a usage message.

Print only one usage message, even if more than one bad command-line
flag is given.

svn path=/trunk/; revision=1236
1999-12-07 07:12:49 +00:00
Guy Harris
e5f812d6ed James Coe's patch to add SRVLOC and NCP-over-IP support.
svn path=/trunk/; revision=1234
1999-12-07 06:13:19 +00:00
Guy Harris
b5b4e3d57a Patch from Jerry Talkington to:
treat CONNECT as an HTTP request;

	add DELETE and OPTIONS as request names.

Make the order of names in the AUTHORS file match that of the man page
and the About box.

svn path=/trunk/; revision=1231
1999-12-06 20:27:40 +00:00
Guy Harris
38c23f5528 Add support for saving files in a format other than the one they're in
and other than "libpcap", now that Wiretap can write files other than
"libpcap".

svn path=/trunk/; revision=1225
1999-12-06 09:02:48 +00:00
Guy Harris
0de40f3c42 Add ^G as an accelerator for Display:Go To Frame.
svn path=/trunk/; revision=1222
1999-12-05 23:44:24 +00:00
Nathan Neulinger
db76c02c9e patch to scroll byte view
svn path=/trunk/; revision=1190
1999-12-03 21:28:58 +00:00
Guy Harris
9f755766f0 Explain *why* you have to "g_strdup()" the argument to "-r" before
assigning it to "cf_name", so somebody else doesn't make the same
mistake I did.

svn path=/trunk/; revision=1181
1999-12-02 08:28:34 +00:00
Gilbert Ramirez
123d10e6a9 Fix bug which occurs when running ethereal with "-r" to load a file, then
loading a new file from within ethereal.

In main(), cf_name was being set to optarg, without g_strdup()'ing it.
Later, in file_open_cmd_cb(), we try to g_free last_open_dir, which is
cf_name, so blammo! We try to g_free something that we can't.

So, in main(), be sure to set cf_name to a g_strdup() of optarg, not
just optarg.

(At home I'm using debug/development versions of glib/gtk, so maybe
that's why I saw the problem only now. I could have sworn that I
have done this sequence of events successfully before).

svn path=/trunk/; revision=1180
1999-12-02 05:25:59 +00:00
Gerald Combs
ee51e6534a Add stream window color preferences. We don't (yet) use cmaps, so this
may not work with pseudocolor systems.

svn path=/trunk/; revision=1179
1999-12-02 04:30:15 +00:00
Guy Harris
dc548e7458 Allow the user to save either all of the current capture, or only the
packets that are currently being displayed from that capture.

Centralize the code to control whether "File:Save" and "File:Save As"
are enabled (and *always* have "File:Save As" enabled if you have a
capture; "File:Save" is enabled only if you have a live capture you've
not yet saved, although it does the same thing as "File:Save As").

Have the "save_file" member of a "capture_file" structure represent
*only* the file currently being *written* to by a capture, and, if there
is no capture currently in progress, have it be NULL; the name of the
file currently being *displayed" is in the "filename" member, and an
"is_tempfile" member indicates whether it's a temporary file for a live
capture or not.

Have "close_cap_file()" delete the current capture file if it's a
temporary capture file that hasn't been saved (in its entirety - saving
selected frames doesn't count).  Do the same (if there *is* a current
capture file) when exiting.

The "Ready to load or capture" message is the only statusbar message in
the "main" context; "close_cap_file()" should never pop it, it should
only pop whatever message exists in the "file" context, and thus has no
need to take, as an argument, the context for the message it should pop.

Update the man page to reflect the new behavior of "File:Save" and
"File:Save As", and to reflect recent changes to "Display:Match Selected".

svn path=/trunk/; revision=1170
1999-11-30 20:50:15 +00:00
Guy Harris
9a3791699c In "Go To Frame", distinguish between "there is no frame with that frame
number" and "there is a frame with that frame number, but it didn't pass
the current display filter".

svn path=/trunk/; revision=1164
1999-11-30 07:27:37 +00:00
Guy Harris
e0597caf79 Stuff in "colors.c" largely need work only on a "colfilter", not on a
"capture_file" - when handed a "capture_file *", it only cared about the
"colors" entry.  The only time it cares about a "capture_file" is when
it's actually filtering the packets, as it needs to hand the
"capture_file *" to "colorize_packets()".

Make the stuff exported by "colors.c" in "colors.h" take "colfilter *"
arguments (or return a "colfilter *" to be stuffed into a
"capture_file").

svn path=/trunk/; revision=1162
1999-11-30 05:33:05 +00:00
Gilbert Ramirez
f6147bfdd9 Change Olivier's e-mail address.
svn path=/trunk/; revision=1158
1999-11-29 22:45:34 +00:00
Gilbert Ramirez
7e957bf876 Made copyright date read "1998-1999".
svn path=/trunk/; revision=1157
1999-11-29 21:33:36 +00:00
Guy Harris
4d5a749309 Add a comment.
svn path=/trunk/; revision=1151
1999-11-29 08:28:45 +00:00
Guy Harris
1678a318da Get version number information for CMU SNMP.
svn path=/trunk/; revision=1142
1999-11-29 04:31:05 +00:00
Gilbert Ramirez
548be624ae Update copyright date in About box.
svn path=/trunk/; revision=1141
1999-11-29 03:56:26 +00:00
Guy Harris
ef5b3fa9e2 Include, in the version message, information about whether the UCD or
CMU SNMP library was linked in and, if one of them was, information
about the version of the library, if that information is available.

svn path=/trunk/; revision=1140
1999-11-29 03:07:19 +00:00
Guy Harris
4fa99001a8 Include in the version message an indication of whether it was built
with "libz" and, if so, which version.

svn path=/trunk/; revision=1139
1999-11-29 02:45:23 +00:00
Gilbert Ramirez
789a0d467d Remove a couple commented-out lines that I had left in from an earlier
debug session.

svn path=/trunk/; revision=1133
1999-11-28 14:50:23 +00:00
Gerald Combs
664fde99e5 Add code to colorize TCP streams.
svn path=/trunk/; revision=1131
1999-11-28 03:35:20 +00:00
Gilbert Ramirez
29087f241f Make TCP follow put display filter in the text-entry box, but not in
the history of display filters. If it is deemed useful to put the filter in
the histor of filters also, then I can do that.

When Match Selected produces byte-range display filters (field[x:y] == x.y.z),
use notation without length, since the length is no longer needed.
(field[x] == x.y.z is produced)

When Match Selected prodcues a filter for FT_ETHER's, use ether_to_str()
instead of sprintf().

svn path=/trunk/; revision=1112
1999-11-26 05:23:40 +00:00
Gerald Combs
e479d316a7 Change display filter entry widget to a GtkCombo.
Modify filter_packtes to return 1 on success, and 0 on failure.

svn path=/trunk/; revision=1106
1999-11-25 18:02:25 +00:00
Gilbert Ramirez
7bd50061f8 Move to version 0.7.8.
Document changes in this version.
Add Greg to ever-growing list of authors (he was in AUTHORS, but not
	in manpage nor in main.c)

svn path=/trunk/; revision=1097
1999-11-23 04:43:44 +00:00
Gilbert Ramirez
61604233f1 Add AIX doco and modify references to it.
svn path=/trunk/; revision=1096
1999-11-23 03:50:40 +00:00
Gilbert Ramirez
942b69ce9a A "character encoding" variable is now set per packet. The existence
of SNA in a packet changes the character encoding from the default ASCII
to EBCDIC.

The hex-printing routines in the GUI code and in the printing code convert
to EBCDIC if appropriate.

svn path=/trunk/; revision=1089
1999-11-22 06:24:56 +00:00
Laurent Deniel
f7b3c5a4a9 Add a "Reset" button to reset the current display filter and
redisplay the packet list.

svn path=/trunk/; revision=1084
1999-11-21 15:06:07 +00:00
Gilbert Ramirez
bfeff47889 Change ipv4 class to use ip_to_str() when converting IP address to string.
ip_to_str() is 7 times faster than my sprintf() implementation (both of
which take very little time for the single call that match_selected() makes,
but you know....)

svn path=/trunk/; revision=1071
1999-11-19 23:01:26 +00:00
Gilbert Ramirez
b91d595c77 Change match_selected() to produce a display filter using the selected
field's name, if possible. (If the selected field is not a registered field,
then of course, we still have to use the frame[x:y] syntax).

tree_selected_start and tree_selected_len are on longer globals variables;
finfo_selected has replaced them.

svn path=/trunk/; revision=1070
1999-11-19 22:32:00 +00:00
Guy Harris
b68f2dde89 Heikki Vatiainen's SAP (Session Announcement Protocol) dissector.
Rename the dissector for the Netware SAP protocol to "dissect_ipxsap()",
so as to keep its name from colliding with that of the dissector for the
Session Announcement Protocol.

svn path=/trunk/; revision=1046
1999-11-17 02:17:29 +00:00
Guy Harris
a7aba0a288 Replace the ETT_ "enum" members, declared in "packet.h", with
dynamically-assigned "ett_" integer values, assigned by
"proto_register_subtree_array()"; this:

	obviates the need to update "packet.h" whenever you add a new
	subtree type - you only have to add a call to
	"proto_register_subtree_array()" to a "register" routine and an
	array of pointers to "ett_", if they're not already there, and
	add a pointer to the new "ett_" variable to the array, if they
	are there;

	would allow run-time-loaded dissectors to allocate subtree types
	when they're loaded.

svn path=/trunk/; revision=1043
1999-11-16 11:44:20 +00:00
Guy Harris
3a2f7f641a "gtk_object_get_data()" returns a pointer, so its return value shouldn't
be cast to a "gint" if that "gint" value is then going to be assigned to
a pointer.

svn path=/trunk/; revision=1042
1999-11-16 08:00:20 +00:00
Guy Harris
cd708a6155 Remove an "#if 0"-ed out chunk of code that was supposed to cause the
hex window to scroll so that the data in the currently-selected field is
visible, but merely revealed core-dumping bugs in GTK+.

svn path=/trunk/; revision=1040
1999-11-16 06:59:17 +00:00
Gilbert Ramirez
7ae788f94d Don't store both "start" and "length" in each GUI proto_tree item. Just
store the field_info pointer, from which we can get both "start" and
"length" (and "hfinfo" and "value", which I'm working towards, so that
match_selected, or a new function, and create a display filter based on
the field's name, instead of byte offset ).

svn path=/trunk/; revision=1039
1999-11-15 22:52:03 +00:00
Guy Harris
f2b8eb42d0 Change my e-mail address to the forwarding address my *alma mater*
provides.  "Every problem in computer science can be solved by adding a
layer of indirection."

svn path=/trunk/; revision=1008
1999-11-11 08:45:34 +00:00
Gilbert Ramirez
0bf0d908ae More small memleak fixes.
colors.c wasn't freeing path in one place
main.c wasn't freeing rc_file
the frame_buffer fix in wtap.c didn't clear everything.

svn path=/trunk/; revision=1001
1999-11-10 19:58:54 +00:00
Guy Harris
ac4026f37a Add a "Go To Frame" menu item, which lets you go to a frame by frame
number.

svn path=/trunk/; revision=994
1999-11-10 07:01:53 +00:00
Guy Harris
0caff51de0 Add a "Go To Frame" menu item, which lets you go to a frame by frame
number.

svn path=/trunk/; revision=989
1999-11-08 01:03:40 +00:00
Guy Harris
f633fe0259 Pop up a message box if a search for a frame fails.
svn path=/trunk/; revision=985
1999-11-06 06:54:24 +00:00
Guy Harris
2d7950fffc Clean up some stuff I failed to cleanup before the initial checkin.
svn path=/trunk/; revision=984
1999-11-06 06:42:41 +00:00
Guy Harris
f0889e55c1 Add a "Find Frame" menu item under "Display"; it lets you use a display
filter to search forward or backward in the list of displayed frames for
a matching frame.

When filtering the display, readjust the display to show the "current"
frame if it passed the display filter.  When a file is read in, the
first frame becomes the "current" frame; when a frame is selected, it
becomes the "current" frame, and remains so *even if you unselect it*,
until another frame is selected.

Select the first frame when a file is read in.

Disable most of the "Display" and "Tools" menu items if there's no
current capture file, and enable the relevant ones if there is.

svn path=/trunk/; revision=982
1999-11-06 06:28:07 +00:00
Guy Harris
cdee2e23cb Get rid of an unused #define.
svn path=/trunk/; revision=980
1999-11-06 02:05:32 +00:00
Guy Harris
fc31243da0 For the "-v" flag, dump the "libpcap" version number, if we were built
with "libpcap".

svn path=/trunk/; revision=974
1999-11-04 21:04:35 +00:00
Guy Harris
b99cfa28c8 Warren Young's patch to add a "Print" button to the "Follow TCP Stream"
data window.

Some (belated) man page updates.

svn path=/trunk/; revision=950
1999-10-30 06:42:10 +00:00
Guy Harris
21c466ed25 Uwe Girlich's ONC RPC and NFS dissectors.
svn path=/trunk/; revision=945
1999-10-29 01:04:44 +00:00
Guy Harris
da1fdf005f Kojak's ICQ dissector.
svn path=/trunk/; revision=919
1999-10-24 00:56:11 +00:00
Guy Harris
047b8751f3 Generalize the "ip_src" and "ip_dst" members of the "packet_info"
structure to "dl_src"/"dl_dst", "net_src"/"net_dst", and "src"/"dst"
addresses, where an address is an address type, an address length in
bytes, and a pointer to that many bytes.

"dl_{src,dst}" are the link-layer source/destination; "net_{src,dst}"
are the network-layer source/destination; "{src,dst}" are the
source/destination from the highest of those two layers that we have in
the packet.

Add a port type to "packet_info" as well, specifying whether it's a TCP
or UDP port.

Don't set the address and port columns in the dissector functions; just
set the address and port members of the "packet_info" structure.  Set
the columns in "fill_in_columns()"; this means that if we're showing
COL_{DEF,RES,UNRES}_SRC" or "COL_{DEF,RES,UNRES}_DST", we only generate
the string from "src" or "dst", we don't generate a string for the
link-layer address and then overwrite it with a string for the
network-layer address (generating those strings costs CPU).

Add support for "conversations", where a "conversation" is (at present)
a source and destination address and a source and destination port.  (In
the future, we may support "conversations" above the transport layer,
e.g. a TFTP conversation, where the first packet goes from the client to
the TFTP server port, but the reply comes back from a different port,
and all subsequent packets go between the client address/port and the
server address/new port, or an NFS conversation, which might include
lock manager, status monitor, and mount packets, as well as NFS
packets.)

Currently, all we support is a call that takes the source and
destination address/port pairs, looks them up in a hash table, and:

	if nothing is found, creates a new entry in the hash table, and
	assigns it a unique 32-bit conversation ID, and returns that
	conversation ID;

	if an entry is found, returns its conversation ID.

Use that in the SMB and AFS code to keep track of individual SMB or AFS
conversations.  We need to match up requests and replies, as, for
certain replies, the operation code for the request to which it's a
reply doesn't show up in the reply - you have to find the request with a
matching transaction ID.  Transaction IDs are per-conversation, so the
hash table for requests should include a conversation ID and transaction
ID as the key.

This allows SMB and AFS decoders to handle IPv4 or IPv6 addresses
transparently (and should allow the SMB decoder to handle NetBIOS atop
other protocols as well, if the source and destination address and port
values in the "packet_info" structure are set appropriately).

In the "Follow TCP Connection" code, check to make sure that the
addresses are IPv4 addressses; ultimately, that code should be changed
to use the conversation code instead, which will let it handle IPv6
transparently.

svn path=/trunk/; revision=909
1999-10-22 07:18:23 +00:00
Guy Harris
6921a22ac5 Additional NTP changes:
added misc. constants for parsing flags, and converting time
	stamps;

	added flags and primary sources explanations;

	added function for converting time stamps;

	improved item analysis;

	new item definitions;

from Tomislav Vujec.

svn path=/trunk/; revision=908
1999-10-22 06:31:39 +00:00
Guy Harris
d4964f4944 Have Ethereal check for a first command-line argument of "-G", rather
than a command name of "ethereal-dump-fields", to decide whether to run
as normal Ethereal or to just dump out the list of fields that can be
used in a display filter.

This allows us to continue to make that check without doing the regular
command line flag parsing (which we don't want to do, as we don't want
to call "gtk_init()" before making that check, as "gtk_init()" tries to
open an X display, and some people want not to have to have X running in
order to build Ethereal, or want not to have Ethereal try to open an X
connection over a slow line if it's just going to print field names to
the standard output), without having to make a link to "../ethereal"
from the "doc" directory (said link couldn't be a hard link, as ATK
apparently disallows hard links between directories, and I have the
vague impression that a symbolic link might cause other problems).

svn path=/trunk/; revision=902
1999-10-21 21:47:08 +00:00
Gilbert Ramirez
7de739b851 And add the new file to the list of gtk/libui.a sources, for distribution.
svn path=/trunk/; revision=898
1999-10-20 22:53:43 +00:00
Gilbert Ramirez
b0cfa34169 Move GTK-related stuff out of globals.h and put it in gtk/gtkglobals.h
svn path=/trunk/; revision=896
1999-10-20 22:36:05 +00:00
Gilbert Ramirez
2dd24ea353 Add ASCII/EBCDIC conversion to TCP Follow window. Also add Close button
for ease-of-use with window managers w/o "destroy" buttons (twm).

svn path=/trunk/; revision=884
1999-10-19 04:11:23 +00:00
Gilbert Ramirez
10fcfef266 Move display.[ch] --> gtk/display_opts.[ch]
svn path=/trunk/; revision=883
1999-10-18 12:48:14 +00:00
Guy Harris
6f56cbf07e Phil Techau's patch to add "col_append_str()".
svn path=/trunk/; revision=845
1999-10-15 20:33:06 +00:00
Jun-ichiro itojun Hagino
45ca99c55b avoid mistakingly commit dynamically generated files, like "Makefile".
svn path=/trunk/; revision=837
1999-10-15 04:40:28 +00:00
Guy Harris
364274edf3 Nathan Neulinger's dissector for the Yahoo messenger and pager
protocols.

svn path=/trunk/; revision=824
1999-10-14 01:29:07 +00:00
Guy Harris
f3da72ef2f Have "dfilter_compile()" return 0 on success and 1 on failure, and
return the pointer to the compiled filter through a pointer argument.

Have it check whether the filter is a null filter and, if so, free up
the filter and supply a filter pointer, rather than obliging its callers
to check whether the filter actually has any code.  (Well, they may want
to check if the filter is null, so that they don't save a pointer to the
filter text, e.g. so that the display filter displays as "none" rather
than as a blank string in the summary box.)

In the process, fix the check in "gtk/file_dlg.c" that tests whether the
read filter compiled successfully.

svn path=/trunk/; revision=812
1999-10-12 05:01:07 +00:00
Guy Harris
817465175d Oops! Forgot to commit the change that adds Christophe Tronche to the
list of authors.

svn path=/trunk/; revision=809
1999-10-11 18:04:48 +00:00
Guy Harris
3b9013d393 When a new display filter is to be applied, don't set "cf.dfilter" or
"cf.dfcode" if the new filter doesn't compile, because the filter
currently in effect will be the one that was last applied - just free up
the text of the new filter, and whatever memory was allocated for the
new filter code.

This means we allocate a new dfilter when a new filter is to be applied,
rather than recycling stuff from the old filter, as we want the old
filter code to remain around if the new filter doesn't compile.

This means that "cf.dfilter" and "cf.dfcode" will be null if there's no
filter in effect.

svn path=/trunk/; revision=803
1999-10-11 06:39:26 +00:00
Laurent Deniel
69cc7f5b6b - fix a segmentation violation with big "match selected" filters.
- fix a memory leak.

svn path=/trunk/; revision=795
1999-10-09 14:05:04 +00:00