diff options
author | Jeff Morriss <jeff.morriss.ws@gmail.com> | 2014-08-22 15:14:00 -0400 |
---|---|---|
committer | Jeff Morriss <jeff.morriss.ws@gmail.com> | 2014-08-22 19:17:25 +0000 |
commit | 2d74838e473a3e3414addb73c892efa470c4c0f1 (patch) | |
tree | 7fdbd8eb8228c3c37f01c1f4a655f793a065220b /epan/dissectors/packet-e164.c | |
parent | 923ba9d3120be0ee994d595bc1cae0f15963e2e1 (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.c | 19 |
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; } |