aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-e164.c
diff options
context:
space:
mode:
authorJeff Morriss <jeff.morriss.ws@gmail.com>2014-08-22 15:14:00 -0400
committerJeff Morriss <jeff.morriss.ws@gmail.com>2014-08-22 19:17:25 +0000
commit2d74838e473a3e3414addb73c892efa470c4c0f1 (patch)
tree7fdbd8eb8228c3c37f01c1f4a655f793a065220b /epan/dissectors/packet-e164.c
parent923ba9d3120be0ee994d595bc1cae0f15963e2e1 (diff)
Decode the 3GPP MSISDN AVP using the E.164 routines.
Rename dissect_e164_utf8_number() to dissect_e164_msisdn() and give it an 'encoding' argument. Change-Id: I49cf5d2b24b44a0e69427ceae331f378024391c5 Reviewed-on: https://code.wireshark.org/review/3796 Reviewed-by: Jeff Morriss <jeff.morriss.ws@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-e164.c')
-rw-r--r--epan/dissectors/packet-e164.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/epan/dissectors/packet-e164.c b/epan/dissectors/packet-e164.c
index 155408430f..9f90e648ab 100644
--- a/epan/dissectors/packet-e164.c
+++ b/epan/dissectors/packet-e164.c
@@ -684,18 +684,29 @@ dissect_e164_cc(tvbuff_t *tvb, proto_tree *tree, int offset, e164_encoding_t enc
}
const gchar *
-dissect_e164_utf8_number(tvbuff_t *tvb, proto_tree *tree, int offset, int length)
+dissect_e164_msisdn(tvbuff_t *tvb, proto_tree *tree, int offset, int length, e164_encoding_t encoding)
{
proto_item *pi;
proto_tree *subtree;
- gchar *msisdn_str;
+ const gchar *msisdn_str;
+
+ switch (encoding) {
+ case E164_ENC_UTF8:
+ msisdn_str = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, length, ENC_UTF_8);
+ break;
+ case E164_ENC_BCD:
+ msisdn_str = tvb_bcd_dig_to_wmem_packet_str(tvb, offset, length, NULL, FALSE);
+ break;
+ case E164_ENC_BINARY:
+ default:
+ DISSECTOR_ASSERT_NOT_REACHED();
+ }
- msisdn_str = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, length, ENC_UTF_8);
pi = proto_tree_add_string(tree, hf_E164_number, tvb, offset, length, msisdn_str);
subtree = proto_item_add_subtree(pi, ett_e164_msisdn);
- dissect_e164_cc(tvb, subtree, offset, E164_ENC_UTF8);
+ dissect_e164_cc(tvb, subtree, offset, encoding);
return msisdn_str;
}