aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-dcerpc-spoolss.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2015-04-16 22:40:34 -0400
committerMichael Mann <mmann78@netscape.net>2015-04-18 16:32:27 +0000
commitaeb9827e4aa149c7b7fcb36df9833664d6f2ee80 (patch)
tree1777dbd5a2bb630e44e1216909af5a32e9b6ca5d /epan/dissectors/packet-dcerpc-spoolss.c
parent8f9aa33b29b20cf49a4284d5a0598f8389acb907 (diff)
Convert proto_tree_add_boolean to proto_tree_add_bitmask_[value|value_with_flags|list]
Part 1 of a few Change-Id: I413f23dfa92da5488ca8a7f62ca0738b25004635 Reviewed-on: https://code.wireshark.org/review/8117 Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/packet-dcerpc-spoolss.c')
-rw-r--r--epan/dissectors/packet-dcerpc-spoolss.c506
1 files changed, 121 insertions, 385 deletions
diff --git a/epan/dissectors/packet-dcerpc-spoolss.c b/epan/dissectors/packet-dcerpc-spoolss.c
index 87fa1d7fde..6397b762fd 100644
--- a/epan/dissectors/packet-dcerpc-spoolss.c
+++ b/epan/dissectors/packet-dcerpc-spoolss.c
@@ -1378,134 +1378,49 @@ static int
dissect_DEVMODE_fields(tvbuff_t *tvb, gint offset, packet_info *pinfo,
proto_tree *tree, dcerpc_info *di, guint8 *drep _U_, guint32 *pdata)
{
- proto_item *item;
- proto_tree *subtree;
guint32 fields;
proto_item *hidden_item;
+ static const int * hf_fields[] = {
+ &hf_devmode_fields_orientation,
+ &hf_devmode_fields_papersize,
+ &hf_devmode_fields_paperlength,
+ &hf_devmode_fields_paperwidth,
+ &hf_devmode_fields_scale,
+ &hf_devmode_fields_position,
+ &hf_devmode_fields_nup,
+ &hf_devmode_fields_copies,
+ &hf_devmode_fields_defaultsource,
+ &hf_devmode_fields_printquality,
+ &hf_devmode_fields_color,
+ &hf_devmode_fields_duplex,
+ &hf_devmode_fields_yresolution,
+ &hf_devmode_fields_ttoption,
+ &hf_devmode_fields_collate,
+ &hf_devmode_fields_formname,
+ &hf_devmode_fields_logpixels,
+ &hf_devmode_fields_bitsperpel,
+ &hf_devmode_fields_pelswidth,
+ &hf_devmode_fields_pelsheight,
+ &hf_devmode_fields_displayflags,
+ &hf_devmode_fields_displayfrequency,
+ &hf_devmode_fields_icmmethod,
+ &hf_devmode_fields_icmintent,
+ &hf_devmode_fields_mediatype,
+ &hf_devmode_fields_dithertype,
+ &hf_devmode_fields_panningwidth,
+ &hf_devmode_fields_panningheight,
+ NULL
+ };
+
hidden_item = proto_tree_add_uint(
tree, hf_devmode, tvb, offset, 0, 1);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, di, drep,
- hf_devmode_fields, &fields);
-
- item = proto_tree_add_text(tree, tvb, offset - 4, 4,
- "Fields: 0x%08x", fields);
-
- subtree = proto_item_add_subtree(item, ett_DEVMODE_fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_orientation,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_papersize,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_paperlength,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_paperwidth,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_scale,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_position,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_nup,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_copies,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_defaultsource,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_printquality,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_color,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_duplex,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_yresolution,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_ttoption,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_collate,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_formname,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_logpixels,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_bitsperpel,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_pelswidth,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_pelsheight,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_displayflags,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_displayfrequency,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_icmmethod,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_icmintent,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_mediatype,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_dithertype,
- tvb, offset - 4, 4, fields);
-
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_panningwidth,
- tvb, offset - 4, 4, fields);
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, di, drep, -1, &fields);
- proto_tree_add_boolean(
- subtree, hf_devmode_fields_panningheight,
- tvb, offset - 4, 4, fields);
+ proto_tree_add_bitmask_value_with_flags(tree, tvb, offset - 4, hf_devmode_fields,
+ ett_DEVMODE_fields, hf_fields, fields, BMT_NO_APPEND);
if (pdata)
*pdata = fields;
@@ -1597,9 +1512,9 @@ dissect_DEVMODE(tvbuff_t *tvb, int offset, packet_info *pinfo,
subtree, hf_devmode_print_quality, tvb,
offset - 2, 2, DREP_ENC_INTEGER(drep));
else
- proto_tree_add_text(
- subtree, tvb, offset - 4, 4,
- "Print Quality: %d dpi", print_quality);
+ proto_tree_add_uint_format_value(
+ subtree, hf_devmode_print_quality, tvb, offset - 4, 4,
+ print_quality, "%d dpi", print_quality);
offset = dissect_ndr_uint16(
tvb, offset, pinfo, subtree, di, drep,
@@ -2071,51 +1986,26 @@ static int
dissect_job_status(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree, dcerpc_info *di, guint8 *drep)
{
- proto_item *item;
- proto_tree *subtree;
guint32 status;
+ static const int * hf_status[] = {
+ &hf_job_status_user_intervention,
+ &hf_job_status_blocked,
+ &hf_job_status_deleted,
+ &hf_job_status_printed,
+ &hf_job_status_paperout,
+ &hf_job_status_offline,
+ &hf_job_status_printing,
+ &hf_job_status_spooling,
+ &hf_job_status_deleting,
+ &hf_job_status_error,
+ &hf_job_status_paused,
+ NULL
+ };
- offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, di, drep,
- hf_job_status, &status);
-
- item = proto_tree_add_text(tree, tvb, offset - 4, 4,
- "Status: 0x%08x", status);
-
- subtree = proto_item_add_subtree(item, ett_job_status);
-
- proto_tree_add_boolean(
- subtree, hf_job_status_user_intervention, tvb, offset - 4, 4,
- status);
-
- proto_tree_add_boolean(
- subtree, hf_job_status_blocked, tvb, offset - 4, 4, status);
-
- proto_tree_add_boolean(
- subtree, hf_job_status_deleted, tvb, offset - 4, 4, status);
-
- proto_tree_add_boolean(
- subtree, hf_job_status_printed, tvb, offset - 4, 4, status);
-
- proto_tree_add_boolean(
- subtree, hf_job_status_paperout, tvb, offset - 4, 4, status);
-
- proto_tree_add_boolean(
- subtree, hf_job_status_offline, tvb, offset - 4, 4, status);
-
- proto_tree_add_boolean(
- subtree, hf_job_status_printing, tvb, offset - 4, 4, status);
-
- proto_tree_add_boolean(
- subtree, hf_job_status_spooling, tvb, offset - 4, 4, status);
-
- proto_tree_add_boolean(
- subtree, hf_job_status_deleting, tvb, offset - 4, 4, status);
-
- proto_tree_add_boolean(
- subtree, hf_job_status_error, tvb, offset - 4, 4, status);
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, di, drep, -1, &status);
- proto_tree_add_boolean(
- subtree, hf_job_status_paused, tvb, offset - 4, 4, status);
+ proto_tree_add_bitmask_value_with_flags(tree, tvb, offset - 4, hf_job_status,
+ ett_job_status, hf_status, status, BMT_NO_APPEND);
return offset;
}
@@ -2214,73 +2104,29 @@ static int
dissect_printer_attributes(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree, dcerpc_info *di, guint8 *drep)
{
- proto_item *item;
- proto_tree *subtree;
guint32 attributes;
+ static const int * hf_attributes[] = {
+ &hf_printer_attributes_published,
+ &hf_printer_attributes_raw_only,
+ &hf_printer_attributes_enable_bidi,
+ &hf_printer_attributes_work_offline,
+ &hf_printer_attributes_do_complete_first,
+ &hf_printer_attributes_keep_printed_jobs,
+ &hf_printer_attributes_enable_devq,
+ &hf_printer_attributes_local,
+ &hf_printer_attributes_hidden,
+ &hf_printer_attributes_network,
+ &hf_printer_attributes_shared,
+ &hf_printer_attributes_default,
+ &hf_printer_attributes_direct,
+ &hf_printer_attributes_queued,
+ NULL
+ };
- offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, di, drep,
- hf_printer_attributes, &attributes);
-
- item = proto_tree_add_text(tree, tvb, offset - 4, 4,
- "Attributes: 0x%08x", attributes);
-
- subtree = proto_item_add_subtree(item, ett_printer_attributes);
-
- proto_tree_add_boolean(
- subtree, hf_printer_attributes_published,
- tvb, offset - 4, 4, attributes);
-
- proto_tree_add_boolean(
- subtree, hf_printer_attributes_raw_only,
- tvb, offset - 4, 4, attributes);
-
- proto_tree_add_boolean(
- subtree, hf_printer_attributes_enable_bidi,
- tvb, offset - 4, 4, attributes);
-
- proto_tree_add_boolean(
- subtree, hf_printer_attributes_work_offline,
- tvb, offset - 4, 4, attributes);
-
- proto_tree_add_boolean(
- subtree, hf_printer_attributes_do_complete_first,
- tvb, offset - 4, 4, attributes);
-
- proto_tree_add_boolean(
- subtree, hf_printer_attributes_keep_printed_jobs,
- tvb, offset - 4, 4, attributes);
-
- proto_tree_add_boolean(
- subtree, hf_printer_attributes_enable_devq,
- tvb, offset - 4, 4, attributes);
-
- proto_tree_add_boolean(
- subtree, hf_printer_attributes_local,
- tvb, offset - 4, 4, attributes);
-
- proto_tree_add_boolean(
- subtree, hf_printer_attributes_hidden,
- tvb, offset - 4, 4, attributes);
-
- proto_tree_add_boolean(
- subtree, hf_printer_attributes_network,
- tvb, offset - 4, 4, attributes);
-
- proto_tree_add_boolean(
- subtree, hf_printer_attributes_shared,
- tvb, offset - 4, 4, attributes);
-
- proto_tree_add_boolean(
- subtree, hf_printer_attributes_default,
- tvb, offset - 4, 4, attributes);
-
- proto_tree_add_boolean(
- subtree, hf_printer_attributes_direct,
- tvb, offset - 4, 4, attributes);
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, di, drep, -1, &attributes);
- proto_tree_add_boolean(
- subtree, hf_printer_attributes_queued,
- tvb, offset - 4, 4, attributes);
+ proto_tree_add_bitmask_value_with_flags(tree, tvb, offset - 4, hf_printer_attributes,
+ ett_printer_attributes, hf_attributes, attributes, BMT_NO_APPEND);
return offset;
}
@@ -2882,22 +2728,16 @@ static int
dissect_notify_options_flags(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree, dcerpc_info *di, guint8 *drep)
{
- proto_item *item;
- proto_tree *subtree;
guint32 flags;
+ static const int * hf_flags[] = {
+ &hf_notify_options_flags_refresh,
+ NULL
+ };
- offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, di, drep,
- hf_notify_options_flags,
- &flags);
-
- item = proto_tree_add_text(tree, tvb, offset - 4, 4,
- "Flags: 0x%08x", flags);
-
- subtree = proto_item_add_subtree(item, ett_notify_options_flags);
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, di, drep, -1, &flags);
- proto_tree_add_boolean(
- subtree, hf_notify_options_flags_refresh,
- tvb, offset, 4, flags);
+ proto_tree_add_bitmask_value_with_flags(tree, tvb, offset - 4, hf_notify_options_flags,
+ ett_notify_options_flags, hf_flags, flags, BMT_NO_APPEND);
return offset;
}
@@ -3068,8 +2908,29 @@ SpoolssRFFPCNEX_q(tvbuff_t *tvb, int offset,
dcerpc_info *di, guint8 *drep _U_)
{
guint32 flags;
- proto_item *flags_item;
- proto_tree *flags_subtree;
+ static const int * hf_flags[] = {
+ &hf_rffpcnex_flags_timeout,
+ &hf_rffpcnex_flags_delete_driver,
+ &hf_rffpcnex_flags_set_driver,
+ &hf_rffpcnex_flags_add_driver,
+ &hf_rffpcnex_flags_delete_print_processor,
+ &hf_rffpcnex_flags_add_print_processor,
+ &hf_rffpcnex_flags_delete_port,
+ &hf_rffpcnex_flags_configure_port,
+ &hf_rffpcnex_flags_add_port,
+ &hf_rffpcnex_flags_delete_form,
+ &hf_rffpcnex_flags_set_form,
+ &hf_rffpcnex_flags_add_form,
+ &hf_rffpcnex_flags_write_job,
+ &hf_rffpcnex_flags_delete_job,
+ &hf_rffpcnex_flags_set_job,
+ &hf_rffpcnex_flags_add_job,
+ &hf_rffpcnex_flags_failed_printer_connection,
+ &hf_rffpcnex_flags_delete_printer,
+ &hf_rffpcnex_flags_set_printer,
+ &hf_rffpcnex_flags_add_printer,
+ NULL
+ };
/* Parse packet */
@@ -3077,110 +2938,10 @@ SpoolssRFFPCNEX_q(tvbuff_t *tvb, int offset,
tvb, offset, pinfo, tree, di, drep, hf_hnd, NULL, NULL,
FALSE, FALSE);
- offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, di, drep,
- hf_rffpcnex_flags, &flags);
-
- flags_item = proto_tree_add_text(tree, tvb, offset - 4, 4,
- "Flags: 0x%08x", flags);
-
- flags_subtree = proto_item_add_subtree(flags_item, ett_rffpcnex_flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_rffpcnex_flags_timeout, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_rffpcnex_flags_delete_driver, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_rffpcnex_flags_set_driver, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_rffpcnex_flags_add_driver, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree,
- hf_rffpcnex_flags_delete_print_processor, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_rffpcnex_flags_add_print_processor,
- tvb, offset - 4, 4, flags);
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, di, drep, -1, &flags);
- proto_tree_add_boolean(
- flags_subtree, hf_rffpcnex_flags_delete_port, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_rffpcnex_flags_configure_port, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_rffpcnex_flags_add_port, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_rffpcnex_flags_delete_form, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_rffpcnex_flags_set_form, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_rffpcnex_flags_add_form, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_rffpcnex_flags_write_job, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_rffpcnex_flags_delete_job, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_rffpcnex_flags_set_job, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_rffpcnex_flags_add_job, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree,
- hf_rffpcnex_flags_failed_printer_connection, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_rffpcnex_flags_delete_printer, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_rffpcnex_flags_set_printer, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_rffpcnex_flags_add_printer, tvb,
- offset - 4, 4, flags);
-
- if (flags & SPOOLSS_PRINTER_CHANGE_PRINTER)
- proto_item_append_text(flags_item, ", change printer");
-
- if (flags & SPOOLSS_PRINTER_CHANGE_JOB)
- proto_item_append_text(flags_item, ", change job");
-
- if (flags & SPOOLSS_PRINTER_CHANGE_FORM)
- proto_item_append_text(flags_item, ", change form");
-
- if (flags & SPOOLSS_PRINTER_CHANGE_PORT)
- proto_item_append_text(flags_item, ", change port");
-
- if (flags & SPOOLSS_PRINTER_CHANGE_PRINTER_DRIVER)
- proto_item_append_text(flags_item, ", change printer driver");
+ proto_tree_add_bitmask_value(tree, tvb, offset - 4, hf_rffpcnex_flags,
+ ett_rffpcnex_flags, hf_flags, flags);
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
hf_rffpcnex_options, NULL);
@@ -3934,49 +3695,24 @@ SpoolssEnumPrinters_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree, dcerpc_info *di, guint8 *drep _U_)
{
guint32 level, flags;
- proto_tree *flags_subtree;
- proto_item *flags_item;
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
+ static const int * hf_flags[] = {
+ &hf_enumprinters_flags_network,
+ &hf_enumprinters_flags_shared,
+ &hf_enumprinters_flags_remote,
+ &hf_enumprinters_flags_name,
+ &hf_enumprinters_flags_connections,
+ &hf_enumprinters_flags_local,
+ &hf_enumprinters_flags_default,
+ NULL
+ };
/* Parse packet */
- offset = dissect_ndr_uint32(
- tvb, offset, pinfo, NULL, di, drep,
- hf_enumprinters_flags, &flags);
-
- flags_item = proto_tree_add_text(tree, tvb, offset - 4, 4,
- "Flags: 0x%08x", flags);
-
- flags_subtree = proto_item_add_subtree(
- flags_item, ett_enumprinters_flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_enumprinters_flags_network, tvb,
- offset - 4, 4, flags);
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, di, drep, -1, &flags);
- proto_tree_add_boolean(
- flags_subtree, hf_enumprinters_flags_shared, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_enumprinters_flags_remote, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_enumprinters_flags_name, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_enumprinters_flags_connections, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_enumprinters_flags_local, tvb,
- offset - 4, 4, flags);
-
- proto_tree_add_boolean(
- flags_subtree, hf_enumprinters_flags_default, tvb,
- offset - 4, 4, flags);
+ proto_tree_add_bitmask_value(tree, tvb, offset - 4, hf_enumprinters_flags,
+ ett_enumprinters_flags, hf_flags, flags);
offset = dissect_ndr_str_pointer_item(
tvb, offset, pinfo, tree, di, drep,