diff --git a/summary.c b/summary.c index 3f6af4539c..9433fe8b0c 100644 --- a/summary.c +++ b/summary.c @@ -107,10 +107,14 @@ tally_frame_data(frame_data *cur_frame, summary_tally *sum_tally) void summary_fill_in(capture_file *cf, summary_tally *st) { - frame_data *first_frame, *cur_frame; guint32 framenum; wtapng_section_t* shb_inf; + iface_options iface; + guint i; + wtapng_iface_descriptions_t* idb_info; + wtapng_if_descr_t wtapng_if_descr; + wtapng_if_stats_t *if_stats; st->packet_count_ts = 0; st->start_time = 0; @@ -170,27 +174,39 @@ summary_fill_in(capture_file *cf, summary_tally *st) } st->ifaces = g_array_new(FALSE, FALSE, sizeof(iface_options)); + idb_info = wtap_file_get_idb_info(cf->wth); + for (i = 0; i < idb_info->number_of_interfaces; i++) { + wtapng_if_descr = g_array_index(idb_info->interface_data, wtapng_if_descr_t, i); + iface.cfilter = g_strdup(wtapng_if_descr.if_filter_str); + iface.name = g_strdup(wtapng_if_descr.if_name); + iface.descr = g_strdup(wtapng_if_descr.if_description); + iface.drops_known = FALSE; + iface.drops = 0; + iface.snap = wtapng_if_descr.snap_len; + iface.has_snap = (iface.snap != 65535); + iface.encap_type = wtapng_if_descr.wtap_encap; + if(wtapng_if_descr.num_stat_entries == 1){ + /* dumpcap only writes one ISB, only handle that for now */ + if_stats = &g_array_index(wtapng_if_descr.interface_statistics, wtapng_if_stats_t, 0); + iface.drops_known = TRUE; + iface.drops = if_stats->isb_ifdrop; + iface.isb_comment = if_stats->opt_comment; + } + g_array_append_val(st->ifaces, iface); + } + g_free(idb_info); } +#ifdef HAVE_LIBPCAP void summary_fill_in_capture(capture_file *cf,capture_options *capture_opts, summary_tally *st) { iface_options iface; interface_t device; guint i; - wtapng_iface_descriptions_t* idb_info; - wtapng_if_descr_t wtapng_if_descr; - wtapng_if_stats_t *if_stats; - while (st->ifaces->len > 0) { - iface = g_array_index(st->ifaces, iface_options, 0); - st->ifaces = g_array_remove_index(st->ifaces, 0); - g_free(iface.name); - g_free(iface.descr); - g_free(iface.cfilter); - } - if (st->is_tempfile) { + if (st->ifaces->len == 0) { for (i = 0; i < capture_opts->all_ifaces->len; i++) { device = g_array_index(capture_opts->all_ifaces, interface_t, i); if (!device.selected) { @@ -206,27 +222,6 @@ summary_fill_in_capture(capture_file *cf,capture_options *capture_opts, summary_ iface.encap_type = wtap_pcap_encap_to_wtap_encap(device.active_dlt); g_array_append_val(st->ifaces, iface); } - } else { - idb_info = wtap_file_get_idb_info(cf->wth); - for (i = 0; i < idb_info->number_of_interfaces; i++) { - wtapng_if_descr = g_array_index(idb_info->interface_data, wtapng_if_descr_t, i); - iface.cfilter = g_strdup(wtapng_if_descr.if_filter_str); - iface.name = g_strdup(wtapng_if_descr.if_name); - iface.descr = g_strdup(wtapng_if_descr.if_description); - iface.drops_known = FALSE; - iface.drops = 0; - iface.snap = wtapng_if_descr.snap_len; - iface.has_snap = (iface.snap != 65535); - iface.encap_type = wtapng_if_descr.wtap_encap; - if(wtapng_if_descr.num_stat_entries == 1){ - /* dumpcap only writes one ISB, only handle that for now */ - if_stats = &g_array_index(wtapng_if_descr.interface_statistics, wtapng_if_stats_t, 0); - iface.drops_known = TRUE; - iface.drops = if_stats->isb_ifdrop; - iface.isb_comment = if_stats->opt_comment; - } - g_array_append_val(st->ifaces, iface); - } - g_free(idb_info); } } +#endif