diff options
author | Greg Morris <GMORRIS@novell.com> | 2007-12-04 16:33:48 +0000 |
---|---|---|
committer | Greg Morris <GMORRIS@novell.com> | 2007-12-04 16:33:48 +0000 |
commit | 6c87d3d49e71524befbd2ceaf323725a144025a0 (patch) | |
tree | 39af3bb41a9f18d93ee72b516fd727a1e902aeb8 /epan/dissectors/packet-ipp.c | |
parent | 0f0c02bbaeac026d4b11c8c82e35ef9ecaab7ea1 (diff) |
Display textual explanation for printer and job values from RFC 2911.
svn path=/trunk/; revision=23752
Diffstat (limited to 'epan/dissectors/packet-ipp.c')
-rw-r--r-- | epan/dissectors/packet-ipp.c | 60 |
1 files changed, 56 insertions, 4 deletions
diff --git a/epan/dissectors/packet-ipp.c b/epan/dissectors/packet-ipp.c index e05ce21309..72182e1df7 100644 --- a/epan/dissectors/packet-ipp.c +++ b/epan/dissectors/packet-ipp.c @@ -57,6 +57,9 @@ static dissector_handle_t data_handle; #define GET_JOB_ATTRIBUTES 0x0009 #define GET_JOBS 0x000A #define GET_PRINTER_ATTRIBUTES 0x000B +#define IDLE 0x3 +#define PROCESSING 0x4 +#define STOPPED 0x5 static const value_string operation_vals[] = { { PRINT_JOB, "Print-Job" }, @@ -72,6 +75,26 @@ static const value_string operation_vals[] = { { 0, NULL } }; +/* Printer States */ +static const value_string printer_state_vals[] = { + { IDLE, "Idle" }, + { PROCESSING, "Processing" }, + { STOPPED, "Stopped" }, + { 0, NULL } +}; + +/* Job States */ +static const value_string job_state_vals[] = { + { 3, "Pending" }, + { 4, "Pending - Job Held" }, + { 5, "Processing" }, + { 6, "Processing - Job Stopped" }, + { 7, "Canceled" }, + { 8, "Aborted" }, + { 9, "Completed" }, + { 0, NULL } +}; + #define STATUS_SUCCESSFUL 0x0000 #define STATUS_INFORMATIONAL 0x0100 #define STATUS_REDIRECTION 0x0200 @@ -487,7 +510,23 @@ add_integer_tree(proto_tree *tree, tvbuff_t *tvb, int offset, "%s: %s", format_text(name_val, name_length), abs_time_secs_to_str(tvb_get_ntohl(tvb, offset + 1 + 2 + name_length + 2))); - } else { + + } + else if((name_length > 5) && name_val && !tvb_memeql(tvb, offset + 1 + 2, "printer-state", 13)){ + ti = proto_tree_add_text(tree, tvb, offset, + 1 + 2 + name_length + 2 + value_length, + "%s: %s", + format_text(name_val, name_length), + val_to_str(tvb_get_ntohl(tvb, offset + 1 + 2 + name_length + 2), printer_state_vals, "Unknown Printer State")); + } + else if((name_length > 5) && name_val && !tvb_memeql(tvb, offset + 1 + 2, "job-state", 9)){ + ti = proto_tree_add_text(tree, tvb, offset, + 1 + 2 + name_length + 2 + value_length, + "%s: %s", + format_text(name_val, name_length), + val_to_str(tvb_get_ntohl(tvb, offset + 1 + 2 + name_length + 2), job_state_vals, "Unknown Job State")); + } + else { ti = proto_tree_add_text(tree, tvb, offset, 1 + 2 + name_length + 2 + value_length, "%s: %u", @@ -545,9 +584,22 @@ add_integer_value(const gchar *tag_desc, proto_tree *tree, tvbuff_t *tvb, ns.secs=tvb_get_ntohl(tvb, offset); ns.nsecs=0; proto_tree_add_time(tree, hf_ipp_timestamp, tvb, offset, 4, &ns); - } else { - proto_tree_add_text(tree, tvb, offset, value_length, - "Value: %u", tvb_get_ntohl(tvb, offset)); + } + else if((name_length > 5) && name_val && !strcmp(name_val, "printer-state")){ + guint32 printer_state_reason; + + printer_state_reason = tvb_get_ntohl(tvb, offset); + proto_tree_add_text(tree, tvb, offset, value_length, "Value: %s (%u)", val_to_str(printer_state_reason, printer_state_vals, "Unknown Printer State (0x%02x)"), printer_state_reason); + } + else if((name_length > 5) && name_val && !strcmp(name_val, "job-state")){ + guint32 job_state_reason; + + job_state_reason = tvb_get_ntohl(tvb, offset); + proto_tree_add_text(tree, tvb, offset, value_length, "Value: %s (%u)", val_to_str(job_state_reason, job_state_vals, "Unknown Job State (0x%02x)"), job_state_reason); + } + else{ + proto_tree_add_text(tree, tvb, offset, value_length, + "Value: %u", tvb_get_ntohl(tvb, offset)); } } break; |