diff options
author | John Thacker <johnthacker@gmail.com> | 2024-01-13 07:38:26 -0500 |
---|---|---|
committer | AndersBroman <a.broman58@gmail.com> | 2024-01-15 09:23:34 +0000 |
commit | b5c839815e3a2cb8d83ea2fb1a861301b4dc8848 (patch) | |
tree | 1147b65ee96f276532d443c8a86072933ca84bd7 | |
parent | eeb818f5e758bf4abc78c0ce488291f6172e9417 (diff) |
Remove duplicative members from interface_t
interface_t contains an if_info_t as its member. It
doesn't need to copy the friendly name, vendor description,
and type from the if_info_t into separate members. The vast
majority of the time, we're already using the member from
the embedded if_info_t, but change a couple of cases.
The display name is a unique transformation of the name, friendly
name (OS name), and vendor description (hardware name) that depends
somewhat on the OS, so that needsto be seprate. The addresses and
links are also transformed from the if_info format. The name is
copied as well, but at least that's the primary key for the interface.
-rw-r--r-- | capture_opts.c | 6 | ||||
-rw-r--r-- | capture_opts.h | 3 | ||||
-rw-r--r-- | ui/capture.c | 2 | ||||
-rw-r--r-- | ui/iface_lists.c | 21 | ||||
-rw-r--r-- | ui/qt/capture_options_dialog.cpp | 4 | ||||
-rw-r--r-- | ui/qt/models/interface_tree_model.cpp | 2 |
6 files changed, 12 insertions, 26 deletions
diff --git a/capture_opts.c b/capture_opts.c index e3906cbe50..b9f5c4bfe9 100644 --- a/capture_opts.c +++ b/capture_opts.c @@ -1475,9 +1475,9 @@ collect_ifaces(capture_options *capture_opts) device = &g_array_index(capture_opts->all_ifaces, interface_t, i); if (device->selected) { interface_opts.name = g_strdup(device->name); - interface_opts.descr = g_strdup(device->friendly_name); + interface_opts.descr = g_strdup(device->if_info.friendly_name); interface_opts.ifname = NULL; - interface_opts.hardware = g_strdup(device->vendor_description); + interface_opts.hardware = g_strdup(device->if_info.vendor_description); interface_opts.display_name = g_strdup(device->display_name); interface_opts.linktype = device->active_dlt; interface_opts.cfilter = g_strdup(device->cfilter); @@ -1545,8 +1545,6 @@ capture_opts_free_interface_t(interface_t *device) if (device != NULL) { g_free(device->name); g_free(device->display_name); - g_free(device->vendor_description); - g_free(device->friendly_name); g_free(device->addresses); g_free(device->cfilter); g_free(device->timestamp_type); diff --git a/capture_opts.h b/capture_opts.h index 5e39cac474..c0a73d8e34 100644 --- a/capture_opts.h +++ b/capture_opts.h @@ -159,9 +159,6 @@ typedef struct remote_options_tag { typedef struct interface_tag { gchar *name; gchar *display_name; - gchar *friendly_name; - gchar *vendor_description; - guint type; gchar *addresses; gint no_addresses; gchar *cfilter; diff --git a/ui/capture.c b/ui/capture.c index de3d200eb9..c31b5e0c09 100644 --- a/ui/capture.c +++ b/ui/capture.c @@ -902,7 +902,7 @@ 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->type != IF_EXTCAP) { + if (device->if_info.type != IF_PIPE && device->if_info.type != IF_EXTCAP) { sc_item = g_new0(if_stat_cache_item_t, 1); ws_assert(device->if_info.name); sc_item->name = g_strdup(device->if_info.name); diff --git a/ui/iface_lists.c b/ui/iface_lists.c index adf74312f9..711c52f921 100644 --- a/ui/iface_lists.c +++ b/ui/iface_lists.c @@ -215,7 +215,7 @@ scan_local_interfaces_filtered(GList * allowed_types, void (*update_cb)(void)) if (global_capture_opts.all_ifaces->len > 0) { for (i = (int)global_capture_opts.all_ifaces->len-1; i >= 0; i--) { device = g_array_index(global_capture_opts.all_ifaces, interface_t, i); - if (device.local && device.type != IF_PIPE && device.type != IF_STDIN) { + if (device.local && device.if_info.type != IF_PIPE && device.if_info.type != IF_STDIN) { found = FALSE; for (if_entry = if_list; if_entry != NULL; if_entry = g_list_next(if_entry)) { @@ -337,16 +337,12 @@ scan_local_interfaces_filtered(GList * allowed_types, void (*update_cb)(void)) * your previously chosen link-layer type isn't supported then * your capture filter might not be either, which will result in * it being marked invalid instead of being cleared. */ - /* XXX: Why do we have both a copy of the if_info and also - * some members that are direct copies of if_info members, - * e.g. name, friendly name, and vendor description? - * At least the addresses and links are transformed into new + /* XXX: We have duplicate copies of the name and we have + * the addresses and links from the if_info transformed into new * types, but perhaps that transformation should be done when * creating the if_info and if_capabilities. */ g_free(device.display_name); - g_free(device.friendly_name); - g_free(device.vendor_description); g_free(device.addresses); g_list_free_full(device.links, capture_opts_free_link_row); g_free(device.if_info.name); @@ -360,13 +356,9 @@ scan_local_interfaces_filtered(GList * allowed_types, void (*update_cb)(void)) monitor_mode = device.monitor_mode_enabled; } - device.friendly_name = g_strdup(if_info->friendly_name); - device.vendor_description = g_strdup(if_info->vendor_description); - descr = capture_dev_user_descr_find(if_info->name); device.display_name = get_iface_display_name(descr, if_info); g_free(descr); - device.type = if_info->type; ip_str = g_string_new(""); for (; (curr_addr = g_slist_nth(if_info->addrs, ips)) != NULL; ips++) { if (ips != 0) { @@ -501,13 +493,11 @@ scan_local_interfaces_filtered(GList * allowed_types, void (*update_cb)(void)) if (!found) { /* new interface, maybe a pipe */ memset(&device, 0, sizeof(device)); device.name = g_strdup(interface_opts->name); - device.vendor_description = g_strdup(interface_opts->hardware); device.display_name = interface_opts->descr ? ws_strdup_printf("%s: %s", device.name, interface_opts->descr) : g_strdup(device.name); device.hidden = FALSE; device.selected = TRUE; - device.type = interface_opts->if_type; #ifdef CAN_SET_CAPTURE_BUFFER_SIZE device.buffer = interface_opts->buffer_size; #endif @@ -527,8 +517,9 @@ scan_local_interfaces_filtered(GList * allowed_types, void (*update_cb)(void)) device.links = NULL; device.local = TRUE; device.if_info.name = g_strdup(interface_opts->name); + device.if_info.type = interface_opts->if_type; device.if_info.friendly_name = NULL; - device.if_info.vendor_description = g_strdup(interface_opts->descr); + device.if_info.vendor_description = g_strdup(interface_opts->hardware); device.if_info.addrs = NULL; device.if_info.loopback = FALSE; device.if_info.extcap = g_strdup(interface_opts->extcap); @@ -622,7 +613,7 @@ update_local_interfaces(void) 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); + device->if_info.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); diff --git a/ui/qt/capture_options_dialog.cpp b/ui/qt/capture_options_dialog.cpp index 24b35d6cbc..78a4f90d21 100644 --- a/ui/qt/capture_options_dialog.cpp +++ b/ui/qt/capture_options_dialog.cpp @@ -97,7 +97,7 @@ static interface_t *find_device_by_if_name(const QString &interface_name) 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); - if (!interface_name.compare(device->display_name) && !device->hidden && device->type != IF_PIPE) { + if (!interface_name.compare(device->display_name) && !device->hidden && device->if_info.type != IF_PIPE) { return device; } } @@ -942,7 +942,7 @@ void CaptureOptionsDialog::updateStatistics(void) } device = &g_array_index(global_capture_opts.all_ifaces, interface_t, if_idx); QString device_name = ti->text(col_interface_); - if (device_name.compare(device->display_name) || device->hidden || device->type == IF_PIPE) { + if (device_name.compare(device->display_name) || device->hidden || device->if_info.type == IF_PIPE) { continue; } QList<int> points = ti->data(col_traffic_, Qt::UserRole).value<QList<int> >(); diff --git a/ui/qt/models/interface_tree_model.cpp b/ui/qt/models/interface_tree_model.cpp index e86e9370ab..f3c8f98be5 100644 --- a/ui/qt/models/interface_tree_model.cpp +++ b/ui/qt/models/interface_tree_model.cpp @@ -136,7 +136,7 @@ QVariant InterfaceTreeModel::data(const QModelIndex &index, int role) const } else if (col == IFTREE_COL_DESCRIPTION) { - return QString(device->friendly_name); + return QString(device->if_info.friendly_name); } else if (col == IFTREE_COL_DISPLAY_NAME) { |