aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-cups.c
diff options
context:
space:
mode:
authorMartin Kaiser <wireshark@kaiser.cx>2013-01-31 20:58:48 +0000
committerMartin Kaiser <wireshark@kaiser.cx>2013-01-31 20:58:48 +0000
commitaa297f4ed3f430a5aee5f7f567fe871a3d95b5f0 (patch)
tree7788aeeaed0c1e47b82ef512b340a958ecd1e2cd /epan/dissectors/packet-cups.c
parenta50877b1e59b8a1d9f120cf53c503c981e63f4f1 (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.c554
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:
+ */