1 /* file_packet_provider_data.c
2 * Routines for a packet_provider_data for packets from a file.
4 * Wireshark - Network traffic analyzer
5 * By Gerald Combs <gerald@wireshark.org>
6 * Copyright 1998 Gerald Combs
8 * SPDX-License-Identifier: GPL-2.0-or-later
16 frame_cmp(gconstpointer a, gconstpointer b, gpointer user_data _U_)
18 const frame_data *fdata1 = (const frame_data *) a;
19 const frame_data *fdata2 = (const frame_data *) b;
21 return (fdata1->num < fdata2->num) ? -1 :
22 (fdata1->num > fdata2->num) ? 1 :
27 cap_file_provider_get_interface_name(struct packet_provider_data *prov, guint32 interface_id)
29 wtapng_iface_descriptions_t *idb_info;
30 wtap_block_t wtapng_if_descr = NULL;
33 idb_info = wtap_file_get_idb_info(prov->wth);
35 if (interface_id < idb_info->interface_data->len)
36 wtapng_if_descr = g_array_index(idb_info->interface_data, wtap_block_t, interface_id);
40 if (wtapng_if_descr) {
41 if (wtap_block_get_string_option_value(wtapng_if_descr, OPT_IDB_NAME, &interface_name) == WTAP_OPTTYPE_SUCCESS)
42 return interface_name;
43 if (wtap_block_get_string_option_value(wtapng_if_descr, OPT_IDB_DESCR, &interface_name) == WTAP_OPTTYPE_SUCCESS)
44 return interface_name;
45 if (wtap_block_get_string_option_value(wtapng_if_descr, OPT_IDB_HARDWARE, &interface_name) == WTAP_OPTTYPE_SUCCESS)
46 return interface_name;
52 cap_file_provider_get_interface_description(struct packet_provider_data *prov, guint32 interface_id)
54 wtapng_iface_descriptions_t *idb_info;
55 wtap_block_t wtapng_if_descr = NULL;
58 idb_info = wtap_file_get_idb_info(prov->wth);
60 if (interface_id < idb_info->interface_data->len)
61 wtapng_if_descr = g_array_index(idb_info->interface_data, wtap_block_t, interface_id);
65 if (wtapng_if_descr) {
66 if (wtap_block_get_string_option_value(wtapng_if_descr, OPT_IDB_DESCR, &interface_name) == WTAP_OPTTYPE_SUCCESS)
67 return interface_name;
73 cap_file_provider_get_user_comment(struct packet_provider_data *prov, const frame_data *fd)
75 if (prov->frames_user_comments)
76 return (const char *)g_tree_lookup(prov->frames_user_comments, fd);
83 cap_file_provider_set_user_comment(struct packet_provider_data *prov, frame_data *fd, const char *new_comment)
85 if (!prov->frames_user_comments)
86 prov->frames_user_comments = g_tree_new_full(frame_cmp, NULL, NULL, g_free);
88 /* insert new packet comment */
89 g_tree_replace(prov->frames_user_comments, fd, g_strdup(new_comment));
91 fd->has_user_comment = TRUE;