aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--epan/dissectors/packet-isup.h2
-rw-r--r--epan/dissectors/packet-sip.h2
-rw-r--r--ui/CMakeLists.txt1
-rw-r--r--ui/Makefile.common6
-rw-r--r--ui/gtk/CMakeLists.txt1
-rw-r--r--ui/gtk/Makefile.common2
-rw-r--r--ui/gtk/rtp_analysis.c2
-rw-r--r--ui/gtk/rtp_player.c2
-rw-r--r--ui/gtk/voip_calls_dlg.c42
-rw-r--r--ui/gtk/voip_calls_dlg.h4
-rw-r--r--ui/voip_calls.c (renamed from ui/gtk/voip_calls.c)231
-rw-r--r--ui/voip_calls.h (renamed from ui/gtk/voip_calls.h)17
12 files changed, 166 insertions, 146 deletions
diff --git a/epan/dissectors/packet-isup.h b/epan/dissectors/packet-isup.h
index 3dc95b8f3c..d2c1ad7861 100644
--- a/epan/dissectors/packet-isup.h
+++ b/epan/dissectors/packet-isup.h
@@ -31,7 +31,7 @@
typedef struct _isup_tap_rec_t {
guint8 message_type;
- /* added for VoIP calls analysis, see gtk/voip_calls.c*/
+ /* added for VoIP calls analysis, see ui/voip_calls.c*/
gchar *called_number;
gchar *calling_number;
guint8 cause_value;
diff --git a/epan/dissectors/packet-sip.h b/epan/dissectors/packet-sip.h
index 13456607df..41177b3a09 100644
--- a/epan/dissectors/packet-sip.h
+++ b/epan/dissectors/packet-sip.h
@@ -30,7 +30,7 @@ typedef struct _sip_info_value_t
guint response_code;
guchar resend;
guint32 setup_time;
- /* added for VoIP calls analysis, see gtk/voip_calls.c*/
+ /* added for VoIP calls analysis, see ui/voip_calls.c*/
gchar *tap_call_id;
gchar *tap_from_addr;
gchar *tap_to_addr;
diff --git a/ui/CMakeLists.txt b/ui/CMakeLists.txt
index 12deadfed4..35efca9977 100644
--- a/ui/CMakeLists.txt
+++ b/ui/CMakeLists.txt
@@ -55,6 +55,7 @@ set(COMMON_UI_SRC
time_shift.c
traffic_table_ui.c
util.c
+ voip_calls.c
)
set(DIRTY_UI_SRC)
diff --git a/ui/Makefile.common b/ui/Makefile.common
index 1be7dc1c59..af77a1db0d 100644
--- a/ui/Makefile.common
+++ b/ui/Makefile.common
@@ -75,7 +75,8 @@ WIRESHARK_UI_SRC = \
text_import.c \
time_shift.c \
traffic_table_ui.c \
- util.c
+ util.c \
+ voip_calls.c
noinst_HEADERS = \
alert_box.h \
@@ -119,4 +120,5 @@ noinst_HEADERS = \
traffic_table_ui.h \
ui_util.h \
utf8_entities.h \
- util.h
+ util.h \
+ voip_calls.h
diff --git a/ui/gtk/CMakeLists.txt b/ui/gtk/CMakeLists.txt
index 553f3fb36a..3d008d3837 100644
--- a/ui/gtk/CMakeLists.txt
+++ b/ui/gtk/CMakeLists.txt
@@ -112,7 +112,6 @@ set(WIRESHARK_GTK_SRC
text_page_utils.c
time_shift_dlg.c
uat_gui.c
- voip_calls.c
webbrowser.c
${WIRESHARK_CUSTOM_GTK_SRC}
)
diff --git a/ui/gtk/Makefile.common b/ui/gtk/Makefile.common
index 5238d7d27e..5b58c68878 100644
--- a/ui/gtk/Makefile.common
+++ b/ui/gtk/Makefile.common
@@ -133,7 +133,6 @@ WIRESHARK_GTK_SRC = \
text_page_utils.c \
time_shift_dlg.c \
uat_gui.c \
- voip_calls.c \
webbrowser.c \
extcap_gtk.c \
$(WIRESHARK_CUSTOM_GTK_SRC)
@@ -313,7 +312,6 @@ noinst_HEADERS = \
text_page_utils.h \
toolbar_icons.h \
uat_gui.h \
- voip_calls.h \
voip_calls_dlg.h \
webbrowser.h \
wsiconcap.h \
diff --git a/ui/gtk/rtp_analysis.c b/ui/gtk/rtp_analysis.c
index ac2673879b..2210121bda 100644
--- a/ui/gtk/rtp_analysis.c
+++ b/ui/gtk/rtp_analysis.c
@@ -86,8 +86,8 @@
#include "ui/gtk/stock_icons.h"
#ifdef HAVE_LIBPORTAUDIO
+#include "ui/voip_calls.h"
#include "ui/gtk/graph_analysis.h"
-#include "ui/gtk/voip_calls.h"
#include "ui/gtk/rtp_player.h"
#endif /* HAVE_LIBPORTAUDIO */
diff --git a/ui/gtk/rtp_player.c b/ui/gtk/rtp_player.c
index ad96bfeee8..13867a2b9e 100644
--- a/ui/gtk/rtp_player.c
+++ b/ui/gtk/rtp_player.c
@@ -68,12 +68,12 @@
#include "../globals.h"
#include "ui/simple_dialog.h"
+#include "ui/voip_calls.h"
#include "ui/gtk/gui_utils.h"
#include "ui/gtk/dlg_utils.h"
#include "ui/gtk/graph_analysis.h"
#include "ui/gtk/voip_calls_dlg.h"
-#include "ui/gtk/voip_calls.h"
#include "ui/gtk/gtkglobals.h"
#include "ui/gtk/rtp_player.h"
#include "ui/gtk/stock_icons.h"
diff --git a/ui/gtk/voip_calls_dlg.c b/ui/gtk/voip_calls_dlg.c
index 80568066f8..ac001570ba 100644
--- a/ui/gtk/voip_calls_dlg.c
+++ b/ui/gtk/voip_calls_dlg.c
@@ -52,9 +52,10 @@
#include "../globals.h"
#include <epan/stat_groups.h>
+#include "ui/voip_calls.h"
+
#include "ui/gtk/graph_analysis.h"
#include "ui/gtk/voip_calls_dlg.h"
-#include "ui/gtk/voip_calls.h"
#include "ui/gtk/gui_stat_menu.h"
#include "ui/gtk/dlg_utils.h"
#include "ui/gtk/gui_utils.h"
@@ -108,6 +109,11 @@ enum
NUM_COLS /* The number of columns */
};
+/* functions for tap_listeners in voip_calls.c */
+static void voip_calls_dlg_reset(void *ptr);
+static gboolean voip_calls_dlg_packet(void *ptr, packet_info *pinfo, epan_dissect_t *edt, const void *data);
+static void voip_calls_dlg_draw(void *ptr);
+
/****************************************************************************/
/**
@@ -119,7 +125,8 @@ 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, NULL, NULL,
+ {voip_calls_dlg_reset, voip_calls_dlg_packet, voip_calls_dlg_draw,
+ 0, NULL, {0}, 0, NULL, 0, 0, 0, NULL, NULL,
0, NULL, /* rtp */
0, 0, FALSE, /* rtp evt */
NULL, 0, /* sdp */
@@ -828,6 +835,24 @@ voip_calls_dlg_update(GList *listx)
}
/****************************************************************************/
+/* per-packet function for tap listeners */
+#ifdef HAVE_LIBPORTAUDIO
+gboolean
+voip_calls_dlg_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const void *data) {
+ /* add this RTP for future listening using the RTP Player*/
+ const struct _rtp_info *rtp_info = (const struct _rtp_info *)data;
+ add_rtp_packet(rtp_info, pinfo);
+ return TRUE;
+}
+#else
+gboolean
+voip_calls_dlg_packet(void *ptr _U_, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *data _U_) {
+ /* add this RTP for future listening using the RTP Player*/
+ return FALSE;
+}
+#endif
+
+/****************************************************************************/
/* draw function for tap listeners to keep the window up to date */
void
voip_calls_dlg_draw(void *ptr _U_)
@@ -871,12 +896,6 @@ voip_calls_dlg_init_taps(const char *dummy _U_, void* userdata _U_)
voip_calls_tapinfo_t* tap_id_base = voip_calls_get_info();
tap_id_base->session = cfile.epan;
- if (graph_analysis_data == NULL) {
- graph_analysis_data_init(tap_id_base);
- /* init the Graph Analysys */
- graph_analysis_data = graph_analysis_init(voip_calls_get_info()->graph_analysis);
- }
-
#ifdef HAVE_LIBPORTAUDIO
/* reset the RTP player */
reset_rtp_player();
@@ -885,9 +904,14 @@ voip_calls_dlg_init_taps(const char *dummy _U_, void* userdata _U_)
/* Clean up memory used by calls tap */
voip_calls_reset(tap_id_base);
+ if (graph_analysis_data == NULL) {
+ /* init the Graph Analysys */
+ graph_analysis_data = graph_analysis_init(voip_calls_get_info()->graph_analysis);
+ }
+
/* Register the tap listeners */
if (!have_voip_calls_tap_listeners) {
- voip_calls_init_all_taps(tap_id_base);
+ voip_calls_init_all_taps(tap_id_base);
have_voip_calls_tap_listeners = TRUE;
}
diff --git a/ui/gtk/voip_calls_dlg.h b/ui/gtk/voip_calls_dlg.h
index 39472571ad..6331cef6c0 100644
--- a/ui/gtk/voip_calls_dlg.h
+++ b/ui/gtk/voip_calls_dlg.h
@@ -43,8 +43,4 @@
*/
void voip_calls_dlg_update(GList *list);
-/* functions for tap_listeners in voip_calls.c */
-void voip_calls_dlg_draw(void *ptr);
-void voip_calls_dlg_reset(void *ptr);
-
#endif /* __VOIP_CALLS_DLG_H__ */
diff --git a/ui/gtk/voip_calls.c b/ui/voip_calls.c
index 0cc89dd3e6..8e17a524de 100644
--- a/ui/gtk/voip_calls.c
+++ b/ui/voip_calls.c
@@ -36,42 +36,36 @@
#include <stdlib.h>
#include <string.h>
-#include <epan/epan.h>
-#include <epan/epan_dissect.h>
-#include <epan/packet.h>
-#include <epan/tap.h>
-#include <epan/tap-voip.h>
-#include <epan/dissectors/packet-sip.h>
-#include <epan/dissectors/packet-mtp3.h>
-#include <epan/dissectors/packet-isup.h>
-#include <epan/dissectors/packet-h225.h>
-#include <epan/dissectors/packet-h245.h>
-#include <epan/dissectors/packet-q931.h>
-#include <epan/dissectors/packet-sdp.h>
-#include <epan/dissectors/packet-mgcp.h>
-#include <epan/dissectors/packet-actrace.h>
-#include <epan/dissectors/packet-rtp.h>
-#include <epan/dissectors/packet-rtp-events.h>
-#include <epan/dissectors/packet-t38.h>
-#include <epan/dissectors/packet-t30.h>
-#include <epan/dissectors/packet-h248.h>
-#include <epan/dissectors/packet-sccp.h>
-#include <plugins/unistim/packet-unistim.h>
-#include <epan/dissectors/packet-skinny.h>
-#include <epan/dissectors/packet-iax2.h>
-#include <epan/rtp_pt.h>
+#include "epan/epan.h"
+#include "epan/epan_dissect.h"
+#include "epan/packet.h"
+#include "epan/tap.h"
+#include "epan/tap-voip.h"
+#include "epan/dissectors/packet-sip.h"
+#include "epan/dissectors/packet-mtp3.h"
+#include "epan/dissectors/packet-isup.h"
+#include "epan/dissectors/packet-h225.h"
+#include "epan/dissectors/packet-h245.h"
+#include "epan/dissectors/packet-q931.h"
+#include "epan/dissectors/packet-sdp.h"
+#include "epan/dissectors/packet-mgcp.h"
+#include "epan/dissectors/packet-actrace.h"
+#include "epan/dissectors/packet-rtp.h"
+#include "epan/dissectors/packet-rtp-events.h"
+#include "epan/dissectors/packet-t38.h"
+#include "epan/dissectors/packet-t30.h"
+#include "epan/dissectors/packet-h248.h"
+#include "epan/dissectors/packet-sccp.h"
+#include "plugins/unistim/packet-unistim.h"
+#include "epan/dissectors/packet-skinny.h"
+#include "epan/dissectors/packet-iax2.h"
+#include "epan/rtp_pt.h"
#include "ui/alert_box.h"
#include "ui/simple_dialog.h"
#include "ui/tap-sequence-analysis.h"
#include "ui/ui_util.h"
-
-#include "ui/gtk/voip_calls.h"
-#include "ui/gtk/voip_calls_dlg.h"
-
-#ifdef HAVE_LIBPORTAUDIO
-#include "ui/gtk/rtp_player.h"
-#endif /* HAVE_LIBPORTAUDIO */
+#include "ui/voip_calls.h"
#define DUMP_PTR1(p) printf("#=> %p\n",(void *)p)
#define DUMP_PTR2(p) printf("==> %p\n",(void *)p)
@@ -165,7 +159,7 @@ typedef struct _voip_rtp_stream_info {
address dest_addr;
guint16 dest_port;
guint32 ssrc;
- guint32 pt;
+ guint32 pt;
gchar *pt_str;
gboolean is_srtp;
guint32 npackets;
@@ -218,7 +212,7 @@ voip_calls_init_all_taps(voip_calls_tapinfo_t *tap_id_base)
sip_calls_init_tap(tap_id_base);
skinny_calls_init_tap(tap_id_base);
t38_init_tap(tap_id_base);
- /* We don't register this tap, if we don't have the unistim plugin loaded.*/
+ /* We don't register this tap if we don't have the unistim plugin loaded.*/
if (find_tap_id("unistim")) {
unistim_calls_init_tap(tap_id_base);
}
@@ -273,6 +267,8 @@ void voip_calls_remove_all_tap_listeners(voip_calls_tapinfo_t *tap_id_base)
}
}
+static void graph_analysis_data_init(voip_calls_tapinfo_t *tapinfo);
+
/****************************************************************************/
/* when there is a [re]reading of packet's */
void
@@ -281,7 +277,7 @@ voip_calls_reset(voip_calls_tapinfo_t *tapinfo)
voip_calls_info_t *callsinfo;
voip_rtp_stream_info_t *strinfo;
seq_analysis_item_t *graph_item;
- GList *list;
+ GList *list = NULL;
/* free the data items first */
list = g_queue_peek_nth_link(tapinfo->callsinfos, 0);
@@ -307,21 +303,24 @@ voip_calls_reset(voip_calls_tapinfo_t *tapinfo)
g_hash_table_remove_all (tapinfo->callsinfo_hashtable[SIP_HASH]);
/* free the graph data items first */
- if(NULL!=tapinfo->graph_analysis->ht)
- g_hash_table_remove_all(tapinfo->graph_analysis->ht);
- list = g_queue_peek_nth_link(tapinfo->graph_analysis->items, 0);
- while (list)
- {
- graph_item = (seq_analysis_item_t *)list->data;
- g_free(graph_item->frame_label);
- g_free(graph_item->comment);
- g_free((void *)graph_item->src_addr.data);
- g_free((void *)graph_item->dst_addr.data);
- g_free(graph_item->time_str);
- g_free(list->data);
- list = g_list_next(list);
+ if(NULL != tapinfo->graph_analysis) {
+ if (NULL != tapinfo->graph_analysis->ht) {
+ g_hash_table_remove_all(tapinfo->graph_analysis->ht);
+ }
+ list = g_queue_peek_nth_link(tapinfo->graph_analysis->items, 0);
+ while (list)
+ {
+ graph_item = (seq_analysis_item_t *)list->data;
+ g_free(graph_item->frame_label);
+ g_free(graph_item->comment);
+ g_free((void *)graph_item->src_addr.data);
+ g_free((void *)graph_item->dst_addr.data);
+ g_free(graph_item->time_str);
+ g_free(list->data);
+ list = g_list_next(list);
+ }
+ g_queue_free(tapinfo->graph_analysis->items);
}
- g_queue_clear(tapinfo->graph_analysis->items);
/* free the strinfo data items first */
list = g_list_first(tapinfo->rtp_stream_list);
@@ -340,13 +339,16 @@ voip_calls_reset(voip_calls_tapinfo_t *tapinfo)
memset(tapinfo->h245_labels, 0, sizeof(h245_labels_t));
}
- memset(tapinfo, 0, sizeof(voip_calls_tapinfo_t));
+ /* memset(tapinfo, 0, sizeof(voip_calls_tapinfo_t)); More trouble than it's worth. */
+
+ graph_analysis_data_init(tapinfo);
return;
}
/****************************************************************************/
-void graph_analysis_data_init(voip_calls_tapinfo_t *tapinfo) {
+void
+graph_analysis_data_init(voip_calls_tapinfo_t *tapinfo) {
tapinfo->graph_analysis = (seq_analysis_info_t *)g_malloc(sizeof(seq_analysis_info_t));
tapinfo->graph_analysis->nconv = 0;
tapinfo->graph_analysis->items = g_queue_new();;
@@ -609,8 +611,8 @@ voip_rtp_reset(void *tap_offset_ptr)
/****************************************************************************/
/* whenever a RTP packet is seen by the tap listener */
-static int
-rtp_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt _U_, void const *RTPinfo)
+int
+rtp_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt, void const *rtp_info_ptr)
{
voip_calls_tapinfo_t *tapinfo = tap_id_to_base(tap_offset_ptr, tap_id_offset_rtp_);
voip_rtp_stream_info_t *tmp_listinfo;
@@ -618,28 +620,25 @@ rtp_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt _U_, vo
GList *list;
struct _rtp_conversation_info *p_conv_data = NULL;
- const struct _rtp_info *pi = (const struct _rtp_info *)RTPinfo;
+ const struct _rtp_info *rtp_info = (const struct _rtp_info *)rtp_info_ptr;
/* do not consider RTP packets without a setup frame */
- if (pi->info_setup_frame_num == 0) {
+ if (rtp_info->info_setup_frame_num == 0) {
return 0;
}
- /* add this RTP for future listening using the RTP Player*/
-#ifdef HAVE_LIBPORTAUDIO
- add_rtp_packet(pi, pinfo);
-#endif
+ tapinfo->tap_packet(tapinfo, pinfo, edt, rtp_info_ptr);
/* check whether we already have a RTP stream with this setup frame and ssrc in the list */
list = g_list_first(tapinfo->rtp_stream_list);
while (list)
{
tmp_listinfo=(voip_rtp_stream_info_t *)list->data;
- if ( (tmp_listinfo->setup_frame_number == pi->info_setup_frame_num)
- && (tmp_listinfo->ssrc == pi->info_sync_src) && (tmp_listinfo->end_stream == FALSE)) {
+ if ( (tmp_listinfo->setup_frame_number == rtp_info->info_setup_frame_num)
+ && (tmp_listinfo->ssrc == rtp_info->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 != rtp_info->info_payload_type ) {
tmp_listinfo->end_stream = TRUE;
} else {
strinfo = (voip_rtp_stream_info_t*)(list->data);
@@ -661,11 +660,11 @@ rtp_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt _U_, vo
strinfo->src_port = pinfo->srcport;
COPY_ADDRESS(&(strinfo->dest_addr), &(pinfo->dst));
strinfo->dest_port = pinfo->destport;
- strinfo->ssrc = pi->info_sync_src;
+ strinfo->ssrc = rtp_info->info_sync_src;
strinfo->end_stream = FALSE;
- strinfo->pt = pi->info_payload_type;
+ strinfo->pt = rtp_info->info_payload_type;
strinfo->pt_str = NULL;
- strinfo->is_srtp = pi->info_is_srtp;
+ strinfo->is_srtp = rtp_info->info_is_srtp;
/* if it is dynamic payload, let use the conv data to see if it is defined */
if ( (strinfo->pt >= PT_UNDF_96) && (strinfo->pt <= PT_UNDF_127) ) {
/* Use existing packet info if available */
@@ -681,7 +680,7 @@ rtp_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt _U_, vo
strinfo->npackets = 0;
strinfo->start_fd = pinfo->fd;
strinfo->start_rel_ts = pinfo->rel_ts;
- strinfo->setup_frame_number = pi->info_setup_frame_num;
+ strinfo->setup_frame_number = rtp_info->info_setup_frame_num;
strinfo->rtp_event = -1;
tapinfo->rtp_stream_list = g_list_prepend(tapinfo->rtp_stream_list, strinfo);
}
@@ -1041,9 +1040,9 @@ t38_init_tap(voip_calls_tapinfo_t *tap_id_base)
error_string = register_tap_listener("t38", tap_base_to_id(tap_id_base, tap_id_offset_t38_), NULL,
0,
- voip_calls_dlg_reset,
+ tap_id_base->tap_reset,
t38_packet,
- voip_calls_dlg_draw
+ tap_id_base->tap_draw
);
if (error_string != NULL) {
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
@@ -1260,9 +1259,9 @@ sip_calls_init_tap(voip_calls_tapinfo_t *tap_id_base)
error_string = register_tap_listener("sip", tap_base_to_id(tap_id_base, tap_id_offset_sip_), NULL,
0,
- voip_calls_dlg_reset,
+ tap_id_base->tap_reset,
sip_calls_packet,
- voip_calls_dlg_draw
+ tap_id_base->tap_draw
);
if (error_string != NULL) {
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
@@ -1452,9 +1451,9 @@ isup_calls_init_tap(voip_calls_tapinfo_t *tap_id_base)
error_string = register_tap_listener("isup", tap_base_to_id(tap_id_base, tap_id_offset_isup_),
NULL,
0,
- voip_calls_dlg_reset,
+ tap_id_base->tap_reset,
isup_calls_packet,
- voip_calls_dlg_draw
+ tap_id_base->tap_draw
);
if (error_string != NULL) {
@@ -1506,9 +1505,9 @@ mtp3_calls_init_tap(voip_calls_tapinfo_t *tap_id_base)
error_string = register_tap_listener("mtp3", tap_base_to_id(tap_id_base, tap_id_offset_mtp3_),
NULL,
0,
- voip_calls_dlg_reset,
+ tap_id_base->tap_reset,
mtp3_calls_packet,
- voip_calls_dlg_draw
+ tap_id_base->tap_draw
);
if (error_string != NULL) {
@@ -1520,9 +1519,9 @@ mtp3_calls_init_tap(voip_calls_tapinfo_t *tap_id_base)
error_string = register_tap_listener("m3ua", tap_base_to_id(tap_id_base, tap_id_offset_m3ua_),
NULL,
0,
- voip_calls_dlg_reset,
+ tap_id_base->tap_reset,
mtp3_calls_packet,
- voip_calls_dlg_draw
+ tap_id_base->tap_draw
);
if (error_string != NULL) {
@@ -1818,9 +1817,9 @@ q931_calls_init_tap(voip_calls_tapinfo_t *tap_id_base)
error_string = register_tap_listener("q931", tap_base_to_id(tap_id_base, tap_id_offset_q931_),
NULL,
0,
- voip_calls_dlg_reset,
+ tap_id_base->tap_reset,
q931_calls_packet,
- voip_calls_dlg_draw
+ tap_id_base->tap_draw
);
if (error_string != NULL) {
@@ -2100,9 +2099,9 @@ h225_calls_init_tap(voip_calls_tapinfo_t *tap_id_base)
error_string = register_tap_listener("h225", tap_base_to_id(tap_id_base, tap_id_offset_h225_), NULL,
0,
- voip_calls_dlg_reset,
+ tap_id_base->tap_reset,
h225_calls_packet,
- voip_calls_dlg_draw
+ tap_id_base->tap_draw
);
if (error_string != NULL) {
@@ -2247,9 +2246,9 @@ h245dg_calls_init_tap(voip_calls_tapinfo_t *tap_id_base)
error_string = register_tap_listener("h245dg", tap_base_to_id(tap_id_base, tap_id_offset_h245dg_), NULL,
0,
- voip_calls_dlg_reset,
+ tap_id_base->tap_reset,
h245dg_calls_packet,
- voip_calls_dlg_draw
+ tap_id_base->tap_draw
);
if (error_string != NULL) {
@@ -2302,9 +2301,9 @@ sdp_calls_init_tap(voip_calls_tapinfo_t *tap_id_base)
error_string = register_tap_listener("sdp", tap_base_to_id(tap_id_base, tap_id_offset_sdp_), NULL,
0,
- voip_calls_dlg_reset,
+ tap_id_base->tap_reset,
sdp_calls_packet,
- voip_calls_dlg_draw
+ tap_id_base->tap_draw
);
if (error_string != NULL) {
@@ -2330,7 +2329,7 @@ remove_tap_listener_sdp_calls(voip_calls_tapinfo_t *tap_id_base)
This function will look for a signal/event in the SignalReq/ObsEvent string
and return true if it is found
*/
-static gboolean isSignal(const gchar *signal_str_p, const gchar *signalStr)
+static gboolean is_mgcp_signal(const gchar *signal_str_p, const gchar *signalStr)
{
gint i;
gchar **resultArray;
@@ -2358,7 +2357,7 @@ static gboolean isSignal(const gchar *signal_str_p, const gchar *signalStr)
This function will get the Caller ID info and replace the current string
This is how it looks the caller Id: rg, ci(02/16/08/29, "3035550002","Ale Sipura 2")
*/
-static void mgcpCallerID(gchar *signalStr, gchar **callerId)
+static void mgcp_caller_id(gchar *signalStr, gchar **callerId)
{
gchar **arrayStr;
@@ -2381,7 +2380,7 @@ static void mgcpCallerID(gchar *signalStr, gchar **callerId)
This function will get the Dialed Digits and replace the current string
This is how it looks the dialed digits 5,5,5,0,0,0,2,#,*
*/
-static void mgcpDialedDigits(gchar *signalStr, gchar **dialedDigits)
+static void mgcp_dialed_digits(gchar *signalStr, gchar **dialedDigits)
{
gchar *tmpStr;
gchar *resultStr;
@@ -2486,7 +2485,7 @@ mgcp_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt,
/* there is no call with this Endpoint, lets see if this a new call or not */
if (callsinfo == NULL) {
- if ( (strcmp(pi->code, "NTFY") == 0) && isSignal("hd", pi->observedEvents) ) { /* off hook transition */
+ if ( (strcmp(pi->code, "NTFY") == 0) && is_mgcp_signal("hd", pi->observedEvents) ) { /* off hook transition */
/* this is a new call from the Endpoint */
fromEndpoint = TRUE;
newcall = TRUE;
@@ -2568,14 +2567,14 @@ mgcp_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt,
if (tmp_mgcpinfo->fromEndpoint) {
/* use the Dialed digits to fill the "To" for the call, but use the first NTFY */
- if (callsinfo->to_identity[0] == '\0') mgcpDialedDigits(pi->observedEvents, &(callsinfo->to_identity));
+ if (callsinfo->to_identity[0] == '\0') mgcp_dialed_digits(pi->observedEvents, &(callsinfo->to_identity));
/* from MGC and the user picked up, the call is connected */
- } else if (isSignal("hd", pi->observedEvents))
+ } else if (is_mgcp_signal("hd", pi->observedEvents))
callsinfo->call_state=VOIP_IN_CALL;
/* hung up signal */
- if (isSignal("hu", pi->observedEvents)) {
+ if (is_mgcp_signal("hu", pi->observedEvents)) {
if ((callsinfo->call_state == VOIP_CALL_SETUP) || (callsinfo->call_state == VOIP_RINGING)) {
callsinfo->call_state = VOIP_CANCELLED;
} else {
@@ -2585,17 +2584,17 @@ mgcp_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt,
} else if (strcmp(pi->code, "RQNT") == 0) {
/* for calls from Endpoint: if there is a "no signal" RQNT and the call was RINGING, we assume this is the CONNECT */
- if ( tmp_mgcpinfo->fromEndpoint && isSignal("", pi->signalReq) && (callsinfo->call_state == VOIP_RINGING) ) {
+ if ( tmp_mgcpinfo->fromEndpoint && is_mgcp_signal("", pi->signalReq) && (callsinfo->call_state == VOIP_RINGING) ) {
callsinfo->call_state = VOIP_IN_CALL;
}
/* if there is ringback or ring tone, change state to ringing */
- if ( isSignal("rg", pi->signalReq) || isSignal("rt", pi->signalReq) ) {
+ if ( is_mgcp_signal("rg", pi->signalReq) || is_mgcp_signal("rt", pi->signalReq) ) {
callsinfo->call_state = VOIP_RINGING;
}
/* if there is a Busy or ReorderTone, and the call was Ringing or Setup the call is Rejected */
- if ( (isSignal("ro", pi->signalReq) || isSignal("bz", pi->signalReq)) && ((callsinfo->call_state == VOIP_CALL_SETUP) || (callsinfo->call_state == VOIP_RINGING)) ) {
+ if ( (is_mgcp_signal("ro", pi->signalReq) || is_mgcp_signal("bz", pi->signalReq)) && ((callsinfo->call_state == VOIP_CALL_SETUP) || (callsinfo->call_state == VOIP_RINGING)) ) {
callsinfo->call_state = VOIP_REJECTED;
}
@@ -2605,7 +2604,7 @@ mgcp_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt,
frame_label = g_strdup_printf("%s%s",pi->code, (pi->hasDigitMap == TRUE)?" DigitMap ":"");
/* use the CallerID info to fill the "From" for the call */
- if (!tmp_mgcpinfo->fromEndpoint) mgcpCallerID(pi->signalReq, &(callsinfo->from_identity));
+ if (!tmp_mgcpinfo->fromEndpoint) mgcp_caller_id(pi->signalReq, &(callsinfo->from_identity));
} else if (strcmp(pi->code, "DLCX") == 0) {
/*
@@ -2674,9 +2673,9 @@ mgcp_calls_init_tap(voip_calls_tapinfo_t *tap_id_base)
tap_base_to_id(tap_id_base, tap_id_offset_mgcp_),
NULL,
TL_REQUIRES_PROTO_TREE,
- voip_calls_dlg_reset,
+ tap_id_base->tap_reset,
mgcp_calls_packet,
- voip_calls_dlg_draw
+ tap_id_base->tap_draw
);
if (error_string != NULL) {
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
@@ -2789,9 +2788,9 @@ actrace_calls_init_tap(voip_calls_tapinfo_t *tap_id_base)
error_string = register_tap_listener("actrace", tap_base_to_id(tap_id_base, tap_id_offset_actrace_), NULL,
0,
- voip_calls_dlg_reset,
+ tap_id_base->tap_reset,
actrace_calls_packet,
- voip_calls_dlg_draw
+ tap_id_base->tap_draw
);
if (error_string != NULL) {
@@ -2925,9 +2924,9 @@ void h248_calls_init_tap(voip_calls_tapinfo_t *tap_id_base)
error_string = register_tap_listener("megaco", tap_base_to_id(tap_id_base, tap_id_offset_megaco_),
NULL,
0,
- voip_calls_dlg_reset,
+ tap_id_base->tap_reset,
h248_calls_packet,
- voip_calls_dlg_draw);
+ tap_id_base->tap_draw);
if (error_string != NULL) {
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
@@ -2938,9 +2937,9 @@ void h248_calls_init_tap(voip_calls_tapinfo_t *tap_id_base)
error_string = register_tap_listener("h248", tap_base_to_id(tap_id_base, tap_id_offset_h248_),
NULL,
0,
- voip_calls_dlg_reset,
+ tap_id_base->tap_reset,
h248_calls_packet,
- voip_calls_dlg_draw);
+ tap_id_base->tap_draw);
if (error_string != NULL) {
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
@@ -3097,9 +3096,9 @@ void sccp_calls_init_tap(voip_calls_tapinfo_t *tap_id_base)
error_string = register_tap_listener("sccp", tap_base_to_id(tap_id_base, tap_id_offset_sccp_),
NULL,
0,
- voip_calls_dlg_reset,
+ tap_id_base->tap_reset,
sccp_calls_packet,
- voip_calls_dlg_draw);
+ tap_id_base->tap_draw);
if (error_string != NULL) {
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
@@ -3110,9 +3109,9 @@ void sccp_calls_init_tap(voip_calls_tapinfo_t *tap_id_base)
error_string = register_tap_listener("sua", tap_base_to_id(tap_id_base, tap_id_offset_sua_),
NULL,
0,
- voip_calls_dlg_reset,
+ tap_id_base->tap_reset,
sua_calls_packet,
- voip_calls_dlg_draw);
+ tap_id_base->tap_draw);
if (error_string != NULL) {
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
@@ -3608,9 +3607,9 @@ unistim_calls_init_tap(voip_calls_tapinfo_t *tap_id_base) {
error_string = register_tap_listener("unistim", tap_base_to_id(tap_id_base, tap_id_offset_unistim_),
NULL,
0,
- voip_calls_dlg_reset,
+ tap_id_base->tap_reset,
unistim_calls_packet,
- voip_calls_dlg_draw
+ tap_id_base->tap_draw
);
if (error_string != NULL) {
@@ -3763,9 +3762,9 @@ skinny_calls_init_tap(voip_calls_tapinfo_t *tap_id_base)
tap_base_to_id(tap_id_base, tap_id_offset_skinny_),
NULL,
TL_REQUIRES_PROTO_TREE,
- voip_calls_dlg_reset,
+ tap_id_base->tap_reset,
skinny_calls_packet,
- voip_calls_dlg_draw
+ tap_id_base->tap_draw
);
if (error_string != NULL) {
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
@@ -3892,9 +3891,9 @@ iax2_calls_init_tap(voip_calls_tapinfo_t *tap_id_base)
tap_base_to_id(tap_id_base, tap_id_offset_iax2_),
NULL,
TL_REQUIRES_PROTO_TREE,
- voip_calls_dlg_reset,
+ tap_id_base->tap_reset,
iax2_calls_packet,
- voip_calls_dlg_draw
+ tap_id_base->tap_draw
);
if (error_string != NULL) {
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s",
@@ -3990,9 +3989,9 @@ voip_calls_init_tap(voip_calls_tapinfo_t *tap_id_base)
error_string = register_tap_listener("voip", tap_base_to_id(tap_id_base, tap_id_offset_voip_),
NULL,
0,
- voip_calls_dlg_reset,
+ tap_id_base->tap_reset,
voip_calls_packet,
- voip_calls_dlg_draw
+ tap_id_base->tap_draw
);
if (error_string != NULL) {
@@ -4044,9 +4043,9 @@ prot_calls_init_tap(voip_calls_tapinfo_t *tap_id_base)
error_string = register_tap_listener("prot_", tap_base_to_id(tap_id_base, tap_id_offset_prot_),
NULL,
0,
- voip_calls_dlg_reset,
+ tap_id_base->tap_reset,
prot__calls_packet,
- voip_calls_dlg_draw
+ tap_id_base->tap_draw
);
if (error_string != NULL) {
diff --git a/ui/gtk/voip_calls.h b/ui/voip_calls.h
index eda175535e..7596610fe9 100644
--- a/ui/gtk/voip_calls.h
+++ b/ui/voip_calls.h
@@ -36,9 +36,12 @@
#include <glib.h>
#include <stdio.h>
-#include <epan/address.h>
-#include <epan/guid-utils.h>
-#include <epan/tap-voip.h>
+
+#include "epan/address.h"
+#include "epan/guid-utils.h"
+#include "epan/tap-voip.h"
+
+#include "ui/tap-sequence-analysis.h"
/****************************************************************************/
extern const char *voip_call_state_name[8];
@@ -170,6 +173,9 @@ typedef struct _voip_calls_info {
*/
struct _h245_labels;
typedef struct _voip_calls_tapinfo {
+ tap_reset_cb tap_reset; /**< tap reset callback */
+ tap_packet_cb tap_packet; /**< tap per-packet callback */
+ tap_draw_cb tap_draw; /**< tap draw callback */
int ncalls; /**< number of call */
GQueue* callsinfos; /**< queue with all calls */
GHashTable* callsinfo_hashtable[1]; /**< array of hashes per voip protocol; currently only the one for SIP is used */
@@ -229,13 +235,8 @@ void voip_calls_remove_all_tap_listeners(voip_calls_tapinfo_t *tap_id_base);
/**
* Cleans up memory of voip calls tap.
*/
-void isup_calls_reset(voip_calls_tapinfo_t *tapinfo);
-void mtp3_calls_reset(voip_calls_tapinfo_t *tapinfo);
-void q931_calls_reset(voip_calls_tapinfo_t *tapinfo);
void voip_calls_reset(voip_calls_tapinfo_t *tapinfo);
-void graph_analysis_data_init(voip_calls_tapinfo_t *tapinfo);
-
#endif /* __VOIP_CALLS_H__ */
/*