diff options
author | Guy Harris <guy@alum.mit.edu> | 2003-09-19 04:27:48 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2003-09-19 04:27:48 +0000 |
commit | 952f81ed8dd5ba3021c7e065babbf12f2313bdce (patch) | |
tree | 7655f073c194e6fc9ca03f9fdc0fb7ad4a22920e /packet-rtp-events.c | |
parent | 0c211a05e703b39a87136729a9bcda7d43292d65 (diff) |
Use bitfields for the end-of-event, reserved, and volume fields.
Don't fetch fields until you need them, so you don't throw an early
exception.
Give the fields names starting with the name of the protocol.
svn path=/trunk/; revision=8495
Diffstat (limited to 'packet-rtp-events.c')
-rw-r--r-- | packet-rtp-events.c | 52 |
1 files changed, 19 insertions, 33 deletions
diff --git a/packet-rtp-events.c b/packet-rtp-events.c index 05dac8142a..83696b5fa6 100644 --- a/packet-rtp-events.c +++ b/packet-rtp-events.c @@ -3,7 +3,7 @@ * Routines for RFC 2833 RTP Events dissection * Copyright 2003, Kevin A. Noll <knoll[AT]poss.com> * - * $Id: packet-rtp-events.c,v 1.1 2003/09/19 04:16:23 guy Exp $ + * $Id: packet-rtp-events.c,v 1.2 2003/09/19 04:27:48 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -76,14 +76,8 @@ dissect_rtp_events( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) proto_tree *rtp_events_tree = NULL; unsigned int offset = 0; - guint8 octet; - guint8 rtp_evt; - gboolean rtp_end; - gboolean rtp_reserved; - guint8 rtp_volume; - guint16 rtp_duration; - + guint8 octet; if ( check_col( pinfo->cinfo, COL_PROTOCOL ) ) { @@ -97,16 +91,6 @@ dissect_rtp_events( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) rtp_evt = tvb_get_guint8(tvb, offset ); - octet = tvb_get_guint8(tvb, offset +1 ); - - rtp_volume = ((octet << 2) >> 2); - - rtp_end = (octet >> 7); - rtp_reserved = ((octet << 1) >> 7 ); - - rtp_duration = tvb_get_ntohs(tvb, offset +2); - - if ( check_col( pinfo->cinfo, COL_INFO) ) { col_add_fstr( pinfo->cinfo, COL_INFO, @@ -116,17 +100,19 @@ dissect_rtp_events( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) } - if ( tree ) { ti = proto_tree_add_item( tree, proto_rtp_events, tvb, offset, -1, FALSE ); rtp_events_tree = proto_item_add_subtree( ti, ett_rtp_events ); proto_tree_add_uint ( rtp_events_tree, hf_rtp_events_event, tvb, offset, 1, rtp_evt); - proto_tree_add_boolean (rtp_events_tree, hf_rtp_events_end, tvb, offset, 1, rtp_end); - proto_tree_add_boolean (rtp_events_tree, hf_rtp_events_reserved, tvb, offset, 1, rtp_reserved); - proto_tree_add_uint ( rtp_events_tree, hf_rtp_events_volume, tvb, offset, 1, rtp_volume); - proto_tree_add_uint ( rtp_events_tree, hf_rtp_events_duration, tvb, offset, 2, rtp_duration); + + octet = tvb_get_guint8(tvb, offset +1 ); + proto_tree_add_boolean (rtp_events_tree, hf_rtp_events_end, tvb, offset, 1, octet); + proto_tree_add_boolean (rtp_events_tree, hf_rtp_events_reserved, tvb, offset, 1, octet); + proto_tree_add_uint ( rtp_events_tree, hf_rtp_events_volume, tvb, offset, 1, octet); + + proto_tree_add_item ( rtp_events_tree, hf_rtp_events_duration, tvb, offset, 2, FALSE); } } @@ -143,7 +129,7 @@ proto_register_rtp_events(void) &hf_rtp_events_event, { "Event ID", - "rtp.payload_rtp_events_event", + "rtpevent.event_id", FT_UINT8, BASE_DEC, VALS(rtp_event_type_values), @@ -155,11 +141,11 @@ proto_register_rtp_events(void) &hf_rtp_events_end, { "End of Event", - "rtp.payload_rtp_events_end", + "rtpevent.end_of_event", FT_BOOLEAN, - BASE_DEC, + 8, NULL, - 0x0, + 0x80, "", HFILL } }, @@ -167,11 +153,11 @@ proto_register_rtp_events(void) &hf_rtp_events_reserved, { "Reserved", - "rtp.payload_rtp_events_reserved", + "rtpevent.reserved", FT_BOOLEAN, - BASE_DEC, + 8, NULL, - 0x0, + 0x40, "", HFILL } }, @@ -179,11 +165,11 @@ proto_register_rtp_events(void) &hf_rtp_events_volume, { "Volume", - "rtp.payload_rtp_events_volume", + "rtpevent.volume", FT_UINT8, BASE_DEC, NULL, - 0x0, + 0x3F, "", HFILL } }, @@ -192,7 +178,7 @@ proto_register_rtp_events(void) &hf_rtp_events_duration, { "Event Duration", - "rtp.payload_rtp_events_duration", + "rtpevent.duration", FT_UINT16, BASE_DEC, NULL, |