diff options
Diffstat (limited to 'epan/dissectors/packet-ax25-kiss.c')
-rw-r--r-- | epan/dissectors/packet-ax25-kiss.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/epan/dissectors/packet-ax25-kiss.c b/epan/dissectors/packet-ax25-kiss.c index e355bd15d0..aa5a26f808 100644 --- a/epan/dissectors/packet-ax25-kiss.c +++ b/epan/dissectors/packet-ax25-kiss.c @@ -178,35 +178,36 @@ static const value_string kiss_frame_types[] = { { 0, NULL } }; -static void +static gboolean capture_ax25_kiss( const guchar *pd, int offset, int len, packet_counts *ld, const union wtap_pseudo_header *pseudo_header _U_) { int l_offset; guint8 kiss_cmd; if ( ! BYTES_ARE_IN_FRAME( offset, len, KISS_HEADER_SIZE ) ) - { - ld->other++; - return; - } + return FALSE; l_offset = offset; kiss_cmd = pd[ l_offset ]; l_offset += KISS_HEADER_SIZE; /* step over kiss header */ switch ( kiss_cmd & KISS_CMD_MASK ) - { - case KISS_DATA_FRAME : capture_ax25( pd, l_offset, len, ld, pseudo_header ); break; + { + case KISS_DATA_FRAME : + return capture_ax25( pd, l_offset, len, ld, pseudo_header ); case KISS_TXDELAY : break; case KISS_PERSISTENCE : break; case KISS_SLOT_TIME : break; case KISS_TXTAIL : break; case KISS_FULLDUPLEX : break; case KISS_SETHARDWARE : break; - case KISS_DATA_FRAME_ACK: l_offset += 2; capture_ax25( pd, l_offset, len, ld, pseudo_header ); break; + case KISS_DATA_FRAME_ACK: + l_offset += 2; + return capture_ax25( pd, l_offset, len, ld, pseudo_header ); case KISS_POLL_MODE : break; case KISS_RETURN : break; default : break; - } + } + return FALSE; } /* Code to actually dissect the packets */ @@ -432,8 +433,6 @@ proto_register_ax25_kiss(void) proto_register_field_array( proto_ax25_kiss, hf, array_length( hf ) ); proto_register_subtree_array( ett, array_length( ett ) ); - register_capture_dissector(WTAP_ENCAP_AX25_KISS, capture_ax25_kiss, proto_ax25_kiss); - /* Register preferences module */ ax25_kiss_module = prefs_register_protocol( proto_ax25_kiss, NULL); @@ -448,6 +447,7 @@ void proto_reg_handoff_ax25_kiss(void) { dissector_add_uint( "wtap_encap", WTAP_ENCAP_AX25_KISS, kiss_handle ); + register_capture_dissector("wtap_encap", WTAP_ENCAP_AX25_KISS, capture_ax25_kiss, proto_ax25_kiss); /* only currently implemented for AX.25 */ ax25_handle = find_dissector( "ax25" ); |