aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-arp.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-arp.c')
-rw-r--r--epan/dissectors/packet-arp.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/epan/dissectors/packet-arp.c b/epan/dissectors/packet-arp.c
index 0ba7e4c9c3..c55b61901d 100644
--- a/epan/dissectors/packet-arp.c
+++ b/epan/dissectors/packet-arp.c
@@ -1363,8 +1363,8 @@ dissect_ax25arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
static const guint8 mac_allzero[6] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
-static void
-dissect_arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static int
+dissect_arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
{
guint16 ar_hrd;
guint16 ar_pro;
@@ -1393,11 +1393,11 @@ dissect_arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ar_hrd = tvb_get_ntohs(tvb, AR_HRD);
if (ar_hrd == ARPHRD_ATM2225) {
call_dissector(atmarp_handle, tvb, pinfo, tree);
- return;
+ return tvb_captured_length(tvb);
}
if (ar_hrd == ARPHRD_AX25) {
call_dissector(ax25arp_handle, tvb, pinfo, tree);
- return;
+ return tvb_captured_length(tvb);
}
/* Protocol Address Type */
ar_pro = tvb_get_ntohs(tvb, AR_PRO);
@@ -1747,6 +1747,7 @@ dissect_arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_append_fstr(pinfo->cinfo, COL_INFO, " (duplicate use of %s detected!)",
arpproaddr_to_str((guint8*)&duplicate_ip, 4, ETHERTYPE_IP));
}
+ return tvb_captured_length(tvb);
}
void
@@ -1971,7 +1972,7 @@ proto_register_arp(void)
atmarp_handle = new_create_dissector_handle(dissect_atmarp, proto_arp);
ax25arp_handle = new_create_dissector_handle(dissect_ax25arp, proto_arp);
- arp_handle = register_dissector( "arp" , dissect_arp, proto_arp );
+ arp_handle = new_register_dissector( "arp" , dissect_arp, proto_arp );
/* Preferences */
arp_module = prefs_register_protocol(proto_arp, NULL);