Ethereal-dev: [Ethereal-dev] Patch for VoipCalls
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Alejandro Vaquero <alejandrovaquero@xxxxxxxxx>
Date: Wed, 22 Feb 2006 21:48:16 -0700
Hi All, find attached a patch for the VoipCalls to fix a couple of issues: - a problem with the RTP Events (RFC2833) not been handle correctly- Display the RTP stream in time order when the setup frame is after the RTP stream. - fix a init issue that caused the H245 packet to not been displayed correctly.
Regards Alejandro
Index: asn1/h245/packet-h245-template.c
===================================================================
--- asn1/h245/packet-h245-template.c (revision 17375)
+++ asn1/h245/packet-h245-template.c (working copy)
@@ -72,7 +72,7 @@
static dissector_handle_t h263_handle = NULL;
static dissector_handle_t amr_handle = NULL;
-static void reset_h245_packet_info(h245_packet_info *pi);
+static void init_h245_packet_info(h245_packet_info *pi);
static int hf_h245_pdu_type = -1;
static int hf_h245Manufacturer = -1;
static int h245_tap = -1;
@@ -316,6 +316,7 @@
while ( tvb_length_remaining( tvb, offset>>3 )>0 ){
CLEANUP_PUSH(reset_h245_pi, NULL);
h245_pi=ep_alloc(sizeof(h245_packet_info));
+ init_h245_packet_info(h245_pi);
offset = dissect_h245_MultimediaSystemControlMessage(tvb, offset, pinfo ,tr, hf_h245_pdu_type);
tap_queue_packet(h245dg_tap, pinfo, h245_pi);
offset = (offset+0x07) & 0xfffffff8;
@@ -420,7 +421,7 @@
h223_lc_init();
}
-static void reset_h245_packet_info(h245_packet_info *pi)
+static void init_h245_packet_info(h245_packet_info *pi)
{
if(pi == NULL) {
return;
Index: asn1/h245/h245.cnf
===================================================================
--- asn1/h245/h245.cnf (revision 17375)
+++ asn1/h245/h245.cnf (working copy)
@@ -279,7 +279,7 @@
else
g_snprintf(h245_pi->frame_label, 50, "%%s ", val_to_str(value, h245_RequestMessage_short_vals, "UKN"));
- g_snprintf(h245_pi->comment, 50, "%%s %%s ", h245_pi->comment, val_to_str(value, h245_RequestMessage_vals, "<unknown>"));
+ g_strlcat(h245_pi->comment, val_to_str(value, h245_RequestMessage_vals, "<unknown>"), 50);
/* if it is OLC or RM*/
if ((codec_type != NULL) && (( value == 3) || ( value == 8)))
@@ -307,7 +307,8 @@
/* Add to packet info */
g_snprintf(h245_pi->frame_label, 50, "%%s %%s ", h245_pi->frame_label, val_to_str(value, h245_ResponseMessage_short_vals, "UKN"));
- g_snprintf(h245_pi->comment, 50, "%%s %%s ", h245_pi->comment, val_to_str(value, h245_ResponseMessage_vals, "<unknown>"));
+ g_strlcat(h245_pi->comment, val_to_str(value, h245_ResponseMessage_vals, "<unknown>"), 50);
+
#.END
#----------------------------------------------------------------------------------------
#.FN_BODY IndicationMessage VAL_PTR = &value
@@ -330,7 +331,8 @@
col_set_fence(pinfo->cinfo,COL_INFO);
/* Add to packet info */
g_snprintf(h245_pi->frame_label, 50, "%%s %%s ", h245_pi->frame_label, val_to_str(value, h245_IndicationMessage_short_vals, "UKN"));
- g_snprintf(h245_pi->comment, 50, "%%s %%s ", h245_pi->comment, val_to_str(value, h245_IndicationMessage_vals, "<unknown>"));
+ g_strlcat(h245_pi->comment, val_to_str(value, h245_IndicationMessage_vals, "<unknown>"), 50);
+
#.END
#----------------------------------------------------------------------------------------
#.FN_BODY CommandMessage VAL_PTR = &value
@@ -353,7 +355,7 @@
col_set_fence(pinfo->cinfo,COL_INFO);
/* Add to packet info */
g_snprintf(h245_pi->frame_label, 50, "%%s %%s ", h245_pi->frame_label, val_to_str(value, h245_CommandMessage_short_vals, "UKN"));
- g_snprintf(h245_pi->comment, 50, "%%s %%s ", h245_pi->comment, val_to_str(value, h245_CommandMessage_vals, "<unknown>"));
+ g_strlcat(h245_pi->comment, val_to_str(value, h245_CommandMessage_vals, "<unknown>"), 50);
#.END
#----------------------------------------------------------------------------------------
Index: gtk/graph_analysis.c
===================================================================
--- gtk/graph_analysis.c (revision 17375)
+++ gtk/graph_analysis.c (working copy)
@@ -975,8 +975,6 @@
#else
pango_layout_set_text(big_layout, label_string, -1);
pango_layout_get_pixel_size(big_layout, &label_width, &label_height);
-
- label_width = label_height = 0;
#endif
if (start_arrow<end_arrow){
arrow_width = end_arrow-start_arrow;
Index: gtk/voip_calls.c
===================================================================
--- gtk/voip_calls.c (revision 17375)
+++ gtk/voip_calls.c (working copy)
@@ -376,37 +376,27 @@
/* ***************************TAP for RTP Events*****************************/
/****************************************************************************/
+static guint32 rtp_evt_frame_num = 0;
+static guint8 rtp_evt = 0;
+static gboolean rtp_evt_end = FALSE;
+/*static guint32 rtp_evt_setup_frame_num = 0;*/
+
/****************************************************************************/
/* whenever a rtp event packet is seen by the tap listener */
static int
rtp_event_packet(void *ptr _U_, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *rtp_event_info)
{
const struct _rtp_event_info *pi = rtp_event_info;
- voip_rtp_tapinfo_t *tapinfo = &the_tapinfo_rtp_struct;
- voip_rtp_stream_info_t *tmp_listinfo;
- voip_rtp_stream_info_t *strinfo = NULL;
- GList* list;
/* do not consider RTP events packets without a setup frame */
if (pi->info_setup_frame_num == 0){
return 0;
}
- /* check wether we already have a RTP stream with this setup frame in the list */
- list = g_list_first(tapinfo->list);
- while (list)
- {
- tmp_listinfo=list->data;
- if ( (tmp_listinfo->setup_frame_number == pi->info_setup_frame_num)
- && (tmp_listinfo->end_stream == FALSE) && (tmp_listinfo->rtp_event == -1)){
- strinfo = (voip_rtp_stream_info_t*)(list->data);
- strinfo->rtp_event = pi->info_rtp_evt;
- break;
- }
- list = g_list_next (list);
- }
+ rtp_evt_frame_num = pinfo->fd->num;
+ rtp_evt = pi->info_rtp_evt;
+ rtp_evt_end = pi->info_end;
-
return 0;
}
@@ -500,9 +490,9 @@
&& (tmp_listinfo->ssrc == pi->info_sync_src) && (tmp_listinfo->end_stream == FALSE)){
/* if the payload type has changed, we mark the stream as finished to create a new one
this is to show multiple payload changes in the Graph for example for DTMF RFC2833 */
- if ( tmp_listinfo->pt != pi->info_payload_type )
+ if ( tmp_listinfo->pt != pi->info_payload_type ) {
tmp_listinfo->end_stream = TRUE;
- else {
+ } else {
strinfo = (voip_rtp_stream_info_t*)(list->data);
break;
}
@@ -510,6 +500,11 @@
list = g_list_next (list);
}
+ /* if this is a duplicated RTP Event End, just return */
+ if ((rtp_evt_frame_num == pinfo->fd->num) && !strinfo && (rtp_evt_end == TRUE)) {
+ return 0;
+ }
+
/* not in the list? then create a new entry */
if (strinfo==NULL){
strinfo = g_malloc(sizeof(voip_rtp_stream_info_t));
@@ -543,6 +538,14 @@
strinfo->npackets++;
strinfo->stop_rel_sec = pinfo->fd->rel_ts.secs;
strinfo->stop_rel_usec = pinfo->fd->rel_ts.nsecs/1000;
+
+ /* process RTP Event */
+ if (rtp_evt_frame_num == pinfo->fd->num) {
+ strinfo->rtp_event = rtp_evt;
+ if (rtp_evt_end == TRUE) {
+ strinfo->end_stream = TRUE;
+ }
+ }
}
the_tapinfo_struct.redraw = TRUE;
@@ -572,13 +575,15 @@
/* using the setup frame number of the RTP stream, we get the call number that it belongs */
voip_calls_graph_list = g_list_first(the_tapinfo_struct.graph_analysis->list);
- item = 0;
while (voip_calls_graph_list)
{
gai = voip_calls_graph_list->data;
conv_num = gai->conv_num;
/* if we get the setup frame number, then get the time position to graph the RTP arrow */
if (rtp_listinfo->setup_frame_number == gai->frame_num){
+ /* look again from the begining because there are cases where the Setup frame is after the RTP */
+ voip_calls_graph_list = g_list_first(the_tapinfo_struct.graph_analysis->list);
+ item = 0;
while(voip_calls_graph_list){
gai = voip_calls_graph_list->data;
/* if RTP was already in the Graph, just update the comment information */
@@ -613,7 +618,6 @@
break;
}
voip_calls_graph_list = g_list_next(voip_calls_graph_list);
- item++;
}
rtp_streams_list = g_list_next(rtp_streams_list);
}
Index: epan/dissectors/packet-h245.c
===================================================================
--- epan/dissectors/packet-h245.c (revision 17375)
+++ epan/dissectors/packet-h245.c (working copy)
@@ -1,6 +1,6 @@
/* Do not modify this file. */
/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
-/* .\packet-h245.c */
+/* ./packet-h245.c */
/* ../../tools/asn2eth.py -X -e -p h245 -c h245.cnf -s packet-h245-template h245.asn */
/* Input file: packet-h245-template.c */
@@ -80,7 +80,7 @@
static dissector_handle_t h263_handle = NULL;
static dissector_handle_t amr_handle = NULL;
-static void reset_h245_packet_info(h245_packet_info *pi);
+static void init_h245_packet_info(h245_packet_info *pi);
static int hf_h245_pdu_type = -1;
static int hf_h245Manufacturer = -1;
static int h245_tap = -1;
@@ -2283,7 +2283,7 @@
static int
dissect_h245_H221NonStandardID(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 682 "h245.cnf"
+#line 684 "h245.cnf"
t35CountryCode = 0;
t35Extension = 0;
manufacturerCode = 0;
@@ -2291,7 +2291,7 @@
offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
ett_h245_H221NonStandardID, H221NonStandardID_sequence);
-#line 686 "h245.cnf"
+#line 688 "h245.cnf"
h221NonStandard = ((t35CountryCode * 256) + t35Extension) * 65536 + manufacturerCode;
proto_tree_add_uint(tree, hf_h245Manufacturer, tvb, (offset>>3)-4, 4, h221NonStandard);
@@ -2316,7 +2316,7 @@
static int
dissect_h245_NonStandardIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 663 "h245.cnf"
+#line 665 "h245.cnf"
guint32 value;
nsiOID = "";
@@ -2351,7 +2351,7 @@
static int
dissect_h245_T_data(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 697 "h245.cnf"
+#line 699 "h245.cnf"
tvbuff_t *next_tvb = NULL;
offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
@@ -2377,7 +2377,7 @@
static int
dissect_h245_NonStandardParameter(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 695 "h245.cnf"
+#line 697 "h245.cnf"
nsp_handle = NULL;
offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
@@ -2507,7 +2507,7 @@
offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
ett_h245_MasterSlaveDetermination, MasterSlaveDetermination_sequence);
-#line 446 "h245.cnf"
+#line 448 "h245.cnf"
h245_pi->msg_type = H245_MastSlvDet;
@@ -5292,7 +5292,7 @@
dissect_h245_T_standard(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_per_object_identifier_str(tvb, offset, pinfo, tree, hf_index, &standard_oid_str);
-#line 485 "h245.cnf"
+#line 487 "h245.cnf"
if(!h245_lc_dissector && strcmp(standard_oid_str,"0.0.8.245.1.1.1") == 0)
h245_lc_dissector = amr_handle;
@@ -5648,7 +5648,7 @@
static int
dissect_h245_Application(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 379 "h245.cnf"
+#line 381 "h245.cnf"
guint32 value;
offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
@@ -7542,7 +7542,7 @@
static int
dissect_h245_VideoCapability(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 370 "h245.cnf"
+#line 372 "h245.cnf"
guint32 value;
offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
@@ -7927,7 +7927,7 @@
static int
dissect_h245_AudioCapability(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 361 "h245.cnf"
+#line 363 "h245.cnf"
guint32 value;
offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
@@ -8571,7 +8571,7 @@
offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
ett_h245_TerminalCapabilitySet, TerminalCapabilitySet_sequence);
-#line 461 "h245.cnf"
+#line 463 "h245.cnf"
h245_pi->msg_type = H245_TermCapSet;
@@ -9879,7 +9879,7 @@
static int
dissect_h245_Ipv4_network(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 497 "h245.cnf"
+#line 499 "h245.cnf"
tvbuff_t *value_tvb;
@@ -9904,7 +9904,7 @@
static int
dissect_h245_TsapIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 510 "h245.cnf"
+#line 512 "h245.cnf"
guint32 tsapIdentifier;
offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
@@ -10223,14 +10223,14 @@
static int
dissect_h245_T_mediaChannel(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 528 "h245.cnf"
+#line 530 "h245.cnf"
media_channel = TRUE;
offset = dissect_h245_TransportAddress(tvb, offset, pinfo, tree, hf_index);
-#line 558 "h245.cnf"
+#line 560 "h245.cnf"
media_channel = FALSE;
@@ -10245,14 +10245,14 @@
static int
dissect_h245_T_mediaControlChannel(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 540 "h245.cnf"
+#line 542 "h245.cnf"
media_control_channel = TRUE;
offset = dissect_h245_TransportAddress(tvb, offset, pinfo, tree, hf_index);
-#line 564 "h245.cnf"
+#line 566 "h245.cnf"
media_control_channel = FALSE;
@@ -10495,7 +10495,7 @@
static int
dissect_h245_OLC_rev_multiplexParameters(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 614 "h245.cnf"
+#line 616 "h245.cnf"
media_channel = FALSE;
@@ -10506,7 +10506,7 @@
ett_h245_OLC_rev_multiplexParameters, OLC_rev_multiplexParameters_choice,
NULL);
-#line 622 "h245.cnf"
+#line 624 "h245.cnf"
if (!pinfo->fd->flags.visited) {
if (codec_type && (strcmp(codec_type, "t38fax")==0)) {
@@ -10815,7 +10815,7 @@
}
-#line 472 "h245.cnf"
+#line 474 "h245.cnf"
if (h245_pi != NULL) h245_pi->msg_type = H245_OpenLogChn;
@@ -10890,7 +10890,7 @@
offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
ett_h245_CloseLogicalChannel, CloseLogicalChannel_sequence);
-#line 426 "h245.cnf"
+#line 428 "h245.cnf"
h245_pi->msg_type = H245_CloseLogChn;
@@ -11461,7 +11461,7 @@
static int
dissect_h245_VideoMode(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 395 "h245.cnf"
+#line 397 "h245.cnf"
guint32 value;
offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
@@ -11824,7 +11824,7 @@
static int
dissect_h245_AudioMode(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 387 "h245.cnf"
+#line 389 "h245.cnf"
guint32 value;
offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
@@ -11895,7 +11895,7 @@
static int
dissect_h245_DataModeApplication(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 403 "h245.cnf"
+#line 405 "h245.cnf"
guint32 value;
offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
@@ -12989,7 +12989,7 @@
static int
dissect_h245_T_subMessageIdentifer(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 490 "h245.cnf"
+#line 492 "h245.cnf"
guint32 subMessageIdentifer;
@@ -13107,7 +13107,7 @@
else
g_snprintf(h245_pi->frame_label, 50, "%s ", val_to_str(value, h245_RequestMessage_short_vals, "UKN"));
- g_snprintf(h245_pi->comment, 50, "%s %s ", h245_pi->comment, val_to_str(value, h245_RequestMessage_vals, "<unknown>"));
+ g_strlcat(h245_pi->comment, val_to_str(value, h245_RequestMessage_vals, "<unknown>"), 50);
/* if it is OLC or RM*/
if ((codec_type != NULL) && (( value == 3) || ( value == 8)))
@@ -13156,7 +13156,7 @@
offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
ett_h245_MasterSlaveDeterminationAck, MasterSlaveDeterminationAck_sequence);
-#line 411 "h245.cnf"
+#line 413 "h245.cnf"
h245_pi->msg_type = H245_MastSlvDetAck;
@@ -13200,7 +13200,7 @@
offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
ett_h245_MasterSlaveDeterminationReject, MasterSlaveDeterminationReject_sequence);
-#line 416 "h245.cnf"
+#line 418 "h245.cnf"
h245_pi->msg_type = H245_MastSlvDetRjc;
@@ -13221,7 +13221,7 @@
offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
ett_h245_TerminalCapabilitySetAck, TerminalCapabilitySetAck_sequence);
-#line 441 "h245.cnf"
+#line 443 "h245.cnf"
h245_pi->msg_type = H245_TermCapSetAck;
@@ -13297,7 +13297,7 @@
offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
ett_h245_TerminalCapabilitySetReject, TerminalCapabilitySetReject_sequence);
-#line 451 "h245.cnf"
+#line 453 "h245.cnf"
h245_pi->msg_type = H245_TermCapSetRjc;
@@ -13371,14 +13371,14 @@
static int
dissect_h245_Ack_mediaChannel(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 522 "h245.cnf"
+#line 524 "h245.cnf"
media_channel = TRUE;
offset = dissect_h245_TransportAddress(tvb, offset, pinfo, tree, hf_index);
-#line 546 "h245.cnf"
+#line 548 "h245.cnf"
media_channel = FALSE;
@@ -13393,14 +13393,14 @@
static int
dissect_h245_Ack_mediaControlChannel(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 534 "h245.cnf"
+#line 536 "h245.cnf"
media_control_channel = TRUE;
offset = dissect_h245_TransportAddress(tvb, offset, pinfo, tree, hf_index);
-#line 552 "h245.cnf"
+#line 554 "h245.cnf"
media_control_channel = FALSE;
@@ -13447,7 +13447,7 @@
static int
dissect_h245_T_forwardMultiplexAckParameters(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 570 "h245.cnf"
+#line 572 "h245.cnf"
media_channel = FALSE;
@@ -13458,7 +13458,7 @@
ett_h245_T_forwardMultiplexAckParameters, T_forwardMultiplexAckParameters_choice,
NULL);
-#line 578 "h245.cnf"
+#line 580 "h245.cnf"
if (!pinfo->fd->flags.visited) {
if (codec_type && strcmp(codec_type, "t38fax")==0) {
@@ -13543,7 +13543,7 @@
pinfo->p2p_dir = p2p_dir;
-#line 478 "h245.cnf"
+#line 480 "h245.cnf"
h245_pi->msg_type = H245_OpenLogChnAck;
@@ -13614,7 +13614,7 @@
offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
ett_h245_OpenLogicalChannelReject, OpenLogicalChannelReject_sequence);
-#line 421 "h245.cnf"
+#line 423 "h245.cnf"
h245_pi->msg_type = H245_OpenLogChnRjc;
@@ -13635,7 +13635,7 @@
offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
ett_h245_CloseLogicalChannelAck, CloseLogicalChannelAck_sequence);
-#line 431 "h245.cnf"
+#line 433 "h245.cnf"
h245_pi->msg_type = H245_CloseLogChnAck;
@@ -14963,9 +14963,10 @@
/* Add to packet info */
g_snprintf(h245_pi->frame_label, 50, "%s %s ", h245_pi->frame_label, val_to_str(value, h245_ResponseMessage_short_vals, "UKN"));
- g_snprintf(h245_pi->comment, 50, "%s %s ", h245_pi->comment, val_to_str(value, h245_ResponseMessage_vals, "<unknown>"));
+ g_strlcat(h245_pi->comment, val_to_str(value, h245_ResponseMessage_vals, "<unknown>"), 50);
+
return offset;
}
static int dissect_response(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
@@ -16144,7 +16145,7 @@
static int
dissect_h245_CommandMessage(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 337 "h245.cnf"
+#line 339 "h245.cnf"
guint32 value;
offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
@@ -16167,7 +16168,7 @@
col_set_fence(pinfo->cinfo,COL_INFO);
/* Add to packet info */
g_snprintf(h245_pi->frame_label, 50, "%s %s ", h245_pi->frame_label, val_to_str(value, h245_CommandMessage_short_vals, "UKN"));
- g_snprintf(h245_pi->comment, 50, "%s %s ", h245_pi->comment, val_to_str(value, h245_CommandMessage_vals, "<unknown>"));
+ g_strlcat(h245_pi->comment, val_to_str(value, h245_CommandMessage_vals, "<unknown>"), 50);
@@ -16214,7 +16215,7 @@
offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
ett_h245_MasterSlaveDeterminationRelease, MasterSlaveDeterminationRelease_sequence);
-#line 456 "h245.cnf"
+#line 458 "h245.cnf"
h245_pi->msg_type = H245_MastSlvDetRls;
@@ -16234,7 +16235,7 @@
offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
ett_h245_TerminalCapabilitySetRelease, TerminalCapabilitySetRelease_sequence);
-#line 466 "h245.cnf"
+#line 468 "h245.cnf"
h245_pi->msg_type = H245_TermCapSetRls;
@@ -16255,7 +16256,7 @@
offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
ett_h245_OpenLogicalChannelConfirm, OpenLogicalChannelConfirm_sequence);
-#line 436 "h245.cnf"
+#line 438 "h245.cnf"
h245_pi->msg_type = H245_OpenLogChnCnf;
@@ -17352,7 +17353,7 @@
static int
dissect_h245_IndicationMessage(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 314 "h245.cnf"
+#line 315 "h245.cnf"
guint32 value;
offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
@@ -17375,9 +17376,10 @@
col_set_fence(pinfo->cinfo,COL_INFO);
/* Add to packet info */
g_snprintf(h245_pi->frame_label, 50, "%s %s ", h245_pi->frame_label, val_to_str(value, h245_IndicationMessage_short_vals, "UKN"));
- g_snprintf(h245_pi->comment, 50, "%s %s ", h245_pi->comment, val_to_str(value, h245_IndicationMessage_vals, "<unknown>"));
+ g_strlcat(h245_pi->comment, val_to_str(value, h245_IndicationMessage_vals, "<unknown>"), 50);
+
return offset;
}
static int dissect_indication(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
@@ -17475,6 +17477,7 @@
while ( tvb_length_remaining( tvb, offset>>3 )>0 ){
CLEANUP_PUSH(reset_h245_pi, NULL);
h245_pi=ep_alloc(sizeof(h245_packet_info));
+ init_h245_packet_info(h245_pi);
offset = dissect_h245_MultimediaSystemControlMessage(tvb, offset, pinfo ,tr, hf_h245_pdu_type);
tap_queue_packet(h245dg_tap, pinfo, h245_pi);
offset = (offset+0x07) & 0xfffffff8;
@@ -22906,7 +22909,7 @@
"Rtp/expirationTime", HFILL }},
/*--- End of included file: packet-h245-hfarr.c ---*/
-#line 350 "packet-h245-template.c"
+#line 351 "packet-h245-template.c"
};
/* List of subtrees */
@@ -23389,7 +23392,7 @@
&ett_h245_MobileMultilinkReconfigurationIndication,
/*--- End of included file: packet-h245-ettarr.c ---*/
-#line 356 "packet-h245-template.c"
+#line 357 "packet-h245-template.c"
};
module_t *h245_module;
@@ -23457,7 +23460,7 @@
h223_lc_init();
}
-static void reset_h245_packet_info(h245_packet_info *pi)
+static void init_h245_packet_info(h245_packet_info *pi)
{
if(pi == NULL) {
return;
Index: epan/dissectors/packet-rtp-events.c
===================================================================
--- epan/dissectors/packet-rtp-events.c (revision 17375)
+++ epan/dissectors/packet-rtp-events.c (working copy)
@@ -115,27 +115,33 @@
val_to_str( rtp_evt, rtp_event_type_values, "Unknown (%u)" ));
}
- 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 );
+ 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_uint ( rtp_events_tree, hf_rtp_events_event, tvb, offset, 1, rtp_evt);
- octet = tvb_get_guint8(tvb, offset +1 );
- proto_tree_add_boolean (rtp_events_tree, hf_rtp_events_end, tvb, offset+1, 1, octet);
- proto_tree_add_boolean (rtp_events_tree, hf_rtp_events_reserved, tvb, offset+1, 1, octet);
- proto_tree_add_uint ( rtp_events_tree, hf_rtp_events_volume, tvb, offset+1, 1, octet);
+ octet = tvb_get_guint8(tvb, offset +1 );
+ proto_tree_add_boolean (rtp_events_tree, hf_rtp_events_end, tvb, offset+1, 1, octet);
+ proto_tree_add_boolean (rtp_events_tree, hf_rtp_events_reserved, tvb, offset+1, 1, octet);
+ proto_tree_add_uint ( rtp_events_tree, hf_rtp_events_volume, tvb, offset+1, 1, octet);
- proto_tree_add_item ( rtp_events_tree, hf_rtp_events_duration, tvb, offset+2, 2, FALSE);
+ proto_tree_add_item ( rtp_events_tree, hf_rtp_events_duration, tvb, offset+2, 2, FALSE);
- /* Make end-of-event packets obvious in the info column */
- if ((octet & 0x80) && check_col(pinfo->cinfo, COL_INFO))
- {
- col_append_str(pinfo->cinfo, COL_INFO, " (end)");
- }
+ /* set the end info for the tap */
+ if (octet & 0x80)
+ {
+ rtp_event_info.info_end = TRUE;
+ } else
+ {
+ rtp_event_info.info_end = FALSE;
+ }
- }
+ /* Make end-of-event packets obvious in the info column */
+ if ((octet & 0x80) && check_col(pinfo->cinfo, COL_INFO))
+ {
+ col_append_str(pinfo->cinfo, COL_INFO, " (end)");
+ }
+
tap_queue_packet(rtp_event_tap, pinfo, &rtp_event_info);
}
Index: epan/dissectors/packet-rtp-events.h
===================================================================
--- epan/dissectors/packet-rtp-events.h (revision 17375)
+++ epan/dissectors/packet-rtp-events.h (working copy)
@@ -255,5 +255,6 @@
struct _rtp_event_info {
guint8 info_rtp_evt;
guint32 info_setup_frame_num; /* the frame num of the packet that set this RTP connection */
+ gboolean info_end;
};
- Follow-Ups:
- SV: [Ethereal-dev] Patch for VoipCalls
- From: Anders Broman
- SV: [Ethereal-dev] Patch for VoipCalls
- Prev by Date: Re: [Ethereal-dev] Fallen at the first hurdle :(
- Next by Date: RE: [Ethereal-dev] Fallen at the first hurdle :(
- Previous by thread: SV: [Ethereal-dev] [bug][patch] packet-x11.c, file.c and addr_resolv.c
- Next by thread: SV: [Ethereal-dev] Patch for VoipCalls
- Index(es):





