Commit graph

78 commits

Author SHA1 Message Date
Anders Broman
6980e9474b e_addr_resolve has a new member.
svn path=/trunk/; revision=43660
2012-07-11 10:39:49 +00:00
Jeff Morriss
8f12c9d7d7 First phase of fixing https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7380 :
Add a new name resolution option: whether or not use the configured (in the OS)
name resolver (e.g., DNS) to resolve network names.  When this option is disabled
but network name resolution is enabled then Wireshark will resolve only those
names that it can from local sources.  This includes (at least, AFAIK):

- name resolutions that Wireshark picks up on from DNS packets it decodes
- the "user hosts file" (~/.wireshark/hosts on *NIX)
- what Wireshark reads out of capture file (the PCAPNG name resolution block)

This new preference defaults to "use external resolvers" for backward
compatibility (so people turning on network name resolution will get the old
behavior).

This option can be set via Edit->Preferences and on the command line; there
remain several UIs (e.g., the "open capture file" dialog, the
View->Name Resolution menu, etc.) that don't have the new option yet.


Also expand on the "description" for the name resolution preferences: these
are used not only in the tooltips but are also written to the preferences
file.  The previous text didn't include enough context when written do the
preferences file.

svn path=/trunk/; revision=43605
2012-07-08 01:31:48 +00:00
Jakub Zawadzki
c383e6f115 Fix logic typo, it should fix bug #7434
svn path=/trunk/; revision=43588
2012-07-06 17:02:08 +00:00
Jakub Zawadzki
f31b3943c0 - e_addr_resolve is structure so pass it by pointer.
- name_resolve_concurrency must be only defined when used.

svn path=/trunk/; revision=43584
2012-07-06 07:34:08 +00:00
Anders Broman
c19583b72c From Michael Mann:
Generic preferences implementation - Printing and Name Resolution.

svn path=/trunk/; revision=43579
2012-07-06 04:48:36 +00:00
Jakub Zawadzki
8c1d02377e Fix bug #7425: Per-packet right-click network or MAC name resolution not working
proto_tree_draw() from r43189 is lazy, and it don't fills tree with all item labels.
To fix it, move 'gbl_resolv_flags' hack to proto_tree_model_get_value().

XXX could we pass resolving flags to proto_item_fill_label()?


svn path=/trunk/; revision=43550
2012-06-30 10:43:50 +00:00
Jakub Zawadzki
bf81b42e1e Update Free Software Foundation address.
(COPYING will be updated in next commit)

svn path=/trunk/; revision=43536
2012-06-28 22:56:06 +00:00
Guy Harris
9d90dc5e8f Move if_list_comparator_alph() to iface_lists.c; it's used in several
places.

svn path=/trunk/; revision=43534
2012-06-28 20:52:26 +00:00
Guy Harris
1ae8203b46 No pcap, no interfaces to monitor.
svn path=/trunk/; revision=43530
2012-06-28 19:10:40 +00:00
Guy Harris
5e077c6d6c <wsutil/file_util.h> is needed on Windows.
svn path=/trunk/; revision=43529
2012-06-28 19:09:22 +00:00
Guy Harris
79e11663b1 <wsutil/file_util.h> is needed by ui/gtk/iface_lists.c on Linux as it
does a ws_stat64() to check for the existence of files in /sys.

It's *not* needed in ui/gtk/main.c any more, as that code was moved out
of ui/gtk/main.c.

svn path=/trunk/; revision=43525
2012-06-28 18:33:53 +00:00
Guy Harris
879189564a Move the stuff to manage the global interface list and to update
displays of that list into a separate iface_lists.c file.

svn path=/trunk/; revision=43523
2012-06-28 18:16:18 +00:00
Guy Harris
1d1391ed47 From Pontus Fuchs:
Add an interface monitor that, on Linux distributions with libnl,
watches for interfaces to appear or disappear and, on such an event,
causes windows showing interface lists to update.

svn path=/trunk/; revision=43521
2012-06-28 16:21:51 +00:00
Guy Harris
4e893a71fe Make scan_local_interfaces() local to ui/gtk/main.c; widgets/windows
that want a list of interfaces should either call
fill_in_local_interfaces() to make sure the list has been populated at
least once or refresh_local_interface_lists() if they want the list to
be rescanned.

Also make get_interface_type() local to ui/gtk/main.c, as it's not
called from outside ui/gtk/main.c.

Don't declare fill_in_local_interfaces() or hide_interface() unless we
have pcap - we don't define them unless we have pcap.

svn path=/trunk/; revision=43518
2012-06-28 08:25:17 +00:00
Guy Harris
5e7ca579ce Detangle the code that manages the interface list on the welcome screen:
fill_capture_box():

	if there are interfaces on which to capture, constructs the
	interface list, otherwise destroys the interface list and puts
	up a message.

    update_capture_box():

	updates the interface list to reflect current reality.

    welcome_if_panel_reload():

	if there is an interface list, and if there are interfaces on
	which to capture (so that we still want that list), updates the
	list by calling update_capture_box(), otherwise creates or
	destroys it by calling fill_capture_box() (as either it doesn't
	exist but now needs to or does exist but needs to go away).

Have refresh_local_interface_lists(), which re-fetches the list of local
interfaces and updates every interface list that includes local
interfaces, and refresh_non_local_interface_lists(), which only updates
interface lists that (also) include interfaces other than local
interfaces (such as pipes and remote interfaces).  Call them in the
apprpriate places (if we know the list of local interfaces has been
updated, call refresh_local_interface_lists(), otherwise, if we know
interfaces other than local interfaces have been added or removed, call
refresh_non_local_interface_lists()).

Don't have any routine that updates the interface list for one widget
update the interface list for any other widget; leave the global
updating of interface lists up to refresh_local_interface_lists() and
refresh_non_local_interface_lists() - only call one of them if any
interface lists are to be updated.

svn path=/trunk/; revision=43517
2012-06-28 08:13:21 +00:00
Guy Harris
234628c616 No pcap, no interfaces, no interface lists to refresh.
svn path=/trunk/; revision=43516
2012-06-28 02:19:12 +00:00
Guy Harris
9650d477b3 From Pontus Fuchs:
add a capture_dlg_refresh_if() routine to redraw the list of
	interfaces in the Capture -> Interfaces dialog if the lsit of
	known interfaces is updated, and have it do that not by
	destroying and reconstructing the entire dialog box, but just by
	destroying and reconstructing the table containing the
	interfaces and their statistics.

From me:

	have a refresh_interfaces_cb() routine in ui/gtk/main.c that
	scans the local interfaces and refreshes *all* the widgets that
	have interface lists;

	add a "Refresh Interfaces" item to the Capture menu that calls
	that;

	have the "Refresh" button in the "Manage Interfaces" window also
	call that;

	rename the Capture Options window routine dlg_window_present()
	to capture_dlg_window_present() to make it clearer *which*
	dialog it checks for;

	fix Pontus' patch to call capture_stat_stop() *before* nulling
	out the global pointer for the statistics cache - if it's called
	*after* nulling it out, the argument passed to
	capture_stat_stop() is null, and it doesn't kill off the dumpcap
	gathering the statistics so they just pile up (and, at least on
	OS X, chewing up BPF devices until you run out of BPF devices
	that have the right ownership and permissions for dumpcap to use
	as a normal user);

	if refreshing the interfaces fails to get an interface list,
	close the Capture Interfaces dialog.

svn path=/trunk/; revision=43515
2012-06-28 01:54:42 +00:00
Anders Broman
3814106d7e From Michael Mann:
generic preferences implementation

https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7402

svn path=/trunk/; revision=43484
2012-06-25 21:05:36 +00:00
Jörg Mayer
5cab183cfb Pontus Fuchs (via bug 6973):
Make the wireless toolbar actually appear.

svn path=/trunk/; revision=43465
2012-06-24 19:43:09 +00:00
Jörg Mayer
bca451b663 capture_dlg.h:
- Replace airpcap_tb in comment
- Remove trailing whitespace
main.c:
- wireless_tb must always be defined now, even if compiling without
  HAVE_AIRPCAP

svn path=/trunk/; revision=43373
2012-06-19 16:13:11 +00:00
Anders Broman
1992295e16 Revert:
airpcap_tb -> wireless_tb

Second try.

svn path=/trunk/; revision=43364
2012-06-19 14:37:46 +00:00
Anders Broman
eeb63c1297 Revert:
airpcap_tb -> wireless_tb

svn path=/trunk/; revision=43360
2012-06-19 14:08:15 +00:00
Anders Broman
890a3f66ea airpcap_tb -> wireless_tb
svn path=/trunk/; revision=43359
2012-06-19 13:36:35 +00:00
Anders Broman
227eb36c83 Start to have an generic wireless toolbar. Sligtly modified patch from
Pontus Fuchs.

https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=6973

svn path=/trunk/; revision=43354
2012-06-19 12:42:06 +00:00
Guy Harris
480e2c351b Move some code to manipulate the toolbar and capture interface dialog
out of main_menubar.c into routines in main.c.

Move some routines that are only used by main.c into
main_menubar_private.h.

svn path=/trunk/; revision=43298
2012-06-17 00:00:25 +00:00
Guy Harris
8bd9df6671 Oops, main_packet_panes.h no longer exists.
svn path=/trunk/; revision=43297
2012-06-16 23:29:57 +00:00
Guy Harris
26d50fb7a0 There's not much of note in ui/gtk/main_packet_panes.c; just do those
operations directly in ui/gtk/main.c.

svn path=/trunk/; revision=43295
2012-06-16 23:10:06 +00:00
Guy Harris
c22b539731 Rename clear_tree_and_hex_views() to main_clear_tree_and_hex_views(), as
it specifically works on the main window's tree and hex dump views (it
doesn't apply to packet windows - they are always showing data from a
particular packet), and move its declaration to main_packet_panes.h.

svn path=/trunk/; revision=43293
2012-06-16 21:37:24 +00:00
Guy Harris
75dba53ad6 Move some routines that specifically handle the main window's packet
panes to main_packet_panes.c.

Rename main_tree_view_new() to proto_tree_view_new() - it's not just for
creating the main window's protocol tree view, it's also for creating
protocol tree views in packet windows.

svn path=/trunk/; revision=43292
2012-06-16 21:30:24 +00:00
Guy Harris
57cc5fa784 ui/gtk/main_proto_draw.c isn't just used for the main window, it's also
used for popped-up packet windows, and it includes more than just code
to draw the protocol tree - it includes the hex dump pane code as well. 
Rename it packet_panes.c; the stuff specific to the main window should
be moved into a different file.

svn path=/trunk/; revision=43290
2012-06-16 20:52:04 +00:00
Guy Harris
21d35d275a In effect, disable closing the main window while a capture is being
stopped - there's no guaranteed way to make the UI's close button
inactive (on X11, it depends on whether the window manager allows that),
but we can just do nothing and return TRUE from the delete event handler
to ignore the delete event.

svn path=/trunk/; revision=43252
2012-06-14 03:50:39 +00:00
Guy Harris
e1ec927708 Disable some menu items and toolbar items while we're waiting for a
capture to stop, so that we don't try to quit while we're in the middle
of quitting or try to stop or restart the capture we're in the middle of
stopping.

svn path=/trunk/; revision=43250
2012-06-14 02:19:46 +00:00
Guy Harris
98ec2ab440 Update a comment to reflect new-packet-list reality.
svn path=/trunk/; revision=43242
2012-06-13 21:08:18 +00:00
Guy Harris
9fe3d4b4f3 If we do a Save or Save As with a move, don't reread the capture file,
just tweak the elements in the capture_file structure as necessary and
poke the UI to update stuff such as the windows title.

If we do a Save or Save As with a copy, don't reread the capture file,
just close the old wtap, open a wtap for the copy, and tweak the
elements in the capture_file structure as necessary and poke the UI to
update stuff such as the windows title.

Otherwise, don't do a full read-and-dissect pass on the capture file,
just close the old wtap, open a wtap for the new file, tweak the
elements in the capture_file structure as necessary and poke the UI to
update stuff such as the windows title, and rescan the file to update
the packet offsets (and cause Wiretap to regenerate, for a gzipped file,
the information needed to support fast random access to the gzipped
file).

This should speed up Save and Save As a bit, as well as removing some
glitches in the UI (e.g., you won't see the packet list disappear and
reappear).

svn path=/trunk/; revision=43101
2012-06-05 06:52:18 +00:00
Guy Harris
99536cc8da Distinguish between "failed" and "user stopped it" for "save as" and
"export specified packets".  For "failed", let the user try again with a
different file, in case it failed due to, for example, running out of
space or quota (probably the most likely failure mode for writing, and
trying to a different volume might be the best workaround).  For "user
stopped it", presumably they don't want to try again (the most likely
reason is "it was taking too damn long").
 
Put "Exporting to: ...", not "Saving: ..." in the statusbar if we're
doing "export specified packets".

In process_specified_packets(), allow a null range pointer to be
specified, meaning "save 'em all"; that avoids the possibly-expensive
(with a large capture) operation of initializing the range.

If a "safe save" atop an existing file fails or is stopped, get rid of
the temporary file we created.

svn path=/trunk/; revision=43095
2012-06-05 02:46:54 +00:00
Guy Harris
00de07144d Use the modal version of the bad display filter alert box in the I/O
statistics window.

Get rid of the non-modal version (it's not being used any more), and
remove the now-redundant _modal from the modal version.

svn path=/trunk/; revision=43081
2012-06-04 20:08:59 +00:00
Guy Harris
7453e28dc0 Use the modal version of the bad display filter alert box.
svn path=/trunk/; revision=43078
2012-06-04 19:44:48 +00:00
Guy Harris
afa17a95b0 Make the "Export Selected Packets As..." code path more like the "Save
As..." code path.

Extract the code for the "do you want to overwrite this file" and "OK,
you do - are you aware it's {user-immutable, read-only}?" code paths
into a common routine for use by both of those and, potentially, other
save/export/etc. code paths in the future.

For "Save As", allow us to save atop the current capture file, as that's
just what "Save" does if there are unsaved changes, and "safe save"
makes that work.  *Don't* allow that for "Export Selected Packets
As...", however.

The file chooser is run as a modal dialog, so we don't need to worry
about creating more than one of them or about the number of marked
packets etc. being changed out from under us.  Get rid of a bunch of
static variables.

svn path=/trunk/; revision=43060
2012-06-04 10:27:59 +00:00
Guy Harris
eb03bb0290 Add some more routines to main.c that handle updates to "auto scroll in
live capture" and colorization, so that the ones in main_menubar.c don't
have to know about anything other than the main menubar.

Move some toolbar routines that should only be used by routines in
main.c into a main_toolbar_private.h header.

svn path=/trunk/; revision=43053
2012-06-04 03:15:05 +00:00
Guy Harris
9c44d87610 Have a main_update_for_unsaved_changes() routine that, if changes are
made to the capture file (adding/removing/editing comments, for now) or
if a capture file with unsaved changes are unsaved, updates the menu
bar, the toolbar, *and* the titlebar, which now has a GNOME-style "*" to
indicate unsaved changes.

Make set_menus_for_capture_file() a private interface between main.c and
main_menubar.c, and have its callers, such as
main_update_for_unsaved_changes(), be responsible for updating the
toolbar as well.

svn path=/trunk/; revision=43051
2012-06-04 02:24:42 +00:00
Guy Harris
dbfb305368 g_filename_display_basename() returns a g_mallocated string, so its
callers either need to free it or their callers need to free it or....

This means that cf_get_display_name() must always return a g_mallocated
string and its callers or... must free it.

For some of those callers, create a new set_window_title() routine to do
the work - they're all using the same pattern.

svn path=/trunk/; revision=43047
2012-06-03 22:03:05 +00:00
Guy Harris
742b22dd43 Move routines that handle the main window title bar out of
ui/gtk/gui_utils.c into ui/gtk/main_titlebar.c, and the declaration of
one of them out of ui/ui_util.h into ui/gtk/main_titlebar.h, and rename
them to clarify that they work on the window name and titlebar.

svn path=/trunk/; revision=43041
2012-06-03 18:35:34 +00:00
Anders Broman
dbc4b09004 From Evan Huus Convert a bunch more GTK-2 calls to their cross-version ws_ equivalent
svn path=/trunk/; revision=43009
2012-06-02 23:53:04 +00:00
Guy Harris
6014035703 Use GTK+'s GtkMessageDialog for the questions we ask in the process of
saving files, and run it modal (which we're already doing with the
GtkFileChooserDialog); this means less callback-based state machine
stuff, simplifying the code paths a bit.

If we're saving a file before closing it, don't bother reloading it
after saving it.

svn path=/trunk/; revision=42855
2012-05-25 21:25:55 +00:00
Guy Harris
c2bb7956c2 "Save As" always saves everything and, when the save is done, makes the
new file the current file, as is the case in most if not all other GUI
applications.

A new "Export Specified Packets" menu option allows you to specify which
packets to write out, with the default being the displayed packets (and
those on which the displayed packets depend for, e.g.  reassembly), and
never makes the resulting file the current file.

The two operations are conceptually distinct.  Lumping them into one
menu item, with the default for "Save As" being "displayed packets only"
and thus making it behave like the latter operation, was causing some
confusion; see, for example, bug 6640.

Make the dialog popped up if you try to "Save As" or "Export Specified
Packets" on top of an existing file ask the "do you want to do this?"
question in the main part of the message, and note in the secondary text
that doing that will overwrite what's in the file; that matches what
TextEdit on OS X and the GNOME text editor say.

svn path=/trunk/; revision=42792
2012-05-22 22:17:57 +00:00
Guy Harris
90c43120ca The GUI's state machine requires that, when reloading a capture after a
save, we post capture file callback events similar to the ones posted
when reading a capture - otherwise, the reload will leave the welcome
screen up.

Rename cf_cb_file_save_reload_finished to cf_cb_file_reload_finished,
add a cf_cb_file_reload_started callback, have them work similarly to
read_finished and read_started except that the reload uses "Reloading"
in the progress bar and status bar.

Clean up some indentation while we're at it.

svn path=/trunk/; revision=42764
2012-05-22 03:52:12 +00:00
Guy Harris
4a9b825c49 Change the "user_saved" member of a capture_file structure to
"unsaved_changes", and have it be TRUE iff changes have been made to the
file since it was read - *not* if it's a temporary file from a live
capture.

Check the "is_tempfile" member, and the "unsaved_changes" member, when
appropriate.

Just have a set_toolbar_for_capture_file() routine that updates the
"save", "close", and "reload" toolbar as appropriate, given a
capture_file structure - absorb the function of
set_toolbar_for_unsaved_capture_file() into it.

svn path=/trunk/; revision=42721
2012-05-20 08:56:06 +00:00
Anders Broman
77074a5a37 From Evan Huus: - Make sure that unsupported link-layer types *always* have a dlt of -1 in the device.links list so that we can tell if they're unsupported. - When building the combo-box of link-layer types, make the unsupported ones insensitive (disabled), and be sure to default to a supported one if we have one. - Compiling a capture filter requires a supported link-layer type, so disable the 'Compile BPF' button if there are none. - It is not always a programming error to have no active pointer in the combo-box, as this can happen when all the available entries are unsupported (and thus disabled). Don't abort with g_assert_not_reached() when this happens. - Unlock the pcap_compile_mtx mutex in all cases after compiling a packet filter. This was causing a deadlock (complete program hang) if you tried to compile two different filters in a row on the same interface. https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7135
svn path=/trunk/; revision=42410
2012-05-04 04:35:43 +00:00
ruengeler
0819722ad8 Fix bug #7178 reported by aparan
svn path=/trunk/; revision=42206
2012-04-23 12:34:16 +00:00
Anders Broman
a094f232ea From Martin Kaiser: menus, main window title, icons are not reset when capture is interrupted before any data arrives. https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7129
svn path=/trunk/; revision=42149
2012-04-20 05:20:04 +00:00