gchar * wtap_get_debug_if_descr(const wtap_block_t if_descr, const int indent, const char* line_end) { char* tmp_content; wtapng_if_descr_mandatory_t* if_descr_mand; GString *info = g_string_new(""); guint64 tmp64; gint8 itmp8; guint8 tmp8; wtapng_if_descr_filter_t* if_filter; g_assert(if_descr); if_descr_mand = (wtapng_if_descr_mandatory_t*)wtap_block_get_mandatory_data(if_descr); if (wtap_block_get_string_option_value(if_descr, OPT_IDB_NAME, &tmp_content) == WTAP_OPTTYPE_SUCCESS) { g_string_printf(info, "%*cName = %s%s", indent, ' ', tmp_content ? tmp_content : "UNKNOWN", line_end); } if (wtap_block_get_string_option_value(if_descr, OPT_IDB_DESCR, &tmp_content) == WTAP_OPTTYPE_SUCCESS) { g_string_append_printf(info, "%*cDescription = %s%s", indent, ' ', tmp_content ? tmp_content : "NONE", line_end); } g_string_append_printf(info, "%*cEncapsulation = %s (%d - %s)%s", indent, ' ', wtap_encap_description(if_descr_mand->wtap_encap), if_descr_mand->wtap_encap, wtap_encap_name(if_descr_mand->wtap_encap), line_end); if (wtap_block_get_string_option_value(if_descr, OPT_IDB_HARDWARE, &tmp_content) == WTAP_OPTTYPE_SUCCESS) { g_string_append_printf(info, "%*cHardware = %s%s", indent, ' ', tmp_content ? tmp_content : "NONE", line_end); } if (wtap_block_get_uint64_option_value(if_descr, OPT_IDB_SPEED, &tmp64) == WTAP_OPTTYPE_SUCCESS) { g_string_append_printf(info, "%*cSpeed = %" G_GINT64_MODIFIER "u%s", indent, ' ', tmp64, line_end); } g_string_append_printf(info, "%*cCapture length = %u%s", indent, ' ', if_descr_mand->snap_len, line_end); if (wtap_block_get_uint8_option_value(if_descr, OPT_IDB_FCSLEN, &itmp8) == WTAP_OPTTYPE_SUCCESS) { g_string_append_printf(info, "%*cFCS length = %d%s", indent, ' ', itmp8, line_end); } g_string_append_printf(info, "%*cTime precision = %s (%d)%s", indent, ' ', wtap_tsprec_string(if_descr_mand->tsprecision), if_descr_mand->tsprecision, line_end); g_string_append_printf(info, "%*cTime ticks per second = %" G_GINT64_MODIFIER "u%s", indent, ' ', if_descr_mand->time_units_per_second, line_end); if (wtap_block_get_uint8_option_value(if_descr, OPT_IDB_TSRESOL, &tmp8) == WTAP_OPTTYPE_SUCCESS) { g_string_append_printf(info, "%*cTime resolution = 0x%.2x%s", indent, ' ', tmp8, line_end); } if (wtap_block_get_custom_option_value(if_descr, OPT_IDB_FILTER, (void**)&if_filter) == WTAP_OPTTYPE_SUCCESS) { g_string_append_printf(info, "%*cFilter string = %s%s", indent, ' ', if_filter->if_filter_str ? if_filter->if_filter_str : "NONE", line_end); g_string_append_printf(info, "%*cBPF filter length = %u%s", indent, ' ', if_filter->bpf_filter_len, line_end); } if (wtap_block_get_string_option_value(if_descr, OPT_IDB_OS, &tmp_content) == WTAP_OPTTYPE_SUCCESS) { g_string_append_printf(info, "%*cOperating system = %s%s", indent, ' ', tmp_content ? tmp_content : "UNKNOWN", line_end); } /* * XXX - support multiple comments. */ if (wtap_block_get_nth_string_option_value(if_descr, OPT_COMMENT, 0, &tmp_content) == WTAP_OPTTYPE_SUCCESS) { g_string_append_printf(info, "%*cComment = %s%s", indent, ' ', tmp_content ? tmp_content : "NONE", line_end); } g_string_append_printf(info, "%*cNumber of stat entries = %u%s", indent, ' ', if_descr_mand->num_stat_entries, line_end); return g_string_free(info, FALSE); }
static void print_stats(const gchar *filename, capture_info *cf_info) { const gchar *file_type_string, *file_encap_string; gchar *size_string; /* Build printable strings for various stats */ file_type_string = wtap_file_type_subtype_string(cf_info->file_type); file_encap_string = wtap_encap_string(cf_info->file_encap); if (filename) printf ("File name: %s\n", filename); if (cap_file_type) printf ("File type: %s%s\n", file_type_string, cf_info->iscompressed ? " (gzip compressed)" : ""); if (cap_file_encap) { printf ("File encapsulation: %s\n", file_encap_string); if (cf_info->file_encap == WTAP_ENCAP_PER_PACKET) { int i; printf ("Encapsulation in use by packets (# of pkts):\n"); for (i=0; i<WTAP_NUM_ENCAP_TYPES; i++) { if (cf_info->encap_counts[i] > 0) printf(" %s (%d)\n", wtap_encap_string(i), cf_info->encap_counts[i]); } } } if (cap_file_more_info) { printf ("File timestamp precision: %s (%d)\n", wtap_tsprec_string(cf_info->file_tsprec), cf_info->file_tsprec); } if (cap_snaplen && cf_info->snap_set) printf ("Packet size limit: file hdr: %u bytes\n", cf_info->snaplen); else if (cap_snaplen && !cf_info->snap_set) printf ("Packet size limit: file hdr: (not set)\n"); if (cf_info->snaplen_max_inferred > 0) { if (cf_info->snaplen_min_inferred == cf_info->snaplen_max_inferred) printf ("Packet size limit: inferred: %u bytes\n", cf_info->snaplen_min_inferred); else printf ("Packet size limit: inferred: %u bytes - %u bytes (range)\n", cf_info->snaplen_min_inferred, cf_info->snaplen_max_inferred); } if (cap_packet_count) { printf ("Number of packets: "); if (machine_readable) { printf ("%u\n", cf_info->packet_count); } else { size_string = format_size(cf_info->packet_count, format_size_unit_none); printf ("%s\n", size_string); g_free(size_string); } } if (cap_file_size) { printf ("File size: "); if (machine_readable) { printf ("%" G_GINT64_MODIFIER "d bytes\n", cf_info->filesize); } else { size_string = format_size(cf_info->filesize, format_size_unit_bytes); printf ("%s\n", size_string); g_free(size_string); } } if (cap_data_size) { printf ("Data size: "); if (machine_readable) { printf ("%" G_GINT64_MODIFIER "u bytes\n", cf_info->packet_bytes); } else { size_string = format_size(cf_info->packet_bytes, format_size_unit_bytes); printf ("%s\n", size_string); g_free(size_string); } } if (cf_info->times_known) { if (cap_duration) /* XXX - shorten to hh:mm:ss */ printf("Capture duration: %s\n", relative_time_string(&cf_info->duration, cf_info->duration_tsprec, cf_info, TRUE)); if (cap_start_time) printf("First packet time: %s\n", absolute_time_string(&cf_info->start_time, cf_info->start_time_tsprec, cf_info)); if (cap_end_time) printf("Last packet time: %s\n", absolute_time_string(&cf_info->stop_time, cf_info->stop_time_tsprec, cf_info)); if (cap_data_rate_byte) { printf("Data byte rate: "); if (machine_readable) { print_value("", 2, " bytes/sec", cf_info->data_rate); } else { size_string = format_size((gint64)cf_info->data_rate, format_size_unit_bytes_s); printf ("%s\n", size_string); g_free(size_string); } } if (cap_data_rate_bit) { printf("Data bit rate: "); if (machine_readable) { print_value("", 2, " bits/sec", cf_info->data_rate*8); } else { size_string = format_size((gint64)(cf_info->data_rate*8), format_size_unit_bits_s); printf ("%s\n", size_string); g_free(size_string); } } } if (cap_packet_size) printf("Average packet size: %.2f bytes\n", cf_info->packet_size); if (cf_info->times_known) { if (cap_packet_rate) { printf("Average packet rate: "); if (machine_readable) { print_value("", 2, " packets/sec", cf_info->packet_rate); } else { size_string = format_size((gint64)cf_info->packet_rate, format_size_unit_packets_s); printf ("%s\n", size_string); g_free(size_string); } } } #ifdef HAVE_LIBGCRYPT if (cap_file_hashes) { printf ("SHA1: %s\n", file_sha1); printf ("RIPEMD160: %s\n", file_rmd160); printf ("MD5: %s\n", file_md5); } #endif /* HAVE_LIBGCRYPT */ if (cap_order) printf ("Strict time order: %s\n", order_string(cf_info->order)); if (cap_comment && cf_info->comment) printf ("Capture comment: %s\n", cf_info->comment); if (cap_file_more_info) { if (cf_info->hardware) printf ("Capture hardware: %s\n", cf_info->hardware); if (cf_info->os) printf ("Capture oper-sys: %s\n", cf_info->os); if (cf_info->usr_appl) printf ("Capture application: %s\n", cf_info->usr_appl); } if (cap_file_idb && cf_info->num_interfaces != 0) { guint i; g_assert(cf_info->num_interfaces == cf_info->idb_info_strings->len); printf ("Number of interfaces in file: %u\n", cf_info->num_interfaces); for (i = 0; i < cf_info->idb_info_strings->len; i++) { gchar *s = g_array_index(cf_info->idb_info_strings, gchar*, i); printf ("Interface #%u info:\n", i); printf ("%s", s); printf (" Number of packets = %u\n", cf_info->interface_ids[i]); } }
gchar * wtap_get_debug_if_descr(const wtapng_if_descr_t *if_descr, const int indent, const char* line_end) { GString *info = g_string_new(""); g_assert(if_descr); g_string_printf(info, "%*cName = %s%s", indent, ' ', if_descr->if_name ? if_descr->if_name : "UNKNOWN", line_end); g_string_append_printf(info, "%*cDescription = %s%s", indent, ' ', if_descr->if_description ? if_descr->if_description : "NONE", line_end); g_string_append_printf(info, "%*cEncapsulation = %s (%d/%u - %s)%s", indent, ' ', wtap_encap_string(if_descr->wtap_encap), if_descr->wtap_encap, if_descr->link_type, wtap_encap_short_string(if_descr->wtap_encap), line_end); g_string_append_printf(info, "%*cSpeed = %" G_GINT64_MODIFIER "u%s", indent, ' ', if_descr->if_speed, line_end); g_string_append_printf(info, "%*cCapture length = %u%s", indent, ' ', if_descr->snap_len, line_end); g_string_append_printf(info, "%*cFCS length = %d%s", indent, ' ', if_descr->if_fcslen, line_end); g_string_append_printf(info, "%*cTime precision = %s (%d)%s", indent, ' ', wtap_tsprec_string(if_descr->tsprecision), if_descr->tsprecision, line_end); g_string_append_printf(info, "%*cTime ticks per second = %" G_GINT64_MODIFIER "u%s", indent, ' ', if_descr->time_units_per_second, line_end); g_string_append_printf(info, "%*cTime resolution = 0x%.2x%s", indent, ' ', if_descr->if_tsresol, line_end); g_string_append_printf(info, "%*cFilter string = %s%s", indent, ' ', if_descr->if_filter_str ? if_descr->if_filter_str : "NONE", line_end); g_string_append_printf(info, "%*cOperating system = %s%s", indent, ' ', if_descr->if_os ? if_descr->if_os : "UNKNOWN", line_end); g_string_append_printf(info, "%*cComment = %s%s", indent, ' ', if_descr->opt_comment ? if_descr->opt_comment : "NONE", line_end); g_string_append_printf(info, "%*cBPF filter length = %u%s", indent, ' ', if_descr->bpf_filter_len, line_end); g_string_append_printf(info, "%*cNumber of stat entries = %u%s", indent, ' ', if_descr->num_stat_entries, line_end); return g_string_free(info, FALSE); }