diff options
Diffstat (limited to 'ui/gtk/voip_calls.c')
-rw-r--r-- | ui/gtk/voip_calls.c | 242 |
1 files changed, 122 insertions, 120 deletions
diff --git a/ui/gtk/voip_calls.c b/ui/gtk/voip_calls.c index 29ee319de5..e4a98f7862 100644 --- a/ui/gtk/voip_calls.c +++ b/ui/gtk/voip_calls.c @@ -145,9 +145,6 @@ typedef struct _voip_rtp_stream_info { } voip_rtp_stream_info_t; /****************************************************************************/ -/* the one and only global voip_calls_tapinfo_t structure */ -static voip_calls_tapinfo_t the_tapinfo_struct = - {0, NULL, {0}, 0, NULL, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; /* the one and only global voip_rtp_tapinfo_t structure */ static voip_rtp_tapinfo_t the_tapinfo_rtp_struct = @@ -169,7 +166,7 @@ void voip_calls_reset(voip_calls_tapinfo_t *tapinfo) #endif /* free the data items first */ - list = g_list_first(tapinfo->callsinfo_list); + list = g_queue_peek_nth_link(tapinfo->callsinfos, 0); while (list) { callsinfo = (voip_calls_info_t *)list->data; @@ -186,22 +183,20 @@ void voip_calls_reset(voip_calls_tapinfo_t *tapinfo) g_free(list->data); list = g_list_next(list); } - g_list_free(tapinfo->callsinfo_list); + g_queue_clear(tapinfo->callsinfos); /* free the SIP_HASH */ if(NULL!=tapinfo->callsinfo_hashtable[SIP_HASH]) g_hash_table_remove_all (tapinfo->callsinfo_hashtable[SIP_HASH]); - tapinfo->callsinfo_list = NULL; tapinfo->ncalls = 0; tapinfo->npackets = 0; tapinfo->start_packets = 0; tapinfo->completed_calls = 0; tapinfo->rejected_calls = 0; - tapinfo->reversed= 0; /* free the graph data items first */ if(NULL!=tapinfo->graph_analysis->ht) g_hash_table_remove_all(tapinfo->graph_analysis->ht); - list = g_list_first(tapinfo->graph_analysis->list); + list = g_queue_peek_nth_link(tapinfo->graph_analysis->items, 0); while (list) { graph_item = (seq_analysis_item_t *)list->data; @@ -213,9 +208,8 @@ void voip_calls_reset(voip_calls_tapinfo_t *tapinfo) g_free(list->data); list = g_list_next(list); } - g_list_free(tapinfo->graph_analysis->list); + g_queue_clear(tapinfo->graph_analysis->items); tapinfo->graph_analysis->nconv = 0; - tapinfo->graph_analysis->list = NULL; ++(tapinfo->launch_count); @@ -235,10 +229,11 @@ void voip_calls_reset(voip_calls_tapinfo_t *tapinfo) /****************************************************************************/ void graph_analysis_data_init(void) { - the_tapinfo_struct.graph_analysis = (seq_analysis_info_t *)g_malloc(sizeof(seq_analysis_info_t)); - the_tapinfo_struct.graph_analysis->nconv = 0; - the_tapinfo_struct.graph_analysis->list = NULL; - the_tapinfo_struct.graph_analysis->ht= g_hash_table_new(g_int_hash, g_int_equal); + voip_calls_tapinfo_t *voip_tapinfo = voip_calls_get_info(); + voip_tapinfo->graph_analysis = (seq_analysis_info_t *)g_malloc(sizeof(seq_analysis_info_t)); + voip_tapinfo->graph_analysis->nconv = 0; + voip_tapinfo->graph_analysis->items = g_queue_new();; + voip_tapinfo->graph_analysis->ht= g_hash_table_new(g_int_hash, g_int_equal); } /****************************************************************************/ @@ -270,7 +265,7 @@ static void add_to_graph(voip_calls_tapinfo_t *tapinfo _U_, packet_info *pinfo, gai->time_str = g_strdup(time_str); gai->display=FALSE; - tapinfo->graph_analysis->list = g_list_prepend(tapinfo->graph_analysis->list, gai); + g_queue_push_tail(tapinfo->graph_analysis->items, gai); g_hash_table_insert(tapinfo->graph_analysis->ht, &gai->fd->num, gai); } @@ -342,7 +337,7 @@ static guint change_call_num_graph(voip_calls_tapinfo_t *tapinfo _U_, guint16 ca guint items_changed; items_changed = 0; - list = g_list_first(tapinfo->graph_analysis->list); + list = g_queue_peek_nth_link(tapinfo->graph_analysis->items, 0); while (list) { gai = (seq_analysis_item_t *)list->data; @@ -389,12 +384,12 @@ static void insert_to_graph_t38(voip_calls_tapinfo_t *tapinfo _U_, packet_info * item_num = 0; inserted = FALSE; - list = g_list_first(tapinfo->graph_analysis->list); + list = g_queue_peek_nth_link(tapinfo->graph_analysis->items, 0); while (list) { gai = (seq_analysis_item_t *)list->data; if (gai->fd->num > frame_num) { - the_tapinfo_struct.graph_analysis->list = g_list_insert(the_tapinfo_struct.graph_analysis->list, new_gai, item_num); + g_queue_insert_before(tapinfo->graph_analysis->items, list, new_gai); g_hash_table_insert(tapinfo->graph_analysis->ht, &new_gai->fd->num, new_gai); inserted = TRUE; break; @@ -404,7 +399,7 @@ static void insert_to_graph_t38(voip_calls_tapinfo_t *tapinfo _U_, packet_info * } if (!inserted) { - tapinfo->graph_analysis->list = g_list_prepend(tapinfo->graph_analysis->list, new_gai); + g_queue_push_tail(tapinfo->graph_analysis->items, new_gai); g_hash_table_insert(tapinfo->graph_analysis->ht, &new_gai->fd->num, new_gai); } } @@ -591,7 +586,7 @@ RTP_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, void cons } } - the_tapinfo_struct.redraw = TRUE; + voip_calls_get_info()->redraw = TRUE; return 1; } @@ -617,14 +612,14 @@ static void RTP_packet_draw(void *prs _U_) rtp_listinfo = (voip_rtp_stream_info_t *)rtp_streams_list->data; /* using the setup frame number of the RTP stream, we get the call number that it belongs to*/ - /* voip_calls_graph_list = g_list_first(the_tapinfo_struct.graph_analysis->list); */ + /* voip_calls_graph_list = g_list_first(voip_calls_get_info()->graph_analysis->list); */ - gai = (seq_analysis_item_t *)g_hash_table_lookup(the_tapinfo_struct.graph_analysis->ht, &rtp_listinfo->setup_frame_number); + gai = (seq_analysis_item_t *)g_hash_table_lookup(voip_calls_get_info()->graph_analysis->ht, &rtp_listinfo->setup_frame_number); if(gai != NULL) { /* Found the setup frame*/ conv_num = gai->conv_num; /* if RTP was already in the Graph, just update the comment information */ - gai = (seq_analysis_item_t *)g_hash_table_lookup(the_tapinfo_struct.graph_analysis->ht, &rtp_listinfo->start_fd->num); + gai = (seq_analysis_item_t *)g_hash_table_lookup(voip_calls_get_info()->graph_analysis->ht, &rtp_listinfo->start_fd->num); if(gai != NULL) { duration = (guint32)(nstime_to_msec(&rtp_listinfo->stop_rel_ts) - nstime_to_msec(&rtp_listinfo->start_rel_ts)); g_free(gai->comment); @@ -652,8 +647,8 @@ static void RTP_packet_draw(void *prs _U_) new_gai->time_str = g_strdup(time_str); new_gai->display=FALSE; new_gai->line_style = 2; /* the arrow line will be 2 pixels width */ - the_tapinfo_struct.graph_analysis->list = g_list_prepend(the_tapinfo_struct.graph_analysis->list, new_gai); - g_hash_table_insert(the_tapinfo_struct.graph_analysis->ht, &rtp_listinfo->start_fd, new_gai); + g_queue_push_tail(voip_calls_get_info()->graph_analysis->items, new_gai); + g_hash_table_insert(voip_calls_get_info()->graph_analysis->ht, &rtp_listinfo->start_fd, new_gai); } } rtp_streams_list = g_list_next(rtp_streams_list); @@ -680,7 +675,7 @@ static void RTP_packet_draw(void *prs _U_) rtp_listinfo = rtp_streams_list->data; /* using the setup frame number of the RTP stream, we get the call number that it belongs to*/ - voip_calls_graph_list = g_list_first(the_tapinfo_struct.graph_analysis->list); + voip_calls_graph_list = g_list_first(voip_calls_get_info()->graph_analysis->list); while (voip_calls_graph_list) { gai = voip_calls_graph_list->data; @@ -688,7 +683,7 @@ static void RTP_packet_draw(void *prs _U_) /* if we get the setup frame number, then get the time position to graph the RTP arrow */ if (rtp_listinfo->setup_frame_number == gai->fd->num) { /* look again from the beginning 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); + voip_calls_graph_list = g_list_first(voip_calls_get_info()->graph_analysis->list); item = 0; while(voip_calls_graph_list) { gai = voip_calls_graph_list->data; @@ -728,7 +723,7 @@ static void RTP_packet_draw(void *prs _U_) new_gai->time_str = g_strdup(time_str); new_gai->display=FALSE; new_gai->line_style = 2; /* the arrow line will be 2 pixels width */ - the_tapinfo_struct.graph_analysis->list = g_list_insert(the_tapinfo_struct.graph_analysis->list, new_gai, item); + voip_calls_get_info()->graph_analysis->list = g_list_insert(voip_calls_get_info()->graph_analysis->list, new_gai, item); break; } if (voip_calls_graph_list) item++; @@ -785,7 +780,7 @@ remove_tap_listener_rtp(void) static int T38_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const void *T38info) { - voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct; + voip_calls_tapinfo_t *tapinfo = voip_calls_get_info(); voip_calls_info_t *callsinfo = NULL; voip_calls_info_t *tmp_listinfo; @@ -802,7 +797,7 @@ T38_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const vo if (pi->setup_frame_number != 0) { /* using the setup frame number of the T38 packet, we get the call number that it belongs */ - voip_calls_graph_list = g_list_first(tapinfo->graph_analysis->list); + voip_calls_graph_list = g_queue_peek_nth_link(tapinfo->graph_analysis->items, 0); while (voip_calls_graph_list) { tmp_gai = (seq_analysis_item_t *)voip_calls_graph_list->data; @@ -822,7 +817,7 @@ T38_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const vo */ if ( (pi->setup_frame_number == 0) || (gai == NULL) ) { /* check whether we already have a call with these parameters in the list */ - list = g_list_first(tapinfo->callsinfo_list); + list = g_queue_peek_nth_link(tapinfo->callsinfos, 0); while (list) { tmp_listinfo=(voip_calls_info_t *)list->data; @@ -849,7 +844,7 @@ T38_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const vo callsinfo->free_prot_info = NULL; callsinfo->npackets = 0; callsinfo->call_num = tapinfo->ncalls++; - tapinfo->callsinfo_list = g_list_prepend(tapinfo->callsinfo_list, callsinfo); + g_queue_push_tail(tapinfo->callsinfos, callsinfo); } callsinfo->stop_fd = pinfo->fd; callsinfo->stop_rel_ts = pinfo->rel_ts; @@ -938,7 +933,7 @@ t38_init_tap(void) if(have_T38_tap_listener==FALSE) { /* don't register tap listener, if we have it already */ - error_string = register_tap_listener("t38", &(the_tapinfo_struct.t38_dummy), NULL, + error_string = register_tap_listener("t38", &(voip_calls_get_info()->t38_dummy), NULL, 0, voip_calls_dlg_reset, T38_packet, @@ -958,7 +953,7 @@ t38_init_tap(void) void remove_tap_listener_t38(void) { - remove_tap_listener(&(the_tapinfo_struct.t38_dummy)); + remove_tap_listener(&(voip_calls_get_info()->t38_dummy)); have_T38_tap_listener=FALSE; } @@ -985,7 +980,7 @@ static void free_sip_info(gpointer p) { static int SIPcalls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const void *SIPinfo) { - voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct; + voip_calls_tapinfo_t *tapinfo = voip_calls_get_info(); /* we just take note of the ISUP data here; when we receive the MTP3 part everything will be compared with existing calls */ @@ -1049,7 +1044,7 @@ SIPcalls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, con /* show method in comment in conversation list dialog, user can discern different conversation types */ callsinfo->call_comment=g_strdup(pi->request_method); - tapinfo->callsinfo_list = g_list_prepend(tapinfo->callsinfo_list, callsinfo); + g_queue_push_tail(tapinfo->callsinfos, callsinfo); /* insert the call information in the SIP_HASH */ g_hash_table_insert(tapinfo->callsinfo_hashtable[SIP_HASH], tmp_sipinfo->call_identifier, callsinfo); @@ -1161,6 +1156,13 @@ SIPcalls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, con /****************************************************************************/ voip_calls_tapinfo_t* voip_calls_get_info(void) { + /* the one and only global voip_calls_tapinfo_t structure */ + static voip_calls_tapinfo_t the_tapinfo_struct = + {0, NULL, {0}, 0, NULL, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + if (!the_tapinfo_struct.callsinfos) { + /* not initialized yet */ + the_tapinfo_struct.callsinfos = g_queue_new(); + } return &the_tapinfo_struct; } @@ -1177,7 +1179,7 @@ sip_calls_init_tap(void) if(have_SIP_tap_listener==FALSE) { /* don't register tap listener, if we have it already */ - error_string = register_tap_listener("sip", &(the_tapinfo_struct.sip_dummy), NULL, + error_string = register_tap_listener("sip", &(voip_calls_get_info()->sip_dummy), NULL, 0, voip_calls_dlg_reset, SIPcalls_packet, @@ -1197,7 +1199,7 @@ sip_calls_init_tap(void) void remove_tap_listener_sip_calls(void) { - remove_tap_listener(&(the_tapinfo_struct.sip_dummy)); + remove_tap_listener(&(voip_calls_get_info()->sip_dummy)); have_SIP_tap_listener=FALSE; } @@ -1216,7 +1218,7 @@ static guint32 mtp3_frame_num; static int isup_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const void *isup_info _U_) { - voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct; + voip_calls_tapinfo_t *tapinfo = voip_calls_get_info(); voip_calls_info_t *tmp_listinfo; voip_calls_info_t *callsinfo = NULL; isup_calls_info_t *tmp_isupinfo; @@ -1227,14 +1229,14 @@ isup_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co gchar *frame_label = NULL; gchar *comment = NULL; - /*voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct; unused */ + /*voip_calls_tapinfo_t *tapinfo = voip_calls_get_info(); unused */ const isup_tap_rec_t *pi = (const isup_tap_rec_t *)isup_info; /* check if the lower layer is MTP matching the frame number */ if (mtp3_frame_num != pinfo->fd->num) return 0; /* check whether we already have a call with these parameters in the list */ - list = g_list_first(tapinfo->callsinfo_list); + list = g_queue_peek_nth_link(tapinfo->callsinfos, 0); while (list) { right_pair = TRUE; @@ -1299,7 +1301,7 @@ isup_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co tmp_isupinfo->cic = pinfo->circuit_id; callsinfo->npackets = 0; callsinfo->call_num = tapinfo->ncalls++; - tapinfo->callsinfo_list = g_list_prepend(tapinfo->callsinfo_list, callsinfo); + g_queue_push_tail(tapinfo->callsinfos, callsinfo); } @@ -1385,7 +1387,7 @@ isup_calls_init_tap(void) if(have_isup_tap_listener==FALSE) { - error_string = register_tap_listener("isup", &(the_tapinfo_struct.isup_dummy), + error_string = register_tap_listener("isup", &(voip_calls_get_info()->isup_dummy), NULL, 0, voip_calls_dlg_reset, @@ -1408,7 +1410,7 @@ isup_calls_init_tap(void) void remove_tap_listener_isup_calls(void) { - remove_tap_listener(&(the_tapinfo_struct.isup_dummy)); + remove_tap_listener(&(voip_calls_get_info()->isup_dummy)); have_isup_tap_listener=FALSE; } @@ -1449,7 +1451,7 @@ mtp3_calls_init_tap(void) if(have_mtp3_tap_listener==FALSE) { - error_string = register_tap_listener("mtp3", &(the_tapinfo_struct.mtp3_dummy), + error_string = register_tap_listener("mtp3", &(voip_calls_get_info()->mtp3_dummy), NULL, 0, voip_calls_dlg_reset, @@ -1468,7 +1470,7 @@ mtp3_calls_init_tap(void) if(have_m3ua_tap_listener==FALSE) { - error_string = register_tap_listener("m3ua", &(the_tapinfo_struct.mtp3_dummy), + error_string = register_tap_listener("m3ua", &(voip_calls_get_info()->mtp3_dummy), NULL, 0, voip_calls_dlg_reset, @@ -1492,8 +1494,8 @@ mtp3_calls_init_tap(void) void remove_tap_listener_mtp3_calls(void) { - remove_tap_listener(&(the_tapinfo_struct.mtp3_dummy)); - remove_tap_listener(&(the_tapinfo_struct.m3ua_dummy)); + remove_tap_listener(&(voip_calls_get_info()->mtp3_dummy)); + remove_tap_listener(&(voip_calls_get_info()->m3ua_dummy)); have_mtp3_tap_listener=FALSE; have_m3ua_tap_listener=FALSE; @@ -1528,7 +1530,7 @@ static int q931_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const void *q931_info) { GList *list,*list2; - voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct; + voip_calls_tapinfo_t *tapinfo = voip_calls_get_info(); h323_calls_info_t *tmp_h323info,*tmp2_h323info; actrace_isdn_calls_info_t *tmp_actrace_isdn_info; voip_calls_info_t *tmp_listinfo; @@ -1559,7 +1561,7 @@ q931_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co /* add staff to H323 calls */ if (h225_frame_num == q931_frame_num) { tmp_h323info = NULL; - list = g_list_first(tapinfo->callsinfo_list); + list = g_queue_peek_nth_link(tapinfo->callsinfos, 0); while (list) { tmp_listinfo=(voip_calls_info_t *)list->data; @@ -1595,7 +1597,7 @@ q931_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co /* TODO: we are just checking the DialedNumer in LRQ/LCF against the Setup we should also check if the h225 signaling IP and port match the destination Setup ip and port */ - list = g_list_first(tapinfo->callsinfo_list); + list = g_queue_peek_nth_link(tapinfo->callsinfos, 0); while (list) { tmp_listinfo=(voip_calls_info_t *)list->data; @@ -1625,7 +1627,7 @@ q931_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co g_list_free(tmp_h323info->h245_list); tmp_h323info->h245_list = NULL; g_free(tmp_listinfo->prot_info); - tapinfo->callsinfo_list = g_list_remove(tapinfo->callsinfo_list, tmp_listinfo); + g_queue_unlink(tapinfo->callsinfos, list); break; } } @@ -1657,7 +1659,7 @@ q931_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co } else if (h245_labels.frame_num == q931_frame_num) { /* there are empty H225 frames that don't have guid (guaid=0) but they have h245 info, so the only way to match those frames is with the Q931 CRV number */ - list = g_list_first(tapinfo->callsinfo_list); + list = g_queue_peek_nth_link(tapinfo->callsinfos, 0); while (list) { tmp_listinfo=(voip_calls_info_t *)list->data; @@ -1687,7 +1689,7 @@ q931_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co comment = NULL; callsinfo = NULL; - list = g_list_first(tapinfo->callsinfo_list); + list = g_queue_peek_nth_link(tapinfo->callsinfos, 0); while (list) { tmp_listinfo=(voip_calls_info_t *)list->data; @@ -1723,7 +1725,7 @@ q931_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co tmp_actrace_isdn_info->trunk=actrace_trunk; callsinfo->npackets = 0; callsinfo->call_num = tapinfo->ncalls++; - tapinfo->callsinfo_list = g_list_prepend(tapinfo->callsinfo_list, callsinfo); + g_queue_push_tail(tapinfo->callsinfos, callsinfo); } callsinfo->stop_fd = pinfo->fd; @@ -1792,7 +1794,7 @@ q931_calls_init_tap(void) if(have_q931_tap_listener==FALSE) { - error_string = register_tap_listener("q931", &(the_tapinfo_struct.q931_dummy), + error_string = register_tap_listener("q931", &(voip_calls_get_info()->q931_dummy), NULL, 0, voip_calls_dlg_reset, @@ -1815,7 +1817,7 @@ q931_calls_init_tap(void) void remove_tap_listener_q931_calls(void) { - remove_tap_listener(&(the_tapinfo_struct.q931_dummy)); + remove_tap_listener(&(voip_calls_get_info()->q931_dummy)); have_q931_tap_listener=FALSE; } @@ -1857,7 +1859,7 @@ static void free_h225_info(gpointer p) { static int H225calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const void *H225info) { - voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct; + voip_calls_tapinfo_t *tapinfo = voip_calls_get_info(); voip_calls_info_t *tmp_listinfo; voip_calls_info_t *callsinfo = NULL; h323_calls_info_t *tmp_h323info = NULL; @@ -1880,7 +1882,7 @@ H225calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, con if (!pi->request_available) return 0; /* check whether we already have a call with this request SeqNum */ - list = g_list_first(tapinfo->callsinfo_list); + list = g_queue_peek_nth_link(tapinfo->callsinfos, 0); while (list) { tmp_listinfo=(voip_calls_info_t *)list->data; @@ -1896,7 +1898,7 @@ H225calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, con } } else { /* check whether we already have a call with this guid in the list */ - list = g_list_first(tapinfo->callsinfo_list); + list = g_queue_peek_nth_link(tapinfo->callsinfos, 0); while (list) { tmp_listinfo=(voip_calls_info_t *)list->data; @@ -1948,7 +1950,7 @@ H225calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, con callsinfo->call_num = tapinfo->ncalls++; callsinfo->npackets = 0; - tapinfo->callsinfo_list = g_list_prepend(tapinfo->callsinfo_list, callsinfo); + g_queue_push_tail(tapinfo->callsinfos, callsinfo); } h225_frame_num = pinfo->fd->num; @@ -2085,7 +2087,7 @@ h225_calls_init_tap(void) if(have_H225_tap_listener==FALSE) { /* don't register tap listener, if we have it already */ - error_string = register_tap_listener("h225", &(the_tapinfo_struct.h225_dummy), NULL, + error_string = register_tap_listener("h225", &(voip_calls_get_info()->h225_dummy), NULL, 0, voip_calls_dlg_reset, H225calls_packet, @@ -2106,7 +2108,7 @@ h225_calls_init_tap(void) void remove_tap_listener_h225_calls(void) { - remove_tap_listener(&(the_tapinfo_struct.h225_dummy)); + remove_tap_listener(&(voip_calls_get_info()->h225_dummy)); have_H225_tap_listener=FALSE; } @@ -2119,7 +2121,7 @@ void h245_add_to_graph(guint32 new_frame_num) if (new_frame_num != h245_labels.frame_num) return; for (n=0; n<h245_labels.labels_count; n++) { - append_to_frame_graph(&the_tapinfo_struct, new_frame_num, h245_labels.labels[n].frame_label, h245_labels.labels[n].comment); + append_to_frame_graph(voip_calls_get_info(), new_frame_num, h245_labels.labels[n].frame_label, h245_labels.labels[n].comment); g_free(h245_labels.labels[n].frame_label); h245_labels.labels[n].frame_label = NULL; g_free(h245_labels.labels[n].comment); @@ -2165,7 +2167,7 @@ static void h245_add_label(guint32 new_frame_num, const gchar *frame_label, cons static int H245dgcalls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const void *H245info) { - voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct; + voip_calls_tapinfo_t *tapinfo = voip_calls_get_info(); voip_calls_info_t *tmp_listinfo; voip_calls_info_t *callsinfo = NULL; h323_calls_info_t *tmp_h323info; @@ -2176,7 +2178,7 @@ H245dgcalls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, c const h245_packet_info *pi = (const h245_packet_info *)H245info; /* check if Tunneling is OFF and we have a call with this H245 add */ - list = g_list_first(tapinfo->callsinfo_list); + list = g_queue_peek_nth_link(tapinfo->callsinfos, 0); while (list) { tmp_listinfo=(voip_calls_info_t *)list->data; @@ -2241,7 +2243,7 @@ h245dg_calls_init_tap(void) if(have_H245dg_tap_listener==FALSE) { /* don't register tap listener, if we have it already */ - error_string = register_tap_listener("h245dg", &(the_tapinfo_struct.h245dg_dummy), NULL, + error_string = register_tap_listener("h245dg", &(voip_calls_get_info()->h245dg_dummy), NULL, 0, voip_calls_dlg_reset, H245dgcalls_packet, @@ -2262,7 +2264,7 @@ h245dg_calls_init_tap(void) void remove_tap_listener_h245dg_calls(void) { - remove_tap_listener(&(the_tapinfo_struct.h245dg_dummy)); + remove_tap_listener(&(voip_calls_get_info()->h245dg_dummy)); have_H245dg_tap_listener=FALSE; } @@ -2274,7 +2276,7 @@ remove_tap_listener_h245dg_calls(void) static int SDPcalls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const void *SDPinfo) { - voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct; + voip_calls_tapinfo_t *tapinfo = voip_calls_get_info(); const sdp_packet_info *pi = (const sdp_packet_info *)SDPinfo; /* There are protocols like MGCP/SIP where the SDP is called before the tap for the @@ -2306,7 +2308,7 @@ sdp_calls_init_tap(void) if(have_sdp_tap_listener==FALSE) { /* don't register tap listener, if we have it already */ - error_string = register_tap_listener("sdp", &(the_tapinfo_struct.sdp_dummy), NULL, + error_string = register_tap_listener("sdp", &(voip_calls_get_info()->sdp_dummy), NULL, 0, voip_calls_dlg_reset, SDPcalls_packet, @@ -2327,7 +2329,7 @@ sdp_calls_init_tap(void) void remove_tap_listener_sdp_calls(void) { - remove_tap_listener(&(the_tapinfo_struct.sdp_dummy)); + remove_tap_listener(&(voip_calls_get_info()->sdp_dummy)); have_sdp_tap_listener=FALSE; } @@ -2448,7 +2450,7 @@ static void mgcpDialedDigits(gchar *signalStr, gchar **dialedDigits) static int MGCPcalls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const void *MGCPinfo) { - voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct; + voip_calls_tapinfo_t *tapinfo = voip_calls_get_info(); voip_calls_info_t *tmp_listinfo; voip_calls_info_t *callsinfo = NULL; @@ -2467,7 +2469,7 @@ MGCPcalls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co if ((pi->mgcp_type == MGCP_REQUEST) && !pi->is_duplicate ) { /* check whether we already have a call with this Endpoint and it is active*/ - list = g_list_first(tapinfo->callsinfo_list); + list = g_queue_peek_nth_link(tapinfo->callsinfos, 0); while (list) { tmp_listinfo=(voip_calls_info_t *)list->data; @@ -2513,13 +2515,13 @@ MGCPcalls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co ((pi->mgcp_type == MGCP_REQUEST) && pi->is_duplicate) ) { /* if it is a response OR if it is a duplicated Request, lets look in the Graph to see if there is a request that matches */ - listGraph = g_list_first(tapinfo->graph_analysis->list); + listGraph = g_queue_peek_nth_link(tapinfo->graph_analysis->items, 0); while (listGraph) { gai = (seq_analysis_item_t *)listGraph->data; if (gai->fd->num == pi->req_num) { /* there is a request that match, so look the associated call with this call_num */ - list = g_list_first(tapinfo->callsinfo_list); + list = g_queue_peek_nth_link(tapinfo->callsinfos, 0); while (list) { tmp_listinfo=(voip_calls_info_t *)list->data; @@ -2564,7 +2566,7 @@ MGCPcalls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co tmp_mgcpinfo->fromEndpoint = fromEndpoint; callsinfo->npackets = 0; callsinfo->call_num = tapinfo->ncalls++; - tapinfo->callsinfo_list = g_list_prepend(tapinfo->callsinfo_list, callsinfo); + g_queue_push_tail(tapinfo->callsinfos, callsinfo); } g_assert(tmp_mgcpinfo != NULL); @@ -2686,7 +2688,7 @@ mgcp_calls_init_tap(void) * routine. */ error_string = register_tap_listener("mgcp", - &(the_tapinfo_struct.mgcp_dummy), + &(voip_calls_get_info()->mgcp_dummy), NULL, TL_REQUIRES_PROTO_TREE, voip_calls_dlg_reset, @@ -2707,7 +2709,7 @@ mgcp_calls_init_tap(void) void remove_tap_listener_mgcp_calls(void) { - remove_tap_listener(&(the_tapinfo_struct.mgcp_dummy)); + remove_tap_listener(&(voip_calls_get_info()->mgcp_dummy)); have_MGCP_tap_listener=FALSE; } @@ -2721,7 +2723,7 @@ remove_tap_listener_mgcp_calls(void) static int ACTRACEcalls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const void *ACTRACEinfo) { - voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct; + voip_calls_tapinfo_t *tapinfo = voip_calls_get_info(); const actrace_info_t *pi = (const actrace_info_t *)ACTRACEinfo; GList *list; actrace_cas_calls_info_t *tmp_actrace_cas_info; @@ -2738,7 +2740,7 @@ ACTRACEcalls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, gchar *comment = NULL; callsinfo = NULL; - list = g_list_first(tapinfo->callsinfo_list); + list = g_queue_peek_nth_link(tapinfo->callsinfos, 0); while (list) { tmp_listinfo=(voip_calls_info_t *)list->data; @@ -2775,7 +2777,7 @@ ACTRACEcalls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, tmp_actrace_cas_info->trunk=actrace_trunk; callsinfo->npackets = 0; callsinfo->call_num = tapinfo->ncalls++; - tapinfo->callsinfo_list = g_list_prepend(tapinfo->callsinfo_list, callsinfo); + g_queue_push_tail(tapinfo->callsinfos, callsinfo); } callsinfo->stop_fd = pinfo->fd; @@ -2813,7 +2815,7 @@ actrace_calls_init_tap(void) if(have_actrace_tap_listener==FALSE) { /* don't register tap listener, if we have it already */ - error_string = register_tap_listener("actrace", &(the_tapinfo_struct.actrace_dummy), NULL, + error_string = register_tap_listener("actrace", &(voip_calls_get_info()->actrace_dummy), NULL, 0, voip_calls_dlg_reset, ACTRACEcalls_packet, @@ -2834,7 +2836,7 @@ actrace_calls_init_tap(void) void remove_tap_listener_actrace_calls(void) { - remove_tap_listener(&(the_tapinfo_struct.actrace_dummy)); + remove_tap_listener(&(voip_calls_get_info()->actrace_dummy)); have_actrace_tap_listener=FALSE; } @@ -2852,7 +2854,7 @@ static gboolean have_megaco_tap_listener = FALSE; type == GCP_CMD_CTX_ATTR_AUDIT_REQ ) static int h248_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const void *prot_info) { - voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct; + voip_calls_tapinfo_t *tapinfo = voip_calls_get_info(); const gcp_cmd_t *cmd = (const gcp_cmd_t *)prot_info; GList *list; voip_calls_info_t *callsinfo = NULL; @@ -2875,7 +2877,7 @@ static int h248_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t * address_to_str_buf(mgw, mgw_addr, 128); /* check whether we already have this context in the list */ - list = g_list_first(tapinfo->callsinfo_list); + list = g_queue_peek_nth_link(tapinfo->callsinfos, 0); while (list) { voip_calls_info_t* tmp_listinfo = (voip_calls_info_t *)list->data; @@ -2912,7 +2914,7 @@ static int h248_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t * callsinfo->selected = FALSE; - tapinfo->callsinfo_list = g_list_prepend(tapinfo->callsinfo_list, callsinfo); + g_queue_push_tail(tapinfo->callsinfos, callsinfo); } else { GString *s = g_string_new(""); @@ -2957,7 +2959,7 @@ void h248_calls_init_tap(void) if(have_megaco_tap_listener==FALSE) { - error_string = register_tap_listener("megaco", &(the_tapinfo_struct.megaco_dummy), + error_string = register_tap_listener("megaco", &(voip_calls_get_info()->megaco_dummy), NULL, 0, voip_calls_dlg_reset, @@ -2976,7 +2978,7 @@ void h248_calls_init_tap(void) if(have_h248_tap_listener==FALSE) { - error_string = register_tap_listener("h248", &(the_tapinfo_struct.h248_dummy), + error_string = register_tap_listener("h248", &(voip_calls_get_info()->h248_dummy), NULL, 0, voip_calls_dlg_reset, @@ -2997,8 +2999,8 @@ void h248_calls_init_tap(void) void remove_tap_listener_h248_calls(void) { - remove_tap_listener(&(the_tapinfo_struct.h248_dummy)); - remove_tap_listener(&(the_tapinfo_struct.megaco_dummy)); + remove_tap_listener(&(voip_calls_get_info()->h248_dummy)); + remove_tap_listener(&(voip_calls_get_info()->megaco_dummy)); have_megaco_tap_listener=FALSE; have_h248_tap_listener=FALSE; @@ -3021,7 +3023,7 @@ static const voip_protocol sccp_proto_map[] = { const value_string* sccp_payload_values; static int sccp_calls(packet_info *pinfo, const void *prot_info) { - voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct; + voip_calls_tapinfo_t *tapinfo = voip_calls_get_info(); const sccp_msg_info_t* msg = (const sccp_msg_info_t *)prot_info; sccp_assoc_info_t* assoc = msg->data.co.assoc; GList *list; @@ -3030,7 +3032,7 @@ static int sccp_calls(packet_info *pinfo, const void *prot_info) { const gchar *comment = NULL; /* check whether we already have this assoc in the list */ - for(list = g_list_first(tapinfo->callsinfo_list) ; list ; list = g_list_next (list) ) { + for(list = g_queue_peek_nth_link(tapinfo->callsinfos, 0) ; list ; list = g_list_next (list) ) { if ( ((voip_calls_info_t*)(list->data))->prot_info == assoc ) { callsinfo = (voip_calls_info_t*)(list->data); break; @@ -3070,7 +3072,7 @@ static int sccp_calls(packet_info *pinfo, const void *prot_info) { callsinfo->selected = FALSE; callsinfo->call_num = tapinfo->ncalls++; - tapinfo->callsinfo_list = g_list_prepend(tapinfo->callsinfo_list, callsinfo); + g_queue_push_tail(tapinfo->callsinfos, callsinfo); } else { if ( assoc->calling_party ) { @@ -3141,7 +3143,7 @@ void sccp_calls_init_tap(void) if(have_sccp_tap_listener==FALSE) { - error_string = register_tap_listener("sccp", &(the_tapinfo_struct.sccp_dummy), + error_string = register_tap_listener("sccp", &(voip_calls_get_info()->sccp_dummy), NULL, 0, voip_calls_dlg_reset, @@ -3160,7 +3162,7 @@ void sccp_calls_init_tap(void) if(have_sua_tap_listener==FALSE) { - error_string = register_tap_listener("sua", &(the_tapinfo_struct.sua_dummy), + error_string = register_tap_listener("sua", &(voip_calls_get_info()->sua_dummy), NULL, 0, voip_calls_dlg_reset, @@ -3182,7 +3184,7 @@ void sccp_calls_init_tap(void) void remove_tap_listener_sccp_calls(void) { - remove_tap_listener(&(the_tapinfo_struct.sccp_dummy)); + remove_tap_listener(&(voip_calls_get_info()->sccp_dummy)); have_sccp_tap_listener=FALSE; have_sua_tap_listener=FALSE; @@ -3196,7 +3198,7 @@ remove_tap_listener_sccp_calls(void) static int unistim_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const void *unistim_info) { - voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct; + voip_calls_tapinfo_t *tapinfo = voip_calls_get_info(); voip_calls_info_t *tmp_listinfo; voip_calls_info_t *callsinfo = NULL; unistim_info_t *tmp_unistim_info = NULL; @@ -3212,7 +3214,7 @@ unistim_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, g_tmp = g_string_new(NULL); /* Check to see if this is a dup */ - list = g_list_first(tapinfo->callsinfo_list); + list = g_queue_peek_nth_link(tapinfo->callsinfos, 0); while(list) { @@ -3308,7 +3310,7 @@ unistim_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, callsinfo->free_prot_info = g_free; callsinfo->npackets = 0; callsinfo->call_num = tapinfo->ncalls++; - tapinfo->callsinfo_list = g_list_prepend(tapinfo->callsinfo_list, callsinfo); + g_queue_push_tail(tapinfo->callsinfos, callsinfo); } else { @@ -3564,7 +3566,7 @@ unistim_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, callsinfo->free_prot_info = g_free; callsinfo->npackets = 0; callsinfo->call_num = tapinfo->ncalls++; - tapinfo->callsinfo_list = g_list_prepend(tapinfo->callsinfo_list, callsinfo); + g_queue_push_tail(tapinfo->callsinfos, callsinfo); /* Open stream */ /* Each packet COULD BE OUR LAST!!!! */ @@ -3669,7 +3671,7 @@ unistim_calls_init_tap(void) { if(have_unistim_tap_listener==FALSE) { - error_string = register_tap_listener("unistim", &(the_tapinfo_struct.unistim_dummy), + error_string = register_tap_listener("unistim", &(voip_calls_get_info()->unistim_dummy), NULL, 0, voip_calls_dlg_reset, @@ -3692,7 +3694,7 @@ unistim_calls_init_tap(void) { void remove_tap_listener_unistim_calls(void) { - remove_tap_listener(&(the_tapinfo_struct.unistim_dummy)); + remove_tap_listener(&(voip_calls_get_info()->unistim_dummy)); have_unistim_tap_listener=FALSE; } @@ -3723,7 +3725,7 @@ static const voip_call_state skinny_tap_voip_state[] = { static int skinny_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const void *skinny_info) { - voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct; + voip_calls_tapinfo_t *tapinfo = voip_calls_get_info(); GList* list; voip_calls_info_t *callsinfo = NULL; address* phone; @@ -3734,7 +3736,7 @@ skinny_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, if (si == NULL || (si->callId == 0 && si->passThruId == 0)) return 0; /* check whether we already have this context in the list */ - list = g_list_first(tapinfo->callsinfo_list); + list = g_queue_peek_nth_link(tapinfo->callsinfos, 0); while (list) { voip_calls_info_t* tmp_listinfo = (voip_calls_info_t *)list->data; @@ -3777,7 +3779,7 @@ skinny_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, callsinfo->stop_rel_ts = pinfo->rel_ts; callsinfo->selected = FALSE; - tapinfo->callsinfo_list = g_list_prepend(tapinfo->callsinfo_list, callsinfo); + g_queue_push_tail(tapinfo->callsinfos, callsinfo); } else { if (si->callingParty) { g_free(callsinfo->from_identity); @@ -3835,7 +3837,7 @@ skinny_calls_init_tap(void) * routine. */ error_string = register_tap_listener("skinny", - &(the_tapinfo_struct.skinny_dummy), + &(voip_calls_get_info()->skinny_dummy), NULL, TL_REQUIRES_PROTO_TREE, voip_calls_dlg_reset, @@ -3856,7 +3858,7 @@ skinny_calls_init_tap(void) void remove_tap_listener_skinny_calls(void) { - remove_tap_listener(&(the_tapinfo_struct.skinny_dummy)); + remove_tap_listener(&(voip_calls_get_info()->skinny_dummy)); have_skinny_tap_listener=FALSE; } @@ -3877,7 +3879,7 @@ static void free_iax2_info(gpointer p) { static int iax2_calls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const void *iax2_info) { - voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct; + voip_calls_tapinfo_t *tapinfo = voip_calls_get_info(); GList* list; voip_calls_info_t *callsinfo = NULL; address* phone; @@ -3887,7 +3889,7 @@ iax2_calls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, c if (ii == NULL || ii->ptype != IAX2_FULL_PACKET || (ii->scallno == 0 && ii->dcallno == 0)) return 0; /* check whether we already have this context in the list */ - list = g_list_first(tapinfo->callsinfo_list); + list = g_queue_peek_nth_link(tapinfo->callsinfos, 0); while (list) { voip_calls_info_t* tmp_listinfo = (voip_calls_info_t *)list->data; @@ -3933,7 +3935,7 @@ iax2_calls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, c callsinfo->stop_rel_ts = pinfo->rel_ts; callsinfo->selected = FALSE; - tapinfo->callsinfo_list = g_list_prepend(tapinfo->callsinfo_list, callsinfo); + g_queue_push_tail(tapinfo->callsinfos, callsinfo); } else { callsinfo->call_state = ii->callState; @@ -3974,7 +3976,7 @@ iax2_calls_init_tap(void) * appear to be true of the IAX2 dissector. */ error_string = register_tap_listener("IAX2", - &(the_tapinfo_struct.iax2_dummy), + &(voip_calls_get_info()->iax2_dummy), NULL, TL_REQUIRES_PROTO_TREE, voip_calls_dlg_reset, @@ -3995,7 +3997,7 @@ iax2_calls_init_tap(void) void remove_tap_listener_iax2_calls(void) { - remove_tap_listener(&(the_tapinfo_struct.iax2_dummy)); + remove_tap_listener(&(voip_calls_get_info()->iax2_dummy)); have_iax2_tap_listener=FALSE; } @@ -4007,14 +4009,14 @@ remove_tap_listener_iax2_calls(void) static int VoIPcalls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const void *VoIPinfo) { - voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct; + voip_calls_tapinfo_t *tapinfo = voip_calls_get_info(); voip_calls_info_t *callsinfo = NULL; voip_calls_info_t *tmp_listinfo; GList *list = NULL; const voip_packet_info_t *pi = (const voip_packet_info_t *)VoIPinfo; if (pi->call_id) - list = g_list_first(tapinfo->callsinfo_list); + list = g_queue_peek_nth_link(tapinfo->callsinfos, 0); while (list) { tmp_listinfo = (voip_calls_info_t *)list->data; if ( tmp_listinfo->protocol == VOIP_COMMON ) { @@ -4046,7 +4048,7 @@ VoIPcalls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, con callsinfo->call_num = tapinfo->ncalls++; callsinfo->npackets = 0; - tapinfo->callsinfo_list = g_list_prepend(tapinfo->callsinfo_list, callsinfo); + g_queue_push_tail(tapinfo->callsinfos, callsinfo); } callsinfo->call_active_state = pi->call_active_state; @@ -4080,7 +4082,7 @@ VoIPcalls_init_tap(void) if(have_voip_tap_listener==FALSE) { - error_string = register_tap_listener("voip", &(the_tapinfo_struct.voip_dummy), + error_string = register_tap_listener("voip", &(voip_calls_get_info()->voip_dummy), NULL, 0, voip_calls_dlg_reset, @@ -4101,7 +4103,7 @@ VoIPcalls_init_tap(void) void remove_tap_listener_voip_calls(void) { - remove_tap_listener(&(the_tapinfo_struct.voip_dummy)); + remove_tap_listener(&(voip_calls_get_info()->voip_dummy)); have_voip_tap_listener=FALSE; } @@ -4129,7 +4131,7 @@ void VoIPcalls_set_flow_show_option(flow_show_options option) static int prot_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const void *prot_info _U_) { - voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct; + voip_calls_tapinfo_t *tapinfo = voip_calls_get_info(); if (callsinfo!=NULL) { callsinfo->stop_abs = pinfo->fd->abs_ts; callsinfo->stop_rel = pinfo->rel_ts; @@ -4154,7 +4156,7 @@ prot_calls_init_tap(void) if(have_prot__tap_listener==FALSE) { - error_string = register_tap_listener("prot_", &(the_tapinfo_struct.prot__dummy), + error_string = register_tap_listener("prot_", &(voip_calls_get_info()->prot__dummy), NULL, 0, voip_calls_dlg_reset, @@ -4177,7 +4179,7 @@ prot_calls_init_tap(void) void remove_tap_listener_prot__calls(void) { - remove_tap_listener(&(the_tapinfo_struct.prot__dummy)); + remove_tap_listener(&(voip_calls_get_info()->prot__dummy)); have_prot__tap_listener=FALSE; } |