capture interfaces dialog code, *and* the code that calls it, under
HAVE_LIBPCAP.
Still more stuff to remove from the no-pcap UI, such as the Capture
menu, the capture filter in the main window, and the list of interfaces
in the main window.
svn path=/trunk/; revision=53582
an interface, don't destroy the default link-layer header type from the
list of types.
I.e., first get the type from the preference (which sets the type to -1
if there isn't a preference), and then loop through the list of types
and, if there was no value obtained from the preference (i.e., the type
is -1), set it to the first type in the list.
Also, don't bother with the link-layer header type from the global
default options, as a global (all-interface) link-layer header type
makes little sense, given that the list of link-layer header types for
an interface depends on the type of interface and hence may differ from
interface to interface.
Fixes bug 9473.
svn path=/trunk/; revision=53581
* Reuse sparkline from welcome
* Split settings in tab (!= GTK)
* No all feature work (Work In Progress...)
* ...
Comments (and review) are welcome !
svn path=/trunk/; revision=53563
say "you checked it here, but you dereferenced it later even if it was
null when you checked it".
This obviates the need for some checks of frame_selected, as cf->edt
will be non-null iff cf->current_frame is non-null.
Always check *cf, not cfile, in set_menus_for_selected_packet().
Currently, cf always == &cfile, but we aren't guaranteeing that will be
true forever.
svn path=/trunk/; revision=53523
I'm not sold on the name or module the proto_data functions live in, but I believe the function arguments are solid and gives us the most flexibility for the future. And search/replace of a function name is easy enough to do.
The big driving force for getting this in sooner rather than later is the saved memory on ethernet packets (and IP packets soon), that used to have file_scope() proto data when all it needed was packet_scope() data (technically packet_info->pool scoped), strictly for Decode As.
All dissectors that use p_add_proto_data() only for Decode As functionality have been converted to using packet_scope(). All other dissectors were converted to using file_scope() which was the original scope for "proto" data.
svn path=/trunk/; revision=53520
It looks like resetting the packet list model during freezing and
thawing disconnects the selection changed signal between the model and
the main window. Rename the packet list's setMenusFollowStream signal to
packetSelectionChanged and use it to trigger menu updates in the main
window.
svn path=/trunk/; revision=53516
We presumably want "decode as" behavior to be consistent across UIs so
call load_decode_as_entries() from read_prefs().
svn path=/trunk/; revision=53498
I may eventually switch this to use proto_* values instead of strings, but just the addition of the loop is more jarring as compared to the simple comparing of ip or ethernet values. But it should lead to a smaller (less protocol specific) packet_info structure.
svn path=/trunk/; revision=53476
Add menu items for each corresponding item in gtk/main_menubar.c that
calls gtk_stats_tree_cb(). Hopefully that's everything. Note that we use
quite a bit less code than the GTK+ flavor and why we might not want to
do that. Change a few things in ui/qt/CMakeLists.txt to more closely
match the GTK+ version. Add plumbing for tap registrations in
CMakeLists.txt and Makefile.am. Add the ability to copy text as CSV or
YAML.
svn path=/trunk/; revision=53464
The basic idea behind this design is to have dissectors register with a "decode as list" with their name and dissector table. When "Decode As" dialog is launched, any "registered" dissector found in the packet will cause a tab to be created in the dialog. Any GUI (GTK+/Qt/tshark) can just hook into the "decode as list" to see what can be provided.
This patch includes the GUI portion of the functionality (including packet-dcerpc.[ch] because it had some GUI dependencies that are now removed).
Other notes:
1. Some "GUI text" (UTF8_LEFTWARDS_ARROW and similar) made their way into the dissector code. Not sure how necessary it is and if reformatting the strings to avoid the macros is desired (TCP/UDP use it, SCTP doesn't).
2. I converted the SCTP functionality to have 2 tabs (instead of radio button), currently both are labeled "Transport" which could be confusing to users. Naming suggestions welcome (as well as for naming of tabs from other dissectors).
3. BER and DCERPC have more opportunity to use Decode As now that they are selected based on dissector presense, not packet_info values.
4. Catapult DCT2000 populates pinfo->ipproto, yet under new design will not show up to do Decode As. Should a "decode as item" be created for it?
5. BER dissector doesn't have Clear/Show Current functionality working (never did)
6. Bluetooth (in old design) could have been used "capture wide" instead of single packet (creating tabs of values not present in current packet), which goes against what I believe to be in the intent of Decode As, but I'm willing to hear counter-arguments.
svn path=/trunk/; revision=53446
The basic idea behind this design is to have dissectors register with a "decode as list" with their name and dissector table. When "Decode As" dialog is launched, any "registered" dissector found in the packet will cause a tab to be created in the dialog.
This patch includes just the dissector portion of the functionality (minus packet-dcerpc.[ch] because it has hooks to the current GUI)
svn path=/trunk/; revision=53445
configuration file directory and directory in which to save captures),
have the routine to parse -P options use them, and move that routine to
libui.
Have that routine just return a gboolean.
svn path=/trunk/; revision=53435
Change the "Raw" character type to UTF-8. I'm not sure it's possible
to show true raw data in a QTextEdit widget and calling it UTF-8 more
accurately repesents what happens when you pass a char * to a QString.
Add a YAML display. Hopefully Scapy users will find it useful.
Sort the the character display items alphabetically. Make sure we go
back to the top of the buffer when we change the direction or character
set. Be less aggressive about setting focus on the "find text" entry.
svn path=/trunk/; revision=53421
Collect packet numbers when following streams so that we can correlate
text positions with packets. Add a FollowStreamText class so that we can
track mouse events. Add a hint label that shows the packet under the
cursor along with packet counts and the number of "turns".
Add the packet number to the C array dump. Note that dumping to YAML
might be useful for Scapy users.
svn path=/trunk/; revision=53314
Create a new dialog each time the user follows a stream. A lot of the
follow code seems to assume one and only one dialog so there are likely
outstanding bugs.
Don't use the global cfile (should we deprecate its usage?). We want to
move closer to multiple documents, not further away.
Clean up after ourselves. Free our payload list and unlink our temp
file. Make a bunch of gchar*s QStrings. Make sure our destructor gets
called and use it.
Make member variable and method names more consistent.
svn path=/trunk/; revision=53306
the ftenum_t for the fvalue's ftype, rather than a pointer to the ftype
(which isn't all that useful except as a handle, unless you import the
internal header).
Have fvalue_to_string_repr() return NULL, rather than failing, if the
fvalue's ftype has no val_to_string_repr method.
This lets us not include the ftypes internal header in
ui/cli/tap-diameter-avp.c.
svn path=/trunk/; revision=53290
(With this change all the right-hand columns in this dialog will wrap if
necessary whereas before only the display filter would wrap lines.)
svn path=/trunk/; revision=53282
Plumb some controls. Adjust dialog layout. Make sure sequence
information is allocated and freed correctly. Remove a debugging
statement.
svn path=/trunk/; revision=53260
subtypes, e.g. Network Monitor version 1 and Network Monitor version 2
are separate "file types", even though they both come from Network
Monitor.
Rename various functions, #defines, and variables appropriately.
svn path=/trunk/; revision=53166
.cap, for example, doesn't refer to a particular file type - a whole
bunch of file types use .cap.
Also offer, in addition to "All Files", "All Capture Files", which
matches all the extensions we know about.
svn path=/trunk/; revision=53156
In the process, fix various man page descriptions of the -t flag,
and add support for UTC absolute times in the iousers and iostat TShark
taps.
svn path=/trunk/; revision=53114
In the current Qt startup sequence the main window + splash screen is
displayed before the main preferences are loaded which means we can't
immediately apply the correct geometry. For now, use an animation to
morph from the default to the saved geometry after the prefs are loaded.
Get rid of main_do_quit() (Qt) and main_window_exit() (Qt+GTK). It looks
like they were unused.
Add wsApp->isInitialized() and use it to see if we should exit() when
the main window is closed. Otherwise we won't shut the application down
and clean up properly.
svn path=/trunk/; revision=52988
SVN rev 50525 tried to fix out-of-source-tree builds, but did so by
writing the .rcc.cpp files to the source tree. This was noticed when
running `make distcheck`. This patch reverts that behavior, and creates
the image/ directory to fix out-of-tree builds.
In other words, fix things so "make distcheck" with Qt works in out-of-tree
builds too.
svn path=/trunk/; revision=52926
Use integer coordinates for the arrows and text. Add smooth_font_size()
to qt_ui_utils which will hopefully adjust the size on Windows to
something more readable.
svn path=/trunk/; revision=52906
Draw item labels and port numbers. Update the hint text. Make items
selectable. Resize fonts similar to the GTK+ version. Add scrollbars.
Update the cursor. Use pango_layout_set_ellipsize() in the GTK+ code.
Fixup comments.
svn path=/trunk/; revision=52855
convert all existing UAT update callbacks to use glib memory instead of
ephemeral memory for that string.
UAT code paths are entirely distinct from packet dissection, so using ephemeral
memory was the wrong choice, because there was no guarantees about when it would
be freed.
The move away from emem still needs to be propogated deeper into the UAT code
itself at some point.
Net effect: remove another bunch of emem calls from dissectors, where replacing
with wmem would have caused assertions.
svn path=/trunk/; revision=52854
Copy common code from ui/gtk/flow_graph.c and ui/gtk/graph_analysis.[ch]
to ui/tap-sequence-analysis.[ch]. Start using the name "sequence" in
places.
svn path=/trunk/; revision=52824
Yes this solution leaks memory, but I think the handful of bytes leaked is worth fixing this nuisance. Won't backport until leak is fixed though.
svn path=/trunk/; revision=52793
Currently this is only for GTK, but allows users to test it to see if its worth adding to Qt (my personal opinion is yes).
From Jiří Engelthaler
svn path=/trunk/; revision=52790
the C++ stuff.
ui/qt/CMakeLists.txt adds -Wno-shorten-64-to-32 on 64-bit systems but it
doesn't seem necessary on Fedora 18 (64-bit). Leaving it out for now--let's
see what others say...
svn path=/trunk/; revision=52673
not finding it, I finally found it in column_info.h
Renamed column_info.h to column-info.h to have consistency
with the column*h files.
svn path=/trunk/; revision=52667
resizable. Get rid of the group box -- the OS X and Windows HIGs
discourage its use and I'm not sure if it fits the GNOME HIG in this
case either. Make the stream contents monospace. Set the cursor to the
beginning of the text when we follow a stream.
Continue the War On Unnecessary Dialogs. Move "Find"ing from a pop-up
window to the main Follow dialog. Wrap back to the beginning as needed.
Add a "Cancel" button. Make sure it and the escape key work as expected.
svn path=/trunk/; revision=52607
time in order to fill in their respective context menus. R52386 broke
that. Fix it and add comments about handling reparenting. Fixes bug
9265.
svn path=/trunk/; revision=52600
Move the declaration of set_last_open_dir() to ui/util.h. It still
has separate GTK+ and Qt implemenations. We might want to move it to
ui/util.c at some point. Remove a lot of unnecessary GTK+ includes.
Remove most of the references to the global cfile while we're at it.
svn path=/trunk/; revision=52542
selected (and we're not going to start capturing). That way the user can fix
whatever was wrong without having to re-open the dialog.
svn path=/trunk/; revision=52512
Make extra_split_ a member variable again. Make it and master_split_
full-on values. Set various parent/child relationships at startup
so that each widget is associated with a layout (which appears to be
the actual fix).
Make the throttled startup delay huge so that it's easier to browse
using GammaRay.
[1] https://github.com/KDAB/GammaRay
svn path=/trunk/; revision=52386
Scan our segment list (and the capture file) once per stream. Switch the
stream selection control to a QSpinBox. Add graph type selection
actions. The context menu + shortcuts should now be complete. Add the
intitial tcptrace graph. Only ACKs and RWINs so far. A bunch of other
updates and fixes.
svn path=/trunk/; revision=52027
Add get_tcp_stream_count() to the TCP dissector and modify
graph_segment_list_get() to allow matching based solely on a stream.
Use text instead of icons for the mouse click behavior buttons. Remove
their PNG resources since we aren't using them any more. Fix setting the
cursor in the graph widget.
svn path=/trunk/; revision=51989
follow_stream_dialog.cpp. Remove the ones that we don't use. Use
QMessageBox in place of simple_dialog.
Move IP6OPT_HOME_ADDRESS and related definitions to packet-ipv6.c. It
looks like we only use it there and it conflicts with WinPcap.
Mark some items unused.
svn path=/trunk/; revision=51951
(autotools, CMake, nmake, qmake). Throw something at qmake in the hopes
of letting it use GnuTLS in the "follow SSL stream" code.
svn path=/trunk/; revision=51915
when the paint takes a long time (for very large windows, or on older machines)
that doesn't cause every single event to paint (which slows the whole thing to
a crawl). Drop the splash timer to 15ms, since we're no longer counting paints
this seems like a more appropriate value. The old value of 50ms would causing
the splash to only paint once or twice during startup.
svn path=/trunk/; revision=51914
Add TCP/UDP/SSL Follow feature to QtShark
Known issue :
* Duplicate code with GTK (function need follow_info_t struct but in GTK there is some GWidget variable in struct)
* Sometimes TCP Follow fail...
svn path=/trunk/; revision=51883
Rename some methods. Add the ability to toggle time and sequence number
origins. Add more keyboard shortcuts. Comment out abs_secs abs_usecs in
the segment struct since it looks like we aren't using them. Make sure
we stay in the same TCP stream.
svn path=/trunk/; revision=51856
Show the time values in ms instead of s. Add a button and keyboard
shortcut to switch the connection direction. Move more code to
tap-tcp-stream.c. Update our axis labels.
svn path=/trunk/; revision=51832
to allow switching back to the old behavior.
Note that goToPacket can jump to the wrong packet if we have a display
filter applied.
svn path=/trunk/; revision=51801
Make the stream graph dialog modeless and let the user open multiple
instances. The dangling dialog behaves similar to the GTK+ version. Add
a setDissectedCaptureFile signal to MainWindow (currently unused).
Properly transform yAxis2 and simplify resetAxes while we're at it.
Other bug fixes.
svn path=/trunk/; revision=51795
GTK+: Fix what appears to be an off-by-one error in the MA period (21
segments instead of 20). Throw away our initial segment length instead
of subtracting it from the moving sum, which skews the sum.
Qt: Add the througput graph. Use bits/s for the throughput y axis. Let
the user switch between graph types. The dialog hangs when doing this. I
haven't been able to track down the cause. Remove some unused code.
Both: Tell the user that we're using a 20 segment moving average. Move
more routines to tap-tcp-stream.[ch].
svn path=/trunk/; revision=51759
QWidget::setWindowModified: The window title does not contain a '[*]' placeholder
a) Add [*] to the window title.
b) Also set the window title before calling setWindowModified
Not really understanding what I'm doing here, just following the hints
given in http://qt-project.org/forums/viewthread/2108
Original logmessages when closing Wireshark while running a capture.
17:23:39.652 Capture Msg Capture stopped!
17:23:39.653 Main Dbg Callback: capture update finished
QWidget::setWindowModified: The window title does not contain a '[*]' placeholder
FIX: packet list heading menu sensitivity
17:23:39.653 Dbg FIX: capture_info_ui_destroy
17:23:39.653 Main Dbg Callback: Closing
FIX: packet list heading menu sensitivity
17:23:39.655 Main Dbg Callback: Closed
svn path=/trunk/; revision=51722
splitters they're actually layed out in. This should let us reorganize the
splitters at will (when the prefs change) without reconstructing the panes.
svn path=/trunk/; revision=51718
panes, not yet which data goes in which pane).
You currently have to restart for the change to take effect. I also had to move
the preferences-reading (and thus the epan_init) call to before the main window
instantiation so that the preference was actually available for use. This means
that the progress-bar doesn't show up for very long any more, since most of the
work is already done by the time it appears.
I'm sure there is a way to delay just the layout setup until later, but I kept
getting slot errors I couldn't figure out...
svn path=/trunk/; revision=51647
immediately from the CLI. Get rid of the comment concerning multi-pass parsing
of the options, it only applied to the GTK version.
svn path=/trunk/; revision=51640
(yet) and it is getting in the way while I try and add some argument parsing.
It's still in the GTK version if we want it.
svn path=/trunk/; revision=51639