forked from osmocom/wireshark
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>
This commit is contained in:
parent
76c231bd68
commit
8873c7e494
|
@ -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 {
|
||||
|
|
16
summary.c
16
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);
|
||||
}
|
||||
}
|
||||
|
|
10
ui/capture.c
10
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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue