Compare commits
5 Commits
636c2d21ac
...
5438628f48
Author | SHA1 | Date |
---|---|---|
Pau Espin | 5438628f48 | |
Pascal Quantin | a1c55f2356 | |
Roland Knall | fd7716542c | |
Chuck Craft | 91c0669fb7 | |
Chuck Craft | 0bfa32ee6c |
|
@ -233,18 +233,18 @@ Trying to access a non-existing property, function or method currently gives an
|
||||||
error, but do not rely on it as the behavior may change in the future.
|
error, but do not rely on it as the behavior may change in the future.
|
||||||
|
|
||||||
|
|
||||||
include::{build_dir}/wsluarm_src/wslua_dumper.adoc[]
|
include::{build_dir}/wsluarm_src/wslua_utility.adoc[]
|
||||||
include::{build_dir}/wsluarm_src/wslua_field.adoc[]
|
|
||||||
include::{build_dir}/wsluarm_src/wslua_gui.adoc[]
|
include::{build_dir}/wsluarm_src/wslua_gui.adoc[]
|
||||||
include::{build_dir}/wsluarm_src/wslua_listener.adoc[]
|
|
||||||
include::{build_dir}/wsluarm_src/wslua_pinfo.adoc[]
|
|
||||||
include::{build_dir}/wsluarm_src/wslua_proto.adoc[]
|
include::{build_dir}/wsluarm_src/wslua_proto.adoc[]
|
||||||
include::{build_dir}/wsluarm_src/wslua_tree.adoc[]
|
include::{build_dir}/wsluarm_src/wslua_field.adoc[]
|
||||||
|
include::{build_dir}/wsluarm_src/wslua_pinfo.adoc[]
|
||||||
include::{build_dir}/wsluarm_src/wslua_tvb.adoc[]
|
include::{build_dir}/wsluarm_src/wslua_tvb.adoc[]
|
||||||
|
include::{build_dir}/wsluarm_src/wslua_tree.adoc[]
|
||||||
|
include::{build_dir}/wsluarm_src/wslua_listener.adoc[]
|
||||||
|
include::{build_dir}/wsluarm_src/wslua_dumper.adoc[]
|
||||||
|
include::{build_dir}/wsluarm_src/wslua_wtap.adoc[]
|
||||||
include::{build_dir}/wsluarm_src/wslua_file.adoc[]
|
include::{build_dir}/wsluarm_src/wslua_file.adoc[]
|
||||||
include::{build_dir}/wsluarm_src/wslua_dir.adoc[]
|
include::{build_dir}/wsluarm_src/wslua_dir.adoc[]
|
||||||
include::{build_dir}/wsluarm_src/wslua_wtap.adoc[]
|
|
||||||
include::{build_dir}/wsluarm_src/wslua_utility.adoc[]
|
|
||||||
include::{build_dir}/wsluarm_src/wslua_int64.adoc[]
|
include::{build_dir}/wsluarm_src/wslua_int64.adoc[]
|
||||||
include::{build_dir}/wsluarm_src/wslua_struct.adoc[]
|
include::{build_dir}/wsluarm_src/wslua_struct.adoc[]
|
||||||
|
|
||||||
|
|
|
@ -631,7 +631,7 @@ side is a tree where you can select the page to be shown.
|
||||||
image::wsug_graphics/ws-gui-preferences.png[{screenshot-attrs}]
|
image::wsug_graphics/ws-gui-preferences.png[{screenshot-attrs}]
|
||||||
|
|
||||||
Wireshark supports quite a few protocols, which is reflected in the long list of entries in the “Protocols” pane.
|
Wireshark supports quite a few protocols, which is reflected in the long list of entries in the “Protocols” pane.
|
||||||
You can jump to the preferences for a specific protocol by expanding “Protocols” and quickly typing the first few letters of the protocol name.
|
You can jump to the preferences for a specific protocol by expanding “Protocols” and typing the first few letters of the protocol name.
|
||||||
|
|
||||||
The “Advanced” pane will let you view and edit all of Wireshark’s preferences, similar to link:about:config[] and link:chrome:flags[] in the Firefox and Chrome web browsers.
|
The “Advanced” pane will let you view and edit all of Wireshark’s preferences, similar to link:about:config[] and link:chrome:flags[] in the Firefox and Chrome web browsers.
|
||||||
|
|
||||||
|
|
|
@ -68,12 +68,11 @@ GOOSEpdu
|
||||||
|
|
||||||
int len = tvb_reported_length_remaining(tvb, offset);
|
int len = tvb_reported_length_remaining(tvb, offset);
|
||||||
|
|
||||||
|
%(DEFAULT_BODY)s
|
||||||
if ((len == FLOAT_ENC_LENGTH) && (tvb_get_guint8(tvb,0) == SINGLE_FLOAT_EXP_BITS) ){
|
if ((len == FLOAT_ENC_LENGTH) && (tvb_get_guint8(tvb,0) == SINGLE_FLOAT_EXP_BITS) ){
|
||||||
/* IEEE 754 single precision floating point */
|
/* IEEE 754 single precision floating point */
|
||||||
|
proto_item_set_hidden(actx->created_item);
|
||||||
proto_tree_add_item(tree, hf_goose_float_value, tvb, 1, (FLOAT_ENC_LENGTH-1), ENC_BIG_ENDIAN);
|
proto_tree_add_item(tree, hf_goose_float_value, tvb, 1, (FLOAT_ENC_LENGTH-1), ENC_BIG_ENDIAN);
|
||||||
offset = len;
|
|
||||||
}else{
|
|
||||||
%(DEFAULT_BODY)s
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#.END
|
#.END
|
||||||
|
|
|
@ -626,14 +626,13 @@ dissect_goose_FloatingPoint(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
|
||||||
|
|
||||||
int len = tvb_reported_length_remaining(tvb, offset);
|
int len = tvb_reported_length_remaining(tvb, offset);
|
||||||
|
|
||||||
if ((len == FLOAT_ENC_LENGTH) && (tvb_get_guint8(tvb,0) == SINGLE_FLOAT_EXP_BITS) ){
|
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
|
||||||
/* IEEE 754 single precision floating point */
|
|
||||||
proto_tree_add_item(tree, hf_goose_float_value, tvb, 1, (FLOAT_ENC_LENGTH-1), ENC_BIG_ENDIAN);
|
|
||||||
offset = len;
|
|
||||||
}else{
|
|
||||||
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
|
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
if ((len == FLOAT_ENC_LENGTH) && (tvb_get_guint8(tvb,0) == SINGLE_FLOAT_EXP_BITS) ){
|
||||||
|
/* IEEE 754 single precision floating point */
|
||||||
|
proto_item_set_hidden(actx->created_item);
|
||||||
|
proto_tree_add_item(tree, hf_goose_float_value, tvb, 1, (FLOAT_ENC_LENGTH-1), ENC_BIG_ENDIAN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -157,6 +157,7 @@ static int hf_mgcp_req_dup = -1;
|
||||||
static int hf_mgcp_req_dup_frame = -1;
|
static int hf_mgcp_req_dup_frame = -1;
|
||||||
static int hf_mgcp_rsp_dup = -1;
|
static int hf_mgcp_rsp_dup = -1;
|
||||||
static int hf_mgcp_rsp_dup_frame = -1;
|
static int hf_mgcp_rsp_dup_frame = -1;
|
||||||
|
static int hf_mgcp_param_x_osmux = -1;
|
||||||
static int hf_mgcp_unknown_parameter = -1;
|
static int hf_mgcp_unknown_parameter = -1;
|
||||||
static int hf_mgcp_malformed_parameter = -1;
|
static int hf_mgcp_malformed_parameter = -1;
|
||||||
|
|
||||||
|
@ -882,25 +883,34 @@ static gint tvb_parse_param(tvbuff_t* tvb, gint offset, gint len, int** hf, mgcp
|
||||||
tvb_current_offset++;
|
tvb_current_offset++;
|
||||||
|
|
||||||
/* Keep going, through possible vendor param name */
|
/* Keep going, through possible vendor param name */
|
||||||
|
char ext_buf[256];
|
||||||
|
ext_buf[0] = '\0';
|
||||||
for (counter = 1;
|
for (counter = 1;
|
||||||
((len > (counter + tvb_current_offset-offset)) &&
|
((len > (counter + tvb_current_offset-offset)) &&
|
||||||
(g_ascii_isalpha(tempchar = tvb_get_guint8(tvb, tvb_current_offset+counter)) ||
|
(g_ascii_isalpha(tempchar = tvb_get_guint8(tvb, tvb_current_offset+counter)) ||
|
||||||
g_ascii_isdigit(tempchar))) ;
|
g_ascii_isdigit(tempchar))) ;
|
||||||
counter++);
|
counter++) ext_buf[counter - 1] = g_ascii_toupper(tempchar);
|
||||||
|
|
||||||
if (tempchar == ':')
|
if (tempchar == ':')
|
||||||
{
|
{
|
||||||
/* Looks like a valid vendor param name */
|
/* Looks like a valid vendor param name */
|
||||||
tvb_current_offset += counter;
|
ext_buf[counter - 1] = '\0';
|
||||||
|
fprintf(stderr, "MGCP Extension: %s\n", ext_buf);
|
||||||
switch (plus_minus)
|
switch (plus_minus)
|
||||||
{
|
{
|
||||||
case '+':
|
case '+':
|
||||||
*hf = &hf_mgcp_param_extension_critical;
|
*hf = &hf_mgcp_param_extension_critical;
|
||||||
break;
|
break;
|
||||||
case '-':
|
case '-':
|
||||||
*hf = &hf_mgcp_param_extension;
|
if (strcmp(ext_buf, "OSMUX") == 0) {
|
||||||
|
fprintf(stderr, "MGCP Extension: is Osmux!!\n");
|
||||||
|
*hf = &hf_mgcp_param_x_osmux;
|
||||||
|
} else {
|
||||||
|
*hf = &hf_mgcp_param_extension;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
tvb_current_offset += counter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1554,6 +1564,18 @@ static void dissect_mgcp_params(tvbuff_t *tvb, proto_tree *tree, mgcp_info_t* mi
|
||||||
dissect_mgcp_remotevoicemetrics(mgcp_param_tree, tvb, tvb_linebegin,
|
dissect_mgcp_remotevoicemetrics(mgcp_param_tree, tvb, tvb_linebegin,
|
||||||
tvb_tokenbegin - tvb_linebegin, tokenlen);
|
tvb_tokenbegin - tvb_linebegin, tokenlen);
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
else
|
||||||
|
if (*my_param == hf_mgcp_param_x_osmux)
|
||||||
|
{
|
||||||
|
tokenlen = tvb_find_line_end(tvb, tvb_tokenbegin, -1, &tvb_lineend, FALSE);
|
||||||
|
proto_tree_add_string(mgcp_param_tree, *my_param, tvb,
|
||||||
|
tvb_linebegin, linelen,
|
||||||
|
tvb_format_text(wmem_packet_scope(), tvb, tvb_tokenbegin, tokenlen));
|
||||||
|
|
||||||
|
TODO: mark somewhere that Osmux is used, so that packet-sdp.c doesn't call srtp_add_address().
|
||||||
|
}
|
||||||
|
*/
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tokenlen = tvb_find_line_end(tvb, tvb_tokenbegin, -1, &tvb_lineend, FALSE);
|
tokenlen = tvb_find_line_end(tvb, tvb_tokenbegin, -1, &tvb_lineend, FALSE);
|
||||||
|
@ -2664,6 +2686,9 @@ void proto_register_mgcp(void)
|
||||||
{ &hf_mgcp_rsp_dup_frame,
|
{ &hf_mgcp_rsp_dup_frame,
|
||||||
{ "Original Response Frame", "mgcp.rsp.dup.frame", FT_FRAMENUM, BASE_NONE, NULL, 0x0,
|
{ "Original Response Frame", "mgcp.rsp.dup.frame", FT_FRAMENUM, BASE_NONE, NULL, 0x0,
|
||||||
"Frame containing original response", HFILL }},
|
"Frame containing original response", HFILL }},
|
||||||
|
{ &hf_mgcp_param_x_osmux,
|
||||||
|
{ "Osmux", "mgcp.param.x_osmux", FT_STRING, BASE_NONE, NULL, 0x0,
|
||||||
|
"Osmux CID", HFILL }},
|
||||||
{ &hf_mgcp_unknown_parameter,
|
{ &hf_mgcp_unknown_parameter,
|
||||||
{ "Unknown parameter", "mgcp.unknown_parameter", FT_STRING, BASE_NONE, NULL, 0x0,
|
{ "Unknown parameter", "mgcp.unknown_parameter", FT_STRING, BASE_NONE, NULL, 0x0,
|
||||||
NULL, HFILL }},
|
NULL, HFILL }},
|
||||||
|
|
|
@ -2348,9 +2348,11 @@ apply_sdp_transport(packet_info *pinfo, transport_info_t *transport_info, int re
|
||||||
DPRINT(("calling rtp_add_address, channel=%d, media_port=%d",
|
DPRINT(("calling rtp_add_address, channel=%d, media_port=%d",
|
||||||
i, media_desc->media_port));
|
i, media_desc->media_port));
|
||||||
DINDENT();
|
DINDENT();
|
||||||
|
/* TODO: Here only call this if !osmux:
|
||||||
srtp_add_address(pinfo, PT_UDP, &media_desc->conn_addr, media_desc->media_port, 0, "SDP", establish_frame,
|
srtp_add_address(pinfo, PT_UDP, &media_desc->conn_addr, media_desc->media_port, 0, "SDP", establish_frame,
|
||||||
media_desc->media_types,
|
media_desc->media_types,
|
||||||
media_desc->media.rtp_dyn_payload, NULL, setup_info);
|
media_desc->media.rtp_dyn_payload, NULL, setup_info);
|
||||||
|
*/
|
||||||
DENDENT();
|
DENDENT();
|
||||||
}
|
}
|
||||||
/* SPRT might use the same port... */
|
/* SPRT might use the same port... */
|
||||||
|
@ -2367,7 +2369,9 @@ apply_sdp_transport(packet_info *pinfo, transport_info_t *transport_info, int re
|
||||||
DPRINT(("calling rtcp_add_address, channel=%d, control_port=%d",
|
DPRINT(("calling rtcp_add_address, channel=%d, control_port=%d",
|
||||||
i, media_desc->control_port));
|
i, media_desc->control_port));
|
||||||
DINDENT();
|
DINDENT();
|
||||||
|
/* TODO: Here only call this if !osmux:
|
||||||
rtcp_add_address(pinfo, &media_desc->conn_addr, media_desc->control_port, 0, "SDP", establish_frame);
|
rtcp_add_address(pinfo, &media_desc->conn_addr, media_desc->control_port, 0, "SDP", establish_frame);
|
||||||
|
*/
|
||||||
DENDENT();
|
DENDENT();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -651,6 +651,10 @@ int main(int argc, char *qt_argv[])
|
||||||
/* Create The Wireshark app */
|
/* Create The Wireshark app */
|
||||||
WiresharkApplication ws_app(argc, qt_argv);
|
WiresharkApplication ws_app(argc, qt_argv);
|
||||||
|
|
||||||
|
// Default value is 400ms = "quickly typing" when searching in Preferences->Protocols
|
||||||
|
// 1000ms allows a more "hunt/peck" typing speed. 2000ms tested - too long.
|
||||||
|
QApplication::setKeyboardInputInterval(1000);
|
||||||
|
|
||||||
/* initialize the funnel mini-api */
|
/* initialize the funnel mini-api */
|
||||||
// xxx qtshark
|
// xxx qtshark
|
||||||
//initialize_funnel_ops();
|
//initialize_funnel_ops();
|
||||||
|
|
|
@ -682,6 +682,8 @@ void ProfileDialog::finishImport(QFileInfo fi, int count, int skipped, QStringLi
|
||||||
if (skipped > 0)
|
if (skipped > 0)
|
||||||
msg.append(tr(", %Ln profile(s) skipped", "", skipped));
|
msg.append(tr(", %Ln profile(s) skipped", "", skipped));
|
||||||
}
|
}
|
||||||
|
QMessageBox msgBox(icon, tr("Importing profiles"), msg, QMessageBox::Ok, this);
|
||||||
|
msgBox.exec();
|
||||||
|
|
||||||
storeLastDir(fi.absolutePath());
|
storeLastDir(fi.absolutePath());
|
||||||
|
|
||||||
|
@ -695,50 +697,9 @@ void ProfileDialog::finishImport(QFileInfo fi, int count, int skipped, QStringLi
|
||||||
pd_ui_->profileTreeView->selectRow(idx.isValid() ? idx.row() : 0);
|
pd_ui_->profileTreeView->selectRow(idx.isValid() ? idx.row() : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
QMessageBox msgBox(icon, tr("Importing profiles"), msg, QMessageBox::Ok, this);
|
|
||||||
msgBox.exec();
|
|
||||||
|
|
||||||
updateWidgets();
|
updateWidgets();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ProfileDialog::lastOpenDir()
|
|
||||||
{
|
|
||||||
QString result;
|
|
||||||
|
|
||||||
switch (prefs.gui_fileopen_style) {
|
|
||||||
|
|
||||||
case FO_STYLE_LAST_OPENED:
|
|
||||||
/* The user has specified that we should start out in the last directory
|
|
||||||
we looked in. If we've already opened a file, use its containing
|
|
||||||
directory, if we could determine it, as the directory, otherwise
|
|
||||||
use the "last opened" directory saved in the preferences file if
|
|
||||||
there was one. */
|
|
||||||
/* This is now the default behaviour in file_selection_new() */
|
|
||||||
result = QString(get_last_open_dir());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FO_STYLE_SPECIFIED:
|
|
||||||
/* The user has specified that we should always start out in a
|
|
||||||
specified directory; if they've specified that directory,
|
|
||||||
start out by showing the files in that dir. */
|
|
||||||
if (prefs.gui_fileopen_dir[0] != '\0')
|
|
||||||
result = QString(prefs.gui_fileopen_dir);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
QDir ld(result);
|
|
||||||
if (ld.exists())
|
|
||||||
return result;
|
|
||||||
|
|
||||||
return QString();
|
|
||||||
}
|
|
||||||
|
|
||||||
void ProfileDialog::storeLastDir(QString dir)
|
|
||||||
{
|
|
||||||
if (mainApp && dir.length() > 0)
|
|
||||||
mainApp->setLastOpenDir(qUtf8Printable(dir));
|
|
||||||
}
|
|
||||||
|
|
||||||
void ProfileDialog::resetTreeView()
|
void ProfileDialog::resetTreeView()
|
||||||
{
|
{
|
||||||
if (model_)
|
if (model_)
|
||||||
|
|
|
@ -64,8 +64,6 @@ private:
|
||||||
void updateWidgets();
|
void updateWidgets();
|
||||||
void resetTreeView();
|
void resetTreeView();
|
||||||
|
|
||||||
QString lastOpenDir();
|
|
||||||
void storeLastDir(QString dir);
|
|
||||||
void finishImport(QFileInfo fi, int count, int skipped, QStringList import);
|
void finishImport(QFileInfo fi, int count, int skipped, QStringList import);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
|
|
@ -17,12 +17,16 @@
|
||||||
#include <epan/range.h>
|
#include <epan/range.h>
|
||||||
#include <epan/to_str.h>
|
#include <epan/to_str.h>
|
||||||
#include <epan/value_string.h>
|
#include <epan/value_string.h>
|
||||||
|
#include <epan/prefs.h>
|
||||||
|
|
||||||
#include <ui/recent.h>
|
#include <ui/recent.h>
|
||||||
|
#include <ui/last_open_dir.h>
|
||||||
#include "ui/ws_ui_util.h"
|
#include "ui/ws_ui_util.h"
|
||||||
|
|
||||||
#include <wsutil/str_util.h>
|
#include <wsutil/str_util.h>
|
||||||
|
|
||||||
|
#include <ui/qt/main_application.h>
|
||||||
|
|
||||||
#include <QAction>
|
#include <QAction>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
|
@ -295,3 +299,41 @@ QString make_filter_based_on_rtpstream_id(QVector<rtpstream_id_t *> stream_ids)
|
||||||
return filter;
|
return filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString lastOpenDir()
|
||||||
|
{
|
||||||
|
QString result;
|
||||||
|
|
||||||
|
switch (prefs.gui_fileopen_style) {
|
||||||
|
|
||||||
|
case FO_STYLE_LAST_OPENED:
|
||||||
|
/* The user has specified that we should start out in the last directory
|
||||||
|
we looked in. If we've already opened a file, use its containing
|
||||||
|
directory, if we could determine it, as the directory, otherwise
|
||||||
|
use the "last opened" directory saved in the preferences file if
|
||||||
|
there was one. */
|
||||||
|
/* This is now the default behaviour in file_selection_new() */
|
||||||
|
result = QString(get_last_open_dir());
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FO_STYLE_SPECIFIED:
|
||||||
|
/* The user has specified that we should always start out in a
|
||||||
|
specified directory; if they've specified that directory,
|
||||||
|
start out by showing the files in that dir. */
|
||||||
|
if (prefs.gui_fileopen_dir[0] != '\0')
|
||||||
|
result = QString(prefs.gui_fileopen_dir);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDir ld(result);
|
||||||
|
if (ld.exists())
|
||||||
|
return result;
|
||||||
|
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
|
||||||
|
void storeLastDir(QString dir)
|
||||||
|
{
|
||||||
|
if (mainApp && dir.length() > 0)
|
||||||
|
mainApp->setLastOpenDir(qUtf8Printable(dir));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -253,6 +253,21 @@ void qvector_rtpstream_ids_free(QVector<rtpstream_id_t *> stream_ids);
|
||||||
*/
|
*/
|
||||||
QString make_filter_based_on_rtpstream_id(QVector<rtpstream_id_t *> stream_ids);
|
QString make_filter_based_on_rtpstream_id(QVector<rtpstream_id_t *> stream_ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Return the last directory that had been opened.
|
||||||
|
*
|
||||||
|
* This can be influenced by prefs.gui_fileopen_style which will allow to either
|
||||||
|
* open the real last dir or have the user set one specifically.
|
||||||
|
*
|
||||||
|
* @return a reference to that directory.
|
||||||
|
*/
|
||||||
|
QString lastOpenDir();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Store the directory as last directory being used
|
||||||
|
*/
|
||||||
|
void storeLastDir(QString dir);
|
||||||
|
|
||||||
#endif /* __QT_UI_UTILS__H__ */
|
#endif /* __QT_UI_UTILS__H__ */
|
||||||
|
|
||||||
// XXX Add a routine to fetch the HWND corresponding to a widget using QPlatformIntegration
|
// XXX Add a routine to fetch the HWND corresponding to a widget using QPlatformIntegration
|
||||||
|
|
Loading…
Reference in New Issue