diff options
author | João Valverde <j@v6e.pt> | 2021-12-09 01:30:55 +0000 |
---|---|---|
committer | João Valverde <j@v6e.pt> | 2021-12-09 01:30:55 +0000 |
commit | 2eba7684400699b4a089d1739e75e8d4cee1e47a (patch) | |
tree | 7897a9c9a51ed348e278fa181f1870f32a9f5062 /epan/dissectors/packet-jpeg.c | |
parent | 5dec1fc8b4b63a5b01ee7be2217f32ccfe7399f6 (diff) |
JPEG: Convert to old proto tree API
Related with #17774.
Diffstat (limited to 'epan/dissectors/packet-jpeg.c')
-rw-r--r-- | epan/dissectors/packet-jpeg.c | 315 |
1 files changed, 132 insertions, 183 deletions
diff --git a/epan/dissectors/packet-jpeg.c b/epan/dissectors/packet-jpeg.c index 44d77867a8..dd939233ed 100644 --- a/epan/dissectors/packet-jpeg.c +++ b/epan/dissectors/packet-jpeg.c @@ -13,9 +13,6 @@ * * SPDX-License-Identifier: GPL-2.0-or-later */ - -#define NEW_PROTO_TREE_API - #include "config.h" #include <epan/packet.h> @@ -29,8 +26,6 @@ void proto_reg_handoff_jpeg(void); static dissector_handle_t jpeg_handle; -static header_field_info *hfi_jpeg = NULL; - static const range_string jpeg_ts_rvals [] = { {0, 0, "Progressively scanned"}, {1, 1, "Odd field of interlaced signal"}, @@ -53,136 +48,26 @@ static const range_string jpeg_type_rvals [] = { { 0, 0, NULL} }; -#define JPEG_HFI_INIT HFI_INIT(proto_jpeg) - -/* JPEG header fields */ -static header_field_info hfi_rtp_jpeg_main_hdr JPEG_HFI_INIT = { - "Main Header", - "jpeg.main_hdr", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL -}; - -static header_field_info hfi_rtp_jpeg_main_hdr_ts JPEG_HFI_INIT = { - "Type Specific", - "jpeg.main_hdr.ts", - FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(jpeg_ts_rvals), 0, - NULL, HFILL -}; - -static header_field_info hfi_rtp_jpeg_main_hdr_offs JPEG_HFI_INIT = { - "Fragment Offset", - "jpeg.main_hdr.offset", - FT_UINT24, BASE_DEC, NULL, 0, - NULL, HFILL -}; - -static header_field_info hfi_rtp_jpeg_main_hdr_type JPEG_HFI_INIT = { - "Type", - "jpeg.main_hdr.type", - FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(jpeg_type_rvals), 0, - NULL, HFILL -}; - -static header_field_info hfi_rtp_jpeg_main_hdr_q JPEG_HFI_INIT = { - "Q", - "jpeg.main_hdr.q", - FT_UINT8, BASE_DEC, NULL, 0, - NULL, HFILL -}; - -static header_field_info hfi_rtp_jpeg_main_hdr_width JPEG_HFI_INIT = { - "Width", - "jpeg.main_hdr.width", - FT_UINT8, BASE_DEC, NULL, 0, - NULL, HFILL -}; - -static header_field_info hfi_rtp_jpeg_main_hdr_height JPEG_HFI_INIT = { - "Height", - "jpeg.main_hdr.height", - FT_UINT8, BASE_DEC, NULL, 0, - NULL, HFILL -}; - -static header_field_info hfi_rtp_jpeg_restart_hdr JPEG_HFI_INIT = { - "Restart Marker Header", - "jpeg.restart_hdr", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL -}; - -static header_field_info hfi_rtp_jpeg_restart_hdr_interval JPEG_HFI_INIT = { - "Restart Interval", - "jpeg.restart_hdr.interval", - FT_UINT16, BASE_DEC, NULL, 0, - NULL, HFILL -}; - -static header_field_info hfi_rtp_jpeg_restart_hdr_f JPEG_HFI_INIT = { - "F", - "jpeg.restart_hdr.f", - FT_UINT16, BASE_DEC, NULL, 0x8000, - NULL, HFILL -}; - -static header_field_info hfi_rtp_jpeg_restart_hdr_l JPEG_HFI_INIT = { - "L", - "jpeg.restart_hdr.l", - FT_UINT16, BASE_DEC, NULL, 0x4000, - NULL, HFILL -}; - -static header_field_info hfi_rtp_jpeg_restart_hdr_count JPEG_HFI_INIT = { - "Restart Count", - "jpeg.restart_hdr.count", - FT_UINT16, BASE_DEC, NULL, 0x3FFF, - NULL, HFILL -}; - -static header_field_info hfi_rtp_jpeg_qtable_hdr JPEG_HFI_INIT = { - "Quantization Table Header", - "jpeg.qtable_hdr", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL -}; - -static header_field_info hfi_rtp_jpeg_qtable_hdr_mbz JPEG_HFI_INIT = { - "MBZ", - "jpeg.qtable_hdr.mbz", - FT_UINT8, BASE_DEC, NULL, 0, - NULL, HFILL -}; - -static header_field_info hfi_rtp_jpeg_qtable_hdr_prec JPEG_HFI_INIT = { - "Precision", - "jpeg.qtable_hdr.precision", - FT_UINT8, BASE_DEC, NULL, 0, - NULL, HFILL -}; - -static header_field_info hfi_rtp_jpeg_qtable_hdr_length JPEG_HFI_INIT = { - "Length", - "jpeg.qtable_hdr.length", - FT_UINT16, BASE_DEC, NULL, 0, - NULL, HFILL -}; - -static header_field_info hfi_rtp_jpeg_qtable_hdr_data JPEG_HFI_INIT = { - "Quantization Table Data", - "jpeg.qtable_hdr.data", - FT_BYTES, BASE_NONE, NULL, 0, - NULL, HFILL -}; - - -static header_field_info hfi_rtp_jpeg_payload JPEG_HFI_INIT = { - "Payload", - "jpeg.payload", - FT_BYTES, BASE_NONE, NULL, 0, - NULL, HFILL -}; - +static int proto_jpeg = -1; + +static int hf_rtp_jpeg_main_hdr = -1; +static int hf_rtp_jpeg_main_hdr_height = -1; +static int hf_rtp_jpeg_main_hdr_offs = -1; +static int hf_rtp_jpeg_main_hdr_q = -1; +static int hf_rtp_jpeg_main_hdr_ts = -1; +static int hf_rtp_jpeg_main_hdr_type = -1; +static int hf_rtp_jpeg_main_hdr_width = -1; +static int hf_rtp_jpeg_payload = -1; +static int hf_rtp_jpeg_qtable_hdr = -1; +static int hf_rtp_jpeg_qtable_hdr_data = -1; +static int hf_rtp_jpeg_qtable_hdr_length = -1; +static int hf_rtp_jpeg_qtable_hdr_mbz = -1; +static int hf_rtp_jpeg_qtable_hdr_prec = -1; +static int hf_rtp_jpeg_restart_hdr = -1; +static int hf_rtp_jpeg_restart_hdr_count = -1; +static int hf_rtp_jpeg_restart_hdr_f = -1; +static int hf_rtp_jpeg_restart_hdr_interval = -1; +static int hf_rtp_jpeg_restart_hdr_l = -1; /* JPEG fields defining a sub tree */ static gint ett_jpeg = -1; @@ -209,60 +94,60 @@ dissect_jpeg( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U col_set_str(pinfo->cinfo, COL_INFO, "JPEG message"); if ( tree ) { - ti = proto_tree_add_item( tree, hfi_jpeg, tvb, offset, -1, ENC_NA ); + ti = proto_tree_add_item( tree, proto_jpeg, tvb, offset, -1, ENC_NA ); jpeg_tree = proto_item_add_subtree( ti, ett_jpeg ); - ti = proto_tree_add_item(jpeg_tree, &hfi_rtp_jpeg_main_hdr, tvb, offset, 8, ENC_NA); + ti = proto_tree_add_item(jpeg_tree, hf_rtp_jpeg_main_hdr, tvb, offset, 8, ENC_NA); main_hdr_tree = proto_item_add_subtree(ti, ett_jpeg); - proto_tree_add_item(main_hdr_tree, &hfi_rtp_jpeg_main_hdr_ts, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(main_hdr_tree, hf_rtp_jpeg_main_hdr_ts, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; - proto_tree_add_item(main_hdr_tree, &hfi_rtp_jpeg_main_hdr_offs, tvb, offset, 3, ENC_BIG_ENDIAN); + proto_tree_add_item(main_hdr_tree, hf_rtp_jpeg_main_hdr_offs, tvb, offset, 3, ENC_BIG_ENDIAN); fragment_offset = tvb_get_ntoh24(tvb, offset); offset += 3; - proto_tree_add_item(main_hdr_tree, &hfi_rtp_jpeg_main_hdr_type, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(main_hdr_tree, hf_rtp_jpeg_main_hdr_type, tvb, offset, 1, ENC_BIG_ENDIAN); type = tvb_get_guint8(tvb, offset); offset += 1; - proto_tree_add_item(main_hdr_tree, &hfi_rtp_jpeg_main_hdr_q, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(main_hdr_tree, hf_rtp_jpeg_main_hdr_q, tvb, offset, 1, ENC_BIG_ENDIAN); q = tvb_get_guint8(tvb, offset); offset += 1; w = tvb_get_guint8(tvb, offset) * 8; - proto_tree_add_uint(main_hdr_tree, &hfi_rtp_jpeg_main_hdr_width, tvb, offset, 1, w); + proto_tree_add_uint(main_hdr_tree, hf_rtp_jpeg_main_hdr_width, tvb, offset, 1, w); offset += 1; h = tvb_get_guint8(tvb, offset) * 8; - proto_tree_add_uint(main_hdr_tree, &hfi_rtp_jpeg_main_hdr_height, tvb, offset, 1, h); + proto_tree_add_uint(main_hdr_tree, hf_rtp_jpeg_main_hdr_height, tvb, offset, 1, h); offset += 1; if (type >= 64 && type <= 127) { - ti = proto_tree_add_item(jpeg_tree, &hfi_rtp_jpeg_restart_hdr, tvb, offset, 4, ENC_NA); + ti = proto_tree_add_item(jpeg_tree, hf_rtp_jpeg_restart_hdr, tvb, offset, 4, ENC_NA); restart_hdr_tree = proto_item_add_subtree(ti, ett_jpeg); - proto_tree_add_item(restart_hdr_tree, &hfi_rtp_jpeg_restart_hdr_interval, tvb, offset, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(restart_hdr_tree, hf_rtp_jpeg_restart_hdr_interval, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; - proto_tree_add_item(restart_hdr_tree, &hfi_rtp_jpeg_restart_hdr_f, tvb, offset, 2, ENC_BIG_ENDIAN); - proto_tree_add_item(restart_hdr_tree, &hfi_rtp_jpeg_restart_hdr_l, tvb, offset, 2, ENC_BIG_ENDIAN); - proto_tree_add_item(restart_hdr_tree, &hfi_rtp_jpeg_restart_hdr_count, tvb, offset, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(restart_hdr_tree, hf_rtp_jpeg_restart_hdr_f, tvb, offset, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(restart_hdr_tree, hf_rtp_jpeg_restart_hdr_l, tvb, offset, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(restart_hdr_tree, hf_rtp_jpeg_restart_hdr_count, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; } if (q >= 128 && fragment_offset == 0) { - ti = proto_tree_add_item(jpeg_tree, &hfi_rtp_jpeg_qtable_hdr, tvb, offset, -1, ENC_NA); + ti = proto_tree_add_item(jpeg_tree, hf_rtp_jpeg_qtable_hdr, tvb, offset, -1, ENC_NA); qtable_hdr_tree = proto_item_add_subtree(ti, ett_jpeg); - proto_tree_add_item(qtable_hdr_tree, &hfi_rtp_jpeg_qtable_hdr_mbz, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(qtable_hdr_tree, hf_rtp_jpeg_qtable_hdr_mbz, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; - proto_tree_add_item(qtable_hdr_tree, &hfi_rtp_jpeg_qtable_hdr_prec, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(qtable_hdr_tree, hf_rtp_jpeg_qtable_hdr_prec, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; - proto_tree_add_item(qtable_hdr_tree, &hfi_rtp_jpeg_qtable_hdr_length, tvb, offset, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(qtable_hdr_tree, hf_rtp_jpeg_qtable_hdr_length, tvb, offset, 2, ENC_BIG_ENDIAN); len = tvb_get_ntohs(tvb, offset); offset += 2; if (len > 0) { - proto_tree_add_item(qtable_hdr_tree, &hfi_rtp_jpeg_qtable_hdr_data, tvb, offset, len, ENC_NA); + proto_tree_add_item(qtable_hdr_tree, hf_rtp_jpeg_qtable_hdr_data, tvb, offset, len, ENC_NA); offset += len; } proto_item_set_len(ti, len + 4); } /* The rest of the packet is the JPEG data */ - proto_tree_add_item( jpeg_tree, &hfi_rtp_jpeg_payload, tvb, offset, -1, ENC_NA ); + proto_tree_add_item( jpeg_tree, hf_rtp_jpeg_payload, tvb, offset, -1, ENC_NA ); } return tvb_captured_length(tvb); } @@ -270,41 +155,105 @@ dissect_jpeg( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U void proto_register_jpeg(void) { -#ifndef HAVE_HFI_SECTION_INIT - static header_field_info *hfi[] = - { - &hfi_rtp_jpeg_main_hdr, - &hfi_rtp_jpeg_main_hdr_ts, - &hfi_rtp_jpeg_main_hdr_offs, - &hfi_rtp_jpeg_main_hdr_type, - &hfi_rtp_jpeg_main_hdr_q, - &hfi_rtp_jpeg_main_hdr_width, - &hfi_rtp_jpeg_main_hdr_height, - &hfi_rtp_jpeg_restart_hdr, - &hfi_rtp_jpeg_restart_hdr_interval, - &hfi_rtp_jpeg_restart_hdr_f, - &hfi_rtp_jpeg_restart_hdr_l, - &hfi_rtp_jpeg_restart_hdr_count, - &hfi_rtp_jpeg_qtable_hdr, - &hfi_rtp_jpeg_qtable_hdr_mbz, - &hfi_rtp_jpeg_qtable_hdr_prec, - &hfi_rtp_jpeg_qtable_hdr_length, - &hfi_rtp_jpeg_qtable_hdr_data, - &hfi_rtp_jpeg_payload, + static hf_register_info hf[] = { + { &hf_rtp_jpeg_main_hdr, + { "Main Header", "jpeg.main_hdr", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL } + }, + { &hf_rtp_jpeg_main_hdr_ts, + { "Type Specific", "jpeg.main_hdr.ts", + FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(jpeg_ts_rvals), 0, + NULL, HFILL } + }, + { &hf_rtp_jpeg_main_hdr_offs, + { "Fragment Offset", "jpeg.main_hdr.offset", + FT_UINT24, BASE_DEC, NULL, 0, + NULL, HFILL } + }, + { &hf_rtp_jpeg_main_hdr_type, + { "Type", "jpeg.main_hdr.type", + FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(jpeg_type_rvals), 0, + NULL, HFILL } + }, + { &hf_rtp_jpeg_main_hdr_q, + { "Q", "jpeg.main_hdr.q", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL } + }, + { &hf_rtp_jpeg_main_hdr_width, + { "Width", "jpeg.main_hdr.width", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL } + }, + { &hf_rtp_jpeg_main_hdr_height, + { "Height", "jpeg.main_hdr.height", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL } + }, + { &hf_rtp_jpeg_restart_hdr, + { "Restart Marker Header", "jpeg.restart_hdr", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL } + }, + { &hf_rtp_jpeg_restart_hdr_interval, + { "Restart Interval", "jpeg.restart_hdr.interval", + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL } + }, + { &hf_rtp_jpeg_restart_hdr_f, + { "F", "jpeg.restart_hdr.f", + FT_UINT16, BASE_DEC, NULL, 0x8000, + NULL, HFILL } + }, + { &hf_rtp_jpeg_restart_hdr_l, + { "L", "jpeg.restart_hdr.l", + FT_UINT16, BASE_DEC, NULL, 0x4000, + NULL, HFILL } + }, + { &hf_rtp_jpeg_restart_hdr_count, + { "Restart Count", "jpeg.restart_hdr.count", + FT_UINT16, BASE_DEC, NULL, 0x3FFF, + NULL, HFILL } + }, + { &hf_rtp_jpeg_qtable_hdr, + { "Quantization Table Header", "jpeg.qtable_hdr", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL } + }, + { &hf_rtp_jpeg_qtable_hdr_mbz, + { "MBZ", "jpeg.qtable_hdr.mbz", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL } + }, + { &hf_rtp_jpeg_qtable_hdr_prec, + { "Precision", "jpeg.qtable_hdr.precision", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL } + }, + { &hf_rtp_jpeg_qtable_hdr_length, + { "Length", "jpeg.qtable_hdr.length", + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL } + }, + { &hf_rtp_jpeg_qtable_hdr_data, + { "Quantization Table Data", "jpeg.qtable_hdr.data", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL } + }, + { &hf_rtp_jpeg_payload, + { "Payload", "jpeg.payload", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL } + }, }; -#endif - static gint *ett[] = - { + static gint *ett[] = { &ett_jpeg, }; - int proto_jpeg; - proto_jpeg = proto_register_protocol("RFC 2435 JPEG","JPEG","jpeg"); - hfi_jpeg = proto_registrar_get_nth(proto_jpeg); - - proto_register_fields(proto_jpeg, hfi, array_length(hfi)); + proto_register_field_array(proto_jpeg, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); jpeg_handle = register_dissector("jpeg", dissect_jpeg, proto_jpeg); |