- st->filename = cfile.filename;
- st->file_length = cfile.f_len;
- st->encap_type = cfile.cd_t;
- st->snap = cfile.snap;
- st->elapsed_time = secs_usecs(cfile.esec, cfile.eusec);
- st->packet_count = cfile.count;
- st->drops_known = cfile.drops_known;
- st->drops = cfile.drops;
- st->iface = cfile.iface;
- st->dfilter = cfile.dfilter;
+ st->filename = cf->filename;
+ st->file_length = cf->f_datalen;
+ st->file_type = cf->cd_t;
+ st->iscompressed = cf->iscompressed;
+ st->is_tempfile = cf->is_tempfile;
+ st->file_encap_type = cf->lnk_t;
+ st->packet_encap_types = cf->linktypes;
+ st->has_snap = cf->has_snap;
+ st->snap = cf->snap;
+ st->elapsed_time = nstime_to_sec(&cf->elapsed_time);
+ st->packet_count = cf->count;
+ st->drops_known = cf->drops_known;
+ st->drops = cf->drops;
+ st->dfilter = cf->dfilter;
+
+ /* Get info from SHB */
+ shb_inf = wtap_file_get_shb_info(cf->wth);
+ if(shb_inf == NULL){
+ st->opt_comment = NULL;
+ st->shb_hardware = NULL;
+ st->shb_os = NULL;
+ st->shb_user_appl = NULL;
+ }else{
+ st->opt_comment = shb_inf->opt_comment;
+ st->shb_hardware = shb_inf->shb_hardware;
+ st->shb_os = shb_inf->shb_os;
+ st->shb_user_appl = shb_inf->shb_user_appl;
+ g_free(shb_inf);
+ }
+
+ 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);
+}