aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2015-02-08 13:49:57 -0500
committerMichael Mann <mmann78@netscape.net>2015-02-09 01:13:28 +0000
commit2042385ac9eaa7e512b1a0b9af2f916324314e63 (patch)
tree78a92e5df2c01c53699fced1e7e56495f00b9314 /epan/dissectors
parent4497bb48fd3439474049f7c5e86b4ffa1df35828 (diff)
Add "column filter string" support to address types.
Information about dissector (filter) fields should be kept in a dissector as much as possible. Supporting "column filter string" also allows other dissectors to create their own "address types" with different column filters (because AT_ETHER isn't always an "Ethernet" address). This feature also allowed a few "dissector specific" address types to be moved to their own dissector. Change-Id: Ie9024af4db62bc2ee4f8c9d28a1d807f706f45bf Ping-Bug:7728 Reviewed-on: https://code.wireshark.org/review/7029 Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-arcnet.c37
-rw-r--r--epan/dissectors/packet-atalk.c66
-rw-r--r--epan/dissectors/packet-devicenet.c2
-rw-r--r--epan/dissectors/packet-ieee802154.c3
-rw-r--r--epan/dissectors/packet-j1939.c2
-rw-r--r--epan/dissectors/packet-jxta.c42
-rw-r--r--epan/dissectors/packet-mstp.c37
-rw-r--r--epan/dissectors/packet-sna.c2
-rw-r--r--epan/dissectors/packet-tipc.c3
9 files changed, 160 insertions, 34 deletions
diff --git a/epan/dissectors/packet-arcnet.c b/epan/dissectors/packet-arcnet.c
index 522f6621cd..a7a1b4e457 100644
--- a/epan/dissectors/packet-arcnet.c
+++ b/epan/dissectors/packet-arcnet.c
@@ -26,7 +26,9 @@
#include <epan/packet.h>
#include <wiretap/wtap.h>
#include "packet-arcnet.h"
+#include <epan/address_types.h>
#include <epan/arcnet_pids.h>
+#include <epan/to_str-int.h>
#include "packet-ip.h"
void proto_register_arcnet(void);
@@ -46,9 +48,34 @@ static int hf_arcnet_padding = -1;
/* Initialize the subtree pointers */
static gint ett_arcnet = -1;
+static int arcnet_address_type = -1;
+
static dissector_table_t arcnet_dissector_table;
static dissector_handle_t data_handle;
+static gboolean arcnet_to_str(const address* addr, gchar *buf, int buf_len _U_)
+{
+ *buf++ = '0';
+ *buf++ = 'x';
+ buf = bytes_to_hexstr(buf, (const guint8 *)addr->data, 1);
+ *buf = '\0'; /* NULL terminate */
+
+ return TRUE;
+}
+
+static int arcnet_str_len(const address* addr _U_)
+{
+ return 5;
+}
+
+static const char* arcnet_col_filter_str(const address* addr _U_, gboolean is_src)
+{
+ if (is_src)
+ return "arcnet.src";
+
+ return "arcnet.dst";
+}
+
void
capture_arcnet (const guchar *pd, int len, packet_counts *ld,
gboolean has_offset, gboolean has_exception)
@@ -143,10 +170,10 @@ dissect_arcnet_common (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree,
src = tvb_get_guint8 (tvb, 0);
dst = tvb_get_guint8 (tvb, 1);
- TVB_SET_ADDRESS(&pinfo->dl_src, AT_ARCNET, tvb, 0, 1);
- TVB_SET_ADDRESS(&pinfo->src, AT_ARCNET, tvb, 0, 1);
- TVB_SET_ADDRESS(&pinfo->dl_dst, AT_ARCNET, tvb, 1, 1);
- TVB_SET_ADDRESS(&pinfo->dst, AT_ARCNET, tvb, 1, 1);
+ TVB_SET_ADDRESS(&pinfo->dl_src, arcnet_address_type, tvb, 0, 1);
+ TVB_SET_ADDRESS(&pinfo->src, arcnet_address_type, tvb, 0, 1);
+ TVB_SET_ADDRESS(&pinfo->dl_dst, arcnet_address_type, tvb, 1, 1);
+ TVB_SET_ADDRESS(&pinfo->dst, arcnet_address_type, tvb, 1, 1);
ti = proto_tree_add_item (tree, proto_arcnet, tvb, 0, -1, ENC_NA);
@@ -352,6 +379,8 @@ proto_register_arcnet (void)
/* Required function calls to register the header fields and subtrees used */
proto_register_field_array (proto_arcnet, hf, array_length (hf));
proto_register_subtree_array (ett, array_length (ett));
+
+ arcnet_address_type = address_type_dissector_register("AT_ARCNET", "ARCNET Address", arcnet_to_str, arcnet_str_len, arcnet_col_filter_str);
}
diff --git a/epan/dissectors/packet-atalk.c b/epan/dissectors/packet-atalk.c
index a105738d92..9e1ca4cf70 100644
--- a/epan/dissectors/packet-atalk.c
+++ b/epan/dissectors/packet-atalk.c
@@ -34,7 +34,9 @@
#include <epan/conversation.h>
#include <epan/prefs.h>
#include <epan/reassemble.h>
+#include <epan/address_types.h>
#include <epan/to_str.h>
+#include <epan/to_str-int.h>
#include <wiretap/wtap.h>
#include "packet-atalk.h"
#include "packet-afp.h"
@@ -341,6 +343,8 @@ static int hf_pap_eof = -1;
static int hf_pap_pad = -1;
+static int atalk_address_type = -1;
+
static const value_string pap_function_vals[] = {
{PAPOpenConn , "Open Connection Query"},
{PAPOpenConnReply , "Open Connection Reply"},
@@ -1164,6 +1168,42 @@ dissect_asp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
/* -----------------------------
ZIP protocol cf. inside appletalk chap. 8
*/
+/*
+ * Structure used to represent a DDP address; gives the layout of the
+ * data pointed to by an Appletalk "address" structure.
+ */
+struct atalk_ddp_addr {
+ guint16 net;
+ guint8 node;
+};
+
+static gboolean atalk_to_str(const address* addr, gchar *buf, int buf_len _U_)
+{
+ struct atalk_ddp_addr atalk;
+ memcpy(&atalk, addr->data, sizeof atalk);
+
+ buf = word_to_hex(buf, atalk.net);
+ *buf++ = '.';
+ buf = bytes_to_hexstr(buf, &atalk.node, 1);
+ *buf++ = '\0'; /* NULL terminate */
+
+ return TRUE;
+}
+
+static int atalk_str_len(const address* addr _U_)
+{
+ return 14;
+}
+
+const char* atalk_col_filter_str(const address* addr _U_, gboolean is_src)
+{
+ if (is_src)
+ return "ddp.src";
+
+ return "ddp.dst";
+}
+
+
static int
dissect_atp_zip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
{
@@ -1404,10 +1444,10 @@ dissect_ddp_short(tvbuff_t *tvb, packet_info *pinfo, guint8 dnode,
src->node = snode;
dst->net = 0;
dst->node = dnode;
- SET_ADDRESS(&pinfo->net_src, AT_ATALK, sizeof(struct atalk_ddp_addr), src);
- SET_ADDRESS(&pinfo->src, AT_ATALK, sizeof(struct atalk_ddp_addr), src);
- SET_ADDRESS(&pinfo->net_dst, AT_ATALK, sizeof(struct atalk_ddp_addr), dst);
- SET_ADDRESS(&pinfo->dst, AT_ATALK, sizeof(struct atalk_ddp_addr), dst);
+ SET_ADDRESS(&pinfo->net_src, atalk_address_type, sizeof(struct atalk_ddp_addr), src);
+ SET_ADDRESS(&pinfo->src, atalk_address_type, sizeof(struct atalk_ddp_addr), src);
+ SET_ADDRESS(&pinfo->net_dst, atalk_address_type, sizeof(struct atalk_ddp_addr), dst);
+ SET_ADDRESS(&pinfo->dst, atalk_address_type, sizeof(struct atalk_ddp_addr), dst);
pinfo->ptype = PT_DDP;
pinfo->destport = dport;
@@ -1418,10 +1458,10 @@ dissect_ddp_short(tvbuff_t *tvb, packet_info *pinfo, guint8 dnode,
if (tree) {
hidden_item = proto_tree_add_string(ddp_tree, hf_ddp_src, tvb,
- 4, 3, atalk_addr_to_str(src));
+ 4, 3, address_to_str(wmem_packet_scope(), &pinfo->src));
PROTO_ITEM_SET_HIDDEN(hidden_item);
hidden_item = proto_tree_add_string(ddp_tree, hf_ddp_dst, tvb,
- 6, 3, atalk_addr_to_str(dst));
+ 6, 3, address_to_str(wmem_packet_scope(), &pinfo->dst));
PROTO_ITEM_SET_HIDDEN(hidden_item);
proto_tree_add_uint(ddp_tree, hf_ddp_type, tvb, 4, 1, type);
@@ -1455,10 +1495,10 @@ dissect_ddp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
src->node = ddp.snode;
dst->net = ddp.dnet;
dst->node = ddp.dnode;
- SET_ADDRESS(&pinfo->net_src, AT_ATALK, sizeof(struct atalk_ddp_addr), src);
- SET_ADDRESS(&pinfo->src, AT_ATALK, sizeof(struct atalk_ddp_addr), src);
- SET_ADDRESS(&pinfo->net_dst, AT_ATALK, sizeof(struct atalk_ddp_addr), dst);
- SET_ADDRESS(&pinfo->dst, AT_ATALK, sizeof(struct atalk_ddp_addr), dst);
+ SET_ADDRESS(&pinfo->net_src, atalk_address_type, sizeof(struct atalk_ddp_addr), src);
+ SET_ADDRESS(&pinfo->src, atalk_address_type, sizeof(struct atalk_ddp_addr), src);
+ SET_ADDRESS(&pinfo->net_dst, atalk_address_type, sizeof(struct atalk_ddp_addr), dst);
+ SET_ADDRESS(&pinfo->dst, atalk_address_type, sizeof(struct atalk_ddp_addr), dst);
pinfo->ptype = PT_DDP;
pinfo->destport = ddp.dport;
@@ -1473,11 +1513,11 @@ dissect_ddp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ddp_tree = proto_item_add_subtree(ti, ett_ddp);
hidden_item = proto_tree_add_string(ddp_tree, hf_ddp_src, tvb,
- 4, 3, atalk_addr_to_str(src));
+ 4, 3, address_to_str(wmem_packet_scope(), &pinfo->src));
PROTO_ITEM_SET_HIDDEN(hidden_item);
hidden_item = proto_tree_add_string(ddp_tree, hf_ddp_dst, tvb,
- 6, 3, atalk_addr_to_str(dst));
+ 6, 3, address_to_str(wmem_packet_scope(), &pinfo->dst));
PROTO_ITEM_SET_HIDDEN(hidden_item);
proto_tree_add_uint(ddp_tree, hf_ddp_hopcount, tvb, 0, 1,
@@ -2022,6 +2062,8 @@ proto_register_atalk(void)
/* subdissector code */
ddp_dissector_table = register_dissector_table("ddp.type", "DDP packet type",
FT_UINT8, BASE_HEX);
+
+ atalk_address_type = address_type_dissector_register("AT_ATALK", "Appletalk DDP", atalk_to_str, atalk_str_len, atalk_col_filter_str);
}
void
diff --git a/epan/dissectors/packet-devicenet.c b/epan/dissectors/packet-devicenet.c
index ff39e108bd..58e7229565 100644
--- a/epan/dissectors/packet-devicenet.c
+++ b/epan/dissectors/packet-devicenet.c
@@ -1022,7 +1022,7 @@ void proto_register_devicenet(void)
new_register_dissector("devicenet", dissect_devicenet, proto_devicenet);
- devicenet_address_type = address_type_dissector_register("AT_DEVICENET", "DeviceNet Address", devicenet_addr_to_str, devicenet_addr_str_len);
+ devicenet_address_type = address_type_dissector_register("AT_DEVICENET", "DeviceNet Address", devicenet_addr_to_str, devicenet_addr_str_len, NULL);
devicenet_module = prefs_register_protocol(proto_devicenet, NULL);
diff --git a/epan/dissectors/packet-ieee802154.c b/epan/dissectors/packet-ieee802154.c
index b0ab5dec41..ff37f1aa36 100644
--- a/epan/dissectors/packet-ieee802154.c
+++ b/epan/dissectors/packet-ieee802154.c
@@ -2783,7 +2783,8 @@ void proto_register_ieee802154(void)
expert_ieee802154 = expert_register_protocol(proto_ieee802154);
expert_register_field_array(expert_ieee802154, ei, array_length(ei));
- ieee802_15_4_short_address_type = address_type_dissector_register("AT_IEEE_802_15_4_SHORT", "IEEE 802.15.4 16-bit short address", ieee802_15_4_short_address_to_str, ieee802_15_4_short_address_str_len);
+ ieee802_15_4_short_address_type = address_type_dissector_register("AT_IEEE_802_15_4_SHORT", "IEEE 802.15.4 16-bit short address",
+ ieee802_15_4_short_address_to_str, ieee802_15_4_short_address_str_len, NULL);
/* add a user preference to set the 802.15.4 ethertype */
ieee802154_module = prefs_register_protocol(proto_ieee802154,
diff --git a/epan/dissectors/packet-j1939.c b/epan/dissectors/packet-j1939.c
index 675430afa9..94f9b3d981 100644
--- a/epan/dissectors/packet-j1939.c
+++ b/epan/dissectors/packet-j1939.c
@@ -337,7 +337,7 @@ void proto_register_j1939(void)
subdissector_pgn_table = register_dissector_table("j1939.pgn", "PGN Handle", FT_UINT32, BASE_DEC);
- j1939_address_type = address_type_dissector_register("AT_J1939", "J1939 Address", J1939_addr_to_str, J1939_addr_str_len);
+ j1939_address_type = address_type_dissector_register("AT_J1939", "J1939 Address", J1939_addr_to_str, J1939_addr_str_len, NULL);
}
/*
diff --git a/epan/dissectors/packet-jxta.c b/epan/dissectors/packet-jxta.c
index 682f9517c4..13c4cc442d 100644
--- a/epan/dissectors/packet-jxta.c
+++ b/epan/dissectors/packet-jxta.c
@@ -38,6 +38,7 @@
#include <epan/conversation_table.h>
#include <epan/prefs.h>
#include <epan/to_str.h>
+#include <epan/address_types.h>
#include <wsutil/str_util.h>
#include "packet-jxta.h"
@@ -161,6 +162,8 @@ static gint *const ett[] = {
&ett_jxta_elem_2_flags
};
+static int uri_address_type = -1;
+
/**
* global preferences
**/
@@ -191,13 +194,13 @@ typedef struct jxta_stream_conversation_data jxta_stream_conversation_data;
static const char* jxta_conv_get_filter_type(conv_item_t* conv, conv_filter_type_e filter)
{
- if ((filter == CONV_FT_SRC_ADDRESS) && (conv->src_address.type == AT_URI))
+ if ((filter == CONV_FT_SRC_ADDRESS) && (conv->src_address.type == uri_address_type))
return "jxta.message.src";
- if ((filter == CONV_FT_DST_ADDRESS) && (conv->dst_address.type == AT_URI))
+ if ((filter == CONV_FT_DST_ADDRESS) && (conv->dst_address.type == uri_address_type))
return "jxta.message.dst";
- if ((filter == CONV_FT_ANY_ADDRESS) && (conv->src_address.type == AT_URI))
+ if ((filter == CONV_FT_ANY_ADDRESS) && (conv->src_address.type == uri_address_type))
return "jxta.message.address";
return CONV_FILTER_INVALID;
@@ -219,7 +222,7 @@ jxta_conversation_packet(void *pct, packet_info *pinfo _U_, epan_dissect_t *edt
static const char* jxta_host_get_filter_type(hostlist_talker_t* host, conv_filter_type_e filter)
{
- if ((filter == CONV_FT_ANY_ADDRESS) && (host->myaddress.type == AT_URI))
+ if ((filter == CONV_FT_ANY_ADDRESS) && (host->myaddress.type == uri_address_type))
return "jxta.message.address";
return CONV_FILTER_INVALID;
@@ -241,6 +244,27 @@ jxta_hostlist_packet(void *pit, packet_info *pinfo _U_, epan_dissect_t *edt _U_,
return 1;
}
+static gboolean uri_to_str(const address* addr, gchar *buf, int buf_len)
+{
+ int copy_len = addr->len < (buf_len - 1) ? addr->len : (buf_len - 1);
+ memcpy(buf, addr->data, copy_len );
+ buf[copy_len] = '\0';
+ return TRUE;
+}
+
+static int uri_str_len(const address* addr)
+{
+ return addr->len+1;
+}
+
+static const char* uri_col_filter_str(const address* addr _U_, gboolean is_src)
+{
+ if (is_src)
+ return "uri.src";
+
+ return "uri.dst";
+}
+
/**
* Prototypes
**/
@@ -907,7 +931,7 @@ static int dissect_jxta_welcome(tvbuff_t * tvb, packet_info * pinfo, proto_tree
col_append_str(pinfo->cinfo, COL_INFO, *current_token);
if (NULL != found_addr) {
- found_addr->type = AT_URI;
+ found_addr->type = uri_address_type;
found_addr->len = (int) strlen(*current_token);
found_addr->data = wmem_strdup(wmem_file_scope(), *current_token);
}
@@ -1308,7 +1332,7 @@ static int dissect_jxta_message(tvbuff_t * tvb, packet_info * pinfo, proto_tree
}
}
- if ((AT_URI == pinfo->src.type) && (AT_URI == pinfo->dst.type)) {
+ if ((uri_address_type == pinfo->src.type) && (uri_address_type == pinfo->dst.type)) {
jxta_tap_header *tap_header = wmem_new(wmem_file_scope(), jxta_tap_header);
tap_header->src_address = pinfo->src;
@@ -1380,7 +1404,7 @@ static int dissect_jxta_message(tvbuff_t * tvb, packet_info * pinfo, proto_tree
PROTO_ITEM_SET_HIDDEN(tree_item);
PROTO_ITEM_SET_GENERATED(tree_item);
- if(AT_URI == pinfo->src.type) {
+ if(uri_address_type == pinfo->src.type) {
tree_item = proto_tree_add_string(jxta_msg_tree, hf_uri_src, tvb, 0, 0, wmem_strbuf_get_str(src_addr));
PROTO_ITEM_SET_HIDDEN(tree_item);
PROTO_ITEM_SET_GENERATED(tree_item);
@@ -1396,7 +1420,7 @@ static int dissect_jxta_message(tvbuff_t * tvb, packet_info * pinfo, proto_tree
PROTO_ITEM_SET_HIDDEN(tree_item);
PROTO_ITEM_SET_GENERATED(tree_item);
- if(AT_URI == pinfo->dst.type) {
+ if(uri_address_type == pinfo->dst.type) {
tree_item = proto_tree_add_string(jxta_msg_tree, hf_uri_dst, tvb, 0, 0, wmem_strbuf_get_str(dst_addr));
PROTO_ITEM_SET_HIDDEN(tree_item);
PROTO_ITEM_SET_GENERATED(tree_item);
@@ -2344,6 +2368,8 @@ void proto_register_jxta(void)
/* Register JXTA Sub-tree */
proto_register_subtree_array(ett, array_length(ett));
+ uri_address_type = address_type_dissector_register("AT_URI", "URI/URL/URN", uri_to_str, uri_str_len, uri_col_filter_str);
+
/* Register preferences */
/* register re-init routine */
jxta_module = prefs_register_protocol(proto_jxta, proto_reg_handoff_jxta);
diff --git a/epan/dissectors/packet-mstp.c b/epan/dissectors/packet-mstp.c
index ba2a830c9e..a4d6d43b7a 100644
--- a/epan/dissectors/packet-mstp.c
+++ b/epan/dissectors/packet-mstp.c
@@ -34,6 +34,8 @@
#include <epan/packet.h>
#include <wiretap/wtap.h>
#include <epan/expert.h>
+#include <epan/address_types.h>
+#include <epan/to_str-int.h>
#include "packet-mstp.h"
void proto_register_mstp(void);
@@ -91,6 +93,7 @@ static int hf_mstp_frame_checksum_good = -1;
static expert_field ei_mstp_frame_pdu_len = EI_INIT;
static expert_field ei_mstp_frame_checksum_bad = EI_INIT;
+static int mstp_address_type = -1;
#if defined(BACNET_MSTP_CHECKSUM_VALIDATE)
/* Accumulate "dataValue" into the CRC in crcValue. */
@@ -146,6 +149,29 @@ mstp_frame_type_text(guint32 val)
"Unknown Frame Type (%u)");
}
+static gboolean mstp_to_str(const address* addr, gchar *buf, int buf_len _U_)
+{
+ *buf++ = '0';
+ *buf++ = 'x';
+ buf = bytes_to_hexstr(buf, (const guint8 *)addr->data, 1);
+ *buf = '\0'; /* NULL terminate */
+
+ return TRUE;
+}
+
+static int mstp_str_len(const address* addr _U_)
+{
+ return 5;
+}
+
+static const char* mstp_col_filter_str(const address* addr _U_, gboolean is_src)
+{
+ if (is_src)
+ return "mstp.src";
+
+ return "mstp.dst";
+}
+
/* dissects a BACnet MS/TP frame */
/* preamble 0x55 0xFF is not included in Cimetrics U+4 output */
void
@@ -323,11 +349,10 @@ dissect_mstp_wtap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
#endif
/* set the MS/TP MAC address in the source/destination */
- /* Use AT_ARCNET since it is similar to BACnet MS/TP */
- TVB_SET_ADDRESS(&pinfo->dl_dst, AT_ARCNET, tvb, offset+3, 1);
- TVB_SET_ADDRESS(&pinfo->dst, AT_ARCNET, tvb, offset+3, 1);
- TVB_SET_ADDRESS(&pinfo->dl_src, AT_ARCNET, tvb, offset+4, 1);
- TVB_SET_ADDRESS(&pinfo->src, AT_ARCNET, tvb, offset+4, 1);
+ TVB_SET_ADDRESS(&pinfo->dl_dst, mstp_address_type, tvb, offset+3, 1);
+ TVB_SET_ADDRESS(&pinfo->dst, mstp_address_type, tvb, offset+3, 1);
+ TVB_SET_ADDRESS(&pinfo->dl_src, mstp_address_type, tvb, offset+4, 1);
+ TVB_SET_ADDRESS(&pinfo->src, mstp_address_type, tvb, offset+4, 1);
#ifdef BACNET_MSTP_SUMMARY_IN_TREE
mstp_frame_type = tvb_get_guint8(tvb, offset+2);
@@ -434,6 +459,8 @@ proto_register_mstp(void)
subdissector_table = register_dissector_table("mstp.vendor_frame_type",
"MSTP Vendor specific Frametypes", FT_UINT24, BASE_DEC);
/* Table_type: (Vendor ID << 16) + Frametype */
+
+ mstp_address_type = address_type_dissector_register("AT_MSTP", "BACnet MS/TP Address", mstp_to_str, mstp_str_len, mstp_col_filter_str);
}
void
diff --git a/epan/dissectors/packet-sna.c b/epan/dissectors/packet-sna.c
index 942a350e55..be78e0e404 100644
--- a/epan/dissectors/packet-sna.c
+++ b/epan/dissectors/packet-sna.c
@@ -3481,7 +3481,7 @@ proto_register_sna(void)
"Systems Network Architecture XID", "SNA XID", "sna_xid");
register_dissector("sna_xid", dissect_sna_xid, proto_sna_xid);
- sna_address_type = address_type_dissector_register("AT_SNA", "SNA Address", sna_fid_to_str_buf, sna_address_str_len);
+ sna_address_type = address_type_dissector_register("AT_SNA", "SNA Address", sna_fid_to_str_buf, sna_address_str_len, NULL);
/* Register configuration options */
sna_module = prefs_register_protocol(proto_sna, NULL);
diff --git a/epan/dissectors/packet-tipc.c b/epan/dissectors/packet-tipc.c
index 034c6c9a0c..5086e82c48 100644
--- a/epan/dissectors/packet-tipc.c
+++ b/epan/dissectors/packet-tipc.c
@@ -2961,7 +2961,8 @@ proto_register_tipc(void)
/* Register configuration options */
tipc_module = prefs_register_protocol(proto_tipc, proto_reg_handoff_tipc);
- tipc_address_type = address_type_dissector_register("tipc_address_type", "TIPC Address Zone,Subnetwork,Processor", tipc_addr_to_str_buf, tipc_addr_str_len);
+ tipc_address_type = address_type_dissector_register("tipc_address_type", "TIPC Address Zone,Subnetwork,Processor",
+ tipc_addr_to_str_buf, tipc_addr_str_len, NULL);
/* Set default ports */
range_convert_str(&global_tipc_udp_port_range, DEFAULT_TIPC_PORT_RANGE, MAX_TCP_PORT);