aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikael Kanstrup <mikael.kanstrup@gmail.com>2017-08-24 16:16:34 +0200
committerAnders Broman <a.broman58@gmail.com>2017-08-28 14:41:43 +0000
commit8873c7e494018637449a17a7f7ddaf88ad43f3c6 (patch)
tree162c283b967e7dc5f98a54575ff2ed25444997a8
parent76c231bd683410bed4fa803bcbc91e613e201ab0 (diff)
iface_lists: Access all_ifaces member by reference
Change access of all_ifaces elements from by val to by reference. With this change unnecessary copying of the whole struct is avoided but even more important is that elements no longer have to be removed and inserted whenever data is updated. This change aims to make it more clear that all_ifaces elements shall never be removed from the array without freeing resources via the capture_opts_free_interface_t function. NOTE: Code for GTK UI not updated Ping-Bug: 13864 Change-Id: I36742cb1d5c8daa136c9d3732a044a7c8e5c7fe7 Reviewed-on: https://code.wireshark.org/review/23201 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl> Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r--capture_opts.c54
-rw-r--r--summary.c16
-rw-r--r--ui/capture.c10
-rw-r--r--ui/iface_lists.c35
-rw-r--r--ui/qt/capture_filter_syntax_worker.cpp18
-rw-r--r--ui/qt/capture_interfaces_dialog.cpp26
-rw-r--r--ui/qt/capture_preferences_frame.cpp16
-rw-r--r--ui/qt/compiled_filter_output.cpp6
-rw-r--r--ui/qt/extcap_options_dialog.cpp31
-rw-r--r--ui/qt/interface_toolbar.cpp14
-rw-r--r--ui/qt/main_welcome.cpp20
-rw-r--r--ui/qt/manage_interfaces_dialog.cpp60
-rw-r--r--ui/qt/models/interface_tree_cache_model.cpp44
-rw-r--r--ui/qt/models/interface_tree_model.cpp111
-rw-r--r--ui/qt/widgets/capture_filter_edit.cpp8
-rw-r--r--ui/qt/wireshark_application.cpp8
-rw-r--r--wireshark-qt.cpp26
17 files changed, 233 insertions, 270 deletions
diff --git a/capture_opts.c b/capture_opts.c
index 4d63ba4d12..51ce4b7bd4 100644
--- a/capture_opts.c
+++ b/capture_opts.c
@@ -1206,7 +1206,7 @@ void
collect_ifaces(capture_options *capture_opts)
{
guint i;
- interface_t device;
+ interface_t *device;
interface_options interface_opts;
/* Empty out the existing list of interfaces. */
@@ -1215,23 +1215,23 @@ collect_ifaces(capture_options *capture_opts)
/* Now fill the list up again. */
for (i = 0; i < capture_opts->all_ifaces->len; i++) {
- device = g_array_index(capture_opts->all_ifaces, interface_t, i);
- if (!device.hidden && device.selected) {
- interface_opts.name = g_strdup(device.name);
- interface_opts.descr = g_strdup(device.display_name);
- interface_opts.console_display_name = g_strdup(device.name);
- interface_opts.linktype = device.active_dlt;
- interface_opts.cfilter = g_strdup(device.cfilter);
- interface_opts.timestamp_type = g_strdup(device.timestamp_type);
- interface_opts.snaplen = device.snaplen;
- interface_opts.has_snaplen = device.has_snaplen;
- interface_opts.promisc_mode = device.pmode;
- interface_opts.if_type = device.if_info.type;
+ device = &g_array_index(capture_opts->all_ifaces, interface_t, i);
+ if (!device->hidden && device->selected) {
+ interface_opts.name = g_strdup(device->name);
+ interface_opts.descr = g_strdup(device->display_name);
+ interface_opts.console_display_name = g_strdup(device->name);
+ interface_opts.linktype = device->active_dlt;
+ interface_opts.cfilter = g_strdup(device->cfilter);
+ interface_opts.timestamp_type = g_strdup(device->timestamp_type);
+ interface_opts.snaplen = device->snaplen;
+ interface_opts.has_snaplen = device->has_snaplen;
+ interface_opts.promisc_mode = device->pmode;
+ interface_opts.if_type = device->if_info.type;
#ifdef HAVE_EXTCAP
- interface_opts.extcap = g_strdup(device.if_info.extcap);
+ interface_opts.extcap = g_strdup(device->if_info.extcap);
interface_opts.extcap_fifo = NULL;
interface_opts.extcap_userdata = NULL;
- interface_opts.extcap_args = device.external_cap_args_settings;
+ interface_opts.extcap_args = device->external_cap_args_settings;
interface_opts.extcap_pid = INVALID_EXTCAP_PID;
if (interface_opts.extcap_args)
g_hash_table_ref(interface_opts.extcap_args);
@@ -1245,25 +1245,25 @@ collect_ifaces(capture_options *capture_opts)
interface_opts.extcap_control_out = NULL;
#endif
#ifdef CAN_SET_CAPTURE_BUFFER_SIZE
- interface_opts.buffer_size = device.buffer;
+ interface_opts.buffer_size = device->buffer;
#endif
#ifdef HAVE_PCAP_CREATE
- interface_opts.monitor_mode = device.monitor_mode_enabled;
+ interface_opts.monitor_mode = device->monitor_mode_enabled;
#endif
#ifdef HAVE_PCAP_REMOTE
interface_opts.src_type = CAPTURE_IFREMOTE;
- interface_opts.remote_host = g_strdup(device.remote_opts.remote_host_opts.remote_host);
- interface_opts.remote_port = g_strdup(device.remote_opts.remote_host_opts.remote_port);
- interface_opts.auth_type = device.remote_opts.remote_host_opts.auth_type;
- interface_opts.auth_username = g_strdup(device.remote_opts.remote_host_opts.auth_username);
- interface_opts.auth_password = g_strdup(device.remote_opts.remote_host_opts.auth_password);
- interface_opts.datatx_udp = device.remote_opts.remote_host_opts.datatx_udp;
- interface_opts.nocap_rpcap = device.remote_opts.remote_host_opts.nocap_rpcap;
- interface_opts.nocap_local = device.remote_opts.remote_host_opts.nocap_local;
+ interface_opts.remote_host = g_strdup(device->remote_opts.remote_host_opts.remote_host);
+ interface_opts.remote_port = g_strdup(device->remote_opts.remote_host_opts.remote_port);
+ interface_opts.auth_type = device->remote_opts.remote_host_opts.auth_type;
+ interface_opts.auth_username = g_strdup(device->remote_opts.remote_host_opts.auth_username);
+ interface_opts.auth_password = g_strdup(device->remote_opts.remote_host_opts.auth_password);
+ interface_opts.datatx_udp = device->remote_opts.remote_host_opts.datatx_udp;
+ interface_opts.nocap_rpcap = device->remote_opts.remote_host_opts.nocap_rpcap;
+ interface_opts.nocap_local = device->remote_opts.remote_host_opts.nocap_local;
#endif
#ifdef HAVE_PCAP_SETSAMPLING
- interface_opts.sampling_method = device.remote_opts.sampling_method;
- interface_opts.sampling_param = device.remote_opts.sampling_param;
+ interface_opts.sampling_method = device->remote_opts.sampling_method;
+ interface_opts.sampling_param = device->remote_opts.sampling_param;
#endif
g_array_append_val(capture_opts->ifaces, interface_opts);
} else {
diff --git a/summary.c b/summary.c
index ee0cbb3e2f..0fd6b8d6ba 100644
--- a/summary.c
+++ b/summary.c
@@ -203,7 +203,7 @@ void
summary_fill_in_capture(capture_file *cf,capture_options *capture_opts, summary_tally *st)
{
iface_options iface;
- interface_t device;
+ interface_t *device;
guint i;
if (st->ifaces->len == 0) {
@@ -211,17 +211,17 @@ summary_fill_in_capture(capture_file *cf,capture_options *capture_opts, summary_
* XXX - do this only if we have a live capture.
*/
for (i = 0; i < capture_opts->all_ifaces->len; i++) {
- device = g_array_index(capture_opts->all_ifaces, interface_t, i);
- if (!device.selected) {
+ device = &g_array_index(capture_opts->all_ifaces, interface_t, i);
+ if (!device->selected) {
continue;
}
- iface.cfilter = g_strdup(device.cfilter);
- iface.name = g_strdup(device.name);
- iface.descr = g_strdup(device.display_name);
+ iface.cfilter = g_strdup(device->cfilter);
+ iface.name = g_strdup(device->name);
+ iface.descr = g_strdup(device->display_name);
iface.drops_known = cf->drops_known;
iface.drops = cf->drops;
- iface.snap = device.snaplen;
- iface.encap_type = wtap_pcap_encap_to_wtap_encap(device.active_dlt);
+ iface.snap = device->snaplen;
+ iface.encap_type = wtap_pcap_encap_to_wtap_encap(device->active_dlt);
g_array_append_val(st->ifaces, iface);
}
}
diff --git a/ui/capture.c b/ui/capture.c
index 67282f70a3..0612d3cba6 100644
--- a/ui/capture.c
+++ b/ui/capture.c
@@ -641,7 +641,7 @@ capture_stat_start(capture_options *capture_opts) {
if_stat_cache_t *sc = NULL;
if_stat_cache_item_t *sc_item;
guint i;
- interface_t device;
+ interface_t *device;
/* Fire up dumpcap. */
/*
@@ -670,11 +670,11 @@ capture_stat_start(capture_options *capture_opts) {
/* Initialize the cache */
for (i = 0; i < capture_opts->all_ifaces->len; i++) {
- device = g_array_index(capture_opts->all_ifaces, interface_t, i);
- if (device.type != IF_PIPE) {
+ device = &g_array_index(capture_opts->all_ifaces, interface_t, i);
+ if (device->type != IF_PIPE) {
sc_item = (if_stat_cache_item_t *)g_malloc0(sizeof(if_stat_cache_item_t));
- g_assert(device.if_info.name);
- sc_item->name = g_strdup(device.if_info.name);
+ g_assert(device->if_info.name);
+ sc_item->name = g_strdup(device->if_info.name);
sc->cache_list = g_list_append(sc->cache_list, sc_item);
}
}
diff --git a/ui/iface_lists.c b/ui/iface_lists.c
index bf02dc6765..103dd8d25a 100644
--- a/ui/iface_lists.c
+++ b/ui/iface_lists.c
@@ -435,7 +435,7 @@ hide_interface(gchar* new_hide)
{
gchar *tok;
guint i;
- interface_t device;
+ interface_t *device;
gboolean found = FALSE;
GList *hidden_devices = NULL, *entry;
if (new_hide != NULL) {
@@ -444,13 +444,13 @@ hide_interface(gchar* new_hide)
}
}
for (i = 0; i < global_capture_opts.all_ifaces->len; i++) {
- device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
+ device = &g_array_index(global_capture_opts.all_ifaces, interface_t, i);
found = FALSE;
for (entry = hidden_devices; entry != NULL; entry = g_list_next(entry)) {
- if (strcmp((char *)entry->data, device.name)==0) {
- device.hidden = TRUE;
- if (device.selected) {
- device.selected = FALSE;
+ if (strcmp((char *)entry->data, device->name)==0) {
+ device->hidden = TRUE;
+ if (device->selected) {
+ device->selected = FALSE;
global_capture_opts.num_selected--;
}
found = TRUE;
@@ -458,10 +458,8 @@ hide_interface(gchar* new_hide)
}
}
if (!found) {
- device.hidden = FALSE;
+ device->hidden = FALSE;
}
- global_capture_opts.all_ifaces = g_array_remove_index(global_capture_opts.all_ifaces, i);
- g_array_insert_val(global_capture_opts.all_ifaces, i, device);
}
g_list_free(hidden_devices);
g_free(new_hide);
@@ -470,22 +468,19 @@ hide_interface(gchar* new_hide)
void
update_local_interfaces(void)
{
- interface_t device;
+ interface_t *device;
gchar *descr;
guint i;
for (i = 0; i < global_capture_opts.all_ifaces->len; i++) {
- device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
- device.type = capture_dev_user_linktype_find(device.name);
- g_free (device.display_name);
- descr = capture_dev_user_descr_find(device.name);
- device.display_name = get_iface_display_name(descr, &device.if_info);
+ device = &g_array_index(global_capture_opts.all_ifaces, interface_t, i);
+ device->type = capture_dev_user_linktype_find(device->name);
+ g_free(device->display_name);
+ descr = capture_dev_user_descr_find(device->name);
+ device->display_name = get_iface_display_name(descr, &device->if_info);
g_free (descr);
- device.hidden = prefs_is_capture_device_hidden(device.name);
- fill_from_ifaces(&device);
-
- global_capture_opts.all_ifaces = g_array_remove_index(global_capture_opts.all_ifaces, i);
- g_array_insert_val(global_capture_opts.all_ifaces, i, device);
+ device->hidden = prefs_is_capture_device_hidden(device->name);
+ fill_from_ifaces(device);
}
}
#endif /* HAVE_LIBPCAP */
diff --git a/ui/qt/capture_filter_syntax_worker.cpp b/ui/qt/capture_filter_syntax_worker.cpp
index 2132f50897..a578643b50 100644
--- a/ui/qt/capture_filter_syntax_worker.cpp
+++ b/ui/qt/capture_filter_syntax_worker.cpp
@@ -89,19 +89,19 @@ void CaptureFilterSyntaxWorker::start() {
}
for (guint if_idx = 0; if_idx < global_capture_opts.all_ifaces->len; if_idx++) {
- interface_t device;
+ interface_t *device;
- device = g_array_index(global_capture_opts.all_ifaces, interface_t, if_idx);
- if (!device.locked && device.selected) {
+ device = &g_array_index(global_capture_opts.all_ifaces, interface_t, if_idx);
+ if (!device->locked && device->selected) {
#ifdef HAVE_EXTCAP
- if (device.if_info.extcap == NULL || strlen(device.if_info.extcap) == 0) {
+ if (device->if_info.extcap == NULL || strlen(device->if_info.extcap) == 0) {
#endif
- if (device.active_dlt >= DLT_USER0 && device.active_dlt <= DLT_USER15) {
+ if (device->active_dlt >= DLT_USER0 && device->active_dlt <= DLT_USER15) {
// Capture filter for DLT_USER is unknown
state = SyntaxLineEdit::Deprecated;
err_str = "Unable to check capture filter";
} else {
- active_dlts.insert(device.active_dlt);
+ active_dlts.insert(device->active_dlt);
}
#ifdef HAVE_EXTCAP
} else {
@@ -146,11 +146,11 @@ void CaptureFilterSyntaxWorker::start() {
// If it's already invalid, don't bother to check extcap
if (state != SyntaxLineEdit::Invalid) {
foreach (guint extcapif, active_extcap.toList()) {
- interface_t device;
+ interface_t *device;
gchar *error = NULL;
- device = g_array_index(global_capture_opts.all_ifaces, interface_t, extcapif);
- extcap_filter_status status = extcap_verify_capture_filter(device.name, filter.toUtf8().constData(), &error);
+ device = &g_array_index(global_capture_opts.all_ifaces, interface_t, extcapif);
+ extcap_filter_status status = extcap_verify_capture_filter(device->name, filter.toUtf8().constData(), &error);
if (status == EXTCAP_FILTER_VALID) {
DEBUG_SYNTAX_CHECK("unknown", "known good");
} else if (status == EXTCAP_FILTER_INVALID) {
diff --git a/ui/qt/capture_interfaces_dialog.cpp b/ui/qt/capture_interfaces_dialog.cpp
index 9938fef49f..72cb2eba6f 100644
--- a/ui/qt/capture_interfaces_dialog.cpp
+++ b/ui/qt/capture_interfaces_dialog.cpp
@@ -247,22 +247,16 @@ void CaptureInterfacesDialog::updateGlobalDeviceSelections()
while (*iter) {
QString device_name = (*iter)->data(col_interface_, Qt::UserRole).value<QString>();
for (guint i = 0; i < global_capture_opts.all_ifaces->len; i++) {
- interface_t device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
- if (device_name.compare(QString().fromUtf8(device.name)) == 0) {
- if (!device.locked) {
+ interface_t *device = &g_array_index(global_capture_opts.all_ifaces, interface_t, i);
+ if (device_name.compare(QString().fromUtf8(device->name)) == 0) {
+ if (!device->locked) {
if ((*iter)->isSelected()) {
- device.selected = TRUE;
+ device->selected = TRUE;
global_capture_opts.num_selected++;
} else {
- device.selected = FALSE;
+ device->selected = FALSE;
}
- device.locked = TRUE;
- global_capture_opts.all_ifaces = g_array_remove_index(global_capture_opts.all_ifaces, i);
- g_array_insert_val(global_capture_opts.all_ifaces, i, device);
-
- device.locked = FALSE;
- global_capture_opts.all_ifaces = g_array_remove_index(global_capture_opts.all_ifaces, i);
- g_array_insert_val(global_capture_opts.all_ifaces, i, device);
+ device->locked = FALSE;
}
break;
}
@@ -284,10 +278,10 @@ void CaptureInterfacesDialog::updateFromGlobalDeviceSelections()
while (*iter) {
QString device_name = (*iter)->data(col_interface_, Qt::UserRole).value<QString>();
for (guint i = 0; i < global_capture_opts.all_ifaces->len; i++) {
- interface_t device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
- if (device_name.compare(QString().fromUtf8(device.name)) == 0) {
- if ((bool)device.selected != (*iter)->isSelected()) {
- (*iter)->setSelected(device.selected);
+ interface_t *device = &g_array_index(global_capture_opts.all_ifaces, interface_t, i);
+ if (device_name.compare(QString().fromUtf8(device->name)) == 0) {
+ if ((bool)device->selected != (*iter)->isSelected()) {
+ (*iter)->setSelected(device->selected);
}
break;
}
diff --git a/ui/qt/capture_preferences_frame.cpp b/ui/qt/capture_preferences_frame.cpp
index 0028902565..24804ed765 100644
--- a/ui/qt/capture_preferences_frame.cpp
+++ b/ui/qt/capture_preferences_frame.cpp
@@ -71,7 +71,7 @@ void CapturePreferencesFrame::showEvent(QShowEvent *)
void CapturePreferencesFrame::updateWidgets()
{
#ifdef HAVE_LIBPCAP
- interface_t device;
+ interface_t *device;
QString default_device_string;
if (prefs_get_string_value(pref_device_, pref_stashed)) {
@@ -87,20 +87,20 @@ void CapturePreferencesFrame::updateWidgets()
wsApp->refreshLocalInterfaces();
}
for (guint i = 0; i < global_capture_opts.all_ifaces->len; i++) {
- device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
+ device = &g_array_index(global_capture_opts.all_ifaces, interface_t, i);
/* Continue if capture device is hidden */
- if (device.hidden) {
+ if (device->hidden) {
continue;
}
- // InterfaceTree matches against device.name when selecting the
+ // InterfaceTree matches against device->name when selecting the
// default interface, so add it here if needed. On Windows this
// means that we show the user a big ugly UUID-laden device path.
- // We might be able to work around that by passing device.name as
+ // We might be able to work around that by passing device->name as
// the userData argument to addItem instead.
- QString item_text = device.display_name;
- if (!item_text.contains(device.name)) {
- item_text.append(QString(" (%1)").arg(device.name));
+ QString item_text = device->display_name;
+ if (!item_text.contains(device->name)) {
+ item_text.append(QString(" (%1)").arg(device->name));
}
ui->defaultInterfaceComboBox->addItem(item_text);
}
diff --git a/ui/qt/compiled_filter_output.cpp b/ui/qt/compiled_filter_output.cpp
index 1d27d5a48d..e709adf80f 100644
--- a/ui/qt/compiled_filter_output.cpp
+++ b/ui/qt/compiled_filter_output.cpp
@@ -84,12 +84,12 @@ void CompiledFilterOutput::compileFilter()
foreach (QString interfaces, intList_) {
for (guint i = 0; i < global_capture_opts.all_ifaces->len; i++) {
- interface_t device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
+ interface_t *device = &g_array_index(global_capture_opts.all_ifaces, interface_t, i);
- if (interfaces.compare(device.display_name)) {
+ if (interfaces.compare(device->display_name)) {
continue;
} else {
- pcap_t *pd = pcap_open_dead(device.active_dlt, WTAP_MAX_PACKET_SIZE_STANDARD);
+ pcap_t *pd = pcap_open_dead(device->active_dlt, WTAP_MAX_PACKET_SIZE_STANDARD);
if (pd == NULL)
break;
g_mutex_lock(pcap_compile_mtx);
diff --git a/ui/qt/extcap_options_dialog.cpp b/ui/qt/extcap_options_dialog.cpp
index 99e9b5743c..c70f5531bb 100644
--- a/ui/qt/extcap_options_dialog.cpp
+++ b/ui/qt/extcap_options_dialog.cpp
@@ -83,7 +83,7 @@ ExtcapOptionsDialog::ExtcapOptionsDialog(QWidget *parent) :
ExtcapOptionsDialog * ExtcapOptionsDialog::createForDevice(QString &dev_name, QWidget *parent)
{
- interface_t device;
+ interface_t *device;
ExtcapOptionsDialog * resultDialog = NULL;
bool dev_found = false;
guint if_idx;
@@ -93,8 +93,8 @@ ExtcapOptionsDialog * ExtcapOptionsDialog::createForDevice(QString &dev_name, QW
for (if_idx = 0; if_idx < global_capture_opts.all_ifaces->len; if_idx++)
{
- device = g_array_index(global_capture_opts.all_ifaces, interface_t, if_idx);
- if (dev_name.compare(QString(device.name)) == 0 && device.if_info.type == IF_EXTCAP)
+ device = &g_array_index(global_capture_opts.all_ifaces, interface_t, if_idx);
+ if (dev_name.compare(QString(device->name)) == 0 && device->if_info.type == IF_EXTCAP)
{
dev_found = true;
break;
@@ -108,7 +108,7 @@ ExtcapOptionsDialog * ExtcapOptionsDialog::createForDevice(QString &dev_name, QW
resultDialog->device_name = QString(dev_name);
resultDialog->device_idx = if_idx;
- resultDialog->setWindowTitle(wsApp->windowTitleString(tr("Interface Options") + ": " + device.display_name));
+ resultDialog->setWindowTitle(wsApp->windowTitleString(tr("Interface Options") + ": " + device->display_name));
resultDialog->updateWidgets();
@@ -316,11 +316,11 @@ void ExtcapOptionsDialog::on_buttonBox_rejected()
void ExtcapOptionsDialog::on_buttonBox_helpRequested()
{
- interface_t device;
+ interface_t *device;
QString interface_help = NULL;
- device = g_array_index(global_capture_opts.all_ifaces, interface_t, device_idx);
- interface_help = QString(extcap_get_help_for_ifname(device.name));
+ device = &g_array_index(global_capture_opts.all_ifaces, interface_t, device_idx);
+ interface_help = QString(extcap_get_help_for_ifname(device->name));
/* The extcap interface didn't provide an help. Let's go with the default */
if (interface_help.isEmpty()) {
wsApp->helpTopicAction(HELP_EXTCAP_OPTIONS_DIALOG);
@@ -343,7 +343,7 @@ void ExtcapOptionsDialog::on_buttonBox_helpRequested()
{
QMessageBox::warning(this, tr("Extcap Help cannot be found"),
QString(tr("The help for the extcap interface %1 cannot be found. Given file: %2"))
- .arg(device.name).arg(help_url.path()),
+ .arg(device->name).arg(help_url.path()),
QMessageBox::Ok);
}
@@ -352,11 +352,9 @@ void ExtcapOptionsDialog::on_buttonBox_helpRequested()
bool ExtcapOptionsDialog::saveOptionToCaptureInfo()
{
GHashTable * ret_args;
- interface_t device;
-
- device = g_array_index(global_capture_opts.all_ifaces, interface_t, device_idx);
- global_capture_opts.all_ifaces = g_array_remove_index(global_capture_opts.all_ifaces, device_idx);
+ interface_t *device;
+ device = &g_array_index(global_capture_opts.all_ifaces, interface_t, device_idx);
ret_args = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
ExtcapArgumentList::const_iterator iter;
@@ -381,12 +379,9 @@ bool ExtcapOptionsDialog::saveOptionToCaptureInfo()
g_hash_table_insert(ret_args, call_string, value_string );
}
- if (device.external_cap_args_settings != NULL)
- g_hash_table_unref(device.external_cap_args_settings);
- device.external_cap_args_settings = ret_args;
-
- g_array_insert_val(global_capture_opts.all_ifaces, device_idx, device);
-
+ if (device->external_cap_args_settings != NULL)
+ g_hash_table_unref(device->external_cap_args_settings);
+ device->external_cap_args_settings = ret_args;
return true;
}
diff --git a/ui/qt/interface_toolbar.cpp b/ui/qt/interface_toolbar.cpp
index ffddf28f50..fed9cb919b 100644
--- a/ui/qt/interface_toolbar.cpp
+++ b/ui/qt/interface_toolbar.cpp
@@ -951,20 +951,20 @@ void InterfaceToolbar::interfaceListChanged()
for (guint i = 0; i < global_capture_opts.all_ifaces->len; i++)
{
- interface_t device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
- if (device.hidden)
+ interface_t *device = &g_array_index(global_capture_opts.all_ifaces, interface_t, i);
+ if (device->hidden)
continue;
- if (interface_.keys().contains(device.name))
+ if (interface_.keys().contains(device->name))
{
- ui->interfacesComboBox->addItem(device.name);
- if (selected_ifname.compare(device.name) == 0)
+ ui->interfacesComboBox->addItem(device->name);
+ if (selected_ifname.compare(device->name) == 0)
{
// Keep selected interface
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
- ui->interfacesComboBox->setCurrentText(device.name);
+ ui->interfacesComboBox->setCurrentText(device->name);
#else
- int new_index = ui->interfacesComboBox->findText(device.name);
+ int new_index = ui->interfacesComboBox->findText(device->name);
if (new_index >= 0)
{
ui->interfacesComboBox->setCurrentIndex(new_index);
diff --git a/ui/qt/main_welcome.cpp b/ui/qt/main_welcome.cpp
index 30c13f656e..3d8fde8cd9 100644
--- a/ui/qt/main_welcome.cpp
+++ b/ui/qt/main_welcome.cpp
@@ -289,26 +289,24 @@ void MainWelcome::appInitialized()
void MainWelcome::captureFilterTextEdited(const QString capture_filter)
{
if (global_capture_opts.num_selected > 0) {
- interface_t device;
+ interface_t *device;
for (guint i = 0; i < global_capture_opts.all_ifaces->len; i++) {
- device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
- if (!device.selected) {
+ device = &g_array_index(global_capture_opts.all_ifaces, interface_t, i);
+ if (!device->selected) {
continue;
}
- // if (device.active_dlt == -1) {
- // simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "The link type of interface %s was not specified.", device.name);
+ // if (device->active_dlt == -1) {
+ // simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "The link type of interface %s was not specified.", device->name);
// continue; /* Programming error: somehow managed to select an "unsupported" entry */
// }
- g_array_remove_index(global_capture_opts.all_ifaces, i);
- g_free(device.cfilter);
+ g_free(device->cfilter);
if (capture_filter.isEmpty()) {
- device.cfilter = NULL;
+ device->cfilter = NULL;
} else {
- device.cfilter = qstring_strdup(capture_filter);
+ device->cfilter = qstring_strdup(capture_filter);
}
- g_array_insert_val(global_capture_opts.all_ifaces, i, device);
- // update_filter_string(device.name, filter_text);
+ // update_filter_string(device->name, filter_text);
}
}
}
diff --git a/ui/qt/manage_interfaces_dialog.cpp b/ui/qt/manage_interfaces_dialog.cpp
index d36d5521a0..5d48bdbe09 100644
--- a/ui/qt/manage_interfaces_dialog.cpp
+++ b/ui/qt/manage_interfaces_dialog.cpp
@@ -458,12 +458,10 @@ void ManageInterfacesDialog::remoteAccepted()
while(*it) {
for (guint i = 0; i < global_capture_opts.all_ifaces->len; i++) {
- interface_t device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
- if ((*it)->text(col_r_host_dev_).compare(device.name))
+ interface_t *device = &g_array_index(global_capture_opts.all_ifaces, interface_t, i);
+ if ((*it)->text(col_r_host_dev_).compare(device->name))
continue;
- device.hidden = ((*it)->checkState(col_r_show_) == Qt::Checked ? false : true);
- global_capture_opts.all_ifaces = g_array_remove_index(global_capture_opts.all_ifaces, i);
- g_array_insert_val(global_capture_opts.all_ifaces, i, device);
+ device->hidden = ((*it)->checkState(col_r_show_) == Qt::Checked ? false : true);
}
++it;
}
@@ -481,11 +479,11 @@ void ManageInterfacesDialog::on_remoteList_itemClicked(QTreeWidgetItem *item, in
}
for (guint i = 0; i < global_capture_opts.all_ifaces->len; i++) {
- interface_t device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
- if (!device.local) {
- if (item->text(col_r_host_dev_).compare(device.name))
+ interface_t *device = &g_array_index(global_capture_opts.all_ifaces, interface_t, i);
+ if (!device->local) {
+ if (item->text(col_r_host_dev_).compare(device->name))
continue;
- device.hidden = (item->checkState(col_r_show_) == Qt::Checked ? false : true);
+ device->hidden = (item->checkState(col_r_show_) == Qt::Checked ? false : true);
}
}
}
@@ -498,8 +496,8 @@ void ManageInterfacesDialog::on_delRemote_clicked()
}
for (guint i = 0; i < global_capture_opts.all_ifaces->len; i++) {
- interface_t device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
- if (item->text(col_r_host_dev_).compare(device.remote_opts.remote_host_opts.remote_host))
+ interface_t *device = &g_array_index(global_capture_opts.all_ifaces, interface_t, i);
+ if (item->text(col_r_host_dev_).compare(device->remote_opts.remote_host_opts.remote_host))
continue;
global_capture_opts.all_ifaces = g_array_remove_index(global_capture_opts.all_ifaces, i);
}
@@ -516,22 +514,22 @@ void ManageInterfacesDialog::on_addRemote_clicked()
void ManageInterfacesDialog::showRemoteInterfaces()
{
guint i;
- interface_t device;
+ interface_t *device;
QTreeWidgetItem *item = NULL;
// We assume that remote interfaces are grouped by host.
for (i = 0; i < global_capture_opts.all_ifaces->len; i++) {
QTreeWidgetItem *child;
- device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
- if (!device.local) {
- if (!item || item->text(col_r_host_dev_).compare(device.remote_opts.remote_host_opts.remote_host) != 0) {
+ device = &g_array_index(global_capture_opts.all_ifaces, interface_t, i);
+ if (!device->local) {
+ if (!item || item->text(col_r_host_dev_).compare(device->remote_opts.remote_host_opts.remote_host) != 0) {
item = new QTreeWidgetItem(ui->remoteList);
- item->setText(col_r_host_dev_, device.remote_opts.remote_host_opts.remote_host);
+ item->setText(col_r_host_dev_, device->remote_opts.remote_host_opts.remote_host);
item->setExpanded(true);
}
child = new QTreeWidgetItem(item);
- child->setCheckState(col_r_show_, device.hidden ? Qt::Unchecked : Qt::Checked);
- child->setText(col_r_host_dev_, QString(device.name));
+ child->setCheckState(col_r_show_, device->hidden ? Qt::Unchecked : Qt::Checked);
+ child->setText(col_r_host_dev_, QString(device->name));
}
}
}
@@ -539,19 +537,19 @@ void ManageInterfacesDialog::showRemoteInterfaces()
void ManageInterfacesDialog::on_remoteSettings_clicked()
{
guint i = 0;
- interface_t device;
+ interface_t *device;
QTreeWidgetItem* item = ui->remoteList->currentItem();
if (!item) {
return;
}
for (i = 0; i < global_capture_opts.all_ifaces->len; i++) {
- device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
- if (!device.local) {
- if (item->text(col_r_host_dev_).compare(device.name)) {
+ device = &g_array_index(global_capture_opts.all_ifaces, interface_t, i);
+ if (!device->local) {
+ if (item->text(col_r_host_dev_).compare(device->name)) {
continue;
} else {
- RemoteSettingsDialog *dlg = new RemoteSettingsDialog(this, &device);
+ RemoteSettingsDialog *dlg = new RemoteSettingsDialog(this, device);
dlg->show();
break;
}
@@ -562,19 +560,17 @@ void ManageInterfacesDialog::on_remoteSettings_clicked()
void ManageInterfacesDialog::setRemoteSettings(interface_t *iface)
{
for (guint i = 0; i < global_capture_opts.all_ifaces->len; i++) {
- interface_t device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
- if (!device.local) {
- if (strcmp(iface->name, device.name)) {
+ interface_t *device = &g_array_index(global_capture_opts.all_ifaces, interface_t, i);
+ if (!device->local) {
+ if (strcmp(iface->name, device->name)) {
continue;
}
- device.remote_opts.remote_host_opts.nocap_rpcap = iface->remote_opts.remote_host_opts.nocap_rpcap;
- device.remote_opts.remote_host_opts.datatx_udp = iface->remote_opts.remote_host_opts.datatx_udp;
+ device->remote_opts.remote_host_opts.nocap_rpcap = iface->remote_opts.remote_host_opts.nocap_rpcap;
+ device->remote_opts.remote_host_opts.datatx_udp = iface->remote_opts.remote_host_opts.datatx_udp;
#ifdef HAVE_PCAP_SETSAMPLING
- device.remote_opts.sampling_method = iface->remote_opts.sampling_method;
- device.remote_opts.sampling_param = iface->remote_opts.sampling_param;
+ device->remote_opts.sampling_method = iface->remote_opts.sampling_method;
+ device->remote_opts.sampling_param = iface->remote_opts.sampling_param;
#endif //HAVE_PCAP_SETSAMPLING
- global_capture_opts.all_ifaces = g_array_remove_index(global_capture_opts.all_ifaces, i);
- g_array_insert_val(global_capture_opts.all_ifaces, i, device);
}
}
}
diff --git a/ui/qt/models/interface_tree_cache_model.cpp b/ui/qt/models/interface_tree_cache_model.cpp
index 0937dbcde6..3c1a6aa7d8 100644
--- a/ui/qt/models/interface_tree_cache_model.cpp
+++ b/ui/qt/models/interface_tree_cache_model.cpp
@@ -160,9 +160,9 @@ void InterfaceTreeCacheModel::save()
for(unsigned int idx = 0; idx < global_capture_opts.all_ifaces->len; idx++)
{
- interface_t device = g_array_index(global_capture_opts.all_ifaces, interface_t, idx);
+ interface_t *device = &g_array_index(global_capture_opts.all_ifaces, interface_t, idx);
- if (! device.name )
+ if (! device->name )
continue;
/* Try to load a saved value row for this index */
@@ -184,10 +184,10 @@ void InterfaceTreeCacheModel::save()
if ( col == IFTREE_COL_HIDDEN )
{
- device.hidden = saveValue.toBool();
+ device->hidden = saveValue.toBool();
}
#ifdef HAVE_EXTCAP
- else if ( device.if_info.type == IF_EXTCAP )
+ else if ( device->if_info.type == IF_EXTCAP )
{
/* extcap interfaces do not have the following columns.
* ATTENTION: all generic columns must be added, BEFORE this
@@ -196,12 +196,12 @@ void InterfaceTreeCacheModel::save()
#endif
else if ( col == IFTREE_COL_PROMISCUOUSMODE )
{
- device.pmode = saveValue.toBool();
+ device->pmode = saveValue.toBool();
}
#ifdef HAVE_PCAP_CREATE
else if ( col == IFTREE_COL_MONITOR_MODE )
{
- device.monitor_mode_enabled = saveValue.toBool();
+ device->monitor_mode_enabled = saveValue.toBool();
}
#endif
else if ( col == IFTREE_COL_SNAPLEN )
@@ -209,40 +209,36 @@ void InterfaceTreeCacheModel::save()
int iVal = saveValue.toInt();
if ( iVal != WTAP_MAX_PACKET_SIZE_STANDARD )
{
- device.has_snaplen = true;
- device.snaplen = iVal;
+ device->has_snaplen = true;
+ device->snaplen = iVal;
}
else
{
- device.has_snaplen = false;
- device.snaplen = WTAP_MAX_PACKET_SIZE_STANDARD;
+ device->has_snaplen = false;
+ device->snaplen = WTAP_MAX_PACKET_SIZE_STANDARD;
}
}
#ifdef CAN_SET_CAPTURE_BUFFER_SIZE
else if ( col == IFTREE_COL_BUFFERLEN )
{
- device.buffer = saveValue.toInt();
+ device->buffer = saveValue.toInt();
}
#endif
-
- global_capture_opts.all_ifaces = g_array_remove_index(global_capture_opts.all_ifaces, idx);
- g_array_insert_val(global_capture_opts.all_ifaces, idx, device);
-
++it;
}
}
QVariant content = getColumnContent(idx, IFTREE_COL_HIDDEN, Qt::CheckStateRole);
if ( content.isValid() && static_cast<Qt::CheckState>(content.toInt()) == Qt::Unchecked )
- prefStorage[&prefs.capture_devices_hide] << QString(device.name);
+ prefStorage[&prefs.capture_devices_hide] << QString(device->name);
content = getColumnContent(idx, IFTREE_COL_INTERFACE_COMMENT);
if ( content.isValid() && content.toString().size() > 0 )
- prefStorage[&prefs.capture_devices_descr] << QString("%1(%2)").arg(device.name).arg(content.toString());
+ prefStorage[&prefs.capture_devices_descr] << QString("%1(%2)").arg(device->name).arg(content.toString());
bool allowExtendedColumns = true;
#ifdef HAVE_EXTCAP
- if ( device.if_info.type == IF_EXTCAP )
+ if ( device->if_info.type == IF_EXTCAP )
allowExtendedColumns = false;
#endif
if ( allowExtendedColumns )
@@ -251,13 +247,13 @@ void InterfaceTreeCacheModel::save()
if ( content.isValid() )
{
bool value = static_cast<Qt::CheckState>(content.toInt()) == Qt::Checked;
- prefStorage[&prefs.capture_devices_pmode] << QString("%1(%2)").arg(device.name).arg(value ? 1 : 0);
+ prefStorage[&prefs.capture_devices_pmode] << QString("%1(%2)").arg(device->name).arg(value ? 1 : 0);
}
#ifdef HAVE_PCAP_CREATE
content = getColumnContent(idx, IFTREE_COL_MONITOR_MODE, Qt::CheckStateRole);
if ( content.isValid() && static_cast<Qt::CheckState>(content.toInt()) == Qt::Checked )
- prefStorage[&prefs.capture_devices_monitor_mode] << QString(device.name);
+ prefStorage[&prefs.capture_devices_monitor_mode] << QString(device->name);
#endif
content = getColumnContent(idx, IFTREE_COL_SNAPLEN);
@@ -265,9 +261,9 @@ void InterfaceTreeCacheModel::save()
{
int value = content.toInt();
prefStorage[&prefs.capture_devices_snaplen] <<
- QString("%1:%2(%3)").arg(device.name).
- arg(device.has_snaplen ? 1 : 0).
- arg(device.has_snaplen ? value : WTAP_MAX_PACKET_SIZE_STANDARD);
+ QString("%1:%2(%3)").arg(device->name).
+ arg(device->has_snaplen ? 1 : 0).
+ arg(device->has_snaplen ? value : WTAP_MAX_PACKET_SIZE_STANDARD);
}
#ifdef CAN_SET_CAPTURE_BUFFER_SIZE
@@ -278,7 +274,7 @@ void InterfaceTreeCacheModel::save()
if ( value != -1 )
{
prefStorage[&prefs.capture_devices_buffersize] <<
- QString("%1(%2)").arg(device.name).
+ QString("%1(%2)").arg(device->name).
arg(value);
}
}
diff --git a/ui/qt/models/interface_tree_model.cpp b/ui/qt/models/interface_tree_model.cpp
index 7acda1340e..0f8cd29a1c 100644
--- a/ui/qt/models/interface_tree_model.cpp
+++ b/ui/qt/models/interface_tree_model.cpp
@@ -121,7 +121,7 @@ QVariant InterfaceTreeModel::data(const QModelIndex &index, int role) const
if ( interfacesLoaded )
{
- interface_t device = g_array_index(global_capture_opts.all_ifaces, interface_t, row);
+ interface_t *device = &g_array_index(global_capture_opts.all_ifaces, interface_t, row);
/* Data for display in cell */
if ( role == Qt::DisplayRole )
@@ -129,55 +129,55 @@ QVariant InterfaceTreeModel::data(const QModelIndex &index, int role) const
/* Only the name is being displayed */
if ( col == IFTREE_COL_NAME )
{
- return QString(device.display_name);
+ return QString(device->display_name);
}
else if ( col == IFTREE_COL_INTERFACE_NAME )
{
- return QString(device.name);
+ return QString(device->name);
}
else if ( col == IFTREE_COL_PIPE_PATH )
{
- return QString(device.if_info.name);
+ return QString(device->if_info.name);
}
else if ( col == IFTREE_COL_CAPTURE_FILTER )
{
- if ( device.cfilter && strlen(device.cfilter) > 0 )
- return html_escape(QString(device.cfilter));
+ if ( device->cfilter && strlen(device->cfilter) > 0 )
+ return html_escape(QString(device->cfilter));
}
#ifdef HAVE_EXTCAP
else if ( col == IFTREE_COL_EXTCAP_PATH )
{
- return QString(device.if_info.extcap);
+ return QString(device->if_info.extcap);
}
#endif
else if ( col == IFTREE_COL_SNAPLEN )
{
- return device.has_snaplen ? QString::number(device.snaplen) : DefaultNumericValue;
+ return device->has_snaplen ? QString::number(device->snaplen) : DefaultNumericValue;
}
#ifdef CAN_SET_CAPTURE_BUFFER_SIZE
else if ( col == IFTREE_COL_BUFFERLEN )
{
- return QString::number(device.buffer);
+ return QString::number(device->buffer);
}
#endif
else if ( col == IFTREE_COL_TYPE )
{
- return QVariant::fromValue((int)device.if_info.type);
+ return QVariant::fromValue((int)device->if_info.type);
}
else if ( col == IFTREE_COL_INTERFACE_COMMENT )
{
- QString comment = gchar_free_to_qstring(capture_dev_user_descr_find(device.name));
+ QString comment = gchar_free_to_qstring(capture_dev_user_descr_find(device->name));
if ( comment.length() > 0 )
return comment;
else
- return QString(device.if_info.vendor_description);
+ return QString(device->if_info.vendor_description);
}
else if ( col == IFTREE_COL_DLT )
{
- QString linkname = QObject::tr("DLT %1").arg(device.active_dlt);
- for (GList *list = device.links; list != NULL; list = g_list_next(list)) {
+ QString linkname = QObject::tr("DLT %1").arg(device->active_dlt);
+ for (GList *list = device->links; list != NULL; list = g_list_next(list)) {
link_row *linkr = (link_row*)(list->data);
- if (linkr->dlt != -1 && linkr->dlt == device.active_dlt) {
+ if (linkr->dlt != -1 && linkr->dlt == device->active_dlt) {
linkname = linkr->name;
break;
}
@@ -196,16 +196,16 @@ QVariant InterfaceTreeModel::data(const QModelIndex &index, int role) const
if ( col == IFTREE_COL_HIDDEN )
{
/* Hidden is a de-selection, therefore inverted logic here */
- return device.hidden ? Qt::Unchecked : Qt::Checked;
+ return device->hidden ? Qt::Unchecked : Qt::Checked;
}
else if ( col == IFTREE_COL_PROMISCUOUSMODE )
{
- return device.pmode ? Qt::Checked : Qt::Unchecked;
+ return device->pmode ? Qt::Checked : Qt::Unchecked;
}
#ifdef HAVE_PCAP_CREATE
else if ( col == IFTREE_COL_MONITOR_MODE )
{
- return device.monitor_mode_enabled ? Qt::Checked : Qt::Unchecked;
+ return device->monitor_mode_enabled ? Qt::Checked : Qt::Unchecked;
}
#endif
}
@@ -214,12 +214,12 @@ QVariant InterfaceTreeModel::data(const QModelIndex &index, int role) const
{
if ( col == IFTREE_COL_STATS )
{
- if ( points.contains(device.name) )
- return qVariantFromValue(points[device.name]);
+ if ( points.contains(device->name) )
+ return qVariantFromValue(points[device->name]);
}
else if ( col == IFTREE_COL_HIDDEN )
{
- return QVariant::fromValue((bool)device.hidden);
+ return QVariant::fromValue((bool)device->hidden);
}
}
#ifdef HAVE_EXTCAP
@@ -228,7 +228,7 @@ QVariant InterfaceTreeModel::data(const QModelIndex &index, int role) const
{
if ( col == IFTREE_COL_EXTCAP )
{
- if ( device.if_info.type == IF_EXTCAP )
+ if ( device->if_info.type == IF_EXTCAP )
return QIcon(StockIcon("x-capture-options"));
}
}
@@ -322,8 +322,8 @@ QVariant InterfaceTreeModel::getColumnContent(int idx, int col, int role)
#ifdef HAVE_PCAP_REMOTE
bool InterfaceTreeModel::isRemote(int idx)
{
- interface_t device = g_array_index(global_capture_opts.all_ifaces, interface_t, idx);
- if ( device.remote_opts.src_type == CAPTURE_IFREMOTE )
+ interface_t *device = &g_array_index(global_capture_opts.all_ifaces, interface_t, idx);
+ if ( device->remote_opts.src_type == CAPTURE_IFREMOTE )
return true;
return false;
}
@@ -352,20 +352,20 @@ QVariant InterfaceTreeModel::toolTipForInterface(int idx) const
if ( ! global_capture_opts.all_ifaces || global_capture_opts.all_ifaces->len <= (guint) idx)
return QVariant();
- interface_t device = g_array_index(global_capture_opts.all_ifaces, interface_t, idx);
+ interface_t *device = &g_array_index(global_capture_opts.all_ifaces, interface_t, idx);
QString tt_str = "<p>";
- if ( device.no_addresses > 0 )
+ if ( device->no_addresses > 0 )
{
tt_str += QString("%1: %2")
- .arg(device.no_addresses > 1 ? tr("Addresses") : tr("Address"))
- .arg(html_escape(device.addresses))
+ .arg(device->no_addresses > 1 ? tr("Addresses") : tr("Address"))
+ .arg(html_escape(device->addresses))
.replace('\n', ", ");
}
#ifdef HAVE_EXTCAP
- else if ( device.if_info.type == IF_EXTCAP )
+ else if ( device->if_info.type == IF_EXTCAP )
{
- tt_str = QString(tr("Extcap interface: %1")).arg(get_basename(device.if_info.extcap));
+ tt_str = QString(tr("Extcap interface: %1")).arg(get_basename(device->if_info.extcap));
}
#endif
else
@@ -374,7 +374,7 @@ QVariant InterfaceTreeModel::toolTipForInterface(int idx) const
}
tt_str += "<br/>";
- QString cfilter = device.cfilter;
+ QString cfilter = device->cfilter;
if ( cfilter.isEmpty() )
{
tt_str += tr("No capture filter");
@@ -413,9 +413,9 @@ void InterfaceTreeModel::updateStatistic(unsigned int idx)
if ( ! global_capture_opts.all_ifaces || global_capture_opts.all_ifaces->len <= (guint) idx )
return;
- interface_t device = g_array_index(global_capture_opts.all_ifaces, interface_t, idx);
+ interface_t *device = &g_array_index(global_capture_opts.all_ifaces, interface_t, idx);
- if ( device.if_info.type == IF_PIPE )
+ if ( device->if_info.type == IF_PIPE )
return;
if ( !stat_cache_ )
@@ -430,20 +430,17 @@ void InterfaceTreeModel::updateStatistic(unsigned int idx)
struct pcap_stat stats;
diff = 0;
- if ( capture_stats(stat_cache_, device.name, &stats) )
+ if ( capture_stats(stat_cache_, device->name, &stats) )
{
- if ( (int)(stats.ps_recv - device.last_packets) >= 0 )
+ if ( (int)(stats.ps_recv - device->last_packets) >= 0 )
{
- diff = stats.ps_recv - device.last_packets;
- device.packet_diff = diff;
+ diff = stats.ps_recv - device->last_packets;
+ device->packet_diff = diff;
}
- device.last_packets = stats.ps_recv;
-
- global_capture_opts.all_ifaces = g_array_remove_index(global_capture_opts.all_ifaces, idx);
- g_array_insert_val(global_capture_opts.all_ifaces, idx, device);
+ device->last_packets = stats.ps_recv;
}
- points[device.name].append(diff);
+ points[device->name].append(diff);
emit dataChanged(index(idx, IFTREE_COL_STATS), index(idx, IFTREE_COL_STATS));
#else
Q_UNUSED(idx)
@@ -456,9 +453,9 @@ void InterfaceTreeModel::getPoints(int idx, PointList *pts)
if ( ! global_capture_opts.all_ifaces || global_capture_opts.all_ifaces->len <= (guint) idx )
return;
- interface_t device = g_array_index(global_capture_opts.all_ifaces, interface_t, idx);
- if ( points.contains(device.name) )
- pts->append(points[device.name]);
+ interface_t *device = &g_array_index(global_capture_opts.all_ifaces, interface_t, idx);
+ if ( points.contains(device->name) )
+ pts->append(points[device->name]);
#else
Q_UNUSED(idx)
Q_UNUSED(pts)
@@ -471,9 +468,9 @@ QItemSelection InterfaceTreeModel::selectedDevices()
#ifdef HAVE_LIBPCAP
for( int idx = 0; idx < rowCount(); idx++ )
{
- interface_t device = g_array_index(global_capture_opts.all_ifaces, interface_t, idx);
+ interface_t *device = &g_array_index(global_capture_opts.all_ifaces, interface_t, idx);
- if ( device.selected )
+ if ( device->selected )
{
QModelIndex selectIndex = index(idx, 0);
mySelection.merge(
@@ -514,27 +511,21 @@ bool InterfaceTreeModel::updateSelectedDevices(QItemSelection sourceSelection)
for ( unsigned int idx = 0; idx < global_capture_opts.all_ifaces->len; idx++ )
{
- interface_t device = g_array_index(global_capture_opts.all_ifaces, interface_t, idx);
- if ( !device.locked )
+ interface_t *device = &g_array_index(global_capture_opts.all_ifaces, interface_t, idx);
+ if ( !device->locked )
{
if ( selectedIndices.contains(idx) )
{
- if (! device.selected )
+ if (! device->selected )
selectionHasChanged = true;
- device.selected = TRUE;
+ device->selected = TRUE;
global_capture_opts.num_selected++;
} else {
- if ( device.selected )
+ if ( device->selected )
selectionHasChanged = true;
- device.selected = FALSE;
+ device->selected = FALSE;
}
- device.locked = TRUE;
- global_capture_opts.all_ifaces = g_array_remove_index(global_capture_opts.all_ifaces, idx);
- g_array_insert_val(global_capture_opts.all_ifaces, idx, device);
-
- device.locked = FALSE;
- global_capture_opts.all_ifaces = g_array_remove_index(global_capture_opts.all_ifaces, idx);
- g_array_insert_val(global_capture_opts.all_ifaces, idx, device);
+ device->locked = FALSE;
}
}
#else
diff --git a/ui/qt/widgets/capture_filter_edit.cpp b/ui/qt/widgets/capture_filter_edit.cpp
index a771e38809..78f60def27 100644
--- a/ui/qt/widgets/capture_filter_edit.cpp
+++ b/ui/qt/widgets/capture_filter_edit.cpp
@@ -256,13 +256,13 @@ QPair<const QString, bool> CaptureFilterEdit::getSelectedFilter()
int selected_devices = 0;
for (guint i = 0; i < global_capture_opts.all_ifaces->len; i++) {
- interface_t device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
- if (device.selected) {
+ interface_t *device = &g_array_index(global_capture_opts.all_ifaces, interface_t, i);
+ if (device->selected) {
selected_devices++;
if (selected_devices == 1) {
- user_filter = device.cfilter;
+ user_filter = device->cfilter;
} else {
- if (user_filter.compare(device.cfilter)) {
+ if (user_filter.compare(device->cfilter)) {
filter_conflict = true;
}
}
diff --git a/ui/qt/wireshark_application.cpp b/ui/qt/wireshark_application.cpp
index e0fb241143..d6d46f38d5 100644
--- a/ui/qt/wireshark_application.cpp
+++ b/ui/qt/wireshark_application.cpp
@@ -1026,12 +1026,12 @@ iface_mon_event_cb(const char *iface, int up)
{
int present = 0;
guint ifs, j;
- interface_t device;
+ interface_t *device;
interface_options interface_opts;
for (ifs = 0; ifs < global_capture_opts.all_ifaces->len; ifs++) {
- device = g_array_index(global_capture_opts.all_ifaces, interface_t, ifs);
- if (strcmp(device.name, iface) == 0) {
+ device = &g_array_index(global_capture_opts.all_ifaces, interface_t, ifs);
+ if (strcmp(device->name, iface) == 0) {
present = 1;
if (!up) {
/*
@@ -1041,7 +1041,7 @@ iface_mon_event_cb(const char *iface, int up)
*/
for (j = 0; j < global_capture_opts.ifaces->len; j++) {
interface_opts = g_array_index(global_capture_opts.ifaces, interface_options, j);
- if (strcmp(interface_opts.name, device.name) == 0) {
+ if (strcmp(interface_opts.name, device->name) == 0) {
g_array_remove_index(global_capture_opts.ifaces, j);
}
}
diff --git a/wireshark-qt.cpp b/wireshark-qt.cpp
index 19687f65b5..40edbea0a5 100644
--- a/wireshark-qt.cpp
+++ b/wireshark-qt.cpp
@@ -737,15 +737,15 @@ int main(int argc, char *qt_argv[])
/* Get the list of link-layer types for the capture devices. */
if_capabilities_t *caps;
guint i;
- interface_t device;
+ interface_t *device;
for (i = 0; i < global_capture_opts.all_ifaces->len; i++) {
int if_caps_queries = caps_queries;
- device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
- if (device.selected) {
+ device = &g_array_index(global_capture_opts.all_ifaces, interface_t, i);
+ if (device->selected) {
#if defined(HAVE_PCAP_CREATE)
- caps = capture_get_if_capabilities(device.name, device.monitor_mode_supported, NULL, &err_str, main_window_update);
+ caps = capture_get_if_capabilities(device->name, device->monitor_mode_supported, NULL, &err_str, main_window_update);
#else
- caps = capture_get_if_capabilities(device.name, FALSE, NULL, &err_str,main_window_update);
+ caps = capture_get_if_capabilities(device->name, FALSE, NULL, &err_str,main_window_update);
#endif
if (caps == NULL) {
cmdarg_err("%s", err_str);
@@ -754,7 +754,7 @@ int main(int argc, char *qt_argv[])
goto clean_exit;
}
if (caps->data_link_types == NULL) {
- cmdarg_err("The capture device \"%s\" has no data link types.", device.name);
+ cmdarg_err("The capture device \"%s\" has no data link types.", device->name);
ret_val = INVALID_LINK_TYPE;
goto clean_exit;
}
@@ -762,10 +762,10 @@ int main(int argc, char *qt_argv[])
create_console();
#endif /* _WIN32 */
#if defined(HAVE_PCAP_CREATE)
- if (device.monitor_mode_supported)
+ if (device->monitor_mode_supported)
if_caps_queries |= CAPS_MONITOR_MODE;
#endif
- capture_opts_print_if_capabilities(caps, device.name, if_caps_queries);
+ capture_opts_print_if_capabilities(caps, device->name, if_caps_queries);
#ifdef _WIN32
destroy_console();
#endif /* _WIN32 */
@@ -794,14 +794,12 @@ int main(int argc, char *qt_argv[])
if ((global_capture_opts.num_selected == 0) &&
(prefs.capture_device != NULL)) {
guint i;
- interface_t device;
+ interface_t *device;
for (i = 0; i < global_capture_opts.all_ifaces->len; i++) {
- device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
- if (!device.hidden && strcmp(device.display_name, prefs.capture_device) == 0) {
- device.selected = TRUE;
+ device = &g_array_index(global_capture_opts.all_ifaces, interface_t, i);
+ if (!device->hidden && strcmp(device->display_name, prefs.capture_device) == 0) {
+ device->selected = TRUE;
global_capture_opts.num_selected++;
- global_capture_opts.all_ifaces = g_array_remove_index(global_capture_opts.all_ifaces, i);
- g_array_insert_val(global_capture_opts.all_ifaces, i, device);
break;
}
}