diff options
-rw-r--r-- | epan/dissectors/packet-aprs.c | 48 | ||||
-rw-r--r-- | epan/dissectors/packet-ax25-kiss.c | 165 | ||||
-rw-r--r-- | epan/dissectors/packet-ax25-kiss.h | 4 | ||||
-rw-r--r-- | epan/dissectors/packet-ax25-nol3.c | 73 | ||||
-rw-r--r-- | epan/dissectors/packet-ax25.c | 156 | ||||
-rw-r--r-- | epan/dissectors/packet-ax25.h | 6 | ||||
-rw-r--r-- | epan/dissectors/packet-bpq.c | 79 | ||||
-rw-r--r-- | epan/dissectors/packet-bpq.h | 4 | ||||
-rw-r--r-- | epan/dissectors/packet-flexnet.c | 52 | ||||
-rw-r--r-- | epan/dissectors/packet-netrom.c | 212 | ||||
-rw-r--r-- | epan/dissectors/packet-netrom.h | 6 |
11 files changed, 332 insertions, 473 deletions
diff --git a/epan/dissectors/packet-aprs.c b/epan/dissectors/packet-aprs.c index 947d0e856f..17ef47006d 100644 --- a/epan/dissectors/packet-aprs.c +++ b/epan/dissectors/packet-aprs.c @@ -5,8 +5,8 @@ * * $Id$ * - * Ethereal - Network traffic analyzer - * By Gerald Combs <gerald@ethereal.com> + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> * Copyright 1998 Gerald Combs * * This program is free software; you can redistribute it and/or @@ -21,7 +21,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* @@ -41,30 +41,18 @@ #include "config.h" -#include <stdio.h> -#include <stdlib.h> -#include <string.h> #include <ctype.h> #include <math.h> #include <glib.h> -#include <epan/strutil.h> #include <epan/packet.h> -#include <epan/address.h> #include <epan/prefs.h> #include <epan/emem.h> -#include <epan/ftypes/ftypes.h> #define AX25_ADDR_LEN 7 /* length of an AX.25 address */ #define STRLEN 100 -/* Forward declaration we need below */ -void proto_reg_handoff_aprs(void); - -/* Dissector handles - all the possibles are listed */ -static dissector_handle_t default_handle; - /* Initialize the protocol and registered fields */ static int proto_aprs = -1; @@ -485,7 +473,7 @@ dissect_aprs_msg( tvbuff_t *tvb, ch = tvb_get_guint8( tvb, offset ); if ( parent_tree ){ - tc = proto_tree_add_item( parent_tree, hf_aprs_msg, tvb, offset, 7, ENC_ASCII ); + tc = proto_tree_add_item( parent_tree, hf_aprs_msg, tvb, offset, 7, ENC_ASCII|ENC_NA ); msg_tree = proto_item_add_subtree( tc, ett_aprs_msg ); } if ( isdigit( ch ) ) @@ -991,7 +979,7 @@ aprs_timestamp( proto_tree *aprs_tree, tvbuff_t *tvb, int offset ) g_snprintf( info_buffer, STRLEN, "%*.*s", data_len, data_len, tvb_get_ptr( tvb, offset, data_len ) ); if ( isdigit( info_buffer[ 6 ] ) ) { /* MDHM */ - proto_tree_add_item( aprs_tree, hf_aprs_mdhm, tvb, offset, data_len, FALSE ); + proto_tree_add_item( aprs_tree, hf_aprs_mdhm, tvb, offset, data_len, ENC_ASCII|ENC_NA ); proto_tree_add_string( aprs_tree, hf_aprs_tz, tvb, offset, data_len, timezone ); } else @@ -999,7 +987,7 @@ aprs_timestamp( proto_tree *aprs_tree, tvbuff_t *tvb, int offset ) data_len--; if ( info_buffer[ 6 ] == 'h' ) { /* HMS */ - proto_tree_add_item( aprs_tree, hf_aprs_hms, tvb, offset, data_len, FALSE ); + proto_tree_add_item( aprs_tree, hf_aprs_hms, tvb, offset, data_len, ENC_ASCII|ENC_NA ); proto_tree_add_string( aprs_tree, hf_aprs_tz, tvb, offset, data_len, timezone ); } else @@ -1010,7 +998,7 @@ aprs_timestamp( proto_tree *aprs_tree, tvbuff_t *tvb, int offset ) case '/' : timezone = "local"; break; default : timezone = "unknown"; break; } - proto_tree_add_item( aprs_tree, hf_aprs_dhm, tvb, offset, data_len, FALSE ); + proto_tree_add_item( aprs_tree, hf_aprs_dhm, tvb, offset, data_len, ENC_ASCII|ENC_NA ); proto_tree_add_string( aprs_tree, hf_aprs_tz, tvb, offset + 6, 1, timezone ); } } @@ -1072,14 +1060,14 @@ aprs_status( proto_tree *aprs_tree, tvbuff_t *tvb, int offset ) g_snprintf( info_buffer, STRLEN, "%*.*s", data_len, data_len, tvb_get_ptr( tvb, offset, data_len ) ); if ( data_len > 7 && info_buffer[ 6 ] == 'z' ) { - proto_tree_add_item( aprs_tree, hf_aprs_dhm, tvb, offset, 6, FALSE ); + proto_tree_add_item( aprs_tree, hf_aprs_dhm, tvb, offset, 6, ENC_ASCII|ENC_NA ); offset += 6; data_len -= 6; proto_tree_add_string( aprs_tree, hf_aprs_tz, tvb, offset, 1, "zulu" ); offset += 1; data_len -= 1; } - proto_tree_add_item( aprs_tree, hf_aprs_status, tvb, offset, data_len, FALSE ); + proto_tree_add_item( aprs_tree, hf_aprs_status, tvb, offset, data_len, ENC_ASCII|ENC_NA ); return offset + data_len; } @@ -1118,7 +1106,7 @@ aprs_item( proto_tree *aprs_tree, tvbuff_t *tvb, int offset ) static int aprs_3rd_party( proto_tree *aprs_tree, tvbuff_t *tvb, int offset, int data_len ) { - proto_tree_add_item( aprs_tree, hf_aprs_third_party, tvb, offset, data_len, FALSE ); + proto_tree_add_item( aprs_tree, hf_aprs_third_party, tvb, offset, data_len, ENC_NA ); /* tnc-2 */ /* aea */ return offset + data_len; @@ -1344,7 +1332,7 @@ dissect_aprs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void *d offset = 0; dti = tvb_get_guint8( tvb, offset ); - proto_tree_add_item( aprs_tree, hf_aprs_dti, tvb, offset, 1, FALSE ); + proto_tree_add_item( aprs_tree, hf_aprs_dti, tvb, offset, 1, ENC_ASCII|ENC_NA ); offset += 1; switch ( dti ) { @@ -1939,7 +1927,7 @@ proto_register_aprs(void) proto_register_subtree_array( ett, array_length( ett ) ); /* Register preferences module */ - aprs_module = prefs_register_protocol( proto_aprs, proto_reg_handoff_aprs); + aprs_module = prefs_register_protocol( proto_aprs, NULL); /* Register any preference */ prefs_register_bool_preference(aprs_module, "showaprslax", @@ -1949,15 +1937,3 @@ proto_register_aprs(void) } -void -proto_reg_handoff_aprs(void) -{ - static gboolean inited = FALSE; - - if( !inited ) { - - default_handle = find_dissector( "data" ); - - inited = TRUE; - } -} diff --git a/epan/dissectors/packet-ax25-kiss.c b/epan/dissectors/packet-ax25-kiss.c index 7dbaedcec6..77cddb9b38 100644 --- a/epan/dissectors/packet-ax25-kiss.c +++ b/epan/dissectors/packet-ax25-kiss.c @@ -5,8 +5,8 @@ * * $Id$ * - * Ethereal - Network traffic analyzer - * By Gerald Combs <gerald@ethereal.com> + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> * Copyright 1998 Gerald Combs * * This program is free software; you can redistribute it and/or @@ -21,7 +21,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* @@ -33,8 +33,8 @@ * and here: * http://www.ax25.net/kiss.aspx * - * Linux implementation does not appear to attempt to implement that - * protocol in full. Does provide the ability to send a KISS command via + * The Linux implementation does not appear to attempt to implement that + * protocol in full. It does provide the ability to send a KISS command via * ax25_kiss_cmd() and internally will send FULLDUPLEX KISS commands if * DAMA is enabled/disabled. * i.e.: @@ -103,52 +103,44 @@ #include "config.h" -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - #include <glib.h> -#include <epan/strutil.h> #include <epan/packet.h> #include <epan/emem.h> -#include <epan/etypes.h> #include "packet-ax25-kiss.h" #include "packet-ax25.h" #define STRLEN 80 -#define KISS_HEADER_SIZE 1 /* length of the KISS type header */ +#define KISS_HEADER_SIZE 1 /* length of the KISS type header */ /* KISS frame types */ -#define KISS_DATA_FRAME 0 -#define KISS_TXDELAY 1 -#define KISS_PERSISTENCE 2 -#define KISS_SLOT_TIME 3 -#define KISS_TXTAIL 4 -#define KISS_FULLDUPLEX 5 -#define KISS_SETHARDWARE 6 +#define KISS_DATA_FRAME 0 +#define KISS_TXDELAY 1 +#define KISS_PERSISTENCE 2 +#define KISS_SLOT_TIME 3 +#define KISS_TXTAIL 4 +#define KISS_FULLDUPLEX 5 +#define KISS_SETHARDWARE 6 #define KISS_RETURN 15 #define KISS_CMD_MASK 0x0f #define KISS_PORT_MASK 0xf0 -/* Forward declaration we need below */ -void proto_reg_handoff_ax25_kiss(void); - /* Dissector handles - all the possibles are listed */ static dissector_handle_t ax25_handle; /* Initialize the protocol and registered fields */ static int proto_ax25_kiss = -1; + static int hf_ax25_kiss_cmd = -1; static int hf_ax25_kiss_port = -1; -static int hf_ax25_kiss_txdelay = -1; +static int hf_ax25_kiss_txdelay = -1; static int hf_ax25_kiss_persistence = -1; static int hf_ax25_kiss_slottime = -1; -static int hf_ax25_kiss_txtail = -1; +static int hf_ax25_kiss_txtail = -1; static int hf_ax25_kiss_fullduplex = -1; static int hf_ax25_kiss_sethardware = -1; @@ -156,52 +148,79 @@ static int hf_ax25_kiss_sethardware = -1; static gint ett_ax25_kiss = -1; static const value_string kiss_frame_types[] = { - { KISS_DATA_FRAME, "Data frame" }, - { KISS_TXDELAY, "Tx Delay" }, + { KISS_DATA_FRAME, "Data frame" }, + { KISS_TXDELAY, "Tx Delay" }, { KISS_PERSISTENCE, "Persistence" }, - { KISS_SLOT_TIME, "Slot time" }, - { KISS_TXTAIL, "Tx tail" }, - { KISS_FULLDUPLEX, "Full duplex" }, + { KISS_SLOT_TIME, "Slot time" }, + { KISS_TXTAIL, "Tx tail" }, + { KISS_FULLDUPLEX, "Full duplex" }, { KISS_SETHARDWARE, "Set hardware" }, - { KISS_RETURN, "Return" }, + { KISS_RETURN, "Return" }, { 0, NULL } }; +void +capture_ax25_kiss( const guchar *pd, int offset, int len, packet_counts *ld) +{ + int l_offset; + guint8 kiss_cmd; + + if ( ! BYTES_ARE_IN_FRAME( offset, len, KISS_HEADER_SIZE ) ) + { + ld->other++; + return; + } + + 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 ); break; + case KISS_TXDELAY : l_offset += 1; break; + case KISS_PERSISTENCE : l_offset += 1; break; + case KISS_SLOT_TIME : l_offset += 1; break; + case KISS_TXTAIL : l_offset += 1; break; + case KISS_FULLDUPLEX : l_offset += 1; break; + case KISS_SETHARDWARE : l_offset += 1; break; + case KISS_RETURN : break; + default : break; + } +} + /* Code to actually dissect the packets */ static void dissect_ax25_kiss( tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree ) { proto_item *ti; proto_tree *kiss_tree; - int offset; - int kiss_cmd; - int kiss_type; - int kiss_port; - int kiss_param; - int kiss_param_len; + int offset; + int kiss_cmd; + int kiss_type; + int kiss_port; + int kiss_param; + int kiss_param_len; const char *frame_type_text; - char *info_buffer; - void *saved_private_data; - tvbuff_t *next_tvb = NULL; - + char *info_buffer; + void *saved_private_data; + tvbuff_t *next_tvb = NULL; - info_buffer = ep_alloc( STRLEN ); - info_buffer[0]='\0'; + info_buffer = ep_alloc( STRLEN ); + info_buffer[0] = '\0'; col_set_str( pinfo->cinfo, COL_PROTOCOL, "AX.25 KISS" ); - col_clear( pinfo->cinfo, COL_INFO ); /* protocol offset for the KISS header */ offset = 0; - kiss_cmd = tvb_get_guint8( tvb, offset ) & 0xff; - kiss_type = kiss_cmd & KISS_CMD_MASK; - kiss_port = (kiss_cmd & KISS_PORT_MASK) >> 4; - offset += KISS_HEADER_SIZE; + kiss_cmd = tvb_get_guint8( tvb, offset ) & 0xff; + kiss_type = kiss_cmd & KISS_CMD_MASK; + kiss_port = (kiss_cmd & KISS_PORT_MASK) >> 4; + offset += KISS_HEADER_SIZE; - kiss_param = 0; - kiss_param_len = 0; + kiss_param = 0; + kiss_param_len = 0; switch ( kiss_type ) { case KISS_TXDELAY : kiss_param_len = 1; kiss_param = tvb_get_guint8( tvb, offset ) & 0xff; break; @@ -215,8 +234,7 @@ dissect_ax25_kiss( tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree ) frame_type_text = val_to_str(kiss_type, kiss_frame_types, "Unknown (%u)"); g_snprintf( info_buffer, STRLEN, "%s, Port %u", frame_type_text, kiss_port ); if ( kiss_param_len > 0 ) - g_snprintf( info_buffer, STRLEN, "%s %u, Port %u", frame_type_text, kiss_param, - kiss_port ); + g_snprintf( info_buffer, STRLEN, "%s %u, Port %u", frame_type_text, kiss_param, kiss_port ); offset += kiss_param_len; @@ -357,47 +375,12 @@ proto_register_ax25_kiss(void) void proto_reg_handoff_ax25_kiss(void) { - static gboolean inited = FALSE; - - if( !inited ) { - - dissector_handle_t kiss_handle; + dissector_handle_t kiss_handle; - kiss_handle = create_dissector_handle( dissect_ax25_kiss, proto_ax25_kiss ); - dissector_add_uint( "wtap_encap", WTAP_ENCAP_AX25_KISS, kiss_handle ); + kiss_handle = create_dissector_handle( dissect_ax25_kiss, proto_ax25_kiss ); + dissector_add_uint( "wtap_encap", WTAP_ENCAP_AX25_KISS, kiss_handle ); - /* only currently implemented for AX.25 */ - ax25_handle = find_dissector( "ax25" ); - - inited = TRUE; - } + /* only currently implemented for AX.25 */ + ax25_handle = find_dissector( "ax25" ); } -void -capture_ax25_kiss( const guchar *pd, int offset, int len, packet_counts *ld) -{ - int l_offset; - guint8 kiss_cmd; - - if ( ! BYTES_ARE_IN_FRAME( offset, len, KISS_HEADER_SIZE ) ) { - ld->other++; - return; - } - - 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 ); break; - 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_RETURN : break; - default : break; - } - -} diff --git a/epan/dissectors/packet-ax25-kiss.h b/epan/dissectors/packet-ax25-kiss.h index 2abc1d7199..ea7d87a68b 100644 --- a/epan/dissectors/packet-ax25-kiss.h +++ b/epan/dissectors/packet-ax25-kiss.h @@ -5,8 +5,8 @@ * * $Id$ * - * Ethereal - Network traffic analyzer - * By Gerald Combs <gerald@ethereal.com> + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> * Copyright 1998 Gerald Combs * * This program is free software; you can redistribute it and/or diff --git a/epan/dissectors/packet-ax25-nol3.c b/epan/dissectors/packet-ax25-nol3.c index 6f3151b1bf..cb94cb1c35 100644 --- a/epan/dissectors/packet-ax25-nol3.c +++ b/epan/dissectors/packet-ax25-nol3.c @@ -5,8 +5,8 @@ * * $Id$ * - * Ethereal - Network traffic analyzer - * By Gerald Combs <gerald@ethereal.com> + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> * Copyright 1998 Gerald Combs * * This program is free software; you can redistribute it and/or @@ -21,7 +21,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* @@ -48,15 +48,8 @@ #include "config.h" -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <ctype.h> -#include <math.h> - #include <glib.h> -#include <epan/strutil.h> #include <epan/packet.h> #include <epan/prefs.h> #include <epan/emem.h> @@ -64,9 +57,6 @@ #define STRLEN 80 -/* Forward declaration we need below */ -void proto_reg_handoff_ax25_nol3(void); - /* Dissector handles - all the possibles are listed */ static dissector_handle_t aprs_handle; static dissector_handle_t default_handle; @@ -116,7 +106,7 @@ dissect_dx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) dx_tree = proto_item_add_subtree( ti, ett_dx ); offset = 0; - proto_tree_add_item( dx_tree, hf_dx_report, tvb, offset, data_len, FALSE ); + proto_tree_add_item( dx_tree, hf_dx_report, tvb, offset, data_len, ENC_ASCII|ENC_NA ); } } @@ -127,33 +117,33 @@ isaprs( guint8 dti ) switch ( dti ) { - case '<' : - case '>' : - case '?' : - case '$' : - case '%' : - case 'T' : - case '[' : - case ')' : - case '_' : - case ',' : - case '{' : - case '}' : - case ':' : - case ';' : case 0x1c : case 0x1d : - case '\'' : - case '`' : + case '!' : case '#' : - case '*' : + case '$' : + case '%' : case '&' : + case ')' : + case '*' : case '+' : + case ',' : case '.' : + case '/' : + case ':' : + case ';' : + case '<' : case '=' : - case '!' : + case '>' : + case '?' : case '@' : - case '/' : b = TRUE; break; + case 'T' : + case '[' : + case '\'' : + case '_' : + case '`' : + case '{' : + case '}' : b = TRUE; break; default : break; } return b; @@ -271,7 +261,7 @@ proto_register_ax25_nol3(void) proto_register_subtree_array( ett, array_length( ett ) ); /* Register preferences module */ - ax25_nol3_module = prefs_register_protocol( proto_ax25_nol3, proto_reg_handoff_ax25_nol3); + ax25_nol3_module = prefs_register_protocol( proto_ax25_nol3, NULL); /* Register any preference */ prefs_register_bool_preference(ax25_nol3_module, "showaprs", @@ -300,16 +290,11 @@ proto_register_ax25_nol3(void) void proto_reg_handoff_ax25_nol3(void) { - static gboolean inited = FALSE; - - if( !inited ) { - dissector_add_uint( "ax25.pid", AX25_P_NO_L3, create_dissector_handle( dissect_ax25_nol3, proto_ax25_nol3 ) ); + dissector_add_uint( "ax25.pid", AX25_P_NO_L3, create_dissector_handle( dissect_ax25_nol3, proto_ax25_nol3 ) ); - /* - */ - aprs_handle = find_dissector( "aprs" ); - default_handle = find_dissector( "data" ); + /* + */ + aprs_handle = find_dissector( "aprs" ); + default_handle = find_dissector( "data" ); - inited = TRUE; - } } diff --git a/epan/dissectors/packet-ax25.c b/epan/dissectors/packet-ax25.c index 9c6f66049d..4d72c510d0 100644 --- a/epan/dissectors/packet-ax25.c +++ b/epan/dissectors/packet-ax25.c @@ -6,8 +6,8 @@ * * $Id$ * - * Ethereal - Network traffic analyzer - * By Gerald Combs <gerald@ethereal.com> + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> * Copyright 1998 Gerald Combs * * This program is free software; you can redistribute it and/or @@ -22,7 +22,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* @@ -46,13 +46,8 @@ #include "config.h" -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - #include <glib.h> -#include <epan/strutil.h> #include <epan/packet.h> #include <epan/emem.h> #include <epan/xdlc.h> @@ -65,12 +60,9 @@ #define STRLEN 80 -#define AX25_ADDR_LEN 7 /* length of an AX.25 address */ +#define AX25_ADDR_LEN 7 /* length of an AX.25 address */ #define AX25_HEADER_SIZE 15 /* length of src_addr + dst_addr + cntl */ -#define AX25_MAX_DIGIS 8 - -/* Forward declaration we need below */ -void proto_reg_handoff_ax25(void); +#define AX25_MAX_DIGIS 8 /* Dissector table */ static dissector_table_t ax25_dissector_table; @@ -113,28 +105,26 @@ static const xdlc_cf_items ax25_cf_items = { }; static const value_string pid_vals[] = { - { AX25_P_ROSE, "Rose" }, + { AX25_P_ROSE, "Rose" }, { AX25_P_RFC1144C, "RFC1144 (compressed)" }, - { AX25_P_RFC1144, "RFC1144 (uncompressed)" }, - { AX25_P_SEGMENT, "Segment" }, - { AX25_P_TEXNET, "Texnet" }, - { AX25_P_LCP, "Link Quality protocol" }, - { AX25_P_ATALK, "AppleTalk" }, + { AX25_P_RFC1144, "RFC1144 (uncompressed)" }, + { AX25_P_SEGMENT, "Segment" }, + { AX25_P_TEXNET, "Texnet" }, + { AX25_P_LCP, "Link Quality protocol" }, + { AX25_P_ATALK, "AppleTalk" }, { AX25_P_ATALKARP, "AppleTalk ARP" }, - { AX25_P_IP, "IP" }, - { AX25_P_ARP, "ARP" }, - { AX25_P_FLEXNET, "FlexNet" }, - { AX25_P_NETROM, "NetRom" }, - { AX25_P_NO_L3, "No L3" }, - { AX25_P_L3_ESC, "L3 esc" }, + { AX25_P_IP, "IP" }, + { AX25_P_ARP, "ARP" }, + { AX25_P_FLEXNET, "FlexNet" }, + { AX25_P_NETROM, "NetRom" }, + { AX25_P_NO_L3, "No L3" }, + { AX25_P_L3_ESC, "L3 esc" }, { 0, NULL } }; -/* Initialize the subtree pointers */ static gint ett_ax25 = -1; static gint ett_ax25_ctl = -1; -/* Code to actually dissect the packets */ static void dissect_ax25( tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree ) { @@ -158,10 +148,9 @@ dissect_ax25( tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree ) info_buffer = ep_alloc( STRLEN ); - info_buffer[0]='\0'; + info_buffer[0] = '\0'; col_set_str( pinfo->cinfo, COL_PROTOCOL, "AX.25" ); - col_clear( pinfo->cinfo, COL_INFO ); /* start at the dst addr */ @@ -276,6 +265,44 @@ dissect_ax25( tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree ) } void +capture_ax25( const guchar *pd, int offset, int len, packet_counts *ld) +{ + guint8 control; + guint8 pid; + int l_offset; + + if ( ! BYTES_ARE_IN_FRAME( offset, len, AX25_HEADER_SIZE ) ) + { + ld->other++; + return; + } + + l_offset = offset; + l_offset += AX25_ADDR_LEN; /* step over dst addr point at src addr */ + l_offset += AX25_ADDR_LEN; /* step over src addr point at either 1st via addr or control byte */ + while ( ( pd[ l_offset - 1 ] & 0x01 ) == 0 ) + l_offset += AX25_ADDR_LEN; /* step over a via addr */ + + control = pd[ l_offset ]; + + /* decode the pid field (if appropriate) */ + if ( XDLC_IS_INFORMATION( control ) ) + { + l_offset += 1; /* step over control byte point at pid */ + pid = pd[ l_offset ]; + + l_offset += 1; /* step over the pid and point to the first byte of the payload */ + switch ( pid & 0x0ff ) + { + case AX25_P_NETROM : capture_netrom( pd, l_offset, len, ld ); break; + case AX25_P_IP : capture_ip( pd, l_offset, len, ld ); break; + case AX25_P_ARP : ld->arp++; break; + default : ld->other++; break; + } + } +} + +void proto_register_ax25(void) { static const true_false_string flags_set_truth = @@ -345,47 +372,47 @@ proto_register_ax25(void) { &hf_ax25_n_r, { "n(r)", "ax25.ctl.n_r", FT_UINT8, BASE_DEC, NULL, XDLC_N_R_MASK, - "", HFILL } + NULL, HFILL } }, { &hf_ax25_n_s, { "n(s)", "ax25.ctl.n_s", FT_UINT8, BASE_DEC, NULL, XDLC_N_S_MASK, - "", HFILL } + NULL, HFILL } }, { &hf_ax25_p, { "Poll", "ax25.ctl.p", FT_BOOLEAN, 8, TFS(&flags_set_truth), XDLC_P_F, - "", HFILL } + NULL, HFILL } }, { &hf_ax25_f, { "Final", "ax25.ctl.f", FT_BOOLEAN, 8, TFS(&flags_set_truth), XDLC_P_F, - "", HFILL } + NULL, HFILL } }, { &hf_ax25_ftype_s, { "Frame type", "ax25.ctl.ftype_s", FT_UINT8, BASE_HEX, VALS(stype_vals), XDLC_S_FTYPE_MASK, - "", HFILL } + NULL, HFILL } }, { &hf_ax25_ftype_i, { "Frame type", "ax25.ctl.ftype_i", FT_UINT8, BASE_HEX, VALS(ftype_vals), XDLC_I_MASK, - "", HFILL } + NULL, HFILL } }, { &hf_ax25_ftype_su, { "Frame type", "ax25.ctl.ftype_su", FT_UINT8, BASE_HEX, VALS(ftype_vals), XDLC_S_U_MASK, - "", HFILL } + NULL, HFILL } }, { &hf_ax25_u_cmd, { "Frame type", "ax25.ctl.u_cmd", FT_UINT8, BASE_HEX, VALS(modifier_vals_cmd), XDLC_U_MODIFIER_MASK, - "", HFILL } + NULL, HFILL } }, { &hf_ax25_u_resp, { "Frame type", "ax25.ctl.u_resp", FT_UINT8, BASE_HEX, VALS(modifier_vals_resp), XDLC_U_MODIFIER_MASK, - "", HFILL } + NULL, HFILL } }, { &hf_ax25_pid, { "Protocol ID", "ax25.pid", @@ -417,56 +444,13 @@ proto_register_ax25(void) void proto_reg_handoff_ax25(void) { - static gboolean inited = FALSE; - - if( !inited ) { - - dissector_handle_t ax25_handle; + dissector_handle_t ax25_handle; - ax25_handle = create_dissector_handle( dissect_ax25, proto_ax25 ); - dissector_add_uint("wtap_encap", WTAP_ENCAP_AX25, ax25_handle); - dissector_add_uint("ip.proto", IP_PROTO_AX25, ax25_handle); + ax25_handle = create_dissector_handle( dissect_ax25, proto_ax25 ); + dissector_add_uint("wtap_encap", WTAP_ENCAP_AX25, ax25_handle); + dissector_add_uint("ip.proto", IP_PROTO_AX25, ax25_handle); - data_handle = find_dissector( "data" ); + data_handle = find_dissector( "data" ); - inited = TRUE; - } } -void -capture_ax25( const guchar *pd, int offset, int len, packet_counts *ld) -{ - guint8 control; - guint8 pid; - int l_offset; - - if ( ! BYTES_ARE_IN_FRAME( offset, len, AX25_HEADER_SIZE ) ) - { - ld->other++; - return; - } - - l_offset = offset; - l_offset += AX25_ADDR_LEN; /* step over dst addr point at src addr */ - l_offset += AX25_ADDR_LEN; /* step over src addr point at either 1st via addr or control byte */ - while ( ( pd[ l_offset - 1 ] & 0x01 ) == 0 ) - l_offset += AX25_ADDR_LEN; /* step over a via addr */ - - control = pd[ l_offset ]; - - /* decode the pid field (if appropriate) */ - if ( XDLC_IS_INFORMATION( control ) ) - { - l_offset += 1; /* step over control byte point at pid */ - pid = pd[ l_offset ]; - - l_offset += 1; /* step over the pid and point to the first byte of the payload */ - switch ( pid & 0x0ff ) - { - case AX25_P_NETROM : capture_netrom( pd, l_offset, len, ld ); break; - case AX25_P_IP : capture_ip( pd, l_offset, len, ld ); break; - case AX25_P_ARP : ld->arp++; break; - default : ld->other++; break; - } - } -} diff --git a/epan/dissectors/packet-ax25.h b/epan/dissectors/packet-ax25.h index 92aa652bfd..c1876dd38b 100644 --- a/epan/dissectors/packet-ax25.h +++ b/epan/dissectors/packet-ax25.h @@ -5,8 +5,8 @@ * * $Id$ * - * Ethereal - Network traffic analyzer - * By Gerald Combs <gerald@ethereal.com> + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark,org> * Copyright 1998 Gerald Combs * * This program is free software; you can redistribute it and/or @@ -21,7 +21,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __PACKET_AX25_H__ diff --git a/epan/dissectors/packet-bpq.c b/epan/dissectors/packet-bpq.c index 8abf73317b..76f8cf7c2c 100644 --- a/epan/dissectors/packet-bpq.c +++ b/epan/dissectors/packet-bpq.c @@ -5,8 +5,8 @@ * * $Id$ * - * Ethereal - Network traffic analyzer - * By Gerald Combs <gerald@ethereal.com> + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> * Copyright 1998 Gerald Combs * * This program is free software; you can redistribute it and/or @@ -21,7 +21,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* @@ -37,16 +37,9 @@ #include "config.h" -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - #include <glib.h> -#include <epan/strutil.h> #include <epan/packet.h> -#include <epan/prefs.h> -#include <epan/emem.h> #include <epan/etypes.h> #include "packet-bpq.h" @@ -56,29 +49,22 @@ #define BPQ_HEADER_SIZE 2 /* length of bpq_len */ -/* Forward declaration we need below */ -void proto_reg_handoff_bpq(void); - -/* Dissector handles - all the possibles are listed */ static dissector_handle_t ax25_handle; -/* Initialize the protocol and registered fields */ static int proto_bpq = -1; static int hf_bpq_len = -1; -/* Initialize the subtree pointers */ static gint ett_bpq = -1; -/* Code to actually dissect the packets */ static void dissect_bpq( tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree ) { proto_item *ti; proto_tree *bpq_tree; - int offset; - guint16 bpq_len; - void *saved_private_data; - tvbuff_t *next_tvb = NULL; + int offset; + guint16 bpq_len; + void *saved_private_data; + tvbuff_t *next_tvb; col_set_str( pinfo->cinfo, COL_PROTOCOL, "BPQ" ); @@ -105,10 +91,9 @@ dissect_bpq( tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree ) bpq_tree = proto_item_add_subtree( ti, ett_bpq ); - proto_tree_add_item( bpq_tree, hf_bpq_len, tvb, offset, BPQ_HEADER_SIZE, TRUE ); + proto_tree_add_item( bpq_tree, hf_bpq_len, tvb, offset, BPQ_HEADER_SIZE, ENC_LITTLE_ENDIAN ); } - /* Call sub-dissectors here */ offset += BPQ_HEADER_SIZE; @@ -120,6 +105,22 @@ dissect_bpq( tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree ) } void +capture_bpq( const guchar *pd, int offset, int len, packet_counts *ld) +{ + int l_offset; + + if ( ! BYTES_ARE_IN_FRAME( offset, len, BPQ_HEADER_SIZE ) ) + { + ld->other++; + return; + } + + l_offset = offset; + l_offset += BPQ_HEADER_SIZE; /* step over bpq header to point at the AX.25 packet*/ + capture_ax25( pd, l_offset, len, ld ); +} + +void proto_register_bpq(void) { /* Setup list of header fields */ @@ -150,34 +151,12 @@ proto_register_bpq(void) void proto_reg_handoff_bpq(void) { - static gboolean inited = FALSE; + dissector_handle_t bpq_handle; - if(!inited) { + bpq_handle = create_dissector_handle( dissect_bpq, proto_bpq ); + dissector_add_uint("ethertype", ETHERTYPE_BPQ, bpq_handle); - dissector_handle_t bpq_handle; + /* BPQ is only implemented for AX.25 */ + ax25_handle = find_dissector( "ax25" ); - bpq_handle = create_dissector_handle( dissect_bpq, proto_bpq ); - dissector_add_uint("ethertype", ETHERTYPE_BPQ, bpq_handle); - - /* BPQ is only implemented for AX.25 */ - ax25_handle = find_dissector( "ax25" ); - - inited = TRUE; - } -} - -void -capture_bpq( const guchar *pd, int offset, int len, packet_counts *ld) -{ - int l_offset; - - if ( ! BYTES_ARE_IN_FRAME( offset, len, BPQ_HEADER_SIZE ) ) - { - ld->other++; - return; - } - - l_offset = offset; - l_offset += BPQ_HEADER_SIZE; /* step over bpq header to point at the AX.25 packet*/ - capture_ax25( pd, l_offset, len, ld ); } diff --git a/epan/dissectors/packet-bpq.h b/epan/dissectors/packet-bpq.h index b104d88c1c..ad8e59a167 100644 --- a/epan/dissectors/packet-bpq.h +++ b/epan/dissectors/packet-bpq.h @@ -5,8 +5,8 @@ * * $Id$ * - * Ethereal - Network traffic analyzer - * By Gerald Combs <gerald@ethereal.com> + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> * Copyright 1998 Gerald Combs * * This program is free software; you can redistribute it and/or diff --git a/epan/dissectors/packet-flexnet.c b/epan/dissectors/packet-flexnet.c index 09ccc4d214..0b53747fc2 100644 --- a/epan/dissectors/packet-flexnet.c +++ b/epan/dissectors/packet-flexnet.c @@ -5,8 +5,8 @@ * * $Id$ * - * Ethereal - Network traffic analyzer - * By Gerald Combs <gerald@ethereal.com> + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> * Copyright 1998 Gerald Combs * * This program is free software; you can redistribute it and/or @@ -21,7 +21,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* @@ -38,53 +38,40 @@ #include "config.h" -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - #include <glib.h> -#include <epan/strutil.h> #include <epan/packet.h> -#include <epan/emem.h> #include <epan/ax25_pids.h> #define FLEXNET_ADRLEN 15 #define FLEXNET_CTLLEN 15 #define FLEXNET_HDRLEN (FLEXNET_ADRLEN + FLEXNET_ADRLEN + FLEXNET_CTLLEN) -/* Forward declaration we need below */ -void proto_reg_handoff_flexnet(void); - -/* Dissector handles - all the possibles are listed */ static dissector_handle_t default_handle; -/* Initialize the protocol and registered fields */ static int proto_flexnet = -1; static int hf_flexnet_dst = -1; static int hf_flexnet_src = -1; static int hf_flexnet_ctl = -1; -/* Initialize the subtree pointers */ static gint ett_flexnet = -1; static gint ett_flexnet_ctl = -1; -/* Code to actually dissect the packets */ static void dissect_flexnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) { - proto_item *ti; - proto_tree *flexnet_tree; - int offset; - void *saved_private_data; - tvbuff_t *next_tvb = NULL; + void *saved_private_data; + tvbuff_t *next_tvb; col_set_str( pinfo->cinfo, COL_PROTOCOL, "Flexnet"); - col_clear( pinfo->cinfo, COL_INFO ); if ( parent_tree ) { + proto_item *ti; + proto_tree *flexnet_tree; + int offset; + /* create display subtree for the protocol */ ti = proto_tree_add_protocol_format( parent_tree, proto_flexnet, tvb, 0, FLEXNET_HDRLEN, "FLEXNET" ); @@ -93,14 +80,14 @@ dissect_flexnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) offset = 0; - proto_tree_add_item( flexnet_tree, hf_flexnet_dst, tvb, offset, FLEXNET_ADRLEN, FALSE ); + proto_tree_add_item( flexnet_tree, hf_flexnet_dst, tvb, offset, FLEXNET_ADRLEN, ENC_NA ); offset +=FLEXNET_ADRLEN; - proto_tree_add_item( flexnet_tree, hf_flexnet_src, tvb, offset, FLEXNET_ADRLEN, FALSE ); + proto_tree_add_item( flexnet_tree, hf_flexnet_src, tvb, offset, FLEXNET_ADRLEN, ENC_NA ); offset +=FLEXNET_ADRLEN; - proto_tree_add_item( flexnet_tree, hf_flexnet_ctl, tvb, offset, FLEXNET_CTLLEN, FALSE ); - offset +=FLEXNET_CTLLEN; + proto_tree_add_item( flexnet_tree, hf_flexnet_ctl, tvb, offset, FLEXNET_CTLLEN, ENC_NA ); + /* offset +=FLEXNET_CTLLEN; */ } /* Call sub-dissectors here */ @@ -152,15 +139,10 @@ proto_register_flexnet(void) void proto_reg_handoff_flexnet(void) { - static gboolean inited = FALSE; - - if( !inited ) { - dissector_add_uint( "ax25.pid", AX25_P_FLEXNET, create_dissector_handle( dissect_flexnet, proto_flexnet ) ); + dissector_add_uint( "ax25.pid", AX25_P_FLEXNET, create_dissector_handle( dissect_flexnet, proto_flexnet ) ); - /* - */ - default_handle = find_dissector( "data" ); + /* + */ + default_handle = find_dissector( "data" ); - inited = TRUE; - } } diff --git a/epan/dissectors/packet-netrom.c b/epan/dissectors/packet-netrom.c index 21c3a7f82b..d4e7ecee4c 100644 --- a/epan/dissectors/packet-netrom.c +++ b/epan/dissectors/packet-netrom.c @@ -6,8 +6,8 @@ * * $Id$ * - * Ethereal - Network traffic analyzer - * By Gerald Combs <gerald@ethereal.com> + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> * Copyright 1998 Gerald Combs * * This program is free software; you can redistribute it and/or @@ -22,7 +22,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* @@ -45,13 +45,8 @@ #include "config.h" -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - #include <glib.h> -#include <epan/strutil.h> #include <epan/packet.h> #include <epan/emem.h> #include <epan/ax25_pids.h> @@ -60,10 +55,10 @@ #define STRLEN 80 -#define AX25_ADDR_LEN 7 /* length of an AX.25 address */ +#define AX25_ADDR_LEN 7 /* length of an AX.25 address */ -#define NETROM_MIN_SIZE 7 /* minumum payload for a routing packet */ -#define NETROM_HEADER_SIZE 20 /* minumum payload for a normal packet */ +#define NETROM_MIN_SIZE 7 /* minumum payload for a routing packet */ +#define NETROM_HEADER_SIZE 20 /* minumum payload for a normal packet */ #define NETROM_PROTOEXT 0x00 #define NETROM_CONNREQ 0x01 @@ -129,7 +124,7 @@ static const netrom_tf_items netrom_type_items = { }; -const value_string op_copde_vals[] = { +const value_string op_code_vals_abbrev[] = { { NETROM_PROTOEXT , "PROTOEXT"}, { NETROM_CONNREQ , "CONNREQ"}, { NETROM_CONNACK , "CONNACK"}, @@ -137,11 +132,22 @@ const value_string op_copde_vals[] = { { NETROM_DISCACK , "DISCACK"}, { NETROM_INFO , "INFO"}, { NETROM_INFOACK , "INFOACK"}, - { 0 , NULL } + { 0 , NULL} +}; + +const value_string op_code_vals_text[] = { + { NETROM_PROTOEXT , "Protocol extension"}, + { NETROM_CONNREQ , "Connect request"}, + { NETROM_CONNACK , "Connect acknowledge"}, + { NETROM_DISCREQ , "Disconnect request"}, + { NETROM_DISCACK , "Disconnect acknowledge"}, + { NETROM_INFO , "Information"}, + { NETROM_INFOACK , "Information acknowledge"}, + { 0 , NULL} }; /* Initialize the subtree pointers */ -static gint ett_netrom = -1; +static gint ett_netrom = -1; static gint ett_netrom_type = -1; static void @@ -150,34 +156,19 @@ dissect_netrom_type(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *t { proto_tree *tc; proto_tree *type_tree; - char *info_buffer; - char *op_text_ptr; - guint8 type; - guint8 op_code; + char *info_buffer; + guint8 type; + guint8 op_code; - info_buffer = ep_alloc( STRLEN ); - info_buffer[0] = '\0'; - - type = tvb_get_guint8( tvb, offset ); + type = tvb_get_guint8( tvb, offset ); op_code = type &0x0f; - switch ( op_code ) - { - case NETROM_PROTOEXT : op_text_ptr = "Protocol extension" ; break; - case NETROM_CONNREQ : op_text_ptr = "Connect request" ; break; - case NETROM_CONNACK : op_text_ptr = "Connect acknowledge" ; break; - case NETROM_DISCREQ : op_text_ptr = "Disconnect request" ; break; - case NETROM_DISCACK : op_text_ptr = "Disconnect acknowledge" ; break; - case NETROM_INFO : op_text_ptr = "Information" ; break; - case NETROM_INFOACK : op_text_ptr = "Information acknowledge" ; break; - default : op_text_ptr = "Unknown" ; break; - } - g_snprintf( info_buffer, STRLEN, "%s%s%s%s (0x%02x)", - op_text_ptr, - ( type & NETROM_MORE_FLAG ) ? ", More" : "", - ( type & NETROM_NAK_FLAG ) ? ", NAK" : "", - ( type & NETROM_CHOKE_FLAG ) ? ", Choke" : "", - type ); + info_buffer = ep_strdup_printf( "%s%s%s%s (0x%02x)", + val_to_str_const( op_code, op_code_vals_text, "Unknown" ), + ( type & NETROM_MORE_FLAG ) ? ", More" : "", + ( type & NETROM_NAK_FLAG ) ? ", NAK" : "", + ( type & NETROM_CHOKE_FLAG ) ? ", Choke" : "", + type ); col_add_str( pinfo->cinfo, COL_INFO, info_buffer ); if ( tree ) @@ -203,24 +194,24 @@ dissect_netrom_type(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *t static void dissect_netrom_proto(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { - proto_item *ti; - proto_tree *netrom_tree; - int offset; - char *op_text_ptr; + proto_item *ti; + proto_tree *netrom_tree; + int offset; const guint8 *src_addr; const guint8 *dst_addr; const guint8 *user_addr; const guint8 *node_addr; - /* guint8 src_ssid; - guint8 dst_ssid; */ - guint8 op_code; - guint8 cct_index; - guint8 cct_id; - void *saved_private_data; - tvbuff_t *next_tvb = NULL; +#if 0 + guint8 src_ssid; + guint8 dst_ssid; +#endif + guint8 op_code; + guint8 cct_index; + guint8 cct_id; + void *saved_private_data; + tvbuff_t *next_tvb = NULL; col_set_str( pinfo->cinfo, COL_PROTOCOL, "NET/ROM" ); - col_clear( pinfo->cinfo, COL_INFO ); offset = 0; @@ -251,19 +242,7 @@ dissect_netrom_proto(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) op_code = tvb_get_guint8( tvb, offset ) & 0x0f; offset += 1; /* step over op_code */ - switch ( op_code ) - { - case NETROM_PROTOEXT : op_text_ptr = "Protocol extension" ; break; - case NETROM_CONNREQ : op_text_ptr = "Connect request" ; break; - case NETROM_CONNACK : op_text_ptr = "Connect acknowledge" ; break; - case NETROM_DISCREQ : op_text_ptr = "Disconnect request" ; break; - case NETROM_DISCACK : op_text_ptr = "Disconnect acknowledge" ; break; - case NETROM_INFO : op_text_ptr = "Information" ; break; - case NETROM_INFOACK : op_text_ptr = "Information acknowledge" ; break; - default : op_text_ptr = "Unknown" ; break; - } - - col_add_fstr( pinfo->cinfo, COL_INFO, "%s", op_text_ptr ); + col_add_fstr( pinfo->cinfo, COL_INFO, "%s", val_to_str_const( op_code, op_code_vals_text, "Unknown" )); if ( tree ) { @@ -289,18 +268,18 @@ dissect_netrom_proto(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) offset += AX25_ADDR_LEN; /* ttl */ - proto_tree_add_item( netrom_tree, hf_netrom_ttl, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_ttl, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; switch ( op_code ) { case NETROM_PROTOEXT : /* cct index */ - proto_tree_add_item( netrom_tree, hf_netrom_my_cct_index, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_my_cct_index, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; /* cct id */ - proto_tree_add_item( netrom_tree, hf_netrom_my_cct_id, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_my_cct_id, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; /* unused */ @@ -311,11 +290,11 @@ dissect_netrom_proto(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) break; case NETROM_CONNREQ : /* cct index */ - proto_tree_add_item( netrom_tree, hf_netrom_my_cct_index, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_my_cct_index, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; /* cct id */ - proto_tree_add_item( netrom_tree, hf_netrom_my_cct_id, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_my_cct_id, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; /* unused */ @@ -327,29 +306,29 @@ dissect_netrom_proto(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) break; case NETROM_CONNACK : /* your cct index */ - proto_tree_add_item( netrom_tree, hf_netrom_your_cct_index, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_your_cct_index, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; /* your cct id */ - proto_tree_add_item( netrom_tree, hf_netrom_your_cct_id, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_your_cct_id, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; /* my cct index */ - proto_tree_add_item( netrom_tree, hf_netrom_my_cct_index, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_my_cct_index, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; /* my cct id */ - proto_tree_add_item( netrom_tree, hf_netrom_my_cct_id, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_my_cct_id, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; break; case NETROM_DISCREQ : /* your cct index */ - proto_tree_add_item( netrom_tree, hf_netrom_your_cct_index, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_your_cct_index, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; /* your cct id */ - proto_tree_add_item( netrom_tree, hf_netrom_your_cct_id, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_your_cct_id, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; /* unused */ @@ -361,11 +340,11 @@ dissect_netrom_proto(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) break; case NETROM_DISCACK : /* your cct index */ - proto_tree_add_item( netrom_tree, hf_netrom_your_cct_index, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_your_cct_index, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; /* your cct id */ - proto_tree_add_item( netrom_tree, hf_netrom_your_cct_id, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_your_cct_id, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; /* unused */ @@ -377,36 +356,36 @@ dissect_netrom_proto(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) break; case NETROM_INFO : /* your cct index */ - proto_tree_add_item( netrom_tree, hf_netrom_your_cct_index, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_your_cct_index, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; /* your cct id */ - proto_tree_add_item( netrom_tree, hf_netrom_your_cct_id, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_your_cct_id, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; /* n_s */ - proto_tree_add_item( netrom_tree, hf_netrom_n_s, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_n_s, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; /* n_r */ - proto_tree_add_item( netrom_tree, hf_netrom_n_r, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_n_r, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; break; case NETROM_INFOACK : /* your cct index */ - proto_tree_add_item( netrom_tree, hf_netrom_your_cct_index, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_your_cct_index, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; /* your cct id */ - proto_tree_add_item( netrom_tree, hf_netrom_your_cct_id, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_your_cct_id, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; /* unused */ offset += 1; /* n_r */ - proto_tree_add_item( netrom_tree, hf_netrom_n_r, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_n_r, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; break; @@ -436,7 +415,7 @@ dissect_netrom_proto(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) break; case NETROM_CONNREQ : /* proposed window size */ - proto_tree_add_item( netrom_tree, hf_netrom_pwindow, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_pwindow, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; user_addr = tvb_get_ptr( tvb, offset, AX25_ADDR_LEN ); @@ -450,7 +429,7 @@ dissect_netrom_proto(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) break; case NETROM_CONNACK : /* accepted window size */ - proto_tree_add_item( netrom_tree, hf_netrom_awindow, tvb, offset, 1, FALSE ); + proto_tree_add_item( netrom_tree, hf_netrom_awindow, tvb, offset, 1, ENC_BIG_ENDIAN ); offset += 1; break; @@ -493,18 +472,16 @@ dissect_netrom_proto(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) static void dissect_netrom_routing(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { - proto_item *ti; - proto_tree *netrom_tree; - int offset; - void *saved_private_data; - tvbuff_t *next_tvb = NULL; + void *saved_private_data; + tvbuff_t *next_tvb; col_set_str( pinfo->cinfo, COL_PROTOCOL, "NET/ROM"); - col_set_str( pinfo->cinfo, COL_INFO, "routing table frame"); if (tree) { + proto_item *ti; + proto_tree *netrom_tree; ti = proto_tree_add_protocol_format( tree, proto_netrom, tvb, 0, -1, "NET/ROM, routing table frame, Node: %.6s", tvb_get_ptr( tvb, 1, 6 ) @@ -512,18 +489,15 @@ dissect_netrom_routing(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) netrom_tree = proto_item_add_subtree( ti, ett_netrom ); - offset = 1; - - proto_tree_add_item( netrom_tree, hf_netrom_mnemonic, tvb, offset, 6, FALSE ); - offset += 6; + proto_tree_add_item( netrom_tree, hf_netrom_mnemonic, tvb, 1, 6, ENC_ASCII|ENC_NA ); + } - saved_private_data = pinfo->private_data; - next_tvb = tvb_new_subset(tvb, offset, -1, -1); + saved_private_data = pinfo->private_data; + next_tvb = tvb_new_subset(tvb, 7, -1, -1); - call_dissector( default_handle , next_tvb, pinfo, tree ); + call_dissector( default_handle , next_tvb, pinfo, tree ); - pinfo->private_data = saved_private_data; - } + pinfo->private_data = saved_private_data; } @@ -538,6 +512,18 @@ dissect_netrom(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } void +capture_netrom( const guchar *pd _U_, int offset, int len, packet_counts *ld) +{ + if ( ! BYTES_ARE_IN_FRAME( offset, len, NETROM_MIN_SIZE ) ) + { + ld->other++; + return; + } + /* XXX - check for IP-over-NetROM here! */ + ld->other++; +} + +void proto_register_netrom(void) { static const true_false_string flags_set_truth = @@ -601,7 +587,7 @@ proto_register_netrom(void) }, { &hf_netrom_op, { "OP code", "netrom.op", - FT_UINT8, BASE_HEX, VALS( op_copde_vals ), 0x0f, + FT_UINT8, BASE_HEX, VALS( op_code_vals_abbrev ), 0x0f, "Protocol operation code", HFILL } }, { &hf_netrom_more, @@ -663,26 +649,10 @@ proto_register_netrom(void) void proto_reg_handoff_netrom(void) { - static gboolean inited = FALSE; - - if( !inited ) { - dissector_add_uint( "ax25.pid", AX25_P_NETROM, create_dissector_handle( dissect_netrom, proto_netrom ) ); + dissector_add_uint( "ax25.pid", AX25_P_NETROM, create_dissector_handle( dissect_netrom, proto_netrom ) ); - ip_handle = find_dissector( "ip" ); - default_handle = find_dissector( "data" ); + ip_handle = find_dissector( "ip" ); + default_handle = find_dissector( "data" ); - inited = TRUE; - } } -void -capture_netrom( const guchar *pd _U_, int offset, int len, packet_counts *ld) -{ - if ( ! BYTES_ARE_IN_FRAME( offset, len, NETROM_MIN_SIZE ) ) - { - ld->other++; - return; - } - /* XXX - check fr IP-over-NetROM here! */ - ld->other++; -} diff --git a/epan/dissectors/packet-netrom.h b/epan/dissectors/packet-netrom.h index 862b3c51ca..ef9e9f67f4 100644 --- a/epan/dissectors/packet-netrom.h +++ b/epan/dissectors/packet-netrom.h @@ -5,8 +5,8 @@ * * $Id$ * - * Ethereal - Network traffic analyzer - * By Gerald Combs <gerald@ethereal.com> + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> * Copyright 1998 Gerald Combs * * This program is free software; you can redistribute it and/or @@ -21,7 +21,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __PACKET_NETROM_H__ |