diff options
author | Guy Harris <guy@alum.mit.edu> | 2012-08-03 02:19:18 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2012-08-03 02:19:18 +0000 |
commit | ef88a5dc4c9d88cd7ce128cfaa24a8bdef48ba24 (patch) | |
tree | 9abe13fcb8772e42d1596615eb430e75249f3aff /epan/dissectors/packet-ax25-kiss.c | |
parent | c25adfe420bab72f766b13d37edf770a9d26dc31 (diff) | |
download | wireshark-ef88a5dc4c9d88cd7ce128cfaa24a8bdef48ba24.tar.gz |
Use a value_string for the KISS frame types; associate it with the
command field.
svn path=/trunk/; revision=44237
Diffstat (limited to 'epan/dissectors/packet-ax25-kiss.c')
-rw-r--r-- | epan/dissectors/packet-ax25-kiss.c | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/epan/dissectors/packet-ax25-kiss.c b/epan/dissectors/packet-ax25-kiss.c index ba80c80db4..49bbd8fb61 100644 --- a/epan/dissectors/packet-ax25-kiss.c +++ b/epan/dissectors/packet-ax25-kiss.c @@ -157,6 +157,18 @@ static int hf_ax25_kiss_sethardware = -1; /* Initialize the subtree pointers */ static gint ett_ax25_kiss = -1; +static const value_string kiss_frame_types[] = { + { 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_SETHARDWARE, "Set hardware" }, + { KISS_RETURN, "Return" }, + { 0, NULL } +}; + /* Code to actually dissect the packets */ static void dissect_ax25_kiss( tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree ) @@ -169,7 +181,7 @@ dissect_ax25_kiss( tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree ) int kiss_port; int kiss_param; int kiss_param_len; - char *frame_type_text; + const char *frame_type_text; char *info_buffer; void *saved_private_data; tvbuff_t *next_tvb = NULL; @@ -190,21 +202,19 @@ dissect_ax25_kiss( tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree ) kiss_port = (kiss_cmd & KISS_PORT_MASK) >> 4; offset += KISS_HEADER_SIZE; - frame_type_text = "????"; kiss_param = 0; kiss_param_len = 0; switch ( kiss_type ) { - case KISS_DATA_FRAME : frame_type_text = "Data frame"; break; - case KISS_TXDELAY : frame_type_text = "Tx Delay"; kiss_param_len = 1; kiss_param = tvb_get_guint8( tvb, offset ) & 0xff; break; - case KISS_PERSISTENCE : frame_type_text = "Persistence"; kiss_param_len = 1; kiss_param = tvb_get_guint8( tvb, offset ) & 0xff; break; - case KISS_SLOT_TIME : frame_type_text = "Slot time"; kiss_param_len = 1; kiss_param = tvb_get_guint8( tvb, offset ) & 0xff; break; - case KISS_TXTAIL : frame_type_text = "Tx tail"; kiss_param_len = 1; kiss_param = tvb_get_guint8( tvb, offset ) & 0xff; break; - case KISS_FULLDUPLEX : frame_type_text = "Full duplex"; kiss_param_len = 1; kiss_param = tvb_get_guint8( tvb, offset ) & 0xff; break; - case KISS_SETHARDWARE : frame_type_text = "Set hardware"; kiss_param_len = 1; kiss_param = tvb_get_guint8( tvb, offset ) & 0xff; break; - case KISS_RETURN : frame_type_text = "Return"; break; + case KISS_TXDELAY : kiss_param_len = 1; kiss_param = tvb_get_guint8( tvb, offset ) & 0xff; break; + case KISS_PERSISTENCE : kiss_param_len = 1; kiss_param = tvb_get_guint8( tvb, offset ) & 0xff; break; + case KISS_SLOT_TIME : kiss_param_len = 1; kiss_param = tvb_get_guint8( tvb, offset ) & 0xff; break; + case KISS_TXTAIL : kiss_param_len = 1; kiss_param = tvb_get_guint8( tvb, offset ) & 0xff; break; + case KISS_FULLDUPLEX : kiss_param_len = 1; kiss_param = tvb_get_guint8( tvb, offset ) & 0xff; break; + case KISS_SETHARDWARE : kiss_param_len = 1; kiss_param = tvb_get_guint8( tvb, offset ) & 0xff; break; default : break; } + 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, @@ -290,7 +300,7 @@ proto_register_ax25_kiss(void) static hf_register_info hf[] = { { &hf_ax25_kiss_cmd, { "Cmd", "ax25_kiss.cmd", - FT_UINT8, BASE_DEC, NULL, KISS_CMD_MASK, + FT_UINT8, BASE_DEC, VALS(kiss_frame_types), KISS_CMD_MASK, NULL, HFILL } }, { &hf_ax25_kiss_port, |