diff options
author | Binh Trinh <beango@gmail.com> | 2016-09-13 00:46:06 -0400 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2016-10-12 21:34:42 +0000 |
commit | 5ace3b9405e4845ad7df1a3b2966af7bca6c2194 (patch) | |
tree | bf6282ff95f812bdc5c6059d223bc970cdffc19e /epan/dissectors/packet-mtp3.c | |
parent | 04143d1100342353c95c87dcaaa8d82258c25ec3 (diff) | |
download | wireshark-5ace3b9405e4845ad7df1a3b2966af7bca6c2194.tar.gz |
MTP3: Added SS7 Point Code Name Resolution
bug: 7592
Change-Id: I1af2c5d6664e172c358cd19bc20e9352c2582eae
Reviewed-on: https://code.wireshark.org/review/17677
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-mtp3.c')
-rw-r--r-- | epan/dissectors/packet-mtp3.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/epan/dissectors/packet-mtp3.c b/epan/dissectors/packet-mtp3.c index dc12d27376..a826180eb6 100644 --- a/epan/dissectors/packet-mtp3.c +++ b/epan/dissectors/packet-mtp3.c @@ -43,6 +43,7 @@ #include <epan/prefs.h> #include <epan/address_types.h> #include <wiretap/wtap.h> +#include <epan/addr_resolv.h> #include "packet-q708.h" #include "packet-sccp.h" @@ -424,6 +425,33 @@ int mtp3_addr_len(void) return sizeof(mtp3_addr_pc_t); } +static const gchar* mtp3_addr_name_res_str(const address* addr) +{ + const mtp3_addr_pc_t *mtp3_addr = (const mtp3_addr_pc_t *)addr->data; + const gchar *tmp; + + tmp = get_hostname_ss7pc(mtp3_addr->ni, mtp3_addr->pc); + + if (tmp[0] == '\0') { + gchar* str; + str = (gchar *)wmem_alloc(NULL, MAXNAMELEN); + mtp3_addr_to_str_buf(mtp3_addr, str, MAXNAMELEN); + fill_unresolved_ss7pc(str, mtp3_addr->ni, mtp3_addr->pc); + wmem_free(NULL, str); + return get_hostname_ss7pc(mtp3_addr->ni, mtp3_addr->pc); + } + return tmp; + +} + +static int mtp3_addr_name_res_len(void) +{ + return MAXNAMELEN; +} + + + + /* Common function for dissecting 3-byte (ANSI or China) PCs. */ void dissect_mtp3_3byte_pc(tvbuff_t *tvb, guint offset, proto_tree *tree, gint ett_pc, int hf_pc_string, int hf_pc_network, @@ -1078,7 +1106,7 @@ proto_register_mtp3(void) proto_mtp3, FT_UINT8, BASE_HEX); mtp3_address_type = address_type_dissector_register("AT_SS7PC", "SS7 Point Code", mtp3_addr_to_str, mtp3_str_addr_len, NULL, NULL, - mtp3_addr_len, NULL, NULL); + mtp3_addr_len, mtp3_addr_name_res_str, mtp3_addr_name_res_len); mtp3_tap = register_tap("mtp3"); |