summaryrefslogtreecommitdiff
path: root/epan/dissectors/packet-mtp3.c
diff options
context:
space:
mode:
authorBinh Trinh <beango@gmail.com>2016-09-13 00:46:06 -0400
committerAnders Broman <a.broman58@gmail.com>2016-10-12 21:34:42 +0000
commit5ace3b9405e4845ad7df1a3b2966af7bca6c2194 (patch)
treebf6282ff95f812bdc5c6059d223bc970cdffc19e /epan/dissectors/packet-mtp3.c
parent04143d1100342353c95c87dcaaa8d82258c25ec3 (diff)
downloadwireshark-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.c30
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");