aboutsummaryrefslogtreecommitdiffstats
path: root/ui/voip_calls.c
diff options
context:
space:
mode:
authorJirka Novak <j.novak@netsystem.cz>2021-01-01 16:51:47 +0100
committerAndersBroman <a.broman58@gmail.com>2021-01-01 19:06:58 +0000
commit2a5c96a79948d2f77cb48e048d6c6eba5c835f98 (patch)
tree5fee1a414289449482bec159e94f2f5b68bec6a3 /ui/voip_calls.c
parent1f3a81de8650aa505b9b2bae6df19a41b1531328 (diff)
Voice dialogs: Added option to apply display filter in VoIP/RTP dialogs
VoIP Calls dialog and RTP Streams dialog has now option to apply display filter dialog during processing packets. Filter checkbox is activated during dialog open when display filter is active. New field apply_display_filter had to be added to voip_calls_tapinfo_t and _rtpstream_tapinfo/rtpstream_tapinfo_t structures.
Diffstat (limited to 'ui/voip_calls.c')
-rw-r--r--ui/voip_calls.c105
1 files changed, 105 insertions, 0 deletions
diff --git a/ui/voip_calls.c b/ui/voip_calls.c
index 1934a1303e..8eea6cd9a1 100644
--- a/ui/voip_calls.c
+++ b/ui/voip_calls.c
@@ -514,6 +514,10 @@ rtp_event_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt _
voip_calls_tapinfo_t *tapinfo = tap_id_to_base(tap_offset_ptr, tap_id_offset_rtp_event_);
const struct _rtp_event_info *pi = (const struct _rtp_event_info *)rtp_event_info;
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
/* do not consider RTP events packets without a setup frame */
if (pi->info_setup_frame_num == 0) {
return TAP_PACKET_DONT_REDRAW;
@@ -604,6 +608,11 @@ rtp_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt, void c
const struct _rtp_info *rtp_info = (const struct _rtp_info *)rtp_info_ptr;
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
+
/* do not consider RTP packets without a setup frame */
if (rtp_info->info_setup_frame_num == 0) {
return TAP_PACKET_DONT_REDRAW;
@@ -914,6 +923,11 @@ t38_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt, const
const t38_packet_info *t38_info = (const t38_packet_info *)t38_info_ptr;
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
+
if (t38_info->setup_frame_number != 0) {
/* using the setup frame number of the T38 packet, we get the call number that it belongs */
if(tapinfo->graph_analysis){
@@ -1120,6 +1134,11 @@ sip_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt ,
const sip_info_value_t *pi = (const sip_info_value_t *)SIPinfo;
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
+
tapinfo->sip_frame_num = pinfo->num;
/* do not consider packets without call_id */
@@ -1341,6 +1360,11 @@ isup_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt,
const isup_tap_rec_t *pi = (const isup_tap_rec_t *)isup_info;
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
+
/* check if the lower layer is MTP matching the frame number */
if (tapinfo->mtp3_frame_num != pinfo->num)
return TAP_PACKET_DONT_REDRAW;
@@ -1536,6 +1560,11 @@ mtp3_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt
voip_calls_tapinfo_t *tapinfo = tap_id_to_base(tap_offset_ptr, tap_id_offset_mtp3_);
const mtp3_tap_rec_t *pi = (const mtp3_tap_rec_t *)mtp3_info;
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
+
/* keep the data in memory to use when the ISUP information arrives */
tapinfo->mtp3_opc = pi->addr_opc.pc;
@@ -1552,6 +1581,11 @@ m3ua_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt
voip_calls_tapinfo_t *tapinfo = tap_id_to_base(tap_offset_ptr, tap_id_offset_m3ua_);
const mtp3_tap_rec_t *pi = (const mtp3_tap_rec_t *)mtp3_info;
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
+
/* keep the data in memory to use when the ISUP information arrives */
tapinfo->mtp3_opc = pi->addr_opc.pc;
@@ -1633,6 +1667,11 @@ q931_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt,
const q931_packet_info *pi = (const q931_packet_info *)q931_info;
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
+
/* free previously allocated q931_calling/ed_number */
g_free(tapinfo->q931_calling_number);
g_free(tapinfo->q931_called_number);
@@ -1972,6 +2011,11 @@ h225_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt,
const h225_packet_info *pi = (const h225_packet_info *)H225info;
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
+
/* if not guid and RAS and not LRQ, LCF or LRJ return because did not belong to a call */
/* OR, if not guid and is H225 return because doesn't belong to a call */
if ((memcmp(&pi->guid, &guid_allzero, GUID_LEN) == 0))
@@ -2280,6 +2324,11 @@ h245dg_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *ed
const h245_packet_info *pi = (const h245_packet_info *)H245info;
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
+
/* check if Tunneling is OFF and we have a call with this H245 add */
list = g_queue_peek_nth_link(tapinfo->callsinfos, 0);
while (list)
@@ -2392,6 +2441,11 @@ sdp_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt _
voip_calls_tapinfo_t *tapinfo = tap_id_to_base(tap_offset_ptr, tap_id_offset_sdp_);
const sdp_packet_info *pi = (const sdp_packet_info *)SDPinfo;
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
+
/* There are protocols like MGCP/SIP where the SDP is called before the tap for the
MGCP/SIP packet, in those cases we assign the SPD summary to global lastSDPsummary
to use it later
@@ -2584,6 +2638,10 @@ mgcp_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt,
const mgcp_info_t *pi = (const mgcp_info_t *)MGCPinfo;
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
if ((pi->mgcp_type == MGCP_REQUEST) && !pi->is_duplicate ) {
/* check whether we already have a call with this Endpoint and it is active*/
@@ -2849,6 +2907,11 @@ actrace_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *e
voip_calls_info_t *tmp_listinfo;
voip_calls_info_t *callsinfo = NULL;
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
+
tapinfo->actrace_frame_num = pinfo->num;
tapinfo->actrace_trunk = pi->trunk;
tapinfo->actrace_direction = pi->direction;
@@ -3071,6 +3134,10 @@ static tap_packet_status
h248_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt, const void *prot_info) {
voip_calls_tapinfo_t *tapinfo = tap_id_to_base(tap_offset_ptr, tap_id_offset_h248_);
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
return h248_calls_packet_common(tapinfo, pinfo, edt, prot_info, REDRAW_H248);
}
@@ -3089,6 +3156,10 @@ static tap_packet_status
megaco_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt, const void *prot_info) {
voip_calls_tapinfo_t *tapinfo = tap_id_to_base(tap_offset_ptr, tap_id_offset_megaco_);
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
return h248_calls_packet_common(tapinfo, pinfo, edt, prot_info, REDRAW_MEGACO);
}
@@ -3264,6 +3335,10 @@ static tap_packet_status
sccp_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt, const void *prot_info) {
voip_calls_tapinfo_t *tapinfo = tap_id_to_base(tap_offset_ptr, tap_id_offset_sccp_);
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
sccp_payload_values = sccp_message_type_acro_values;
return sccp_calls(tapinfo, pinfo, edt, prot_info, REDRAW_SCCP);
}
@@ -3283,6 +3358,10 @@ static tap_packet_status
sua_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt, const void *prot_info) {
voip_calls_tapinfo_t *tapinfo = tap_id_to_base(tap_offset_ptr, tap_id_offset_sua_);
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
sccp_payload_values = sua_co_class_type_acro_values;
return sccp_calls(tapinfo, pinfo, edt, prot_info, REDRAW_SUA);
}
@@ -3358,6 +3437,11 @@ unistim_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *e
/* Fetch specific packet infos */
const unistim_info_t *pi = (const unistim_info_t *)unistim_info;
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
+
/* Init gstring */
g_tmp = g_string_new(NULL);
@@ -3883,6 +3967,11 @@ skinny_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *ed
skinny_calls_info_t *tmp_skinnyinfo;
gchar *comment;
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
+
if (si == NULL || (si->callId == 0 && si->passThroughPartyId == 0))
return TAP_PACKET_DONT_REDRAW;
/* check whether we already have this context in the list */
@@ -4039,6 +4128,11 @@ iax2_calls_packet( void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt
const iax2_info_t *ii = (const iax2_info_t *)iax2_info;
iax2_info_t *tmp_iax2info;
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
+
if (ii == NULL || ii->ptype != IAX2_FULL_PACKET || (ii->scallno == 0 && ii->dcallno == 0))
return TAP_PACKET_DONT_REDRAW;
/* check whether we already have this context in the list */
@@ -4172,6 +4266,11 @@ voip_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt,
GList *list = NULL;
const voip_packet_info_t *pi = (const voip_packet_info_t *)VoIPinfo;
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
+
/* VOIP_CALLS_DEBUG("num %u", pinfo->num); */
if (pi->call_id)
list = g_queue_peek_nth_link(tapinfo->callsinfos, 0);
@@ -4283,6 +4382,12 @@ static tap_packet_status
prot_calls_packet(void *tap_offset_ptr, packet_info *pinfo, epan_dissect_t *edt _U_, const void *prot_info _U_)
{
voip_calls_tapinfo_t *tapinfo = tap_id_to_base(tap_offset_ptr, tap_id_offset_prot_);
+
+ /* if display filtering activated and packet do not match, ignore it */
+ if (tapinfo->apply_display_filter && (pinfo->fd->passed_dfilter == 0)) {
+ return TAP_PACKET_DONT_REDRAW;
+ }
+
if (callsinfo!=NULL) {
callsinfo->stop_abs = pinfo->abs_ts;
callsinfo->stop_rel = pinfo->rel_ts;