Use a value_string for the KISS frame types; associate it with the

command field.

svn path=/trunk/; revision=44237
This commit is contained in:
Guy Harris 2012-08-03 02:19:18 +00:00
parent c25adfe420
commit ef88a5dc4c
1 changed files with 21 additions and 11 deletions

View File

@ -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,