diff options
author | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2017-12-07 21:56:11 +0100 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2017-12-08 03:16:20 +0000 |
commit | 0baa4458c5780b143ad4479d387202ddf4add06f (patch) | |
tree | 7cac9589c670186f123268c30c3db1fad9a05268 /sharkd.c | |
parent | 847585f938a525fb32ee4a0227cc500316facc34 (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.c | 21 |
1 files changed, 10 insertions, 11 deletions
@@ -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; |