diff options
author | Martin Kaiser <wireshark@kaiser.cx> | 2013-01-31 20:58:48 +0000 |
---|---|---|
committer | Martin Kaiser <wireshark@kaiser.cx> | 2013-01-31 20:58:48 +0000 |
commit | aa297f4ed3f430a5aee5f7f567fe871a3d95b5f0 (patch) | |
tree | 7788aeeaed0c1e47b82ef512b340a958ecd1e2cd /epan/dissectors/packet-cups.c | |
parent | a50877b1e59b8a1d9f120cf53c503c981e63f4f1 (diff) |
replaced TABs+spaces mixture with spaces
added editor modelines
removed one more if(tree)
other minor reformatting
svn path=/trunk/; revision=47396
Diffstat (limited to 'epan/dissectors/packet-cups.c')
-rw-r--r-- | epan/dissectors/packet-cups.c | 554 |
1 files changed, 279 insertions, 275 deletions
diff --git a/epan/dissectors/packet-cups.c b/epan/dissectors/packet-cups.c index 9f25636a3b..c9763712ce 100644 --- a/epan/dissectors/packet-cups.c +++ b/epan/dissectors/packet-cups.c @@ -37,40 +37,40 @@ typedef guint32 cups_ptype_t; /**** Printer Type/Capability Bits ****/ enum /* Not a typedef'd enum so we can OR */ { - CUPS_PRINTER_LOCAL = 0x0000, /* Local printer or class */ - CUPS_PRINTER_CLASS = 0x0001, /* Printer class */ - CUPS_PRINTER_REMOTE = 0x0002, /* Remote printer or class */ - CUPS_PRINTER_BW = 0x0004, /* Can do B&W printing */ - CUPS_PRINTER_COLOR = 0x0008, /* Can do color printing */ - CUPS_PRINTER_DUPLEX = 0x0010, /* Can do duplexing */ - CUPS_PRINTER_STAPLE = 0x0020, /* Can staple output */ - CUPS_PRINTER_COPIES = 0x0040, /* Can do copies */ - CUPS_PRINTER_COLLATE = 0x0080, /* Can collage copies */ - CUPS_PRINTER_PUNCH = 0x0100, /* Can punch output */ - CUPS_PRINTER_COVER = 0x0200, /* Can cover output */ - CUPS_PRINTER_BIND = 0x0400, /* Can bind output */ - CUPS_PRINTER_SORT = 0x0800, /* Can sort output */ - CUPS_PRINTER_SMALL = 0x1000, /* Can do Letter/Legal/A4 */ - CUPS_PRINTER_MEDIUM = 0x2000, /* Can do Tabloid/B/C/A3/A2 */ - CUPS_PRINTER_LARGE = 0x4000, /* Can do D/E/A1/A0 */ - CUPS_PRINTER_VARIABLE = 0x8000, /* Can do variable sizes */ - CUPS_PRINTER_IMPLICIT = 0x10000, /* Implicit class */ - CUPS_PRINTER_DEFAULT = 0x20000, /* Default printer on network */ - CUPS_PRINTER_OPTIONS = 0xfffc /* ~(CLASS | REMOTE | IMPLICIT) */ + CUPS_PRINTER_LOCAL = 0x0000, /* Local printer or class */ + CUPS_PRINTER_CLASS = 0x0001, /* Printer class */ + CUPS_PRINTER_REMOTE = 0x0002, /* Remote printer or class */ + CUPS_PRINTER_BW = 0x0004, /* Can do B&W printing */ + CUPS_PRINTER_COLOR = 0x0008, /* Can do color printing */ + CUPS_PRINTER_DUPLEX = 0x0010, /* Can do duplexing */ + CUPS_PRINTER_STAPLE = 0x0020, /* Can staple output */ + CUPS_PRINTER_COPIES = 0x0040, /* Can do copies */ + CUPS_PRINTER_COLLATE = 0x0080, /* Can collage copies */ + CUPS_PRINTER_PUNCH = 0x0100, /* Can punch output */ + CUPS_PRINTER_COVER = 0x0200, /* Can cover output */ + CUPS_PRINTER_BIND = 0x0400, /* Can bind output */ + CUPS_PRINTER_SORT = 0x0800, /* Can sort output */ + CUPS_PRINTER_SMALL = 0x1000, /* Can do Letter/Legal/A4 */ + CUPS_PRINTER_MEDIUM = 0x2000, /* Can do Tabloid/B/C/A3/A2 */ + CUPS_PRINTER_LARGE = 0x4000, /* Can do D/E/A1/A0 */ + CUPS_PRINTER_VARIABLE = 0x8000, /* Can do variable sizes */ + CUPS_PRINTER_IMPLICIT = 0x10000, /* Implicit class */ + CUPS_PRINTER_DEFAULT = 0x20000, /* Default printer on network */ + CUPS_PRINTER_OPTIONS = 0xfffc /* ~(CLASS | REMOTE | IMPLICIT) */ }; /* End insert from cups/cups.h */ typedef enum _cups_state { - CUPS_IDLE = 3, - CUPS_PROCESSING, - CUPS_STOPPED + CUPS_IDLE = 3, + CUPS_PROCESSING, + CUPS_STOPPED } cups_state_t; static const value_string cups_state_values[] = { - { CUPS_IDLE, "idle" }, - { CUPS_PROCESSING, "processing" }, - { CUPS_STOPPED, "stopped" }, - { 0, NULL } + { CUPS_IDLE, "idle" }, + { CUPS_PROCESSING, "processing" }, + { CUPS_STOPPED, "stopped" }, + { 0, NULL } }; static const true_false_string tfs_implicit_explicit = { "Implicit class", "Explicit class" }; @@ -103,13 +103,11 @@ static gint ett_cups_ptype = -1; /* This protocol is heavily related to IPP, but it is CUPS-specific and non-standard. */ -#define UDP_PORT_CUPS 631 -#define PROTO_TAG_CUPS "CUPS" +#define UDP_PORT_CUPS 631 +#define PROTO_TAG_CUPS "CUPS" -static guint get_hex_uint(tvbuff_t *tvb, gint offset, - gint *next_offset); -static gboolean skip_space(tvbuff_t *tvb, gint offset, - gint *next_offset); +static guint get_hex_uint(tvbuff_t *tvb, gint offset, gint *next_offset); +static gboolean skip_space(tvbuff_t *tvb, gint offset, gint *next_offset); static const guint8* get_quoted_string(tvbuff_t *tvb, gint offset, gint *next_offset, guint *len); static const guint8* get_unquoted_string(tvbuff_t *tvb, gint offset, @@ -120,203 +118,196 @@ static const guint8* get_unquoted_string(tvbuff_t *tvb, gint offset, static void dissect_cups(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { - proto_tree *cups_tree = NULL; - proto_tree *ptype_subtree = NULL; - proto_item *ti = NULL; - gint offset = 0; - gint next_offset; - guint len; - const guint8 *str; - cups_ptype_t ptype; - unsigned int state; - - col_set_str(pinfo->cinfo, COL_PROTOCOL, PROTO_TAG_CUPS); - col_clear(pinfo->cinfo, COL_INFO); - - ti = proto_tree_add_item(tree, proto_cups, tvb, offset, -1, ENC_NA); - cups_tree = proto_item_add_subtree(ti, ett_cups); - - /* Format (1450 bytes max.): */ - /* type state uri ["location" ["info" ["make-and-model"]]]\n */ - - ptype = get_hex_uint(tvb, offset, &next_offset); - len = next_offset - offset; - if (len != 0) { - ti = proto_tree_add_uint(cups_tree, hf_cups_ptype, tvb, offset, len, ptype); - ptype_subtree = proto_item_add_subtree(ti, ett_cups_ptype); - proto_tree_add_item(ptype_subtree, hf_cups_ptype_default, tvb, offset, len, ENC_BIG_ENDIAN); - proto_tree_add_item(ptype_subtree, hf_cups_ptype_implicit, tvb, offset, len, ENC_BIG_ENDIAN); - proto_tree_add_item(ptype_subtree, hf_cups_ptype_variable, tvb, offset, len, ENC_BIG_ENDIAN); - proto_tree_add_item(ptype_subtree, hf_cups_ptype_large, tvb, offset, len, ENC_BIG_ENDIAN); - proto_tree_add_item(ptype_subtree, hf_cups_ptype_medium, tvb, offset, len, ENC_BIG_ENDIAN); - proto_tree_add_item(ptype_subtree, hf_cups_ptype_small, tvb, offset, len, ENC_BIG_ENDIAN); - proto_tree_add_item(ptype_subtree, hf_cups_ptype_sort, tvb, offset, len, ENC_BIG_ENDIAN); - proto_tree_add_item(ptype_subtree, hf_cups_ptype_bind, tvb, offset, len, ENC_BIG_ENDIAN); - proto_tree_add_item(ptype_subtree, hf_cups_ptype_cover, tvb, offset, len, ENC_BIG_ENDIAN); - proto_tree_add_item(ptype_subtree, hf_cups_ptype_punch, tvb, offset, len, ENC_BIG_ENDIAN); - proto_tree_add_item(ptype_subtree, hf_cups_ptype_collate, tvb, offset, len, ENC_BIG_ENDIAN); - proto_tree_add_item(ptype_subtree, hf_cups_ptype_copies, tvb, offset, len, ENC_BIG_ENDIAN); - proto_tree_add_item(ptype_subtree, hf_cups_ptype_staple, tvb, offset, len, ENC_BIG_ENDIAN); - proto_tree_add_item(ptype_subtree, hf_cups_ptype_duplex, tvb, offset, len, ENC_BIG_ENDIAN); - proto_tree_add_item(ptype_subtree, hf_cups_ptype_color, tvb, offset, len, ENC_BIG_ENDIAN); - proto_tree_add_item(ptype_subtree, hf_cups_ptype_bw, tvb, offset, len, ENC_BIG_ENDIAN); - proto_tree_add_item(ptype_subtree, hf_cups_ptype_remote, tvb, offset, len, ENC_BIG_ENDIAN); - proto_tree_add_item(ptype_subtree, hf_cups_ptype_class, tvb, offset, len, ENC_BIG_ENDIAN); - } - offset = next_offset; - - if (!skip_space(tvb, offset, &next_offset)) - return; /* end of packet */ - offset = next_offset; - - state = get_hex_uint(tvb, offset, &next_offset); - len = next_offset - offset; - if (len != 0) { - if (cups_tree) - proto_tree_add_uint(cups_tree, hf_cups_state, - tvb, offset, len, state); - } - offset = next_offset; - - if (!skip_space(tvb, offset, &next_offset)) - return; /* end of packet */ - offset = next_offset; - - str = get_unquoted_string(tvb, offset, &next_offset, &len); - if (str == NULL) - return; /* separator/terminator not found */ - proto_tree_add_text(cups_tree, tvb, offset, len, - "URI: %.*s", - (guint16) len, str); - col_add_fstr(pinfo->cinfo, COL_INFO, - "%.*s (%s)", - (guint16) len, str, - val_to_str(state, cups_state_values, "0x%x")); - offset = next_offset; - - if (!cups_tree) - return; - - if (!skip_space(tvb, offset, &next_offset)) - return; /* end of packet */ - offset = next_offset; - - str = get_quoted_string(tvb, offset, &next_offset, &len); - if (str == NULL) - return; /* separator/terminator not found */ - proto_tree_add_text(cups_tree, tvb, offset+1, len, - "Location: \"%.*s\"", - (guint16) len, str); - offset = next_offset; - - if (!skip_space(tvb, offset, &next_offset)) - return; /* end of packet */ - offset = next_offset; - - str = get_quoted_string(tvb, offset, &next_offset, &len); - if (str == NULL) - return; /* separator/terminator not found */ - proto_tree_add_text(cups_tree, tvb, offset+1, len, - "Information: \"%.*s\"", - (guint16) len, str); - offset = next_offset; - - if (!skip_space(tvb, offset, &next_offset)) - return; /* end of packet */ - offset = next_offset; - - str = get_quoted_string(tvb, offset, &next_offset, &len); - if (str == NULL) - return; /* separator/terminator not found */ - proto_tree_add_text(cups_tree, tvb, offset+1, len, - "Make and model: \"%.*s\"", - (guint16) len, str); + proto_tree *cups_tree = NULL; + proto_tree *ptype_subtree = NULL; + proto_item *ti = NULL; + gint offset = 0; + gint next_offset; + guint len; + const guint8 *str; + cups_ptype_t ptype; + unsigned int state; + + col_set_str(pinfo->cinfo, COL_PROTOCOL, PROTO_TAG_CUPS); + col_clear(pinfo->cinfo, COL_INFO); + + ti = proto_tree_add_item(tree, proto_cups, tvb, offset, -1, ENC_NA); + cups_tree = proto_item_add_subtree(ti, ett_cups); + + /* Format (1450 bytes max.): */ + /* type state uri ["location" ["info" ["make-and-model"]]]\n */ + + ptype = get_hex_uint(tvb, offset, &next_offset); + len = next_offset - offset; + if (len != 0) { + ti = proto_tree_add_uint(cups_tree, hf_cups_ptype, tvb, offset, len, ptype); + ptype_subtree = proto_item_add_subtree(ti, ett_cups_ptype); + proto_tree_add_item(ptype_subtree, hf_cups_ptype_default, tvb, offset, len, ENC_BIG_ENDIAN); + proto_tree_add_item(ptype_subtree, hf_cups_ptype_implicit, tvb, offset, len, ENC_BIG_ENDIAN); + proto_tree_add_item(ptype_subtree, hf_cups_ptype_variable, tvb, offset, len, ENC_BIG_ENDIAN); + proto_tree_add_item(ptype_subtree, hf_cups_ptype_large, tvb, offset, len, ENC_BIG_ENDIAN); + proto_tree_add_item(ptype_subtree, hf_cups_ptype_medium, tvb, offset, len, ENC_BIG_ENDIAN); + proto_tree_add_item(ptype_subtree, hf_cups_ptype_small, tvb, offset, len, ENC_BIG_ENDIAN); + proto_tree_add_item(ptype_subtree, hf_cups_ptype_sort, tvb, offset, len, ENC_BIG_ENDIAN); + proto_tree_add_item(ptype_subtree, hf_cups_ptype_bind, tvb, offset, len, ENC_BIG_ENDIAN); + proto_tree_add_item(ptype_subtree, hf_cups_ptype_cover, tvb, offset, len, ENC_BIG_ENDIAN); + proto_tree_add_item(ptype_subtree, hf_cups_ptype_punch, tvb, offset, len, ENC_BIG_ENDIAN); + proto_tree_add_item(ptype_subtree, hf_cups_ptype_collate, tvb, offset, len, ENC_BIG_ENDIAN); + proto_tree_add_item(ptype_subtree, hf_cups_ptype_copies, tvb, offset, len, ENC_BIG_ENDIAN); + proto_tree_add_item(ptype_subtree, hf_cups_ptype_staple, tvb, offset, len, ENC_BIG_ENDIAN); + proto_tree_add_item(ptype_subtree, hf_cups_ptype_duplex, tvb, offset, len, ENC_BIG_ENDIAN); + proto_tree_add_item(ptype_subtree, hf_cups_ptype_color, tvb, offset, len, ENC_BIG_ENDIAN); + proto_tree_add_item(ptype_subtree, hf_cups_ptype_bw, tvb, offset, len, ENC_BIG_ENDIAN); + proto_tree_add_item(ptype_subtree, hf_cups_ptype_remote, tvb, offset, len, ENC_BIG_ENDIAN); + proto_tree_add_item(ptype_subtree, hf_cups_ptype_class, tvb, offset, len, ENC_BIG_ENDIAN); + } + offset = next_offset; + + if (!skip_space(tvb, offset, &next_offset)) + return; /* end of packet */ + offset = next_offset; + + state = get_hex_uint(tvb, offset, &next_offset); + len = next_offset - offset; + if (len != 0) { + proto_tree_add_uint(cups_tree, hf_cups_state, tvb, offset, len, state); + } + offset = next_offset; + + if (!skip_space(tvb, offset, &next_offset)) + return; /* end of packet */ + offset = next_offset; + + str = get_unquoted_string(tvb, offset, &next_offset, &len); + if (str == NULL) + return; /* separator/terminator not found */ + + proto_tree_add_text(cups_tree, tvb, offset, len, + "URI: %.*s", (guint16) len, str); + col_add_fstr(pinfo->cinfo, COL_INFO, "%.*s (%s)", + (guint16) len, str, val_to_str(state, cups_state_values, "0x%x")); + offset = next_offset; + + if (!cups_tree) + return; + + if (!skip_space(tvb, offset, &next_offset)) + return; /* end of packet */ + offset = next_offset; + + str = get_quoted_string(tvb, offset, &next_offset, &len); + if (str == NULL) + return; /* separator/terminator not found */ + proto_tree_add_text(cups_tree, tvb, offset+1, len, + "Location: \"%.*s\"", (guint16) len, str); + offset = next_offset; + + if (!skip_space(tvb, offset, &next_offset)) + return; /* end of packet */ + offset = next_offset; + + str = get_quoted_string(tvb, offset, &next_offset, &len); + if (str == NULL) + return; /* separator/terminator not found */ + proto_tree_add_text(cups_tree, tvb, offset+1, len, + "Information: \"%.*s\"", (guint16) len, str); + offset = next_offset; + + if (!skip_space(tvb, offset, &next_offset)) + return; /* end of packet */ + offset = next_offset; + + str = get_quoted_string(tvb, offset, &next_offset, &len); + if (str == NULL) + return; /* separator/terminator not found */ + proto_tree_add_text(cups_tree, tvb, offset+1, len, + "Make and model: \"%.*s\"", (guint16) len, str); } static guint get_hex_uint(tvbuff_t *tvb, gint offset, gint *next_offset) { - int c; - guint u = 0; + int c; + guint u = 0; - while (isxdigit(c = tvb_get_guint8(tvb, offset))) { - if (isdigit(c)) - c -= '0'; - else if (isupper(c)) - c -= 'A' - 10; - else if (islower(c)) - c -= 'a' - 10; - else - c = 0; /* This should not happen. */ + while (isxdigit(c = tvb_get_guint8(tvb, offset))) { + if (isdigit(c)) + c -= '0'; + else if (isupper(c)) + c -= 'A' - 10; + else if (islower(c)) + c -= 'a' - 10; + else + c = 0; /* This should not happen. */ - u = 16*u + c; + u = 16*u + c; - offset++; - } + offset++; + } - *next_offset = offset; + *next_offset = offset; - return u; + return u; } static gboolean skip_space(tvbuff_t *tvb, gint offset, gint *next_offset) { - int c; + int c; - while ((c = tvb_get_guint8(tvb, offset)) == ' ') - offset++; - if (c == '\r' || c == '\n') - return FALSE; /* end of packet */ + while ((c = tvb_get_guint8(tvb, offset)) == ' ') + offset++; + if (c == '\r' || c == '\n') + return FALSE; /* end of packet */ - *next_offset = offset; + *next_offset = offset; - return TRUE; + return TRUE; } static const guint8* get_quoted_string(tvbuff_t *tvb, gint offset, gint *next_offset, guint *len) { - int c; - const guint8* s = NULL; - guint l = 0; - gint o; - - c = tvb_get_guint8(tvb, offset); - if (c == '"') { - o = tvb_find_guint8(tvb, offset+1, -1, '"'); - if (o != -1) { - offset++; - l = o - offset; - s = tvb_get_ptr(tvb, offset, l); - offset = o + 1; - } - } - - *next_offset = offset; - *len = l; - - return s; + int c; + const guint8* s = NULL; + guint l = 0; + gint o; + + c = tvb_get_guint8(tvb, offset); + if (c == '"') { + o = tvb_find_guint8(tvb, offset+1, -1, '"'); + if (o != -1) { + offset++; + l = o - offset; + s = tvb_get_ptr(tvb, offset, l); + offset = o + 1; + } + } + + *next_offset = offset; + *len = l; + + return s; } static const guint8* get_unquoted_string(tvbuff_t *tvb, gint offset, gint *next_offset, guint *len) { - const guint8* s = NULL; - guint l = 0; - gint o; + const guint8* s = NULL; + guint l = 0; + gint o; - o = tvb_pbrk_guint8(tvb, offset, -1, " \t\r\n", NULL); - if (o != -1) { - l = o - offset; - s = tvb_get_ptr(tvb, offset, l); - offset = o; - } + o = tvb_pbrk_guint8(tvb, offset, -1, " \t\r\n", NULL); + if (o != -1) { + l = o - offset; + s = tvb_get_ptr(tvb, offset, l); + offset = o; + } - *next_offset = offset; - *len = l; + *next_offset = offset; + *len = l; - return s; + return s; } /**********************************************************************/ @@ -324,86 +315,99 @@ get_unquoted_string(tvbuff_t *tvb, gint offset, gint *next_offset, guint *len) void proto_register_cups(void) { - static hf_register_info hf[] = { - { &hf_cups_ptype, - { "Type", "cups.ptype", FT_UINT32, BASE_HEX, - NULL, 0x0, NULL, HFILL }}, - { &hf_cups_ptype_default, - { "Default printer on network", "cups.ptype.default", FT_BOOLEAN, 32, - TFS(&tfs_yes_no), CUPS_PRINTER_DEFAULT, NULL, HFILL }}, - { &hf_cups_ptype_implicit, - { "Class", "cups.ptype.implicit", FT_BOOLEAN, 32, - TFS(&tfs_implicit_explicit), CUPS_PRINTER_IMPLICIT, NULL, HFILL }}, - { &hf_cups_ptype_variable, - { "Can print variable sizes", "cups.ptype.variable", FT_BOOLEAN, 32, - TFS(&tfs_yes_no), CUPS_PRINTER_VARIABLE, NULL, HFILL }}, - { &hf_cups_ptype_large, - { "Can print up to 36x48 inches", "cups.ptype.large", FT_BOOLEAN, 32, - TFS(&tfs_yes_no), CUPS_PRINTER_LARGE, NULL, HFILL }}, - { &hf_cups_ptype_medium, - { "Can print up to 18x24 inches", "cups.ptype.medium", FT_BOOLEAN, 32, - TFS(&tfs_yes_no), CUPS_PRINTER_MEDIUM, NULL, HFILL }}, - { &hf_cups_ptype_small, - { "Can print up to 9x14 inches", "cups.ptype.small", FT_BOOLEAN, 32, - TFS(&tfs_yes_no), CUPS_PRINTER_SMALL, NULL, HFILL }}, - { &hf_cups_ptype_sort, - { "Can sort", "cups.ptype.sort", FT_BOOLEAN, 32, - TFS(&tfs_yes_no), CUPS_PRINTER_SORT, NULL, HFILL }}, - { &hf_cups_ptype_bind, - { "Can bind", "cups.ptype.bind", FT_BOOLEAN, 32, - TFS(&tfs_yes_no), CUPS_PRINTER_BIND, NULL, HFILL }}, - { &hf_cups_ptype_cover, - { "Can cover", "cups.ptype.cover", FT_BOOLEAN, 32, - TFS(&tfs_yes_no), CUPS_PRINTER_COVER, NULL, HFILL }}, - { &hf_cups_ptype_punch, - { "Can punch holes", "cups.ptype.punch", FT_BOOLEAN, 32, - TFS(&tfs_yes_no), CUPS_PRINTER_PUNCH, NULL, HFILL }}, - { &hf_cups_ptype_collate, - { "Can do fast collating", "cups.ptype.collate", FT_BOOLEAN, 32, - TFS(&tfs_yes_no), CUPS_PRINTER_COLLATE, NULL, HFILL }}, - { &hf_cups_ptype_copies, - { "Can do fast copies", "cups.ptype.copies", FT_BOOLEAN, 32, - TFS(&tfs_yes_no), CUPS_PRINTER_COPIES, NULL, HFILL }}, - { &hf_cups_ptype_staple, - { "Can staple", "cups.ptype.staple", FT_BOOLEAN, 32, - TFS(&tfs_yes_no), CUPS_PRINTER_STAPLE, NULL, HFILL }}, - { &hf_cups_ptype_duplex, - { "Can duplex", "cups.ptype.duplex", FT_BOOLEAN, 32, - TFS(&tfs_yes_no), CUPS_PRINTER_DUPLEX, NULL, HFILL }}, - { &hf_cups_ptype_color, - { "Can print color", "cups.ptype.color", FT_BOOLEAN, 32, - TFS(&tfs_yes_no), CUPS_PRINTER_COLOR, NULL, HFILL }}, - { &hf_cups_ptype_bw, - { "Can print black", "cups.ptype.bw", FT_BOOLEAN, 32, - TFS(&tfs_yes_no), CUPS_PRINTER_BW, NULL, HFILL }}, - { &hf_cups_ptype_remote, - { "Remote", "cups.ptype.remote", FT_BOOLEAN, 32, - TFS(&tfs_yes_no), CUPS_PRINTER_REMOTE, NULL, HFILL }}, - { &hf_cups_ptype_class, - { "Class", "cups.ptype.class", FT_BOOLEAN, 32, - TFS(&tfs_printer_class), CUPS_PRINTER_CLASS, NULL, HFILL }}, - { &hf_cups_state, - { "State", "cups.state", FT_UINT8, BASE_HEX, - VALS(cups_state_values), 0x0, NULL, HFILL }} - }; - - static gint *ett[] = { - &ett_cups, - &ett_cups_ptype - }; - - proto_cups = proto_register_protocol( - "Common Unix Printing System (CUPS) Browsing Protocol", - "CUPS", "cups"); - proto_register_field_array(proto_cups, hf, array_length(hf)); - proto_register_subtree_array(ett, array_length(ett)); + static hf_register_info hf[] = { + { &hf_cups_ptype, + { "Type", "cups.ptype", FT_UINT32, BASE_HEX, + NULL, 0x0, NULL, HFILL }}, + { &hf_cups_ptype_default, + { "Default printer on network", "cups.ptype.default", FT_BOOLEAN, 32, + TFS(&tfs_yes_no), CUPS_PRINTER_DEFAULT, NULL, HFILL }}, + { &hf_cups_ptype_implicit, + { "Class", "cups.ptype.implicit", FT_BOOLEAN, 32, + TFS(&tfs_implicit_explicit), CUPS_PRINTER_IMPLICIT, NULL, HFILL }}, + { &hf_cups_ptype_variable, + { "Can print variable sizes", "cups.ptype.variable", FT_BOOLEAN, 32, + TFS(&tfs_yes_no), CUPS_PRINTER_VARIABLE, NULL, HFILL }}, + { &hf_cups_ptype_large, + { "Can print up to 36x48 inches", "cups.ptype.large", FT_BOOLEAN, 32, + TFS(&tfs_yes_no), CUPS_PRINTER_LARGE, NULL, HFILL }}, + { &hf_cups_ptype_medium, + { "Can print up to 18x24 inches", "cups.ptype.medium", FT_BOOLEAN, 32, + TFS(&tfs_yes_no), CUPS_PRINTER_MEDIUM, NULL, HFILL }}, + { &hf_cups_ptype_small, + { "Can print up to 9x14 inches", "cups.ptype.small", FT_BOOLEAN, 32, + TFS(&tfs_yes_no), CUPS_PRINTER_SMALL, NULL, HFILL }}, + { &hf_cups_ptype_sort, + { "Can sort", "cups.ptype.sort", FT_BOOLEAN, 32, + TFS(&tfs_yes_no), CUPS_PRINTER_SORT, NULL, HFILL }}, + { &hf_cups_ptype_bind, + { "Can bind", "cups.ptype.bind", FT_BOOLEAN, 32, + TFS(&tfs_yes_no), CUPS_PRINTER_BIND, NULL, HFILL }}, + { &hf_cups_ptype_cover, + { "Can cover", "cups.ptype.cover", FT_BOOLEAN, 32, + TFS(&tfs_yes_no), CUPS_PRINTER_COVER, NULL, HFILL }}, + { &hf_cups_ptype_punch, + { "Can punch holes", "cups.ptype.punch", FT_BOOLEAN, 32, + TFS(&tfs_yes_no), CUPS_PRINTER_PUNCH, NULL, HFILL }}, + { &hf_cups_ptype_collate, + { "Can do fast collating", "cups.ptype.collate", FT_BOOLEAN, 32, + TFS(&tfs_yes_no), CUPS_PRINTER_COLLATE, NULL, HFILL }}, + { &hf_cups_ptype_copies, + { "Can do fast copies", "cups.ptype.copies", FT_BOOLEAN, 32, + TFS(&tfs_yes_no), CUPS_PRINTER_COPIES, NULL, HFILL }}, + { &hf_cups_ptype_staple, + { "Can staple", "cups.ptype.staple", FT_BOOLEAN, 32, + TFS(&tfs_yes_no), CUPS_PRINTER_STAPLE, NULL, HFILL }}, + { &hf_cups_ptype_duplex, + { "Can duplex", "cups.ptype.duplex", FT_BOOLEAN, 32, + TFS(&tfs_yes_no), CUPS_PRINTER_DUPLEX, NULL, HFILL }}, + { &hf_cups_ptype_color, + { "Can print color", "cups.ptype.color", FT_BOOLEAN, 32, + TFS(&tfs_yes_no), CUPS_PRINTER_COLOR, NULL, HFILL }}, + { &hf_cups_ptype_bw, + { "Can print black", "cups.ptype.bw", FT_BOOLEAN, 32, + TFS(&tfs_yes_no), CUPS_PRINTER_BW, NULL, HFILL }}, + { &hf_cups_ptype_remote, + { "Remote", "cups.ptype.remote", FT_BOOLEAN, 32, + TFS(&tfs_yes_no), CUPS_PRINTER_REMOTE, NULL, HFILL }}, + { &hf_cups_ptype_class, + { "Class", "cups.ptype.class", FT_BOOLEAN, 32, + TFS(&tfs_printer_class), CUPS_PRINTER_CLASS, NULL, HFILL }}, + { &hf_cups_state, + { "State", "cups.state", FT_UINT8, BASE_HEX, + VALS(cups_state_values), 0x0, NULL, HFILL }} + }; + + static gint *ett[] = { + &ett_cups, + &ett_cups_ptype + }; + + proto_cups = proto_register_protocol( + "Common Unix Printing System (CUPS) Browsing Protocol", + "CUPS", "cups"); + proto_register_field_array(proto_cups, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); } void proto_reg_handoff_cups(void) { - dissector_handle_t cups_handle; + dissector_handle_t cups_handle; - cups_handle = create_dissector_handle(dissect_cups, proto_cups); - dissector_add_uint("udp.port", UDP_PORT_CUPS, cups_handle); + cups_handle = create_dissector_handle(dissect_cups, proto_cups); + dissector_add_uint("udp.port", UDP_PORT_CUPS, cups_handle); } + +/* + * Editor modelines - http://www.wireshark.org/tools/modelines.html + * + * Local variables: + * c-basic-offset: 4 + * tab-width: 8 + * indent-tabs-mode: nil + * End: + * + * vi: set shiftwidth=4 tabstop=8 expandtab: + * :indentSize=4:tabSize=8:noTabs=true: + */ |