Commit Graph

6937 Commits

Author SHA1 Message Date
João Valverde 145ba2e071 Rename a variable that clashes with GLib 2021-06-19 02:34:36 +00:00
João Valverde 0e50979b3f Replace g_assert() with ws_assert() 2021-06-19 01:23:31 +00:00
João Valverde 051a74378d wslog: Use NULL for empty/default domain 2021-06-18 10:43:39 +01:00
Guy Harris 6eb3703379 Make various names match the name of the systemd journal export block.
The name of the block, in the pcapng specification is the systemd
Journal Export Block; add "export" after "journal" in various
variable/enum/define names.
2021-06-17 13:52:45 -07:00
João Valverde 0a2cef452d Add missing header 2021-06-17 15:30:52 +00:00
João Valverde c5b3842639 wslog: Add more documentation 2021-06-17 12:00:10 +01:00
João Valverde ff9acff6f2 Replace usage of GLogLevel flags everywhere
ws_log_domains.h needs to be included before wslog.h to be used
to define WS_LOG_DOMAIN. Also the definition for enum ws_log_level
needs to be exported for other APIs so move that to ws_log_domains.h
and rename the file to ws_log_defs.h to reflect the new scope.
2021-06-17 12:00:10 +01:00
João Valverde 05ed76d4c0 wslog: Use plain format with "message" level
Try out a simpler format with the default log level.

Don't display process and file/function information with "message"
level (experimental).
2021-06-17 12:00:09 +01:00
João Valverde 39df3ae3c0 Replace g_log() calls with ws_log() 2021-06-16 12:50:27 +00:00
João Valverde 69a217b95b wslog: Use buffered I/O
Use standard buffered I/O instead of printing to a string.
This is more efficient, cleaner and allows custom output per stream.
2021-06-14 22:05:35 +00:00
João Valverde e86ac706ca wslog: Parse cmd line options in one pass 2021-06-14 22:05:35 +00:00
João Valverde 5ddc007023 wslog: Include pid in format 2021-06-14 14:18:38 +01:00
João Valverde 5a662ba3fb wslog: Add support for domain filtering
A domain filter can be given in the environment variable
'WS_LOG_DOMAINS' or in a command-line options "--log-domains".

The filter is specified as a comma separated case insensitive list,
for example:

    ./tshark  --log-domains=main,capture

Domain data type switches from an enum to a string. There is no
constaint on adding new domains, neither in code or at runtime.
The string format is arbitrary, only positive matches will produce
output.
2021-06-14 13:13:12 +01:00
João Valverde 82739fc4f5 wslog: Improve code modularity and efficiency
Also tweak format for readability.
2021-06-14 13:13:12 +01:00
João Valverde dc7f0b88bb Refactor our logging and extend the wslog API
Experience has shown that:

  1. The current logging methods are not very reliable or practical.
A logging bitmask makes little sense as the user-facing interface (who
would want debug but not crtical messages for example?); it's
computer-friendly and user-unfriendly. More importantly the console
log level preference is initialized too late in the startup process
to be used for the logging subsystem and that fact raises a number
of annoying and hard-to-fix usability issues.

  2. Coding around G_MESSAGES_DEBUG to comply with our log level mask
and not clobber the user's settings or not create unexpected log misses
is unworkable and generally follows the principle of most surprise.
The fact that G_MESSAGES_DEBUG="all" can leak to other programs using
GLib is also annoying.

  3. The non-structured GLib logging API is very opinionated and lacks
configurability beyond replacing the log handler.

  4. Windows GUI has some special code to attach to a console,
but it would be nice to abstract away the rest under a single
interface.

  5. Using this logger seems to be noticeably faster.

Deprecate the console log level preference and extend our API to
implement a log handler in wsutil/wslog.h to provide easy-to-use,
flexible and dependable logging during all execution phases.

Log levels have a hierarchy, from most verbose to least verbose
(debug to error). When a given level is set everything above that
is also enabled.

The log level can be set with an environment variable or a command
line option (parsed as soon as possible but still later than the
environment). The default log level is "message".

Dissector logging is not included because it is not clear what log
domain they should use. An explosion to thousands of domains is
not desirable and putting everything in a single domain is probably
too coarse and noisy. For now I think it makes sense to let them do
their own thing using g_log_default_handler() and continue using the
G_MESSAGES_DEBUG mechanism with specific domains for each individual
dissector.

In the future a mechanism may be added to selectively enable these
domains at runtime while trying to avoid the problems introduced
by G_MESSAGES_DEBUG.
2021-06-11 09:40:28 +00:00
Chuck Craft 55511e61bb Qt: Protocol Hierarchy - protocol abbrev tooltip
Closes #16781
2021-06-09 04:52:29 +00:00
Chuck Craft bfd5e3f9aa Qt: Protocol Hierarchy - protocol abbrev tooltip
Partial solution for #16781
2021-06-09 04:52:29 +00:00
Stig Bjørlykke 44a615e854 Qt: Give a directory to wsApp->setLastOpenDir()
Use wsApp->setLastOpenDirFromFilename() to convert a filename
to a directory name before calling wsApp->setLastOpenDir().

This will ensure to always store a directory instead of a filename
in the recent gui.fileopen_remembered_dir.
2021-06-07 13:52:59 +00:00
Chuck Craft 8c79fa5e1b Qt: add display filter - invalid new filter syntax 2021-06-07 13:36:20 +00:00
Stig Bjørlykke 68e360bf04 ui: Return length from ssl_export_sessions()
All users of ssl_export_sessions() calculates the length of the
returned string, so let's return the length instead.
2021-06-07 08:59:02 +02:00
Stig Bjørlykke 5dbaa8d3b2 wsutil: Add filesystem write_file_binary_mode()
Add a generic function to write content to file. Use this on write
TLS session keys from UI and tshark, and for export objects.

Remove the now unused export_object_ui.[ch].
2021-06-07 06:24:28 +00:00
João Valverde e5cb4ddd87 Qt: Fix clang -Wmisleading-indentation 2021-06-07 00:20:14 +00:00
Gerald Combs 6bfab69d14 Windows: Switch from HTML Help to plain HTML.
Switch from HTML Help to plain HTML files. In the NSIS and WiX installers,
place the help assets in a directory with a friendly name.
2021-06-04 08:57:32 +00:00
Gerald Combs f4e18241b9 [Automatic update for 2021-05-30]
Update manuf, services enterprise numbers, translations, and other items.
2021-05-30 17:17:00 +00:00
Michael Tuexen 0b93ef669a ui: add support for updating on macOS using arm 2021-05-29 17:21:03 +00:00
Thomas Dreibholz 5107ece526 Bugfix: Added Analyze -> SCTP -> Filter this Association
Analyze -> SCTP -> Filter this Association was missing in the menu, but available in the context menu for packets. This MR fixes the issue by adding Analyze -> SCTP -> Filter this Association again.
2021-05-28 16:35:05 +00:00
Thomas Dreibholz d7fb8c0bf7 Bugfix: Added Analyze -> Follow -> DCCP Stream again.
Analyze -> Follow -> DCCP Stream was missing in the menu, but available
in the context menu for packets. This MR fixes the issue by adding
Analyze -> Follow -> DCCP Stream again.
2021-05-28 14:00:11 +00:00
João Valverde ce41dee302 Add Qt runtime version to about dialog 2021-05-28 13:40:06 +00:00
Gerald Combs 54546f228a Follow stream: Print YAML time more portably.
The secs member of nstime_t is a time_t, which is difficult to print in
a way that's compatible across platforms. Convert our time to floating
point and print that value instead. Fixes

../ui/cli/tap-follow.c:304:63: error: format specifies type 'unsigned long long' but the argument has type 'time_t' (aka 'long') [-Werror,-Wformat]
      printf("    timestamp: %" G_GINT64_MODIFIER "u.%09d\n", follow_record->abs_ts.secs, follow_record->abs_ts.nsecs);
                             ~~~~~~~~~~~~~~~~~~~~~~~          ^~~~~~~~~~~~~~~~~~~~~~~~~~
                             %ld

on macOS.
2021-05-26 05:23:19 +00:00
Toff 2df04e5bb0 Follow stream: Modify YAML format, add timestamps and peers
Modify YAML output format so it includes information about peers and
absolute timestamps for each packet.
This also adds yaml output to tshark: -z follow,tcp,yaml,X
2021-05-25 08:09:31 +00:00
João Valverde e8e2167e0f version_info: Reorder some items
Group runtime library versions and order by relevance.
2021-05-24 16:43:24 +00:00
Gerald Combs 479c8a29eb [Automatic update for 2021-05-23]
Update manuf, services enterprise numbers, translations, and other items.
2021-05-23 16:04:46 +00:00
Guy Harris 7aa828a986 RTP streams: plug memory leaks.
Don't allocate the rtpstream_id_t's until we know we have enough
information to fill them in and use them.

Keep trace of whether we have used them and, if not, free them.
2021-05-22 23:03:17 -07:00
Jirka Novak c01456b77e VoIP Dialogs: Refactoring of singleton windows to factory methods
Singletons moved from main_window to each class's static open<NameOfClass>
method:
- RtpPlayerDialog
- RtpStreamDialog
- VoipCallsDialog
- RtpAnalysisDialog

Fixed issue with selecting RTP stream in sequence dialog. When user
selected a stream and moved mouse to Rtp Player button and pressed it,
incorrect RTP stream was sent to it.
2021-05-22 03:08:46 +00:00
Guy Harris 6e95a0aa47 PortsModel: don't populate it by doing a lot of weird string-pushing.
When enumerating port-to-name entries, the callback to
wmem_map_foreach() gets passed:

- a key, which is the port number for the entry;
- a value, which is a pointer to a structure containing pointers to port
names for various transport protocols;
- a user data pointer.

That's sufficient (if you work around some C++ annoyances) to append a
row to a PortsModel, if the user data pointer is a pointer to the
PortsModel.

The existing code, instead, appended to a QStringList of lines (in
effect, undoing the effort of the code that read the services file and
filled in the wmem_map, re-generating a set of lines) in the callback,
and then iterated over all the lines, splitting them with blanks and
appending rows.

Looking at that made my eyeballs bleed so badly that I decided not to
spend any time figuring out why it wasn't working.

So I just make the callback just append rows, avoiding all the
string-pushing.

Fixes #17395.
2021-05-18 01:03:04 -07:00
Gerald Combs e33147d573 [Automatic update for 2021-05-16]
Update manuf, services enterprise numbers, translations, and other items.
2021-05-16 09:29:06 +00:00
Gerald Combs 2c62e2eb3f CMake: Set Qt autogen properties for Wireshark.
It looks like multi-configuration generators (notably MSBuild) need
Qt autogen properties set on the wireshark target as well as qtui. Do
so unconditionally in both cases. (We were doing so conditionally for
qtui before.)
2021-05-14 07:55:25 +00:00
Gerald Combs 1d3a3491ec [Automatic update for 2021-05-09]
Update manuf, services enterprise numbers, translations, and other items.
2021-05-09 09:29:13 +00:00
Gerald Combs 826e03c9f4 CMake: Apply AUTO{MOC,UIC,RCC} more selectively.
Set CMAKE_AUTO{MOC,UIC,RCC} if we're running CMake 3.20.0 or 3.20.1 in
order to work around CMake issue 22085, otherwise set the AUTOMOC,
AUTOUIC, and AUTORCC properties for the qtui target. The latter is
preferred since it keeps us from running Qt's meta-object, user
interface, or resource compilers on code outside of ui/qt. Ping #17314.
2021-05-06 19:14:15 -07:00
Pascal Quantin 438ace8f26 Qt UI: fix AutoUic warning 'The name 'label' (QLabel) is already in use' 2021-05-05 22:09:35 +02:00
Jirka Novak 6d6b376b43 VoIP dialogs: Default actions for buttons works as before
When button is pressed or triggered by shortcut, it opens same
window as before.
User can click small arrow next to button and it open menu with all
new actions e.g. Set/Add/Remove for RTP Player.
Documentation updated.
2021-05-04 20:45:35 +00:00
Jirka Novak 4c7c377d42 RTP Player: Player is able to skip silence during playback
Code is NOT able to do VAD (Voice Activity Detection) so audio silence
(sequence of equal samples) nor noise are not recognized as silence. Just
missing RTP (Confort Noise, interupted RTP, ...) and muted streams are
recognized as silence for this feature.
User can control duration of shortest silence to skip.
Updated documentation.
2021-05-03 21:38:48 +00:00
Guy Harris 8fc875db99 Allow the RTP player dialog to be opened even if we're built without libpcap. 2021-05-02 18:07:36 -07:00
Gilbert Ramirez 6555cfe885 Add min/mean delta and min jitter, to the RTP analysis. 2021-05-02 19:58:59 +00:00
Gerald Combs 75c6177fa1 [Automatic update for 2021-05-02]
Update manuf, services enterprise numbers, translations, and other items.
2021-05-02 09:19:54 +00:00
Chuck Craft e80f6fd768 Qt: URLs to Display Filter Reference and Wiki Protocol pages
Partial fix for #16727
2021-05-01 08:55:28 +00:00
Gerald Combs f80227861f Qt: Fix some documentation warnings. 2021-04-30 22:25:17 +00:00
Guy Harris 57a1514ac7 Cast away the return value of g_strlcpy() and g_strlcat().
Most of the time, the return value tells us nothing useful, as we've
already decided that we're perfectly willing to live with string
truncation.  Hopefully this keeps Coverity from whining that those
routines could return an error code (NARRATOR: They don't) and thus that
we're ignoring the possibility of failure (as indicated, we've already
decided that we can live with string truncation, so truncation is *NOT*
a failure).
2021-04-30 03:19:19 -07:00
Guy Harris faf2e62db8 tap_export_pdu: we don't have packet flags, don't claim that we do.
We don't set rec.rec_header.packet_header.pack_flags, so don't set
WTAP_HAS_PACK_FLAGS in the presence flags.  (Copy-and-pasteo?)
2021-04-29 14:27:49 -07:00
Guy Harris eb4d68033e Don't cast away upper bits when assigning to a nstime_t's secs field.
The secs field is a time_t, which is not necessarily 32 bits.  If it's
not, casting away the upper bits, by casting to guint32, introduces a
Y2.038K bug.

Either cast to time_t or, if you're assigning a time_t to it, don't
bother with the cast.
2021-04-28 21:31:15 +00:00