aboutsummaryrefslogtreecommitdiffstats
path: root/sharkd.c
diff options
context:
space:
mode:
authorJakub Zawadzki <darkjames-ws@darkjames.pl>2017-12-07 21:56:11 +0100
committerGuy Harris <guy@alum.mit.edu>2017-12-08 03:16:20 +0000
commit0baa4458c5780b143ad4479d387202ddf4add06f (patch)
tree7cac9589c670186f123268c30c3db1fad9a05268 /sharkd.c
parent847585f938a525fb32ee4a0227cc500316facc34 (diff)
sharkd: add sharkd_get_frame() to get frame_data, optimize.
Add sharkd_get_frame() wrapper to limit number of cfile usage. Don't get frame_data when not needed. Change-Id: I24b96b5b184196e9dbf632c0891b2954c8281eed Reviewed-on: https://code.wireshark.org/review/24728 Petri-Dish: Jakub Zawadzki <darkjames-ws@darkjames.pl> Tested-by: Petri Dish Buildbot Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'sharkd.c')
-rw-r--r--sharkd.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/sharkd.c b/sharkd.c
index 564e38087c..acb5e1ca62 100644
--- a/sharkd.c
+++ b/sharkd.c
@@ -530,6 +530,12 @@ sharkd_load_cap_file(void)
return load_cap_file(&cfile, 0, 0);
}
+frame_data *
+sharkd_get_frame(guint32 framenum)
+{
+ return frame_data_sequence_find(cfile.frame_set_info.frames, framenum);
+}
+
int
sharkd_dissect_request(unsigned int framenum, void (*cb)(epan_dissect_t *, proto_tree *, struct epan_column_info *, const GSList *, void *), int dissect_bytes, int dissect_columns, int dissect_tree, void *data)
{
@@ -543,7 +549,7 @@ sharkd_dissect_request(unsigned int framenum, void (*cb)(epan_dissect_t *, proto
int err;
char *err_info = NULL;
- fdata = frame_data_sequence_find(cfile.frame_set_info.frames, framenum);
+ fdata = sharkd_get_frame(framenum);
if (fdata == NULL)
return -1;
@@ -582,9 +588,8 @@ sharkd_dissect_request(unsigned int framenum, void (*cb)(epan_dissect_t *, proto
/* based on packet_list_dissect_and_cache_record */
int
-sharkd_dissect_columns(int framenum, column_info *cinfo, gboolean dissect_color)
+sharkd_dissect_columns(frame_data *fdata, column_info *cinfo, gboolean dissect_color)
{
- frame_data *fdata;
epan_dissect_t edt;
gboolean create_proto_tree;
struct wtap_pkthdr phdr; /* Packet header */
@@ -593,12 +598,6 @@ sharkd_dissect_columns(int framenum, column_info *cinfo, gboolean dissect_color)
int err;
char *err_info = NULL;
- fdata = frame_data_sequence_find(cfile.frame_set_info.frames, framenum);
- if (fdata == NULL) {
- col_fill_in_error(cinfo, fdata, FALSE, TRUE/* fill_fd_columns */);
- return -1; /* error reading the record */
- }
-
wtap_phdr_init(&phdr);
ws_buffer_init(&buf, 1500);
@@ -676,7 +675,7 @@ sharkd_retap(void)
reset_tap_listeners();
for (framenum = 1; framenum <= cfile.count; framenum++) {
- fdata = frame_data_sequence_find(cfile.frame_set_info.frames, framenum);
+ fdata = sharkd_get_frame(framenum);
if (!wtap_seek_read(cfile.frame_set_info.wth, fdata->file_off, &phdr, &buf, &err, &err_info))
break;
@@ -726,7 +725,7 @@ sharkd_filter(const char *dftext, guint8 **result)
result_bits = (guint8 *) g_malloc(2 + (frames_count / 8));
for (framenum = 1; framenum <= frames_count; framenum++) {
- frame_data *fdata = frame_data_sequence_find(cfile.frame_set_info.frames, framenum);
+ frame_data *fdata = sharkd_get_frame(framenum);
if ((framenum & 7) == 0) {
result_bits[(framenum / 8) - 1] = passed_bits;