aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/README.dissector8
-rw-r--r--epan/dfilter/dfilter-macro.c2
-rw-r--r--epan/dfilter/dfvm.c2
-rw-r--r--epan/dissectors/packet-fc.c18
-rw-r--r--epan/dissectors/packet-fcdns.c139
-rw-r--r--epan/dissectors/packet-fcels.c64
-rw-r--r--epan/dissectors/packet-fcfcs.c7
-rw-r--r--epan/dissectors/packet-fcsb3.c2
-rw-r--r--epan/dissectors/packet-fcswils.c16
-rw-r--r--epan/dissectors/packet-fip.c17
-rw-r--r--epan/dissectors/packet-isis-hello.c5
-rw-r--r--epan/dissectors/packet-mip6.c14
-rw-r--r--epan/dissectors/packet-ppp.c7
-rw-r--r--epan/dissectors/packet-zbee-zcl-general.c12
-rw-r--r--epan/dissectors/packet-zbee-zcl-ha.c6
-rw-r--r--epan/dissectors/packet-zbee-zcl.c13
-rw-r--r--epan/ftypes/ftype-bytes.c41
-rw-r--r--epan/ftypes/ftype-double.c8
-rw-r--r--epan/ftypes/ftype-guid.c4
-rw-r--r--epan/ftypes/ftype-integer.c28
-rw-r--r--epan/ftypes/ftype-ipv4.c4
-rw-r--r--epan/ftypes/ftype-ipv6.c4
-rw-r--r--epan/ftypes/ftype-pcre.c4
-rw-r--r--epan/ftypes/ftype-string.c4
-rw-r--r--epan/ftypes/ftype-time.c8
-rw-r--r--epan/ftypes/ftype-tvbuff.c4
-rw-r--r--epan/ftypes/ftypes-int.h4
-rw-r--r--epan/ftypes/ftypes.c10
-rw-r--r--epan/ftypes/ftypes.h7
-rw-r--r--epan/print.c4
-rw-r--r--epan/proto.c73
-rw-r--r--epan/proto.h7
-rw-r--r--epan/wslua/wslua_field.c6
-rw-r--r--plugins/mate/mate_util.c2
-rw-r--r--rawshark.c4
-rw-r--r--ui/cli/tap-diameter-avp.c2
-rw-r--r--ui/gtk/packet_panes.c2
-rw-r--r--ui/qt/proto_tree.cpp2
38 files changed, 300 insertions, 264 deletions
diff --git a/doc/README.dissector b/doc/README.dissector
index 78a2723134..c50957459c 100644
--- a/doc/README.dissector
+++ b/doc/README.dissector
@@ -106,7 +106,7 @@ FIELDTYPE FT_NONE, FT_BOOLEAN, FT_UINT8, FT_UINT16, FT_UINT24,
FT_RELATIVE_TIME, FT_STRING, FT_STRINGZ, FT_EUI64,
FT_UINT_STRING, FT_ETHER, FT_BYTES, FT_UINT_BYTES, FT_IPv4,
FT_IPv6, FT_IPXNET, FT_FRAMENUM, FT_PROTOCOL, FT_GUID, FT_OID,
- FT_REL_OID, FT_AX25, FT_VINES, FT_SYSTEM_ID, FT_FCWWN
+ FT_REL_OID, FT_AX25, FT_VINES, FT_SYSTEM_ID, FT_FC, FT_FCWWN
FIELDDISPLAY --For FT_UINT{8,16,24,32,64} and FT_INT{8,16,24,32,64):
@@ -131,6 +131,12 @@ FIELDDISPLAY --For FT_UINT{8,16,24,32,64} and FT_INT{8,16,24,32,64):
STR_ASCII or STR_UNICODE
+ --For FT_BYTES:
+
+ BASE_DOT, BASE_DASH, or BASE_SEMICOLON to provide a
+ separator between bytes.
+ BASE_NONE has no separator between bytes
+
--For all other types:
BASE_NONE
diff --git a/epan/dfilter/dfilter-macro.c b/epan/dfilter/dfilter-macro.c
index 4a54e58a45..772d9e3e79 100644
--- a/epan/dfilter/dfilter-macro.c
+++ b/epan/dfilter/dfilter-macro.c
@@ -79,7 +79,7 @@ static gboolean fvt_cache_cb(proto_node * node, gpointer data _U_) {
}
e = g_new(fvt_cache_entry_t,1);
e->name = finfo->hfinfo->abbrev,
- e->repr = fvalue_to_string_repr(&(finfo->value), FTREPR_DFILTER, NULL);
+ e->repr = fvalue_to_string_repr(&(finfo->value), FTREPR_DFILTER, finfo->hfinfo->display, NULL);
e->usable = TRUE;
g_hash_table_insert(fvt_cache,(void*)finfo->hfinfo->abbrev,e);
}
diff --git a/epan/dfilter/dfvm.c b/epan/dfilter/dfvm.c
index fbb7a4986a..2ce422c5d8 100644
--- a/epan/dfilter/dfvm.c
+++ b/epan/dfilter/dfvm.c
@@ -110,7 +110,7 @@ dfvm_dump(FILE *f, dfilter_t *df)
switch (insn->op) {
case PUT_FVALUE:
value_str = fvalue_to_string_repr(arg1->value.fvalue,
- FTREPR_DFILTER, NULL);
+ FTREPR_DFILTER, BASE_NONE, NULL);
fprintf(f, "%05d PUT_FVALUE\t%s <%s> -> reg#%u\n",
id, value_str,
fvalue_type_name(arg1->value.fvalue),
diff --git a/epan/dissectors/packet-fc.c b/epan/dissectors/packet-fc.c
index f4102dbb99..68b8440dd4 100644
--- a/epan/dissectors/packet-fc.c
+++ b/epan/dissectors/packet-fc.c
@@ -956,20 +956,16 @@ dissect_fc_helper (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean
/* XXX - use "fc_wka_vals[]" on this? */
SET_ADDRESS(&addr, AT_FC, 3, fchdr.d_id.data);
- proto_tree_add_string (fc_tree, hf_fc_did, tvb, offset+1, 3,
- address_to_str(wmem_packet_scope(), &addr));
- hidden_item = proto_tree_add_string (fc_tree, hf_fc_id, tvb, offset+1, 3,
- address_to_str(wmem_packet_scope(), &addr));
+ proto_tree_add_item(fc_tree, hf_fc_did, tvb, offset+1, 3, ENC_NA);
+ hidden_item = proto_tree_add_item (fc_tree, hf_fc_id, tvb, offset+1, 3, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
proto_tree_add_uint (fc_tree, hf_fc_csctl, tvb, offset+4, 1, fchdr.cs_ctl);
/* XXX - use "fc_wka_vals[]" on this? */
SET_ADDRESS(&addr, AT_FC, 3, fchdr.s_id.data);
- proto_tree_add_string (fc_tree, hf_fc_sid, tvb, offset+5, 3,
- address_to_str(wmem_packet_scope(), &addr));
- hidden_item = proto_tree_add_string (fc_tree, hf_fc_id, tvb, offset+5, 3,
- address_to_str(wmem_packet_scope(), &addr));
+ proto_tree_add_item(fc_tree, hf_fc_sid, tvb, offset+5, 3, ENC_NA);
+ hidden_item = proto_tree_add_item (fc_tree, hf_fc_id, tvb, offset+5, 3, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
if (ftype == FC_FTYPE_LINKCTL) {
@@ -1415,16 +1411,16 @@ proto_register_fc(void)
{"Frame type", "fc.ftype", FT_UINT8, BASE_HEX, VALS(fc_ftype_vals),
0x0, "Derived Type", HFILL}},
{ &hf_fc_did,
- { "Dest Addr", "fc.d_id", FT_STRING, BASE_NONE, NULL, 0x0,
+ { "Dest Addr", "fc.d_id", FT_BYTES, BASE_DOT, NULL, 0x0,
"Destination Address", HFILL}},
{ &hf_fc_csctl,
{"CS_CTL", "fc.cs_ctl", FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL}},
{ &hf_fc_sid,
- {"Src Addr", "fc.s_id", FT_STRING, BASE_NONE, NULL, 0x0,
+ {"Src Addr", "fc.s_id", FT_BYTES, BASE_DOT, NULL, 0x0,
"Source Address", HFILL}},
{ &hf_fc_id,
- {"Addr", "fc.id", FT_STRING, BASE_NONE, NULL, 0x0,
+ {"Addr", "fc.id", FT_BYTES, BASE_DOT, NULL, 0x0,
"Source or Destination Address", HFILL}},
{ &hf_fc_type,
{"Type", "fc.type", FT_UINT8, BASE_HEX, VALS (fc_fc4_val), 0x0,
diff --git a/epan/dissectors/packet-fcdns.c b/epan/dissectors/packet-fcdns.c
index 271c9f2996..ba6e0b471a 100644
--- a/epan/dissectors/packet-fcdns.c
+++ b/epan/dissectors/packet-fcdns.c
@@ -67,7 +67,7 @@ static header_field_info hfi_fcdns_vendor FCDNS_HFI_INIT =
BASE_HEX, NULL, 0x0, NULL, HFILL};
static header_field_info hfi_fcdns_req_portid FCDNS_HFI_INIT =
- {"Port Identifier", "fcdns.req.portid", FT_STRING, BASE_NONE, NULL, 0x0,
+ {"Port Identifier", "fcdns.req.portid", FT_BYTES, BASE_DOT, NULL, 0x0,
NULL, HFILL};
static header_field_info hfi_fcdns_rply_pname FCDNS_HFI_INIT =
@@ -115,7 +115,7 @@ static header_field_info hfi_fcdns_req_pname FCDNS_HFI_INIT =
NULL, HFILL};
static header_field_info hfi_fcdns_rply_portid FCDNS_HFI_INIT =
- {"Port Identifier", "fcdns.rply.portid", FT_STRING, BASE_NONE, NULL,
+ {"Port Identifier", "fcdns.rply.portid", FT_BYTES, BASE_DOT, NULL,
0x0, NULL, HFILL};
static header_field_info hfi_fcdns_req_nname FCDNS_HFI_INIT =
@@ -183,7 +183,7 @@ static header_field_info hfi_fcdns_rply_fc4desclen FCDNS_HFI_INIT =
BASE_DEC, NULL, 0x0, NULL, HFILL};
static header_field_info hfi_fcdns_rply_hrdaddr FCDNS_HFI_INIT =
- {"Hard Address", "fcdns.rply.hrdaddr", FT_STRING, BASE_NONE, NULL,
+ {"Hard Address", "fcdns.rply.hrdaddr", FT_BYTES, BASE_DOT, NULL,
0x0, NULL, HFILL};
static header_field_info hfi_fcdns_req_fdesclen FCDNS_HFI_INIT =
@@ -562,10 +562,7 @@ dissect_fc4type (proto_tree *parent_tree, tvbuff_t *tvb, int offset, header_fiel
static void
dissect_fcdns_req_portid (tvbuff_t *tvb, proto_tree *tree, int offset)
{
- if (tree) {
- proto_tree_add_string (tree, &hfi_fcdns_req_portid, tvb, offset, 3,
- tvb_fc_to_str (tvb, offset));
- }
+ proto_tree_add_item (tree, &hfi_fcdns_req_portid, tvb, offset, 3, ENC_NA);
}
static void
@@ -581,9 +578,8 @@ dissect_fcdns_ganxt (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
else {
proto_tree_add_item (req_tree, &hfi_fcdns_rply_ptype, tvb, offset,
1, ENC_BIG_ENDIAN);
- proto_tree_add_string (req_tree, &hfi_fcdns_rply_portid, tvb,
- offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ proto_tree_add_item (req_tree, &hfi_fcdns_rply_portid, tvb,
+ offset+1, 3, ENC_NA);
proto_tree_add_item (req_tree, &hfi_fcdns_rply_pname, tvb,
offset+4, 8, ENC_NA);
len = tvb_get_guint8 (tvb, offset+12);
@@ -633,9 +629,8 @@ dissect_fcdns_ganxt (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
offset+608, 8, ENC_NA);
}
if (tvb_offset_exists (tvb, 635)) {
- proto_tree_add_string (req_tree, &hfi_fcdns_rply_hrdaddr, tvb,
- offset+617, 3,
- tvb_fc_to_str (tvb, offset+617));
+ proto_tree_add_item (req_tree, &hfi_fcdns_rply_hrdaddr, tvb,
+ offset+617, 3, ENC_NA);
}
}
}
@@ -808,9 +803,8 @@ dissect_fcdns_gidpn (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
offset, 8, ENC_NA);
}
else {
- proto_tree_add_string (req_tree, &hfi_fcdns_rply_portid, tvb,
- offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ proto_tree_add_item (req_tree, &hfi_fcdns_rply_portid, tvb,
+ offset+1, 3, ENC_NA);
}
}
}
@@ -846,9 +840,8 @@ dissect_fcdns_gidnn (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
else {
do {
islast = tvb_get_guint8 (tvb, offset);
- proto_tree_add_string (req_tree, &hfi_fcdns_rply_portid,
- tvb, offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ proto_tree_add_item (req_tree, &hfi_fcdns_rply_portid,
+ tvb, offset+1, 3, ENC_NA);
offset += 4;
} while (!(islast & 0x80));
}
@@ -886,9 +879,8 @@ dissect_fcdns_gpnnn (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
else {
do {
islast = tvb_get_guint8 (tvb, offset);
- proto_tree_add_string (req_tree, &hfi_fcdns_rply_portid,
- tvb, offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ proto_tree_add_item (req_tree, &hfi_fcdns_rply_portid,
+ tvb, offset+1, 3, ENC_NA);
proto_tree_add_item (req_tree, &hfi_fcdns_rply_pname,
tvb, offset+8, 8, ENC_NA);
offset += 16;
@@ -936,9 +928,8 @@ dissect_fcdns_gidft (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
else {
do {
islast = tvb_get_guint8 (tvb, offset);
- proto_tree_add_string (req_tree, &hfi_fcdns_rply_portid,
- tvb, offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ proto_tree_add_item (req_tree, &hfi_fcdns_rply_portid,
+ tvb, offset+1, 3, ENC_NA);
offset += 4;
} while (!(islast & 0x80));
}
@@ -963,9 +954,8 @@ dissect_fcdns_gpnft (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
else {
do {
islast = tvb_get_guint8 (tvb, offset);
- proto_tree_add_string (req_tree, &hfi_fcdns_rply_portid,
- tvb, offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ proto_tree_add_item (req_tree, &hfi_fcdns_rply_portid,
+ tvb, offset+1, 3, ENC_NA);
proto_tree_add_item (req_tree, &hfi_fcdns_rply_pname,
tvb, offset+4, 8, ENC_NA);
offset += 16;
@@ -992,9 +982,8 @@ dissect_fcdns_gnnft (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
else {
do {
islast = tvb_get_guint8 (tvb, offset);
- proto_tree_add_string (req_tree, &hfi_fcdns_rply_portid,
- tvb, offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ proto_tree_add_item (req_tree, &hfi_fcdns_rply_portid,
+ tvb, offset+1, 3, ENC_NA);
proto_tree_add_item (req_tree, &hfi_fcdns_rply_nname,
tvb, offset+4, 8, ENC_NA);
offset += 16;
@@ -1021,9 +1010,8 @@ dissect_fcdns_gidpt (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
else {
do {
islast = tvb_get_guint8 (tvb, offset);
- proto_tree_add_string (req_tree, &hfi_fcdns_rply_portid,
- tvb, offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ proto_tree_add_item (req_tree, &hfi_fcdns_rply_portid,
+ tvb, offset+1, 3, ENC_NA);
offset += 4;
} while (!(islast & 0x80));
}
@@ -1044,9 +1032,8 @@ dissect_fcdns_gidipp (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
else {
do {
islast = tvb_get_guint8 (tvb, offset);
- proto_tree_add_string (req_tree, &hfi_fcdns_rply_portid,
- tvb, offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ proto_tree_add_item (req_tree, &hfi_fcdns_rply_portid,
+ tvb, offset+1, 3, ENC_NA);
offset += 4;
} while (!(islast & 0x80));
}
@@ -1070,9 +1057,8 @@ dissect_fcdns_gidff (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
else {
do {
islast = tvb_get_guint8 (tvb, offset);
- proto_tree_add_string (req_tree, &hfi_fcdns_rply_portid,
- tvb, offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ proto_tree_add_item (req_tree, &hfi_fcdns_rply_portid,
+ tvb, offset+1, 3, ENC_NA);
offset += 4;
} while (!(islast & 0x80));
}
@@ -1086,9 +1072,8 @@ dissect_fcdns_rpnid (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
if (req_tree) {
if (isreq) {
- proto_tree_add_string (req_tree, &hfi_fcdns_req_portid,
- tvb, offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ proto_tree_add_item (req_tree, &hfi_fcdns_req_portid,
+ tvb, offset+1, 3, ENC_NA);
proto_tree_add_item (req_tree, &hfi_fcdns_req_pname, tvb,
offset+4, 8, ENC_NA);
}
@@ -1102,9 +1087,8 @@ dissect_fcdns_rnnid (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
if (req_tree) {
if (isreq) {
- proto_tree_add_string (req_tree, &hfi_fcdns_req_portid,
- tvb, offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ proto_tree_add_item (req_tree, &hfi_fcdns_req_portid,
+ tvb, offset+1, 3, ENC_NA);
proto_tree_add_item (req_tree, &hfi_fcdns_req_nname, tvb,
offset+4, 8, ENC_NA);
}
@@ -1117,9 +1101,8 @@ dissect_fcdns_rcsid (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
int offset = 16; /* past the fc_ct header */
if (req_tree && isreq) {
- proto_tree_add_string (req_tree, &hfi_fcdns_req_portid, tvb,
- offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ proto_tree_add_item (req_tree, &hfi_fcdns_req_portid, tvb,
+ offset+1, 3, ENC_NA);
dissect_cos_flags(req_tree, tvb, offset+4, &hfi_fcdns_req_cos);
}
}
@@ -1129,10 +1112,9 @@ dissect_fcdns_rptid (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
{
int offset = 16; /* past the fc_ct header */
- if (req_tree && isreq) {
- proto_tree_add_string (req_tree, &hfi_fcdns_req_portid, tvb,
- offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ if (isreq) {
+ proto_tree_add_item (req_tree, &hfi_fcdns_req_portid, tvb,
+ offset+1, 3, ENC_NA);
proto_tree_add_item (req_tree, &hfi_fcdns_req_ptype, tvb,
offset+4, 1, ENC_BIG_ENDIAN);
}
@@ -1143,10 +1125,9 @@ dissect_fcdns_rftid (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
{
int offset = 16; /* past the fc_ct header */
- if (req_tree && isreq) {
- proto_tree_add_string (req_tree, &hfi_fcdns_req_portid, tvb,
- offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ if (isreq) {
+ proto_tree_add_item (req_tree, &hfi_fcdns_req_portid, tvb,
+ offset+1, 3, ENC_NA);
dissect_fc4type(req_tree, tvb, offset+4, &hfi_fcdns_req_fc4types);
}
}
@@ -1158,9 +1139,8 @@ dissect_fcdns_rspnid (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
guint8 len;
if (req_tree && isreq) {
- proto_tree_add_string (req_tree, &hfi_fcdns_req_portid, tvb,
- offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ proto_tree_add_item (req_tree, &hfi_fcdns_req_portid, tvb,
+ offset+1, 3, ENC_NA);
proto_tree_add_item (req_tree, &hfi_fcdns_req_spnamelen, tvb,
offset+4, 1, ENC_BIG_ENDIAN);
len = tvb_get_guint8 (tvb, offset+4);
@@ -1175,10 +1155,9 @@ dissect_fcdns_rippid (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
{
int offset = 16; /* past the fc_ct header */
- if (req_tree && isreq) {
- proto_tree_add_string (req_tree, &hfi_fcdns_req_portid, tvb,
- offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ if (isreq) {
+ proto_tree_add_item (req_tree, &hfi_fcdns_req_portid, tvb,
+ offset+1, 3, ENC_NA);
proto_tree_add_item (req_tree, &hfi_fcdns_req_ip, tvb,
offset+4, 16, ENC_NA);
}
@@ -1190,10 +1169,9 @@ dissect_fcdns_rfdid (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
int offset = 16; /* past the fc_ct header */
int len;
- if (req_tree && isreq) {
- proto_tree_add_string (req_tree, &hfi_fcdns_req_portid, tvb,
- offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ if (isreq) {
+ proto_tree_add_item (req_tree, &hfi_fcdns_req_portid, tvb,
+ offset+1, 3, ENC_NA);
dissect_fc4type(req_tree, tvb, offset+4, &hfi_fcdns_req_fc4types);
offset += 36;
@@ -1215,9 +1193,8 @@ dissect_fcdns_rffid (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
{
int offset = 16; /* past the fc_ct header */
- if (req_tree && isreq) {
- proto_tree_add_string (req_tree, &hfi_fcdns_req_portid, tvb, offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ if (isreq) {
+ proto_tree_add_item (req_tree, &hfi_fcdns_req_portid, tvb, offset+1, 3, ENC_NA);
dissect_fc4features_and_type(req_tree, tvb, offset+6);
}
}
@@ -1255,9 +1232,8 @@ dissect_fcdns_daid (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
{
int offset = 16; /* past the fc_ct header */
- if (req_tree && isreq) {
- proto_tree_add_string (req_tree, &hfi_fcdns_req_portid, tvb, offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ if (isreq) {
+ proto_tree_add_item (req_tree, &hfi_fcdns_req_portid, tvb, offset+1, 3, ENC_NA);
}
}
@@ -1326,12 +1302,10 @@ dissect_fcdns_swils_entries (tvbuff_t *tvb, proto_tree *tree, int offset)
objfmt = tvb_get_guint8 (tvb, offset);
proto_tree_add_item (tree, &hfi_fcdns_sw2_objfmt, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_string (tree, &hfi_fcdns_rply_ownerid, tvb, offset+1,
- 3, tvb_fc_to_str (tvb, offset+1));
+ proto_tree_add_item (tree, &hfi_fcdns_rply_ownerid, tvb, offset+1, 3, ENC_NA);
proto_tree_add_item (tree, &hfi_fcdns_rply_ptype, tvb, offset+4,
1, ENC_BIG_ENDIAN);
- proto_tree_add_string (tree, &hfi_fcdns_rply_portid, tvb, offset+5, 3,
- tvb_fc_to_str (tvb, offset+5));
+ proto_tree_add_item (tree, &hfi_fcdns_rply_portid, tvb, offset+5, 3, ENC_NA);
proto_tree_add_item (tree, &hfi_fcdns_rply_pname, tvb, offset+8, 8, ENC_NA);
offset += 16;
if (!(objfmt & 0x1)) {
@@ -1361,8 +1335,8 @@ dissect_fcdns_swils_entries (tvbuff_t *tvb, proto_tree *tree, int offset)
16, ENC_NA);
proto_tree_add_item (tree, &hfi_fcdns_rply_fpname, tvb, offset+76,
8, ENC_NA);
- proto_tree_add_string (tree, &hfi_fcdns_rply_hrdaddr, tvb, offset+85,
- 3, tvb_fc_to_str (tvb, offset+85));
+ proto_tree_add_item (tree, &hfi_fcdns_rply_hrdaddr, tvb, offset+85,
+ 3, ENC_NA);
offset += 88;
if (objfmt & 0x2) {
dissect_fc4features(tree, tvb, offset);
@@ -1393,10 +1367,7 @@ dissect_fcdns_geid (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
int offset = 16; /* past the fc_ct header */
if (isreq) {
- if (req_tree) {
- proto_tree_add_string (req_tree, &hfi_fcdns_req_portid, tvb, offset+1,
- 3, tvb_fc_to_str (tvb, offset+1));
- }
+ proto_tree_add_item (req_tree, &hfi_fcdns_req_portid, tvb, offset+1, 3, ENC_NA);
}
else {
dissect_fcdns_swils_entries (tvb, req_tree, offset);
diff --git a/epan/dissectors/packet-fcels.c b/epan/dissectors/packet-fcels.c
index c91f2a9159..eb3f0c39ac 100644
--- a/epan/dissectors/packet-fcels.c
+++ b/epan/dissectors/packet-fcels.c
@@ -1262,8 +1262,7 @@ dissect_fcels_logout (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return;
}
- proto_tree_add_string (logo_tree, hf_fcels_nportid, tvb, offset, 3,
- tvb_fc_to_str (tvb, offset));
+ proto_tree_add_item (logo_tree, hf_fcels_nportid, tvb, offset, 3, ENC_NA);
proto_tree_add_item (logo_tree, hf_fcels_npname, tvb, offset+3, 6, ENC_NA);
}
}
@@ -1286,8 +1285,7 @@ dissect_fcels_abtx (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
}
proto_tree_add_item(abtx_tree, hf_fcels_recovery_qualifier_status, tvb, offset+4, 1, ENC_BIG_ENDIAN);
- proto_tree_add_string (abtx_tree, hf_fcels_nportid, tvb, offset+5, 3,
- tvb_fc_to_str (tvb, offset+5));
+ proto_tree_add_item (abtx_tree, hf_fcels_nportid, tvb, offset+5, 3, ENC_NA);
proto_tree_add_item (abtx_tree, hf_fcels_oxid, tvb, offset+8, 2, ENC_BIG_ENDIAN);
proto_tree_add_item (abtx_tree, hf_fcels_rxid, tvb, offset+10, 2, ENC_BIG_ENDIAN);
}
@@ -1309,8 +1307,7 @@ dissect_fcels_rsi (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return;
proto_tree_add_item (rsi_tree, hf_fcels_recovqual, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_string (rsi_tree, hf_fcels_nportid, tvb, offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ proto_tree_add_item (rsi_tree, hf_fcels_nportid, tvb, offset+1, 3, ENC_NA);
proto_tree_add_item (rsi_tree, hf_fcels_rxid, tvb, offset+4, 2, ENC_BIG_ENDIAN);
proto_tree_add_item (rsi_tree, hf_fcels_oxid, tvb, offset+6, 2, ENC_BIG_ENDIAN);
}
@@ -1331,8 +1328,7 @@ dissect_fcels_rrq (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
if (!isreq)
return;
- proto_tree_add_string (rrq_tree, hf_fcels_nportid, tvb, offset+5, 3,
- tvb_fc_to_str (tvb, offset+5));
+ proto_tree_add_item (rrq_tree, hf_fcels_nportid, tvb, offset+5, 3, ENC_NA);
proto_tree_add_item (rrq_tree, hf_fcels_oxid, tvb, offset+8, 2, ENC_BIG_ENDIAN);
proto_tree_add_item (rrq_tree, hf_fcels_rxid, tvb, offset+10, 2, ENC_BIG_ENDIAN);
}
@@ -1352,9 +1348,8 @@ dissect_fcels_rec (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
proto_tree_add_item (rec_tree, hf_fcels_opcode, tvb, offset, 1, ENC_BIG_ENDIAN);
if (isreq) {
- proto_tree_add_string (rec_tree, hf_fcels_nportid, tvb,
- offset+5, 3,
- tvb_fc_to_str (tvb, offset+5));
+ proto_tree_add_item (rec_tree, hf_fcels_nportid, tvb,
+ offset+5, 3, ENC_NA);
proto_tree_add_item (rec_tree, hf_fcels_oxid, tvb,
offset+8, 2, ENC_BIG_ENDIAN);
proto_tree_add_item (rec_tree, hf_fcels_rxid, tvb,
@@ -1364,12 +1359,10 @@ dissect_fcels_rec (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
offset+4, 2, ENC_BIG_ENDIAN);
proto_tree_add_item (rec_tree, hf_fcels_rxid, tvb,
offset+6, 2, ENC_BIG_ENDIAN);
- proto_tree_add_string (rec_tree, hf_fcels_nportid, tvb,
- offset+9, 3,
- tvb_fc_to_str (tvb, offset+9));
- proto_tree_add_string (rec_tree, hf_fcels_resportid, tvb,
- offset+13, 3,
- tvb_fc_to_str (tvb, offset+13));
+ proto_tree_add_item (rec_tree, hf_fcels_nportid, tvb,
+ offset+9, 3, ENC_NA);
+ proto_tree_add_item (rec_tree, hf_fcels_resportid, tvb,
+ offset+13, 3, ENC_NA);
proto_tree_add_item (rec_tree, hf_fcels_rec_fc4, tvb,
offset+16, 4, ENC_BIG_ENDIAN);
proto_tree_add_bitmask (rec_tree, tvb, offset+20, hf_fcels_estat,
@@ -1406,12 +1399,10 @@ dissect_fcels_adisc (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
proto_tree_add_item (adisc_tree, hf_fcels_opcode, tvb, offset-5, 1, ENC_BIG_ENDIAN);
- proto_tree_add_string (adisc_tree, hf_fcels_hardaddr, tvb, offset, 3,
- tvb_fc_to_str (tvb, offset));
+ proto_tree_add_item (adisc_tree, hf_fcels_hardaddr, tvb, offset, 3, ENC_NA);
proto_tree_add_item (adisc_tree, hf_fcels_npname, tvb, offset+3, 8, ENC_NA);
proto_tree_add_item (adisc_tree, hf_fcels_fnname, tvb, offset+11, 8, ENC_NA);
- proto_tree_add_string (adisc_tree, hf_fcels_nportid, tvb, offset+20, 3,
- tvb_fc_to_str (tvb, offset+20));
+ proto_tree_add_item (adisc_tree, hf_fcels_nportid, tvb, offset+20, 3, ENC_NA);
}
}
@@ -1430,12 +1421,12 @@ dissect_fcels_farp (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
proto_tree_add_item (farp_tree, hf_fcels_farp_matchcodept,
tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_string (farp_tree, hf_fcels_nportid, tvb, offset+1,
- 3, tvb_fc_to_str (tvb, offset+1));
+ proto_tree_add_item (farp_tree, hf_fcels_nportid, tvb, offset+1,
+ 3, ENC_NA);
proto_tree_add_item (farp_tree, hf_fcels_farp_respaction, tvb,
offset+4, 1, ENC_BIG_ENDIAN);
- proto_tree_add_string (farp_tree, hf_fcels_resportid, tvb, offset+5,
- 3, tvb_fc_to_str (tvb, offset+5));
+ proto_tree_add_item (farp_tree, hf_fcels_resportid, tvb, offset+5,
+ 3, ENC_NA);
proto_tree_add_item (farp_tree, hf_fcels_npname, tvb, offset+8, 8, ENC_NA);
proto_tree_add_item (farp_tree, hf_fcels_fnname, tvb, offset+16, 8, ENC_NA);
proto_tree_add_item (farp_tree, hf_fcels_respname, tvb, offset+24,
@@ -1546,7 +1537,7 @@ dissect_fcels_rpl (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
ett_fcels_rplpb, NULL, "Port Block %u", loop);
proto_tree_add_item(pb_tree, hf_fcels_rpl_physical_port, tvb, offset, 4, ENC_BIG_ENDIAN);
- proto_tree_add_string(pb_tree, hf_fcels_rpl_port_identifier, tvb, offset+5, 3, tvb_fc_to_str (tvb, offset+5));
+ proto_tree_add_item(pb_tree, hf_fcels_rpl_port_identifier, tvb, offset+5, 3, ENC_NA);
proto_tree_add_item(pb_tree, hf_fcels_rpl_port_name, tvb, offset+8, 8, ENC_NA);
offset += 16;
}
@@ -1567,8 +1558,7 @@ dissect_fcels_fan (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
proto_tree_add_item (fan_tree, hf_fcels_opcode, tvb, offset-5, 1, ENC_BIG_ENDIAN);
- proto_tree_add_string (fan_tree, hf_fcels_fabricaddr, tvb, offset, 3,
- tvb_fc_to_str (tvb, offset));
+ proto_tree_add_item (fan_tree, hf_fcels_fabricaddr, tvb, offset, 3, ENC_NA);
proto_tree_add_item (fan_tree, hf_fcels_fabricpname, tvb, offset+3,
8, ENC_NA);
proto_tree_add_item (fan_tree, hf_fcels_fnname, tvb, offset+11, 8, ENC_NA);
@@ -1754,7 +1744,7 @@ dissect_fcels_prlilo_payload (tvbuff_t *tvb, packet_info *pinfo _U_,
proto_tree_add_item(svcpg_tree, hf_fcels_prlilo_service_parameter_response, tvb, offset+12, 4, ENC_BIG_ENDIAN);
}
else if (opcode == FC_ELS_TPRLO) {
- proto_tree_add_string(svcpg_tree, hf_fcels_prlilo_3rd_party_n_port_id, tvb, offset+13, 3, tvb_fc_to_str (tvb, offset+13));
+ proto_tree_add_item(svcpg_tree, hf_fcels_prlilo_3rd_party_n_port_id, tvb, offset+13, 3, ENC_NA);
}
}
}
@@ -1835,7 +1825,7 @@ dissect_fcels_srl (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return;
proto_tree_add_item(srl_tree, hf_fcels_srl_flag, tvb, offset, 1, ENC_NA);
- proto_tree_add_string(srl_tree, hf_fcels_srl_fl_port_addr, tvb, offset+1, 3, tvb_fc_to_str (tvb, offset+1));
+ proto_tree_add_item(srl_tree, hf_fcels_srl_fl_port_addr, tvb, offset+1, 3, ENC_NA);
}
}
@@ -2386,7 +2376,7 @@ proto_register_fcels (void)
{"Open Seq Per Exchg", "fcels.logi.openseq", FT_UINT8, BASE_DEC, NULL, 0x0,
NULL, HFILL}},
{ &hf_fcels_nportid,
- {"Originator S_ID", "fcels.portid", FT_STRING, BASE_NONE, NULL, 0x0,
+ {"Originator S_ID", "fcels.portid", FT_BYTES, BASE_DOT, NULL, 0x0,
NULL, HFILL}},
{ &hf_fcels_oxid,
{"OXID", "fcels.oxid", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}},
@@ -2396,7 +2386,7 @@ proto_register_fcels (void)
{"Recovery Qualifier", "fcels.rcovqual", FT_UINT8, BASE_HEX, NULL,
0x0, NULL, HFILL}},
{ &hf_fcels_fabricaddr,
- {"Fabric Address", "fcels.faddr", FT_STRING, BASE_NONE, NULL, 0x0, NULL,
+ {"Fabric Address", "fcels.faddr", FT_BYTES, BASE_DOT, NULL, 0x0, NULL,
HFILL}},
{ &hf_fcels_fabricpname,
{"Fabric Port Name", "fcels.fpname", FT_FCWWN, BASE_NONE, NULL, 0x0,
@@ -2429,7 +2419,7 @@ proto_register_fcels (void)
{"Responder Action", "fcels.respaction", FT_UINT8, BASE_HEX,
VALS (fc_els_farp_respaction_val), 0x0, NULL, HFILL}},
{ &hf_fcels_resportid,
- {"Responding Port ID", "fcels.resportid", FT_STRING, BASE_NONE,
+ {"Responding Port ID", "fcels.resportid", FT_BYTES, BASE_DOT,
NULL, 0x0, NULL, HFILL}},
{ &hf_fcels_respname,
{"Responding Port Name", "fcels.respname", FT_FCWWN, BASE_NONE,
@@ -2444,7 +2434,7 @@ proto_register_fcels (void)
{"Responding IP Address", "fcels.respipaddr", FT_IPv6, BASE_NONE,
NULL, 0x0, NULL, HFILL}},
{ &hf_fcels_hardaddr,
- {"Hard Address of Originator", "fcels.hrdaddr", FT_STRING, BASE_NONE,
+ {"Hard Address of Originator", "fcels.hrdaddr", FT_BYTES, BASE_DOT,
NULL, 0x0, NULL, HFILL}},
{ &hf_fcels_rps_flag,
{"Flag", "fcels.flag", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}},
@@ -2726,7 +2716,7 @@ proto_register_fcels (void)
{ &hf_fcels_rpl_list_length, { "List Length", "fcels.rpl.list_length", FT_UINT24, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_fcels_rpl_index_of_i_port_block, { "Index of I Port Block", "fcels.rpl.index_of_i_port_block", FT_UINT24, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_fcels_rpl_physical_port, { "Physical Port #", "fcels.rpl.physical_port", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_fcels_rpl_port_identifier, { "Port Identifier", "fcels.rpl.port_identifier", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_fcels_rpl_port_identifier, { "Port Identifier", "fcels.rpl.port_identifier", FT_BYTES, BASE_DOT, NULL, 0x0, NULL, HFILL }},
{ &hf_fcels_rpl_port_name, { "Port Name", "fcels.rpl.port_name", FT_FCWWN, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_fcels_rscn_page_len, { "Page Len", "fcels.rscn.page_len", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_fcels_rscn_payload_len, { "Payload Len", "fcels.rscn.payload_len", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
@@ -2745,11 +2735,11 @@ proto_register_fcels (void)
{ &hf_fcels_prlilo_3rd_party_originator_pa, { "3rd Party Originator PA", "fcels.prlilo.3rd_party_originator_pa", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_fcels_prlilo_responder_pa, { "Responder PA", "fcels.prlilo.responder_pa", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_fcels_prlilo_service_parameter_response, { "Service Parameter Response", "fcels.prlilo.service_parameter_response", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
- { &hf_fcels_prlilo_3rd_party_n_port_id, { "3rd Party N_Port Id", "fcels.prlilo.3rd_party_n_port_id", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_fcels_prlilo_3rd_party_n_port_id, { "3rd Party N_Port Id", "fcels.prlilo.3rd_party_n_port_id", FT_BYTES, BASE_DOT, NULL, 0x0, NULL, HFILL }},
{ &hf_fcels_lirr_regn_function, { "Regn. Function", "fcels.lirr.regn_function", FT_UINT8, BASE_HEX, VALS(fc_els_lirr_regfunc_val), 0x0, NULL, HFILL }},
{ &hf_fcels_lirr_regn_format, { "Regn. Format", "fcels.lirr.regn_format", FT_UINT8, BASE_HEX, VALS(fc_fc4_val), 0x0, NULL, HFILL }},
{ &hf_fcels_srl_flag, { "Flag", "fcels.srl.flag", FT_BOOLEAN, 8, TFS(&tfs_srl_flag), 0x01, NULL, HFILL }},
- { &hf_fcels_srl_fl_port_addr, { "FL_Port Addr", "fcels.srl.fl_port_addr", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_fcels_srl_fl_port_addr, { "FL_Port Addr", "fcels.srl.fl_port_addr", FT_BYTES, BASE_DOT, NULL, 0x0, NULL, HFILL }},
{ &hf_fcels_rpsc_number_of_entries, { "Number of Entries", "fcels.rpsc.number_of_entries", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_fcels_rpsc_port_oper_speed, { "Port Oper Speed", "fcels.rpsc.port_oper_speed", FT_UINT16, BASE_HEX, VALS(fc_els_portspeed_val), 0x0, NULL, HFILL }},
{ &hf_fcels_common_identification_data_length, { "Common Identification Data Length", "fcels.common_identification_data_length", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
diff --git a/epan/dissectors/packet-fcfcs.c b/epan/dissectors/packet-fcfcs.c
index 57c2e6ae17..303e6559db 100644
--- a/epan/dissectors/packet-fcfcs.c
+++ b/epan/dissectors/packet-fcfcs.c
@@ -183,8 +183,7 @@ dissect_fcfcs_gmid (tvbuff_t *tvb, proto_tree *tree, gboolean isreq)
proto_tree_add_item (tree, hf_fcs_iename, tvb, offset, 8, ENC_NA);
}
else {
- proto_tree_add_string (tree, hf_fcs_mgmtid, tvb, offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
+ proto_tree_add_item (tree, hf_fcs_mgmtid, tvb, offset+1, 3, ENC_NA);
}
}
}
@@ -970,8 +969,8 @@ proto_register_fcfcs (void)
{"Interconnect Element Domain ID", "fcs.ie.domainid", FT_UINT8,
BASE_HEX, NULL, 0x0, NULL, HFILL}},
{ &hf_fcs_mgmtid,
- {"Interconnect Element Mgmt. ID", "fcs.ie.mgmtid", FT_STRING,
- BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ {"Interconnect Element Mgmt. ID", "fcs.ie.mgmtid", FT_BYTES,
+ BASE_DOT, NULL, 0x0, NULL, HFILL}},
{ &hf_fcs_fabricname,
{"Interconnect Element Fabric Name", "fcs.ie.fname", FT_FCWWN,
BASE_NONE, NULL, 0x0, NULL, HFILL}},
diff --git a/epan/dissectors/packet-fcsb3.c b/epan/dissectors/packet-fcsb3.c
index 79d970e65e..62d099bea2 100644
--- a/epan/dissectors/packet-fcsb3.c
+++ b/epan/dissectors/packet-fcsb3.c
@@ -1254,7 +1254,7 @@ proto_register_fcsbccs (void)
{ &hf_sbccs_logical_path,
{ "Logical Path", "fcsb3.logical_path",
- FT_BYTES, BASE_NONE, NULL, 0x0,
+ FT_BYTES, BASE_SEMICOLON, NULL, 0x0,
NULL, HFILL}},
};
diff --git a/epan/dissectors/packet-fcswils.c b/epan/dissectors/packet-fcswils.c
index 482a0bbb65..bb0d39b2cd 100644
--- a/epan/dissectors/packet-fcswils.c
+++ b/epan/dissectors/packet-fcswils.c
@@ -1016,8 +1016,7 @@ dissect_swils_fspf_lsrechdr(tvbuff_t *tvb, proto_tree *tree, int offset)
static void
dissect_swils_fspf_ldrec(tvbuff_t *tvb, proto_tree *tree, int offset)
{
- proto_tree_add_string(tree, hf_swils_ldrec_linkid, tvb, offset, 4,
- tvb_fc_to_str(tvb, offset+1));
+ proto_tree_add_item(tree, hf_swils_ldrec_linkid, tvb, offset+1, 3, ENC_NA);
proto_tree_add_item(tree, hf_swils_ldrec_out_pidx, tvb, offset+5, 3, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_swils_ldrec_nbr_pidx, tvb, offset+9, 3, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_swils_ldrec_link_type, tvb, offset+12, 1, ENC_BIG_ENDIAN);
@@ -1138,8 +1137,8 @@ dissect_swils_rscn(tvbuff_t *tvb, packet_info* pinfo _U_, proto_tree *rscn_tree,
1, ENC_BIG_ENDIAN);
proto_tree_add_item(rscn_tree, hf_swils_rscn_addrfmt, tvb, offset+4,
1, ENC_BIG_ENDIAN);
- proto_tree_add_string(rscn_tree, hf_swils_rscn_affectedport, tvb,
- offset+5, 3, tvb_fc_to_str(tvb, offset+5));
+ proto_tree_add_item(rscn_tree, hf_swils_rscn_affectedport, tvb,
+ offset+5, 3, ENC_NA);
proto_tree_add_item(rscn_tree, hf_swils_rscn_detectfn, tvb,
offset+8, 4, ENC_BIG_ENDIAN);
numrec = tvb_get_ntohl(tvb, offset+12);
@@ -1157,8 +1156,7 @@ dissect_swils_rscn(tvbuff_t *tvb, packet_info* pinfo _U_, proto_tree *rscn_tree,
ett_fcswils_rscn_dev, NULL, "Device Entry %d", i);
proto_tree_add_item(dev_tree, hf_swils_rscn_portstate, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_string(dev_tree, hf_swils_rscn_portid, tvb, offset+1, 3,
- tvb_fc_to_str(tvb, offset+1));
+ proto_tree_add_item(dev_tree, hf_swils_rscn_portid, tvb, offset+1, 3, ENC_NA);
proto_tree_add_item(dev_tree, hf_swils_rscn_pwwn, tvb, offset+4, 8, ENC_NA);
proto_tree_add_item(dev_tree, hf_swils_rscn_nwwn, tvb, offset+12, 8, ENC_NA);
offset += 20;
@@ -2090,7 +2088,7 @@ proto_register_fcswils(void)
{ &hf_swils_ldrec_linkid,
{"Link ID", "swils.ldr.linkid",
- FT_STRING, BASE_NONE, NULL, 0x0,
+ FT_BYTES, BASE_DOT, NULL, 0x0,
NULL, HFILL}},
{ &hf_swils_ldrec_out_pidx,
@@ -2125,7 +2123,7 @@ proto_register_fcswils(void)
{ &hf_swils_rscn_affectedport,
{"Affected Port ID", "swils.rscn.affectedport",
- FT_STRING, BASE_NONE, NULL, 0x0,
+ FT_BYTES, BASE_DOT, NULL, 0x0,
NULL, HFILL}},
{ &hf_swils_rscn_detectfn,
@@ -2140,7 +2138,7 @@ proto_register_fcswils(void)
{ &hf_swils_rscn_portid,
{"Port Id", "swils.rscn.portid",
- FT_STRING, BASE_NONE, NULL, 0x0,
+ FT_BYTES, BASE_DOT, NULL, 0x0,
NULL, HFILL}},
{ &hf_swils_rscn_pwwn,
diff --git a/epan/dissectors/packet-fip.c b/epan/dissectors/packet-fip.c
index d035da40f1..0e35b84b78 100644
--- a/epan/dissectors/packet-fip.c
+++ b/epan/dissectors/packet-fip.c
@@ -352,7 +352,6 @@ dissect_fip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint val;
tvbuff_t *desc_tvb;
const char *info;
- const char *text;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "FIP");
col_clear(pinfo->cinfo, COL_INFO);
@@ -458,10 +457,9 @@ dissect_fip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
break;
case FIP_DT_MAP_OUI:
subtree = fip_desc_type_len(fip_tree, desc_tvb, dtype, ett_fip_dt_map, &item);
- text = tvb_fc_to_str(desc_tvb, 5);
- proto_tree_add_string(subtree, hf_fip_desc_map, desc_tvb,
- 5, 3, text);
- proto_item_append_text(item, "%s", text);
+ proto_tree_add_item(subtree, hf_fip_desc_map, desc_tvb,
+ 5, 3, ENC_NA);
+ proto_item_append_text(item, "%s", tvb_fc_to_str(desc_tvb, 5));
break;
case FIP_DT_NAME:
subtree = fip_desc_type_len(fip_tree, desc_tvb, dtype, ett_fip_dt_name, &item);
@@ -472,9 +470,8 @@ dissect_fip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
subtree = fip_desc_type_len(fip_tree, desc_tvb, dtype, ett_fip_dt_fab, &item);
proto_tree_add_item(subtree, hf_fip_desc_fab_vfid, desc_tvb,
2, 2, ENC_BIG_ENDIAN);
- text = tvb_fc_to_str(desc_tvb, 5);
- proto_tree_add_string(subtree, hf_fip_desc_fab_map, desc_tvb,
- 5, 3, text);
+ proto_tree_add_item(subtree, hf_fip_desc_fab_map, desc_tvb,
+ 5, 3, ENC_NA);
proto_tree_add_item(subtree, hf_fip_desc_fab_name, desc_tvb, 8, 8, ENC_NA);
proto_item_append_text(item, "%s", tvb_fcwwn_to_str(desc_tvb, 8));
break;
@@ -658,7 +655,7 @@ proto_register_fip(void)
{ &hf_fip_desc_map,
{ "FC-MAP-OUI", "fip.map",
- FT_STRING, BASE_NONE, NULL, 0,
+ FT_BYTES, BASE_DOT, NULL, 0,
NULL, HFILL}},
{ &hf_fip_desc_name,
@@ -673,7 +670,7 @@ proto_register_fip(void)
{ &hf_fip_desc_fab_map,
{ "FC-MAP", "fip.fab.map",
- FT_STRING, BASE_NONE, NULL, 0,
+ FT_BYTES, BASE_DOT, NULL, 0,
NULL, HFILL}},
{ &hf_fip_desc_fab_name,
diff --git a/epan/dissectors/packet-isis-hello.c b/epan/dissectors/packet-isis-hello.c
index e6bf24195f..ed2373a114 100644
--- a/epan/dissectors/packet-isis-hello.c
+++ b/epan/dissectors/packet-isis-hello.c
@@ -259,8 +259,7 @@ dissect_hello_mt_port_cap_spb_bvid_tuples_clv(tvbuff_t *tvb, packet_info* pinfo,
return;
}
else {
- proto_tree_add_bytes_format_value(subtree, hf_isis_hello_ect, tvb, subofs, 4, NULL,
- "%s", tvb_bytes_to_ep_str_punct(tvb, subofs, 4, '-'));
+ proto_tree_add_item( subtree, hf_isis_hello_ect, tvb, subofs, 4, ENC_NA);
proto_tree_add_item( subtree, hf_isis_hello_bvid, tvb, subofs+4, 2, ENC_BIG_ENDIAN);
proto_tree_add_item( subtree, hf_isis_hello_bvid_u, tvb, subofs+4, 2, ENC_BIG_ENDIAN);
proto_tree_add_item( subtree, hf_isis_hello_bvid_m, tvb, subofs+4, 2, ENC_BIG_ENDIAN);
@@ -1391,7 +1390,7 @@ proto_register_isis_hello(void)
{ &hf_isis_hello_digest_v, { "V", "isis.hello.digest.v", FT_UINT8, BASE_DEC, NULL, 0x10, NULL, HFILL }},
{ &hf_isis_hello_digest_a, { "A", "isis.hello.digest.a", FT_UINT8, BASE_DEC, NULL, 0x0c, NULL, HFILL }},
{ &hf_isis_hello_digest_d, { "D", "isis.hello.digest.d", FT_UINT8, BASE_DEC, NULL, 0x03, NULL, HFILL }},
- { &hf_isis_hello_ect, { "ECT", "isis.hello.ect", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_isis_hello_ect, { "ECT", "isis.hello.ect", FT_BYTES, BASE_DASH, NULL, 0x0, NULL, HFILL }},
{ &hf_isis_hello_bvid, { "BVID", "isis.hello.bvid", FT_UINT16, BASE_HEX_DEC, NULL, 0x0FFF, NULL, HFILL }},
{ &hf_isis_hello_bvid_u, { "U", "isis.hello.bvid.u", FT_UINT16, BASE_HEX_DEC, NULL, 0x0008, NULL, HFILL }},
{ &hf_isis_hello_bvid_m, { "M", "isis.hello.bvid.m", FT_UINT16, BASE_HEX_DEC, NULL, 0x0004, NULL, HFILL }},
diff --git a/epan/dissectors/packet-mip6.c b/epan/dissectors/packet-mip6.c
index 09bcda14c7..8d2c7e99dd 100644
--- a/epan/dissectors/packet-mip6.c
+++ b/epan/dissectors/packet-mip6.c
@@ -1031,6 +1031,7 @@ static int hf_mip6_ni_cni = -1;
static int hf_mip6_bad_auth = -1;
+static int hf_fmip6_lla = -1;
static int hf_fmip6_lla_optcode = -1;
static int hf_mip6_mnid_subtype = -1;
@@ -1979,7 +1980,7 @@ dissect_fmip6_opt_lla(const mip6_opt *optp _U_, tvbuff_t *tvb, int offset,
proto_tree *opt_tree, proto_item *hdr_item _U_ )
{
proto_tree *field_tree;
- int len, p;
+ int len;
field_tree = proto_tree_add_subtree(opt_tree, tvb, offset, optlen, *optp->subtree_index, NULL, optp->name);
@@ -1988,13 +1989,10 @@ dissect_fmip6_opt_lla(const mip6_opt *optp _U_, tvbuff_t *tvb, int offset,
proto_tree_add_item(field_tree, hf_fmip6_lla_optcode, tvb,
offset + FMIP6_LLA_OPTCODE_OFF, FMIP6_LLA_OPTCODE_LEN, ENC_BIG_ENDIAN);
- p = offset + FMIP6_LLA_LLA_OFF;
len = optlen - FMIP6_LLA_LLA_OFF;
if (len > 0) {
- proto_tree_add_text(field_tree, tvb,
- p, len, "Link-layer address: %s",
- tvb_bytes_to_ep_str_punct(tvb, p, len, ':'));
+ proto_tree_add_item(field_tree, hf_fmip6_lla, tvb, offset + FMIP6_LLA_LLA_OFF, len, ENC_NA);
}
}
@@ -4382,6 +4380,12 @@ proto_register_mip6(void)
NULL, HFILL }
},
+ { &hf_fmip6_lla,
+ { "Link-layer address", "mip6.lla",
+ FT_BYTES, BASE_SEMICOLON, NULL, 0,
+ NULL, HFILL }
+ },
+
{ &hf_fmip6_lla_optcode,
{ "Option-Code", "mip6.lla.optcode",
FT_UINT8, BASE_DEC, VALS(fmip6_lla_optcode_value), 0,
diff --git a/epan/dissectors/packet-ppp.c b/epan/dissectors/packet-ppp.c
index b132b7de2a..f2eca9f157 100644
--- a/epan/dissectors/packet-ppp.c
+++ b/epan/dissectors/packet-ppp.c
@@ -5334,10 +5334,9 @@ dissect_ipv6cp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_ipv6cp_if_id_opt(const ip_tcp_opt *optp _U_, tvbuff_t *tvb, int offset,
- guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
+ guint length _U_, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_tree_add_bytes_format_value(tree, hf_ipv6cp_interface_identifier, tvb, offset+2, length-2,
- NULL, "%s", tvb_bytes_to_ep_str_punct(tvb, offset+2, 8, ':'));
+ proto_tree_add_item(tree, hf_ipv6cp_interface_identifier, tvb, offset+2, 8, ENC_NA);
}
void
@@ -6750,7 +6749,7 @@ proto_register_ipv6cp(void)
{
static hf_register_info hf[] = {
/* Generated from convert_proto_tree_add_text.pl */
- { &hf_ipv6cp_interface_identifier, { "Interface Identifier", "ipv6cp.interface_identifier", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_ipv6cp_interface_identifier, { "Interface Identifier", "ipv6cp.interface_identifier", FT_BYTES, BASE_SEMICOLON, NULL, 0x0, NULL, HFILL }},
};
static gint *ett[] = {
&ett_ipv6cp,
diff --git a/epan/dissectors/packet-zbee-zcl-general.c b/epan/dissectors/packet-zbee-zcl-general.c
index 7ef8a72253..32d0ef3d0c 100644
--- a/epan/dissectors/packet-zbee-zcl-general.c
+++ b/epan/dissectors/packet-zbee-zcl-general.c
@@ -1201,7 +1201,6 @@ static void dissect_zcl_part_trasfpartframe(tvbuff_t *tvb, proto_tree *tree, gui
guint8 options;
guint16 u16len;
guint8 frame_len;
- guint8 *data_frame;
static const int * part_opt[] = {
&hf_zbee_zcl_part_opt_first_block,
@@ -1238,8 +1237,7 @@ static void dissect_zcl_part_trasfpartframe(tvbuff_t *tvb, proto_tree *tree, gui
*offset += 1;
/* Retrieve "PartitionedFrame" field */
- data_frame = tvb_bytes_to_ep_str_punct(tvb, *offset, frame_len, ':');
- proto_tree_add_string(tree, hf_zbee_zcl_part_part_frame, tvb, *offset, frame_len, data_frame);
+ proto_tree_add_item(tree, hf_zbee_zcl_part_part_frame, tvb, *offset, frame_len, ENC_NA);
*offset += frame_len;
} /*dissect_zcl_part_trasfpartframe*/
@@ -1457,7 +1455,7 @@ void proto_register_zbee_zcl_part(void)
0x00, NULL, HFILL } },
{ &hf_zbee_zcl_part_part_frame,
- { "Partition Frame", "zbee_zcl_general.part.part_frame", FT_STRING, BASE_NONE, NULL,
+ { "Partition Frame", "zbee_zcl_general.part.part_frame", FT_BYTES, BASE_SEMICOLON, NULL,
0x00, NULL, HFILL } },
{ &hf_zbee_zcl_part_partitioned_cluster_id,
@@ -2155,7 +2153,6 @@ dissect_zcl_ota_imageblockrsp(tvbuff_t *tvb, proto_tree *tree, guint *offset)
{
guint8 status;
guint8 data_size;
- guint8 *image_data;
/* Retrieve 'Status' field */
status = tvb_get_guint8(tvb, *offset);
@@ -2184,8 +2181,7 @@ dissect_zcl_ota_imageblockrsp(tvbuff_t *tvb, proto_tree *tree, guint *offset)
*offset += 1;
/* Retrieve 'Image Data' field */
- image_data = tvb_bytes_to_ep_str_punct(tvb, *offset, data_size, ':');
- proto_tree_add_string(tree, hf_zbee_zcl_ota_image_data, tvb, *offset, data_size, image_data);
+ proto_tree_add_item(tree, hf_zbee_zcl_ota_image_data, tvb, *offset, data_size, ENC_NA);
*offset += data_size;
}
else if (status == ZBEE_ZCL_STAT_OTA_WAIT_FOR_DATA) {
@@ -2667,7 +2663,7 @@ void proto_register_zbee_zcl_ota(void)
0x00, NULL, HFILL } },
{ &hf_zbee_zcl_ota_image_data,
- { "Image Data", "zbee_zcl_general.ota.image.data", FT_STRING, BASE_NONE, NULL,
+ { "Image Data", "zbee_zcl_general.ota.image.data", FT_BYTES, BASE_SEMICOLON, NULL,
0x00, NULL, HFILL } }
};
diff --git a/epan/dissectors/packet-zbee-zcl-ha.c b/epan/dissectors/packet-zbee-zcl-ha.c
index 5f0bbf5846..55cb7c8d7f 100644
--- a/epan/dissectors/packet-zbee-zcl-ha.c
+++ b/epan/dissectors/packet-zbee-zcl-ha.c
@@ -1254,7 +1254,6 @@ static void
dissect_zcl_appl_stats_log_rsp(tvbuff_t *tvb, proto_tree *tree, guint *offset)
{
guint32 log_len;
- guint8 *log_data;
/* Retrieve 'UTCTime' field */
proto_tree_add_item(tree, hf_zbee_zcl_appl_stats_utc_time, tvb, *offset, 4, ENC_LITTLE_ENDIAN);
@@ -1270,8 +1269,7 @@ dissect_zcl_appl_stats_log_rsp(tvbuff_t *tvb, proto_tree *tree, guint *offset)
*offset += 4;
/* Retrieve 'Log Payload' field */
- log_data = tvb_bytes_to_ep_str_punct(tvb, *offset, log_len, ':');
- proto_tree_add_string(tree, hf_zbee_zcl_appl_stats_log_payload, tvb, *offset, log_len, log_data);
+ proto_tree_add_item(tree, hf_zbee_zcl_appl_stats_log_payload, tvb, *offset, log_len, ENC_NA);
*offset += log_len;
}/*dissect_zcl_appl_stats_log_rsp*/
@@ -1381,7 +1379,7 @@ proto_register_zbee_zcl_appl_stats(void)
0x0, NULL, HFILL } },
{ &hf_zbee_zcl_appl_stats_log_payload,
- { "Log Payload", "zbee_zcl_ha.applstats.log.payload", FT_STRING, BASE_NONE, NULL,
+ { "Log Payload", "zbee_zcl_ha.applstats.log.payload", FT_BYTES, BASE_SEMICOLON, NULL,
0x00, NULL, HFILL } },
};
diff --git a/epan/dissectors/packet-zbee-zcl.c b/epan/dissectors/packet-zbee-zcl.c
index 70be1b51d1..e79fe739b7 100644
--- a/epan/dissectors/packet-zbee-zcl.c
+++ b/epan/dissectors/packet-zbee-zcl.c
@@ -1786,10 +1786,8 @@ void dissect_zcl_attr_data(tvbuff_t *tvb, proto_tree *tree, guint *offset, guint
*offset += 1;
- attr_string = tvb_bytes_to_ep_str_punct(tvb, *offset, attr_uint, ':');
- proto_item_append_text(tree, ", Octets: %s", attr_string);
- proto_tree_add_string(tree, hf_zbee_zcl_attr_ostr, tvb, *offset, attr_uint,
- attr_string);
+ proto_tree_add_item(tree, hf_zbee_zcl_attr_ostr, tvb, *offset, attr_uint, ENC_NA);
+ proto_item_append_text(tree, ", Octets: %s", tvb_bytes_to_ep_str_punct(tvb, *offset, attr_uint, ':'));
*offset += attr_uint;
break;
@@ -1821,9 +1819,8 @@ void dissect_zcl_attr_data(tvbuff_t *tvb, proto_tree *tree, guint *offset, guint
*offset += 2;
- attr_string = tvb_bytes_to_ep_str_punct(tvb, *offset, attr_uint, ':');
- proto_item_append_text(tree, ", Octets: %s", attr_string);
- proto_tree_add_string(tree, hf_zbee_zcl_attr_ostr, tvb, *offset, attr_uint, attr_string);
+ proto_tree_add_item(tree, hf_zbee_zcl_attr_ostr, tvb, *offset, attr_uint, ENC_NA);
+ proto_item_append_text(tree, ", Octets: %s", tvb_bytes_to_ep_str_punct(tvb, *offset, attr_uint, ':'));
*offset += attr_uint;
break;
@@ -2312,7 +2309,7 @@ void proto_register_zbee_zcl(void)
NULL, HFILL }},
{ &hf_zbee_zcl_attr_ostr,
- { "Octet String", "zbee_zcl.attr.ostr", FT_STRING, BASE_NONE, NULL, 0x0,
+ { "Octet String", "zbee_zcl.attr.ostr", FT_BYTES, BASE_SEMICOLON, NULL, 0x0,
NULL, HFILL }},
{ &hf_zbee_zcl_attr_array_elements_type,
diff --git a/epan/ftypes/ftype-bytes.c b/epan/ftypes/ftype-bytes.c
index 5c2a094156..22e677e56f 100644
--- a/epan/ftypes/ftype-bytes.c
+++ b/epan/ftypes/ftype-bytes.c
@@ -56,15 +56,15 @@ bytes_fvalue_set(fvalue_t *fv, GByteArray *value)
}
static int
-bytes_repr_len(fvalue_t *fv, ftrepr_t rtype _U_)
+bytes_repr_len(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_)
{
if (fv->value.bytes->len == 0) {
/* Empty array of bytes, so the representation
* is an empty string. */
return 0;
} else {
- /* 3 bytes for each byte of the byte "NN:" minus 1 byte
- * as there's no trailing ":". */
+ /* 3 bytes for each byte of the byte "NN<separator character>" minus 1 byte
+ * as there's no trailing "<separator character>". */
return fv->value.bytes->len * 3 - 1;
}
}
@@ -89,13 +89,13 @@ bytes_repr_len(fvalue_t *fv, ftrepr_t rtype _U_)
#define OID_REPR_LEN(fv) (1 + REL_OID_REPR_LEN(fv))
static int
-oid_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
+oid_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_, int field_display _U_)
{
return OID_REPR_LEN(fv);
}
static void
-oid_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
+oid_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_, char *buf)
{
const char* oid_str = oid_encoded2string(fv->value.bytes->data,fv->value.bytes->len);
/*
@@ -109,13 +109,13 @@ oid_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
}
static int
-rel_oid_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
+rel_oid_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_, int field_display _U_)
{
return REL_OID_REPR_LEN(fv);
}
static void
-rel_oid_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
+rel_oid_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_, char *buf)
{
const char* oid_str = rel_oid_encoded2string(fv->value.bytes->data,fv->value.bytes->len);
/*
@@ -130,17 +130,18 @@ rel_oid_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
}
static void
-system_id_to_repr(fvalue_t *fv, ftrepr_t rtype, char *buf)
+system_id_to_repr(fvalue_t *fv, ftrepr_t rtype, int field_display, char *buf)
{
- print_system_id_buf(fv->value.bytes->data,fv->value.bytes->len, buf, bytes_repr_len(fv, rtype));
+ print_system_id_buf(fv->value.bytes->data,fv->value.bytes->len, buf, bytes_repr_len(fv, rtype, field_display));
}
static void
-bytes_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
+bytes_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display, char *buf)
{
guint8 *c;
char *write_cursor;
unsigned int i;
+ char separator;
c = fv->value.bytes->data;
write_cursor = buf;
@@ -151,7 +152,21 @@ bytes_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
write_cursor += 2;
}
else {
- sprintf(write_cursor, ":%02x", *c++);
+ switch(field_display)
+ {
+ case BASE_DOT:
+ separator = '.';
+ break;
+ case BASE_DASH:
+ separator = '-';
+ break;
+ case BASE_SEMICOLON:
+ case BASE_NONE:
+ default:
+ separator = ':';
+ break;
+ }
+ sprintf(write_cursor, "%c%02x", separator, *c++);
write_cursor += 3;
}
}
@@ -1038,7 +1053,7 @@ ftype_register_bytes(void)
slice,
};
- static ftype_t fcwwc_type = {
+ static ftype_t fcwwn_type = {
FT_FCWWN, /* ftype */
"FT_FCWWN", /* name */
"Fibre Channel WWN", /* pretty_name */
@@ -1089,5 +1104,5 @@ ftype_register_bytes(void)
ftype_register(FT_OID, &oid_type);
ftype_register(FT_REL_OID, &rel_oid_type);
ftype_register(FT_SYSTEM_ID, &system_id_type);
- ftype_register(FT_FCWWN, &fcwwc_type);
+ ftype_register(FT_FCWWN, &fcwwn_type);
}
diff --git a/epan/ftypes/ftype-double.c b/epan/ftypes/ftype-double.c
index 2583d9223e..ef1991815e 100644
--- a/epan/ftypes/ftype-double.c
+++ b/epan/ftypes/ftype-double.c
@@ -76,7 +76,7 @@ val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_,
}
static int
-float_val_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
+float_val_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_, int field_display _U_)
{
/*
* 1 character for a sign.
@@ -89,13 +89,13 @@ float_val_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
}
static void
-float_val_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
+float_val_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_, char *buf)
{
sprintf(buf, "%." G_STRINGIFY(FLT_DIG) "g", fv->value.floating);
}
static int
-double_val_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
+double_val_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_, int field_display _U_)
{
/*
* 1 character for a sign.
@@ -107,7 +107,7 @@ double_val_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
}
static void
-double_val_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
+double_val_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_, char *buf)
{
sprintf(buf, "%." G_STRINGIFY(DBL_DIG) "g", fv->value.floating);
}
diff --git a/epan/ftypes/ftype-guid.c b/epan/ftypes/ftype-guid.c
index c7e94d5ef0..290738ae20 100644
--- a/epan/ftypes/ftype-guid.c
+++ b/epan/ftypes/ftype-guid.c
@@ -98,13 +98,13 @@ guid_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_
}
static int
-guid_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
+guid_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_, int field_display _U_)
{
return GUID_STR_LEN;
}
static void
-guid_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
+guid_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_, char *buf)
{
guid_to_str_buf(&fv->value.guid, buf, GUID_STR_LEN);
}
diff --git a/epan/ftypes/ftype-integer.c b/epan/ftypes/ftype-integer.c
index 592a670a6a..2368b526b5 100644
--- a/epan/ftypes/ftype-integer.c
+++ b/epan/ftypes/ftype-integer.c
@@ -224,13 +224,13 @@ sint8_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, L
}
static int
-integer_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
+integer_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_, int field_display _U_)
{
return 11; /* enough for 12^31-1, in decimal */
}
static void
-integer_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
+integer_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_, char *buf)
{
guint32 val;
@@ -244,13 +244,13 @@ integer_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
}
static int
-uinteger_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
+uinteger_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_, int field_display _U_)
{
return 10; /* enough for 2^32-1, in decimal */
}
static void
-uinteger_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
+uinteger_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_, char *buf)
{
guint32_to_str_buf(fv->value.uinteger, buf, 11);
}
@@ -281,13 +281,13 @@ ipxnet_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _
}
static int
-ipxnet_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
+ipxnet_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_, int field_display _U_)
{
return 2+8; /* 0xXXXXXXXX */
}
static void
-ipxnet_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
+ipxnet_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_, char *buf)
{
sprintf(buf, "0x%08x", fv->value.uinteger);
}
@@ -470,25 +470,25 @@ sint64_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _
}
static int
-integer64_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
+integer64_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_, int field_display _U_)
{
return 20; /* enough for -2^63-1, in decimal */
}
static void
-integer64_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
+integer64_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_, char *buf)
{
sprintf(buf, "%" G_GINT64_MODIFIER "d", fv->value.integer64);
}
static int
-uinteger64_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
+uinteger64_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_, int field_display _U_)
{
return 20; /* enough for 2^64-1, in decimal */
}
static void
-uinteger64_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
+uinteger64_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_, char *buf)
{
sprintf(buf, "%" G_GINT64_MODIFIER "u", fv->value.integer64);
}
@@ -568,13 +568,13 @@ boolean_fvalue_new(fvalue_t *fv)
}
static int
-boolean_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
+boolean_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_, int field_display _U_)
{
return 1;
}
static void
-boolean_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
+boolean_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_, char *buf)
{
*buf++ = (fv->value.uinteger) ? '1' : '0';
*buf = '\0';
@@ -628,13 +628,13 @@ eui64_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U
}
static int
-eui64_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
+eui64_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_, int field_display _U_)
{
return 8*3-1; /* XX:XX:XX:XX:XX:XX:XX:XX */
}
static void
-eui64_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
+eui64_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_, char *buf)
{
guint8 *p_eui64 = (guint8 *)ep_alloc(8);
diff --git a/epan/ftypes/ftype-ipv4.c b/epan/ftypes/ftype-ipv4.c
index db5ef14cfa..1c10017263 100644
--- a/epan/ftypes/ftype-ipv4.c
+++ b/epan/ftypes/ftype-ipv4.c
@@ -99,7 +99,7 @@ val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_,
}
static int
-val_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
+val_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_, int field_display _U_)
{
/*
* 15 characters for "XXX.XXX.XXX.XXX".
@@ -108,7 +108,7 @@ val_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
}
static void
-val_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
+val_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_, char *buf)
{
ipv4_addr_str_buf(&fv->value.ipv4, buf);
}
diff --git a/epan/ftypes/ftype-ipv6.c b/epan/ftypes/ftype-ipv6.c
index cf4ed1205e..04e47c920f 100644
--- a/epan/ftypes/ftype-ipv6.c
+++ b/epan/ftypes/ftype-ipv6.c
@@ -77,7 +77,7 @@ ipv6_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_
}
static int
-ipv6_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
+ipv6_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_, int field_display _U_)
{
/*
* 39 characters for "XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX".
@@ -86,7 +86,7 @@ ipv6_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
}
static void
-ipv6_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
+ipv6_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_, char *buf)
{
ip6_to_str_buf(&(fv->value.ipv6.addr), buf);
}
diff --git a/epan/ftypes/ftype-pcre.c b/epan/ftypes/ftype-pcre.c
index 947aff3047..f324370527 100644
--- a/epan/ftypes/ftype-pcre.c
+++ b/epan/ftypes/ftype-pcre.c
@@ -116,14 +116,14 @@ val_from_unparsed(fvalue_t *fv, const char *pattern, gboolean allow_partial_valu
}
static int
-gregex_repr_len(fvalue_t *fv, ftrepr_t rtype)
+gregex_repr_len(fvalue_t *fv, ftrepr_t rtype, int field_display _U_)
{
g_assert(rtype == FTREPR_DFILTER);
return (int)strlen(g_regex_get_pattern(fv->value.re));
}
static void
-gregex_to_repr(fvalue_t *fv, ftrepr_t rtype, char *buf)
+gregex_to_repr(fvalue_t *fv, ftrepr_t rtype, int field_display _U_, char *buf)
{
g_assert(rtype == FTREPR_DFILTER);
strcpy(buf, g_regex_get_pattern(fv->value.re));
diff --git a/epan/ftypes/ftype-string.c b/epan/ftypes/ftype-string.c
index 6c95e70ebd..ff3b9c3c6c 100644
--- a/epan/ftypes/ftype-string.c
+++ b/epan/ftypes/ftype-string.c
@@ -53,7 +53,7 @@ string_fvalue_set_string(fvalue_t *fv, const gchar *value)
}
static int
-string_repr_len(fvalue_t *fv, ftrepr_t rtype)
+string_repr_len(fvalue_t *fv, ftrepr_t rtype, int field_display _U_)
{
switch (rtype) {
case FTREPR_DISPLAY:
@@ -67,7 +67,7 @@ string_repr_len(fvalue_t *fv, ftrepr_t rtype)
}
static void
-string_to_repr(fvalue_t *fv, ftrepr_t rtype, char *buf)
+string_to_repr(fvalue_t *fv, ftrepr_t rtype, int field_display _U_, char *buf)
{
switch (rtype) {
case FTREPR_DISPLAY:
diff --git a/epan/ftypes/ftype-time.c b/epan/ftypes/ftype-time.c
index 841e8b4e62..09ae23f869 100644
--- a/epan/ftypes/ftype-time.c
+++ b/epan/ftypes/ftype-time.c
@@ -323,7 +323,7 @@ value_get(fvalue_t *fv)
}
static int
-absolute_val_repr_len(fvalue_t *fv, ftrepr_t rtype)
+absolute_val_repr_len(fvalue_t *fv, ftrepr_t rtype, int field_display _U_)
{
gchar *rep;
int ret;
@@ -339,7 +339,7 @@ absolute_val_repr_len(fvalue_t *fv, ftrepr_t rtype)
}
static void
-absolute_val_to_repr(fvalue_t *fv, ftrepr_t rtype, char *buf)
+absolute_val_to_repr(fvalue_t *fv, ftrepr_t rtype, int field_display _U_, char *buf)
{
gchar *rep = abs_time_to_str(NULL, &fv->value.time, ABSOLUTE_TIME_LOCAL,
rtype == FTREPR_DISPLAY);
@@ -352,7 +352,7 @@ absolute_val_to_repr(fvalue_t *fv, ftrepr_t rtype, char *buf)
}
static int
-relative_val_repr_len(fvalue_t *fv, ftrepr_t rtype _U_)
+relative_val_repr_len(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_)
{
gchar *rep;
int ret;
@@ -365,7 +365,7 @@ relative_val_repr_len(fvalue_t *fv, ftrepr_t rtype _U_)
}
static void
-relative_val_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
+relative_val_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_, char *buf)
{
gchar *rep;
rep = rel_time_to_secs_str(NULL, &fv->value.time);
diff --git a/epan/ftypes/ftype-tvbuff.c b/epan/ftypes/ftype-tvbuff.c
index dec4d69672..714f545dfe 100644
--- a/epan/ftypes/ftype-tvbuff.c
+++ b/epan/ftypes/ftype-tvbuff.c
@@ -118,7 +118,7 @@ val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_,
}
static int
-val_repr_len(fvalue_t *fv, ftrepr_t rtype)
+val_repr_len(fvalue_t *fv, ftrepr_t rtype, int field_display _U_)
{
volatile guint length = 0;
@@ -138,7 +138,7 @@ val_repr_len(fvalue_t *fv, ftrepr_t rtype)
}
static void
-val_to_repr(fvalue_t *fv, ftrepr_t rtype, char * volatile buf)
+val_to_repr(fvalue_t *fv, ftrepr_t rtype, int field_display _U_, char * volatile buf)
{
guint length;
const guint8 *c;
diff --git a/epan/ftypes/ftypes-int.h b/epan/ftypes/ftypes-int.h
index e78917f036..c2aaf11427 100644
--- a/epan/ftypes/ftypes-int.h
+++ b/epan/ftypes/ftypes-int.h
@@ -50,8 +50,8 @@ typedef void (*FvalueFreeFunc)(fvalue_t*);
typedef gboolean (*FvalueFromUnparsed)(fvalue_t*, const char*, gboolean, LogFunc);
typedef gboolean (*FvalueFromString)(fvalue_t*, const char*, LogFunc);
-typedef void (*FvalueToStringRepr)(fvalue_t*, ftrepr_t, char*volatile);
-typedef int (*FvalueStringReprLen)(fvalue_t*, ftrepr_t);
+typedef void (*FvalueToStringRepr)(fvalue_t*, ftrepr_t, int field_display, char*volatile);
+typedef int (*FvalueStringReprLen)(fvalue_t*, ftrepr_t, int field_display);
typedef void (*FvalueSetByteArrayFunc)(fvalue_t*, GByteArray *);
typedef void (*FvalueSetBytesFunc)(fvalue_t*, const guint8 *);
diff --git a/epan/ftypes/ftypes.c b/epan/ftypes/ftypes.c
index 49ef2ce19a..a06594392c 100644
--- a/epan/ftypes/ftypes.c
+++ b/epan/ftypes/ftypes.c
@@ -348,14 +348,14 @@ fvalue_length(fvalue_t *fv)
}
int
-fvalue_string_repr_len(fvalue_t *fv, ftrepr_t rtype)
+fvalue_string_repr_len(fvalue_t *fv, ftrepr_t rtype, int field_display)
{
g_assert(fv->ftype->len_string_repr);
- return fv->ftype->len_string_repr(fv, rtype);
+ return fv->ftype->len_string_repr(fv, rtype, field_display);
}
char *
-fvalue_to_string_repr(fvalue_t *fv, ftrepr_t rtype, char *buf)
+fvalue_to_string_repr(fvalue_t *fv, ftrepr_t rtype, int field_display, char *buf)
{
if (fv->ftype->val_to_string_repr == NULL) {
/* no value-to-string-representation function, so the value cannot be represented */
@@ -363,14 +363,14 @@ fvalue_to_string_repr(fvalue_t *fv, ftrepr_t rtype, char *buf)
}
if (!buf) {
int len;
- if ((len = fvalue_string_repr_len(fv, rtype)) >= 0) {
+ if ((len = fvalue_string_repr_len(fv, rtype, field_display)) >= 0) {
buf = (char *)g_malloc0(len + 1);
} else {
/* the value cannot be represented in the given representation type (rtype) */
return NULL;
}
}
- fv->ftype->val_to_string_repr(fv, rtype, buf);
+ fv->ftype->val_to_string_repr(fv, rtype, field_display, buf);
return buf;
}
diff --git a/epan/ftypes/ftypes.h b/epan/ftypes/ftypes.h
index 46a25fbb1b..6e969043ca 100644
--- a/epan/ftypes/ftypes.h
+++ b/epan/ftypes/ftypes.h
@@ -226,7 +226,7 @@ fvalue_from_string(ftenum_t ftype, const char *s, LogFunc logfunc);
* The length DOES NOT include the terminating NUL. */
WS_DLL_PUBLIC
int
-fvalue_string_repr_len(fvalue_t *fv, ftrepr_t rtype);
+fvalue_string_repr_len(fvalue_t *fv, ftrepr_t rtype, int field_display);
/* Creates the string representation of the field value.
* If given non-NULL 'buf', the string is written at the memory
@@ -237,9 +237,12 @@ fvalue_string_repr_len(fvalue_t *fv, ftrepr_t rtype);
* memory. if 'buf' was non-NULL, then the return value will be
* 'buf'.
*
+ * field_display parameter should be a BASE_ value (enum field_display_e)
+ * BASE_NONE should be used if field information isn't available.
+ *
* Returns NULL if the string cannot be represented in the given rtype.*/
WS_DLL_PUBLIC char *
-fvalue_to_string_repr(fvalue_t *fv, ftrepr_t rtype, char *buf);
+fvalue_to_string_repr(fvalue_t *fv, ftrepr_t rtype, int field_display, char *buf);
WS_DLL_PUBLIC ftenum_t
fvalue_type_ftenum(fvalue_t *fv);
diff --git a/epan/print.c b/epan/print.c
index 2b9ec0cb97..3b15a1723f 100644
--- a/epan/print.c
+++ b/epan/print.c
@@ -386,7 +386,7 @@ proto_tree_write_node_pdml(proto_node *node, gpointer data)
fputs("\" show=\"\" value=\"", pdata->fh);
break;
default:
- dfilter_string = fvalue_to_string_repr(&fi->value, FTREPR_DISPLAY, NULL);
+ dfilter_string = fvalue_to_string_repr(&fi->value, FTREPR_DISPLAY, fi->hfinfo->display, NULL);
if (dfilter_string != NULL) {
fputs("\" show=\"", pdata->fh);
@@ -1418,7 +1418,7 @@ gchar* get_node_field_value(field_info* fi, epan_dissect_t* edt)
* FT_NONE can be checked when using -T fields */
return g_strdup("1");
default:
- dfilter_string = fvalue_to_string_repr(&fi->value, FTREPR_DISPLAY, NULL);
+ dfilter_string = fvalue_to_string_repr(&fi->value, FTREPR_DISPLAY, fi->hfinfo->display, NULL);
if (dfilter_string != NULL) {
return dfilter_string;
} else {
diff --git a/epan/proto.c b/epan/proto.c
index 20f5eadf83..0b54c31306 100644
--- a/epan/proto.c
+++ b/epan/proto.c
@@ -4268,9 +4268,30 @@ proto_custom_set(proto_tree* tree, GSList *field_ids, gint occurrence,
case FT_UINT_BYTES:
case FT_BYTES:
bytes = (guint8 *)fvalue_get(&finfo->value);
- offset_r += protoo_strlcpy(result+offset_r,
+ switch(hfinfo->display)
+ {
+ case BASE_DOT:
+ offset_r += protoo_strlcpy(result+offset_r,
+ bytes ? bytes_to_ep_str_punct(bytes, fvalue_length(&finfo->value), '.') : "<MISSING>",
+ size-offset_r);
+ break;
+ case BASE_DASH:
+ offset_r += protoo_strlcpy(result+offset_r,
+ bytes ? bytes_to_ep_str_punct(bytes, fvalue_length(&finfo->value), '-') : "<MISSING>",
+ size-offset_r);
+ break;
+ case BASE_SEMICOLON:
+ offset_r += protoo_strlcpy(result+offset_r,
+ bytes ? bytes_to_ep_str_punct(bytes, fvalue_length(&finfo->value), ':') : "<MISSING>",
+ size-offset_r);
+ break;
+ case BASE_NONE:
+ default:
+ offset_r += protoo_strlcpy(result+offset_r,
bytes ? bytes_to_ep_str(bytes, fvalue_length(&finfo->value)) : "<MISSING>",
size-offset_r);
+ break;
+ }
break;
case FT_ABSOLUTE_TIME:
@@ -5610,6 +5631,30 @@ tmp_fld_check_assert(header_field_info *hfinfo)
val_to_str(hfinfo->display, hf_display, "(Unknown: 0x%x)"));
}
break;
+ case FT_BYTES:
+ /* Require bytes to have a "display type" that could
+ * add a character between displayed bytes.
+ */
+ switch (hfinfo->display & FIELD_DISPLAY_E_MASK) {
+ case BASE_NONE:
+ case BASE_DOT:
+ case BASE_DASH:
+ case BASE_SEMICOLON:
+ break;
+ default:
+ g_error("Field '%s' (%s) is an byte array but is being displayed as %s instead of BASE_NONE, BASE_DOT, BASE_DASH, or BASE_SEMICOLON\n",
+ hfinfo->name, hfinfo->abbrev,
+ val_to_str(hfinfo->display, hf_display, "(Bit count: %d)"));
+ }
+ if (hfinfo->bitmask != 0)
+ g_error("Field '%s' (%s) is an %s but has a bitmask\n",
+ hfinfo->name, hfinfo->abbrev,
+ ftype_name(hfinfo->type));
+ if (hfinfo->strings != NULL)
+ g_error("Field '%s' (%s) is an %s but has a strings value\n",
+ hfinfo->name, hfinfo->abbrev,
+ ftype_name(hfinfo->type));
+ break;
case FT_PROTOCOL:
case FT_FRAMENUM:
@@ -5958,7 +6003,7 @@ proto_item_fill_label(field_info *fi, gchar *label_str)
guint32 n_addr; /* network-order IPv4 address */
const gchar *name;
address addr;
- char *tmp;
+ char *tmp;
if (!fi) {
if (label_str)
@@ -5982,8 +6027,26 @@ proto_item_fill_label(field_info *fi, gchar *label_str)
case FT_BYTES:
case FT_UINT_BYTES:
bytes = (guint8 *)fvalue_get(&fi->value);
- label_fill(label_str, 0, hfinfo,
+ switch(hfinfo->display)
+ {
+ case BASE_DOT:
+ label_fill(label_str, 0, hfinfo,
+ (bytes) ? bytes_to_ep_str_punct(bytes, fvalue_length(&fi->value), '.') : "<MISSING>");
+ break;
+ case BASE_DASH:
+ label_fill(label_str, 0, hfinfo,
+ (bytes) ? bytes_to_ep_str_punct(bytes, fvalue_length(&fi->value), '-') : "<MISSING>");
+ break;
+ case BASE_SEMICOLON:
+ label_fill(label_str, 0, hfinfo,
+ (bytes) ? bytes_to_ep_str_punct(bytes, fvalue_length(&fi->value), ':') : "<MISSING>");
+ break;
+ case BASE_NONE:
+ default:
+ label_fill(label_str, 0, hfinfo,
(bytes) ? bytes_to_ep_str(bytes, fvalue_length(&fi->value)) : "<MISSING>");
+ break;
+ }
break;
/* Four types of integers to take care of:
@@ -7465,7 +7528,7 @@ construct_match_selected_string(field_info *finfo, epan_dissect_t *edt,
*/
if (filter != NULL) {
dfilter_len = fvalue_string_repr_len(&finfo->value,
- FTREPR_DFILTER);
+ FTREPR_DFILTER, finfo->hfinfo->display);
dfilter_len += abbrev_len + 4 + 1;
*filter = (char *)ep_alloc0(dfilter_len);
@@ -7473,7 +7536,7 @@ construct_match_selected_string(field_info *finfo, epan_dissect_t *edt,
g_snprintf(*filter, dfilter_len, "%s == ",
hfinfo->abbrev);
fvalue_to_string_repr(&finfo->value,
- FTREPR_DFILTER,
+ FTREPR_DFILTER, finfo->hfinfo->display,
&(*filter)[abbrev_len + 4]);
}
break;
diff --git a/epan/proto.h b/epan/proto.h
index 9e3ab45c2e..4deb880705 100644
--- a/epan/proto.h
+++ b/epan/proto.h
@@ -494,7 +494,12 @@ typedef enum {
/* String types */
STR_ASCII = BASE_NONE, /**< shows non-printable ASCII characters as C-style escapes */
/* XXX, support for format_text_wsp() ? */
- STR_UNICODE = 7 /**< shows non-printable UNICODE characters as \\uXXXX (XXX for now non-printable characters display depends on UI) */
+ STR_UNICODE = 7, /**< shows non-printable UNICODE characters as \\uXXXX (XXX for now non-printable characters display depends on UI) */
+
+/* Byte types */
+ BASE_DOT = 8, /**< hexadecimal bytes with a period (.) between each byte */
+ BASE_DASH = 9, /**< hexadecimal bytes with a dash (-) between each byte */
+ BASE_SEMICOLON = 10, /**< hexadecimal bytes with a dash (:) between each byte */
} field_display_e;
/* Following constants have to be ORed with a field_display_e when dissector
diff --git a/epan/wslua/wslua_field.c b/epan/wslua/wslua_field.c
index bc8c9af560..e2f6928cf8 100644
--- a/epan/wslua/wslua_field.c
+++ b/epan/wslua/wslua_field.c
@@ -166,7 +166,7 @@ WSLUA_METAMETHOD FieldInfo__call(lua_State* L) {
}
case FT_STRING:
case FT_STRINGZ: {
- gchar* repr = fvalue_to_string_repr(&fi->ws_fi->value,FTREPR_DISPLAY,NULL);
+ gchar* repr = fvalue_to_string_repr(&fi->ws_fi->value,FTREPR_DISPLAY,BASE_NONE,NULL);
if (repr)
lua_pushstring(L,repr);
else
@@ -220,10 +220,10 @@ WSLUA_METAMETHOD FieldInfo__tostring(lua_State* L) {
gchar* repr = NULL;
if (fi->ws_fi->hfinfo->type == FT_PROTOCOL || fi->ws_fi->hfinfo->type == FT_PCRE) {
- repr = fvalue_to_string_repr(&fi->ws_fi->value,FTREPR_DFILTER,NULL);
+ repr = fvalue_to_string_repr(&fi->ws_fi->value,FTREPR_DFILTER,BASE_NONE,NULL);
}
else {
- repr = fvalue_to_string_repr(&fi->ws_fi->value,FTREPR_DISPLAY,NULL);
+ repr = fvalue_to_string_repr(&fi->ws_fi->value,FTREPR_DISPLAY,fi->ws_fi->hfinfo->display,NULL);
}
if (repr) {
diff --git a/plugins/mate/mate_util.c b/plugins/mate/mate_util.c
index 704da31c84..7f8dff8c18 100644
--- a/plugins/mate/mate_util.c
+++ b/plugins/mate/mate_util.c
@@ -313,7 +313,7 @@ extern AVP* new_avp_from_finfo(const gchar* name, field_info* finfo) {
new_avp_val->n = scs_subscribe(avp_strings, name);
- repr = fvalue_to_string_repr(&finfo->value,FTREPR_DISPLAY,NULL);
+ repr = fvalue_to_string_repr(&finfo->value,FTREPR_DISPLAY,finfo->hfinfo->display,NULL);
if (repr) {
value = scs_subscribe(avp_strings, repr);
diff --git a/rawshark.c b/rawshark.c
index 5bbdaa04d9..29f4347787 100644
--- a/rawshark.c
+++ b/rawshark.c
@@ -1290,14 +1290,14 @@ static gboolean print_field_value(field_info *finfo, int cmd_line_index)
* this field has an associated value,
* e.g: ip.hdr_len
*/
- fs_len = fvalue_string_repr_len(&finfo->value, FTREPR_DFILTER);
+ fs_len = fvalue_string_repr_len(&finfo->value, FTREPR_DFILTER, finfo->hfinfo->display);
while (fs_buf_len < fs_len) {
fs_buf_len *= 2;
fs_buf = (char *)g_realloc(fs_buf, fs_buf_len + 1);
fs_ptr = fs_buf;
}
fvalue_to_string_repr(&finfo->value,
- FTREPR_DFILTER,
+ FTREPR_DFILTER, finfo->hfinfo->display,
fs_buf);
/* String types are quoted. Remove them. */
diff --git a/ui/cli/tap-diameter-avp.c b/ui/cli/tap-diameter-avp.c
index 1c6aff2bc4..16a3de0ffe 100644
--- a/ui/cli/tap-diameter-avp.c
+++ b/ui/cli/tap-diameter-avp.c
@@ -104,7 +104,7 @@ diam_tree_to_csv(proto_node *node, gpointer data)
ftype = fvalue_type_ftenum(&fi->value);
if (ftype != FT_NONE && ftype != FT_PROTOCOL) {
/* convert value to string */
- val_tmp = fvalue_to_string_repr(&fi->value, FTREPR_DISPLAY, NULL);
+ val_tmp = fvalue_to_string_repr(&fi->value, FTREPR_DISPLAY, hfi->display, NULL);
if (val_tmp)
{
val_str = ep_strdup(val_tmp);
diff --git a/ui/gtk/packet_panes.c b/ui/gtk/packet_panes.c
index af4afae044..091f3b9a84 100644
--- a/ui/gtk/packet_panes.c
+++ b/ui/gtk/packet_panes.c
@@ -1348,7 +1348,7 @@ tree_view_follow_link(field_info *fi)
cf_goto_frame(&cfile, fi->value.value.uinteger);
}
if(FI_GET_FLAG(fi, FI_URL) && IS_FT_STRING(fi->hfinfo->type)) {
- url = fvalue_to_string_repr(&fi->value, FTREPR_DISPLAY, NULL);
+ url = fvalue_to_string_repr(&fi->value, FTREPR_DISPLAY, fi->hfinfo->display, NULL);
if(url){
browser_open_url(url);
g_free(url);
diff --git a/ui/qt/proto_tree.cpp b/ui/qt/proto_tree.cpp
index ecef518e3b..7414f0691d 100644
--- a/ui/qt/proto_tree.cpp
+++ b/ui/qt/proto_tree.cpp
@@ -451,7 +451,7 @@ void ProtoTree::itemDoubleClick(QTreeWidgetItem *item, int column) {
if(FI_GET_FLAG(fi, FI_URL) && IS_FT_STRING(fi->hfinfo->type)) {
gchar *url;
- url = fvalue_to_string_repr(&fi->value, FTREPR_DISPLAY, NULL);
+ url = fvalue_to_string_repr(&fi->value, FTREPR_DISPLAY, fi->hfinfo->display, NULL);
if(url){
// browser_open_url(url);
QDesktopServices::openUrl(QUrl(url));