Few bugfixes and enhancements
- Updated RTPproxy dissector (again) - Allow packets more than 64k (for USB capture). See patch no. 13 - Don't die during loading of some SIP capture files. See patch no. 14 - Backport support for RTPproxy dissector timeouts detection. See patch no. 15 Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
This commit is contained in:
parent
1738882448
commit
65d033ba77
@ -1,4 +1,3 @@
|
|||||||
From 9d38601b45c6bce770946ac3c36a675a2f1a4359 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Radek=20Vok=C3=A1l?= <rvokal@fedoraproject.org>
|
From: =?UTF-8?q?Radek=20Vok=C3=A1l?= <rvokal@fedoraproject.org>
|
||||||
Date: Tue, 15 Dec 2009 08:36:27 +0000
|
Date: Tue, 15 Dec 2009 08:36:27 +0000
|
||||||
Subject: [PATCH] enable Lua support
|
Subject: [PATCH] enable Lua support
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
From d7b9380cb2b827fb627f82a1c3b73496b089b8dd Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jan Safranek <jsafrane@redhat.com>
|
From: Jan Safranek <jsafrane@redhat.com>
|
||||||
Date: Fri, 26 Nov 2010 14:30:45 +0300
|
Date: Fri, 26 Nov 2010 14:30:45 +0300
|
||||||
Subject: [PATCH] Customize 'permission denied' error.
|
Subject: [PATCH] Customize 'permission denied' error.
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
From 0d0f937fcbb73fb36a44bd7061817ff1cdac0032 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jan Safranek <jsafrane@redhat.com>
|
From: Jan Safranek <jsafrane@redhat.com>
|
||||||
Date: Thu, 9 Jun 2011 14:56:59 +0200
|
Date: Thu, 9 Jun 2011 14:56:59 +0200
|
||||||
Subject: [PATCH] Load correct shared object name in python.
|
Subject: [PATCH] Load correct shared object name in python.
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
From 8e34a9a261f26ceabc39ea373d9025a24805b832 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Hatina <phatina@redhat.com>
|
From: Peter Hatina <phatina@redhat.com>
|
||||||
Date: Mon, 8 Apr 2013 13:03:24 +0200
|
Date: Mon, 8 Apr 2013 13:03:24 +0200
|
||||||
Subject: [PATCH] fix documentation build error
|
Subject: [PATCH] fix documentation build error
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
From dfd843cda67cfd9b785b44f5096a185c04c08be8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Hatina <phatina@redhat.com>
|
From: Peter Hatina <phatina@redhat.com>
|
||||||
Date: Wed, 4 Sep 2013 10:03:57 +0200
|
Date: Wed, 4 Sep 2013 10:03:57 +0200
|
||||||
Subject: [PATCH] fix string overrun in plugins/profinet
|
Subject: [PATCH] fix string overrun in plugins/profinet
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
From 1b67a9195503e6f22429a46e98def1dd31a05451 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Evan Huus <eapache@gmail.com>
|
From: Evan Huus <eapache@gmail.com>
|
||||||
Date: Sun, 18 Aug 2013 19:49:08 +0000
|
Date: Sun, 18 Aug 2013 19:49:08 +0000
|
||||||
Subject: [PATCH] From Peter Lemenkov via
|
Subject: [PATCH] From Peter Lemenkov via
|
||||||
@ -79,6 +78,57 @@ replace proto_tree_add_string_format_value() with proto_tree_add_item()
|
|||||||
|
|
||||||
svn path=/trunk/; revision=53261
|
svn path=/trunk/; revision=53261
|
||||||
|
|
||||||
|
From Peter Lemenkov via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9429 :
|
||||||
|
Fix Notify info parsing in RTPproxy dissector
|
||||||
|
|
||||||
|
svn path=/trunk/; revision=53385
|
||||||
|
|
||||||
|
From Peter Lemenkov via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9430 :
|
||||||
|
Fix empty ToTag in RTPproxy's Offer/Update command
|
||||||
|
|
||||||
|
svn path=/trunk/; revision=53391
|
||||||
|
|
||||||
|
From Peter Lemenkov via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9440 :
|
||||||
|
RTPproxy: use proto_item_append_text instead of rewriting the entire item's text
|
||||||
|
|
||||||
|
svn path=/trunk/; revision=53393
|
||||||
|
|
||||||
|
From Peter Lemenkov via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9441 :
|
||||||
|
Fix Notify IPv6 address parsing in RTPproxy dissector
|
||||||
|
|
||||||
|
svn path=/trunk/; revision=53394
|
||||||
|
|
||||||
|
add a cast to fix compiler warning
|
||||||
|
|
||||||
|
svn path=/trunk/; revision=53401
|
||||||
|
|
||||||
|
Fix typo errors
|
||||||
|
|
||||||
|
svn path=/trunk/; revision=53585
|
||||||
|
|
||||||
|
From Peter Lemenkov via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9397 :
|
||||||
|
Add RTP/RTCP dissector setup based on the replies found in rtpproxy dissector
|
||||||
|
|
||||||
|
svn path=/trunk/; revision=53603
|
||||||
|
|
||||||
|
From Peter Lemenkov via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9444 :
|
||||||
|
Add initial parameter parser for commands in RTPproxy dissector
|
||||||
|
|
||||||
|
svn path=/trunk/; revision=53604
|
||||||
|
|
||||||
|
From Peter Lemenkov via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9476 :
|
||||||
|
Add DTMF dissector setup based on the information found in RTPproxy requests
|
||||||
|
|
||||||
|
svn path=/trunk/; revision=53605
|
||||||
|
|
||||||
|
Squelch a compiler warning.
|
||||||
|
|
||||||
|
svn path=/trunk/; revision=53606
|
||||||
|
|
||||||
|
Reinitialize counter between loops to avoid an out of bound access found with fuzz testing.
|
||||||
|
|
||||||
|
svn path=/trunk/; revision=53612
|
||||||
|
|
||||||
diff --git a/AUTHORS b/AUTHORS
|
diff --git a/AUTHORS b/AUTHORS
|
||||||
index 10782b0..e7b3c18 100644
|
index 10782b0..e7b3c18 100644
|
||||||
--- a/AUTHORS
|
--- a/AUTHORS
|
||||||
@ -117,10 +167,10 @@ index 937f522..73217d7 100644
|
|||||||
packet-rudp.c \
|
packet-rudp.c \
|
||||||
diff --git a/epan/dissectors/packet-rtpproxy.c b/epan/dissectors/packet-rtpproxy.c
|
diff --git a/epan/dissectors/packet-rtpproxy.c b/epan/dissectors/packet-rtpproxy.c
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..f606abb
|
index 0000000..831448b
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/epan/dissectors/packet-rtpproxy.c
|
+++ b/epan/dissectors/packet-rtpproxy.c
|
||||||
@@ -0,0 +1,959 @@
|
@@ -0,0 +1,1350 @@
|
||||||
+/* packet-rtpproxy.c
|
+/* packet-rtpproxy.c
|
||||||
+ * RTPproxy command protocol dissector
|
+ * RTPproxy command protocol dissector
|
||||||
+ * Copyright 2013, Peter Lemenkov <lemenkov@gmail.com>
|
+ * Copyright 2013, Peter Lemenkov <lemenkov@gmail.com>
|
||||||
@ -154,11 +204,27 @@ index 0000000..f606abb
|
|||||||
+#include "config.h"
|
+#include "config.h"
|
||||||
+
|
+
|
||||||
+#include <ctype.h>
|
+#include <ctype.h>
|
||||||
|
+#include <glib.h>
|
||||||
+
|
+
|
||||||
|
+#include <epan/address.h>
|
||||||
+#include <epan/packet.h>
|
+#include <epan/packet.h>
|
||||||
+#include <epan/prefs.h>
|
+#include <epan/prefs.h>
|
||||||
+#include <epan/conversation.h>
|
+#include <epan/conversation.h>
|
||||||
+
|
+
|
||||||
|
+#ifdef HAVE_ARPA_INET_H
|
||||||
|
+#include <arpa/inet.h>
|
||||||
|
+#endif
|
||||||
|
+#ifdef HAVE_WINSOCK2_H
|
||||||
|
+#include <winsock2.h> /* needed to define AF_ values on Windows */
|
||||||
|
+#endif
|
||||||
|
+#ifdef NEED_INET_V6DEFS_H
|
||||||
|
+#include "wsutil/inet_v6defs.h"
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+/* For setting up RTP/RTCP dissectors based on the RTPproxy's answers */
|
||||||
|
+#include "packet-rtp.h"
|
||||||
|
+#include "packet-rtcp.h"
|
||||||
|
+
|
||||||
+static int proto_rtpproxy = -1;
|
+static int proto_rtpproxy = -1;
|
||||||
+
|
+
|
||||||
+static int hf_rtpproxy_cookie = -1;
|
+static int hf_rtpproxy_cookie = -1;
|
||||||
@ -172,12 +238,23 @@ index 0000000..f606abb
|
|||||||
+static int hf_rtpproxy_request = -1;
|
+static int hf_rtpproxy_request = -1;
|
||||||
+static int hf_rtpproxy_command = -1;
|
+static int hf_rtpproxy_command = -1;
|
||||||
+static int hf_rtpproxy_command_parameters = -1;
|
+static int hf_rtpproxy_command_parameters = -1;
|
||||||
|
+static int hf_rtpproxy_command_parameter = -1;
|
||||||
|
+static int hf_rtpproxy_command_parameter_codec = -1;
|
||||||
|
+static int hf_rtpproxy_command_parameter_local = -1;
|
||||||
|
+static int hf_rtpproxy_command_parameter_remote = -1;
|
||||||
|
+static int hf_rtpproxy_command_parameter_repacketize = -1;
|
||||||
|
+static int hf_rtpproxy_command_parameter_dtmf = -1;
|
||||||
|
+/* static int hf_rtpproxy_command_parameter_cmap = -1; TODO */
|
||||||
|
+static int hf_rtpproxy_command_parameter_proto = -1;
|
||||||
|
+static int hf_rtpproxy_command_parameter_transcode = -1;
|
||||||
|
+static int hf_rtpproxy_command_parameter_acc = -1;
|
||||||
+static int hf_rtpproxy_callid = -1;
|
+static int hf_rtpproxy_callid = -1;
|
||||||
+static int hf_rtpproxy_copy_target = -1;
|
+static int hf_rtpproxy_copy_target = -1;
|
||||||
+static int hf_rtpproxy_playback_filename = -1;
|
+static int hf_rtpproxy_playback_filename = -1;
|
||||||
+static int hf_rtpproxy_playback_codec = -1;
|
+static int hf_rtpproxy_playback_codec = -1;
|
||||||
+static int hf_rtpproxy_notify = -1;
|
+static int hf_rtpproxy_notify = -1;
|
||||||
+static int hf_rtpproxy_notify_ipv4 = -1;
|
+static int hf_rtpproxy_notify_ipv4 = -1;
|
||||||
|
+static int hf_rtpproxy_notify_ipv6 = -1;
|
||||||
+static int hf_rtpproxy_notify_port = -1;
|
+static int hf_rtpproxy_notify_port = -1;
|
||||||
+static int hf_rtpproxy_notify_tag = -1;
|
+static int hf_rtpproxy_notify_tag = -1;
|
||||||
+static int hf_rtpproxy_tag = -1;
|
+static int hf_rtpproxy_tag = -1;
|
||||||
@ -197,6 +274,10 @@ index 0000000..f606abb
|
|||||||
+ nstime_t req_time;
|
+ nstime_t req_time;
|
||||||
+} rtpproxy_info_t;
|
+} rtpproxy_info_t;
|
||||||
+
|
+
|
||||||
|
+static dissector_handle_t rtcp_handle;
|
||||||
|
+static dissector_handle_t rtp_events_handle;
|
||||||
|
+static dissector_handle_t rtp_handle;
|
||||||
|
+
|
||||||
+typedef struct _rtpproxy_conv_info {
|
+typedef struct _rtpproxy_conv_info {
|
||||||
+ emem_tree_t *trans;
|
+ emem_tree_t *trans;
|
||||||
+} rtpproxy_conv_info_t;
|
+} rtpproxy_conv_info_t;
|
||||||
@ -241,6 +322,57 @@ index 0000000..f606abb
|
|||||||
+ { 0, NULL }
|
+ { 0, NULL }
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
|
+static const value_string paramtypenames[] = {
|
||||||
|
+ /* Official command parameters */
|
||||||
|
+ {'4', "Remote address is IPv4"},
|
||||||
|
+ {'6', "Remote address is IPv6"},
|
||||||
|
+ {'a', "Asymmetric RTP"},
|
||||||
|
+ {'A', "Asymmetric RTP"},
|
||||||
|
+ {'b', "Brief stats"},
|
||||||
|
+ {'B', "Brief stats"},
|
||||||
|
+ {'c', "Codecs"},
|
||||||
|
+ {'C', "Codecs"},
|
||||||
|
+ {'e', "External network (non RFC 1918)"},
|
||||||
|
+ {'E', "External network (non RFC 1918)"},
|
||||||
|
+ {'i', "Internal network (RFC 1918)"},
|
||||||
|
+ {'I', "Internal network (RFC 1918)"},
|
||||||
|
+ {'l', "Local address"},
|
||||||
|
+ {'L', "Local address"},
|
||||||
|
+ {'r', "Remote address"},
|
||||||
|
+ {'R', "Remote address"},
|
||||||
|
+ {'s', "Symmetric RTP (default)"},
|
||||||
|
+ {'S', "Symmetric RTP (default)"},
|
||||||
|
+ {'w', "Weak connection (allows roaming)"},
|
||||||
|
+ {'W', "Weak connection (allows roaming)"},
|
||||||
|
+ {'z', "repacketiZe"},
|
||||||
|
+ {'Z', "repacketiZe"},
|
||||||
|
+ /* Unofficial command parameters / expensions */
|
||||||
|
+ {'d', "DTMF payload ID (unofficial extension)"},
|
||||||
|
+ {'D', "DTMF payload ID (unofficial extension)"},
|
||||||
|
+ {'m', "codec Mapping (unofficial extension)"},
|
||||||
|
+ {'M', "codec Mapping (unofficial extension)"},
|
||||||
|
+ {'p', "Protocol type (unofficial extension)"},
|
||||||
|
+ {'P', "Protocol type (unofficial extension)"},
|
||||||
|
+ {'t', "Transcode to (unofficial extension)"},
|
||||||
|
+ {'T', "Transcode to (unofficial extension)"},
|
||||||
|
+ {'v', "Accounting (unofficial extension)"},
|
||||||
|
+ {'V', "Accounting (unofficial extension)"},
|
||||||
|
+ {0, NULL}
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static const value_string prototypenames[] = {
|
||||||
|
+ { '0', "UDP (default)"},
|
||||||
|
+ { '1', "TCP"},
|
||||||
|
+ { '2', "SCTP"},
|
||||||
|
+ { 0, NULL }
|
||||||
|
+};
|
||||||
|
+static const value_string acctypenames[] = {
|
||||||
|
+ { '0', "Start"},
|
||||||
|
+ { '1', "Interim update"},
|
||||||
|
+ { '2', "Stop"},
|
||||||
|
+ { 0, NULL }
|
||||||
|
+};
|
||||||
|
+
|
||||||
+static const value_string oktypenames[] = {
|
+static const value_string oktypenames[] = {
|
||||||
+ { '0', "Ok"},
|
+ { '0', "Ok"},
|
||||||
+ { '1', "Version Supported"},
|
+ { '1', "Version Supported"},
|
||||||
@ -274,6 +406,16 @@ index 0000000..f606abb
|
|||||||
+
|
+
|
||||||
+static gint ett_rtpproxy_request = -1;
|
+static gint ett_rtpproxy_request = -1;
|
||||||
+static gint ett_rtpproxy_command = -1;
|
+static gint ett_rtpproxy_command = -1;
|
||||||
|
+static gint ett_rtpproxy_command_parameters = -1;
|
||||||
|
+static gint ett_rtpproxy_command_parameters_codecs = -1;
|
||||||
|
+static gint ett_rtpproxy_command_parameters_local = -1;
|
||||||
|
+static gint ett_rtpproxy_command_parameters_remote = -1;
|
||||||
|
+static gint ett_rtpproxy_command_parameters_repacketize = -1;
|
||||||
|
+static gint ett_rtpproxy_command_parameters_dtmf = -1;
|
||||||
|
+static gint ett_rtpproxy_command_parameters_cmap = -1;
|
||||||
|
+static gint ett_rtpproxy_command_parameters_proto = -1;
|
||||||
|
+static gint ett_rtpproxy_command_parameters_transcode = -1;
|
||||||
|
+static gint ett_rtpproxy_command_parameters_acc = -1;
|
||||||
+static gint ett_rtpproxy_tag = -1;
|
+static gint ett_rtpproxy_tag = -1;
|
||||||
+static gint ett_rtpproxy_notify = -1;
|
+static gint ett_rtpproxy_notify = -1;
|
||||||
+
|
+
|
||||||
@ -281,11 +423,12 @@ index 0000000..f606abb
|
|||||||
+
|
+
|
||||||
+static guint rtpproxy_tcp_port = 22222;
|
+static guint rtpproxy_tcp_port = 22222;
|
||||||
+static guint rtpproxy_udp_port = 22222;
|
+static guint rtpproxy_udp_port = 22222;
|
||||||
|
+static gboolean rtpproxy_establish_conversation = TRUE;
|
||||||
+
|
+
|
||||||
+void proto_reg_handoff_rtpproxy(void);
|
+void proto_reg_handoff_rtpproxy(void);
|
||||||
+
|
+
|
||||||
+gint
|
+gint
|
||||||
+rtpptoxy_add_tag(proto_tree *rtpproxy_tree, tvbuff_t *tvb, guint begin, guint realsize)
|
+rtpproxy_add_tag(proto_tree *rtpproxy_tree, tvbuff_t *tvb, guint begin, guint realsize)
|
||||||
+{
|
+{
|
||||||
+ proto_item *ti = NULL;
|
+ proto_item *ti = NULL;
|
||||||
+ proto_tree *another_tree = NULL;
|
+ proto_tree *another_tree = NULL;
|
||||||
@ -306,10 +449,12 @@ index 0000000..f606abb
|
|||||||
+ ti = proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_tag, tvb, begin, end - begin, ENC_ASCII | ENC_NA);
|
+ ti = proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_tag, tvb, begin, end - begin, ENC_ASCII | ENC_NA);
|
||||||
+ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_tag);
|
+ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_tag);
|
||||||
+ ti = proto_tree_add_item(another_tree, hf_rtpproxy_mediaid, tvb, new_offset+1, 0, ENC_ASCII | ENC_NA);
|
+ ti = proto_tree_add_item(another_tree, hf_rtpproxy_mediaid, tvb, new_offset+1, 0, ENC_ASCII | ENC_NA);
|
||||||
+ proto_item_set_text(ti, "Media-ID: <skipped>");
|
+ proto_item_append_text(ti, "<skipped>");
|
||||||
+ }
|
+ }
|
||||||
+ else{
|
+ else{
|
||||||
+ ti = proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_tag, tvb, begin, new_offset - begin, ENC_ASCII | ENC_NA);
|
+ ti = proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_tag, tvb, begin, new_offset - begin, ENC_ASCII | ENC_NA);
|
||||||
|
+ if ((guint)new_offset == begin)
|
||||||
|
+ proto_item_append_text(ti, "<skipped>"); /* A very first Offer/Update command */
|
||||||
+ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_tag);
|
+ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_tag);
|
||||||
+ proto_tree_add_item(another_tree, hf_rtpproxy_mediaid, tvb, new_offset+1, end - (new_offset+1), ENC_ASCII | ENC_NA);
|
+ proto_tree_add_item(another_tree, hf_rtpproxy_mediaid, tvb, new_offset+1, end - (new_offset+1), ENC_ASCII | ENC_NA);
|
||||||
+ }
|
+ }
|
||||||
@ -317,6 +462,101 @@ index 0000000..f606abb
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+void
|
+void
|
||||||
|
+rtpproxy_add_parameter(proto_tree *rtpproxy_tree, tvbuff_t *tvb, guint begin, guint realsize)
|
||||||
|
+{
|
||||||
|
+ proto_item *ti;
|
||||||
|
+ proto_tree *another_tree = NULL;
|
||||||
|
+ guint offset = 0;
|
||||||
|
+ guint new_offset = 0;
|
||||||
|
+ gint i;
|
||||||
|
+ guint pt = 0;
|
||||||
|
+ gchar** codecs = NULL;
|
||||||
|
+ guint codec_len;
|
||||||
|
+ guint8* rawstr = NULL;
|
||||||
|
+
|
||||||
|
+ /* Extract the entire parameters line. */
|
||||||
|
+ /* Something like "t4p1iic8,0,2,4,18,96,97,98,100,101" */
|
||||||
|
+ rawstr = tvb_get_ephemeral_string(tvb, begin, realsize);
|
||||||
|
+
|
||||||
|
+ while(offset < realsize){
|
||||||
|
+ ti = proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_command_parameter, tvb, begin + offset, 1, ENC_NA);
|
||||||
|
+ offset++; /* Skip 1-byte parameter's type */
|
||||||
|
+ switch (g_ascii_tolower(tvb_get_guint8(tvb, begin+offset-1)))
|
||||||
|
+ {
|
||||||
|
+ /* Official long parameters */
|
||||||
|
+ case 'c':
|
||||||
|
+ new_offset = (gint)strspn(rawstr+offset, "0123456789,");
|
||||||
|
+ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_command_parameters_codecs);
|
||||||
|
+ codecs = g_strsplit(tvb_get_ephemeral_string(tvb, begin+offset, new_offset), ",", 0);
|
||||||
|
+ i = 0;
|
||||||
|
+ while(codecs[i]){
|
||||||
|
+ /* We assume strings < 2^32-1 bytes long. :-) */
|
||||||
|
+ codec_len = (guint)strlen(codecs[i]);
|
||||||
|
+ proto_tree_add_item(another_tree, hf_rtpproxy_command_parameter_codec, tvb, begin+offset, codec_len, ENC_ASCII | ENC_NA);
|
||||||
|
+ offset += codec_len;
|
||||||
|
+ if(codecs[i+1])
|
||||||
|
+ offset++; /* skip comma */
|
||||||
|
+ i++;
|
||||||
|
+ };
|
||||||
|
+ g_strfreev(codecs);
|
||||||
|
+ break;
|
||||||
|
+ case 'l':
|
||||||
|
+ new_offset = (gint)strspn(rawstr+offset, "0123456789.");
|
||||||
|
+ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_command_parameters_local);
|
||||||
|
+ proto_tree_add_item(another_tree, hf_rtpproxy_command_parameter_local, tvb, begin+offset, new_offset, ENC_ASCII | ENC_NA);
|
||||||
|
+ offset += new_offset;
|
||||||
|
+ break;
|
||||||
|
+ case 'r':
|
||||||
|
+ new_offset = (gint)strspn(rawstr+offset, "0123456789.");
|
||||||
|
+ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_command_parameters_remote);
|
||||||
|
+ proto_tree_add_item(another_tree, hf_rtpproxy_command_parameter_remote, tvb, begin+offset, new_offset, ENC_ASCII | ENC_NA);
|
||||||
|
+ offset += new_offset;
|
||||||
|
+ break;
|
||||||
|
+ case 'z':
|
||||||
|
+ new_offset = (gint)strspn(rawstr+offset, "0123456789");
|
||||||
|
+ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_command_parameters_repacketize);
|
||||||
|
+ proto_tree_add_item(another_tree, hf_rtpproxy_command_parameter_repacketize, tvb, begin+offset, new_offset, ENC_ASCII | ENC_NA);
|
||||||
|
+ offset += new_offset;
|
||||||
|
+ break;
|
||||||
|
+ /* Unofficial long parameters */
|
||||||
|
+ case 'd':
|
||||||
|
+ new_offset = (gint)strspn(rawstr+offset, "0123456789");
|
||||||
|
+ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_command_parameters_dtmf);
|
||||||
|
+ proto_tree_add_item(another_tree, hf_rtpproxy_command_parameter_dtmf, tvb, begin+offset, new_offset, ENC_ASCII | ENC_NA);
|
||||||
|
+ if(rtpproxy_establish_conversation){
|
||||||
|
+ pt = (guint)strtoul(tvb_format_text(tvb,begin+offset,new_offset),NULL,10);
|
||||||
|
+ dissector_add_uint("rtp.pt", pt, rtp_events_handle);
|
||||||
|
+ }
|
||||||
|
+ offset += new_offset;
|
||||||
|
+ break;
|
||||||
|
+ case 'm':
|
||||||
|
+ new_offset = (gint)strspn(rawstr+offset, "0123456789=,");
|
||||||
|
+ /* TODO */
|
||||||
|
+ offset += new_offset;
|
||||||
|
+ break;
|
||||||
|
+ case 'p':
|
||||||
|
+ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_command_parameters_proto);
|
||||||
|
+ proto_tree_add_item(another_tree, hf_rtpproxy_command_parameter_proto, tvb, begin+offset, 1, ENC_NA);
|
||||||
|
+ offset++;
|
||||||
|
+ break;
|
||||||
|
+ case 't':
|
||||||
|
+ new_offset = (gint)strspn(rawstr+offset, "0123456789");
|
||||||
|
+ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_command_parameters_transcode);
|
||||||
|
+ proto_tree_add_item(another_tree, hf_rtpproxy_command_parameter_transcode, tvb, begin+offset, new_offset, ENC_ASCII | ENC_NA);
|
||||||
|
+ offset += new_offset;
|
||||||
|
+ break;
|
||||||
|
+ case 'v':
|
||||||
|
+ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_command_parameters_acc);
|
||||||
|
+ proto_tree_add_item(another_tree, hf_rtpproxy_command_parameter_acc, tvb, begin+offset, 1, ENC_NA);
|
||||||
|
+ offset++;
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+void
|
||||||
+rtpproxy_add_tid(gboolean is_request, tvbuff_t *tvb, packet_info *pinfo, proto_tree *rtpproxy_tree, rtpproxy_conv_info_t *rtpproxy_conv, gchar* cookie)
|
+rtpproxy_add_tid(gboolean is_request, tvbuff_t *tvb, packet_info *pinfo, proto_tree *rtpproxy_tree, rtpproxy_conv_info_t *rtpproxy_conv, gchar* cookie)
|
||||||
+{
|
+{
|
||||||
+ rtpproxy_info_t *rtpproxy_info;
|
+ rtpproxy_info_t *rtpproxy_info;
|
||||||
@ -353,6 +593,37 @@ index 0000000..f606abb
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
|
+void
|
||||||
|
+rtpproxy_add_notify_addr(proto_tree *rtpproxy_tree, tvbuff_t *tvb, guint begin, guint end)
|
||||||
|
+{
|
||||||
|
+ gint offset = 0;
|
||||||
|
+ gint tmp = 0;
|
||||||
|
+ gboolean ipv6 = FALSE;
|
||||||
|
+ proto_item *ti;
|
||||||
|
+
|
||||||
|
+ /* Check for at least one colon */
|
||||||
|
+ offset = tvb_find_guint8(tvb, begin, end, ':');
|
||||||
|
+ if(offset != -1){
|
||||||
|
+ /* Find if it's the latest colon (not in case of a IPv6) */
|
||||||
|
+ while((tmp = tvb_find_guint8(tvb, offset+1, end, ':')) != -1){
|
||||||
|
+ ipv6 = TRUE;
|
||||||
|
+ offset = tmp;
|
||||||
|
+ }
|
||||||
|
+ /* We have ip:port */
|
||||||
|
+ if(ipv6)
|
||||||
|
+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_ipv6, tvb, begin, offset - begin, ENC_ASCII | ENC_NA);
|
||||||
|
+ else
|
||||||
|
+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_ipv4, tvb, begin, offset - begin, ENC_ASCII | ENC_NA);
|
||||||
|
+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_port, tvb, offset+1, end - (offset+1), ENC_ASCII | ENC_NA);
|
||||||
|
+ }
|
||||||
|
+ else{
|
||||||
|
+ /* Only port is supplied */
|
||||||
|
+ ti = proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_ipv4, tvb, begin, 0, ENC_ASCII | ENC_NA);
|
||||||
|
+ proto_item_append_text(ti, "<skipped>");
|
||||||
|
+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_port, tvb, begin, end - begin, ENC_ASCII | ENC_NA);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
+static int
|
+static int
|
||||||
+dissect_rtpproxy(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
|
+dissect_rtpproxy(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
|
||||||
+{
|
+{
|
||||||
@ -364,10 +635,15 @@ index 0000000..f606abb
|
|||||||
+ guint8* rawstr;
|
+ guint8* rawstr;
|
||||||
+ guint8* tmpstr;
|
+ guint8* tmpstr;
|
||||||
+ proto_item *ti;
|
+ proto_item *ti;
|
||||||
|
+ proto_item *ti2;
|
||||||
+ proto_tree *rtpproxy_tree;
|
+ proto_tree *rtpproxy_tree;
|
||||||
+ conversation_t *conversation;
|
+ conversation_t *conversation;
|
||||||
+ rtpproxy_conv_info_t *rtpproxy_conv;
|
+ rtpproxy_conv_info_t *rtpproxy_conv;
|
||||||
+ gchar* cookie = NULL;
|
+ gchar* cookie = NULL;
|
||||||
|
+ /* For RT(C)P setup */
|
||||||
|
+ address addr;
|
||||||
|
+ guint16 port;
|
||||||
|
+ guint32 ipaddr[4];
|
||||||
+
|
+
|
||||||
+ /* If it does not start with a printable character it's not RTPProxy */
|
+ /* If it does not start with a printable character it's not RTPProxy */
|
||||||
+ if(!isprint(tvb_get_guint8(tvb, 0)))
|
+ if(!isprint(tvb_get_guint8(tvb, 0)))
|
||||||
@ -473,7 +749,8 @@ index 0000000..f606abb
|
|||||||
+
|
+
|
||||||
+ if (new_offset != offset + 1){
|
+ if (new_offset != offset + 1){
|
||||||
+ rtpproxy_tree = proto_item_add_subtree(ti, ett_rtpproxy_command);
|
+ rtpproxy_tree = proto_item_add_subtree(ti, ett_rtpproxy_command);
|
||||||
+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_command_parameters, tvb, offset+1, new_offset - (offset+1), ENC_ASCII | ENC_NA);
|
+ ti2 = proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_command_parameters, tvb, offset+1, new_offset - (offset+1), ENC_ASCII | ENC_NA);
|
||||||
|
+ rtpproxy_add_parameter(proto_item_add_subtree(ti2, ett_rtpproxy_command_parameters), tvb, offset+1, new_offset - (offset+1));
|
||||||
+ rtpproxy_tree = proto_item_get_parent(ti);
|
+ rtpproxy_tree = proto_item_get_parent(ti);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@ -532,14 +809,14 @@ index 0000000..f606abb
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ /* Extract first tag */
|
+ /* Extract first tag */
|
||||||
+ new_offset = rtpptoxy_add_tag(rtpproxy_tree, tvb, offset, realsize);
|
+ new_offset = rtpproxy_add_tag(rtpproxy_tree, tvb, offset, realsize);
|
||||||
+ if(new_offset == -1)
|
+ if(new_offset == -1)
|
||||||
+ break; /* No more parameters */
|
+ break; /* No more parameters */
|
||||||
+ /* Skip whitespace */
|
+ /* Skip whitespace */
|
||||||
+ offset = tvb_skip_wsp(tvb, new_offset+1, -1);
|
+ offset = tvb_skip_wsp(tvb, new_offset+1, -1);
|
||||||
+
|
+
|
||||||
+ /* Extract second tag */
|
+ /* Extract second tag */
|
||||||
+ new_offset = rtpptoxy_add_tag(rtpproxy_tree, tvb, offset, realsize);
|
+ new_offset = rtpproxy_add_tag(rtpproxy_tree, tvb, offset, realsize);
|
||||||
+ if(new_offset == -1)
|
+ if(new_offset == -1)
|
||||||
+ break; /* No more parameters */
|
+ break; /* No more parameters */
|
||||||
+ /* Skip whitespace */
|
+ /* Skip whitespace */
|
||||||
@ -547,27 +824,20 @@ index 0000000..f606abb
|
|||||||
+
|
+
|
||||||
+ /* Extract Notification address */
|
+ /* Extract Notification address */
|
||||||
+ if (tmp == 'u'){
|
+ if (tmp == 'u'){
|
||||||
+ new_offset = tvb_find_guint8(tvb, offset, -1, ' ');
|
|
||||||
+ ti = proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify, tvb, offset, realsize - offset, ENC_ASCII | ENC_NA);
|
+ ti = proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify, tvb, offset, realsize - offset, ENC_ASCII | ENC_NA);
|
||||||
+ proto_item_set_text(ti, "Notify");
|
+ proto_item_set_text(ti, "Notify");
|
||||||
+ rtpproxy_tree = proto_item_add_subtree(ti, ett_rtpproxy_notify);
|
+ rtpproxy_tree = proto_item_add_subtree(ti, ett_rtpproxy_notify);
|
||||||
|
+
|
||||||
|
+ /* Check for NotifyTag parameter (separated by space) */
|
||||||
|
+ new_offset = tvb_find_guint8(tvb, offset, -1, ' ');
|
||||||
+ if(new_offset == -1){
|
+ if(new_offset == -1){
|
||||||
+ /* FIXME only IPv4 is supported */
|
+ /* NotifyTag wasn't found (we should re-use Call-ID instead) */
|
||||||
+ new_offset = tvb_find_guint8(tvb, offset, -1, ':');
|
+ rtpproxy_add_notify_addr(rtpproxy_tree, tvb, offset, realsize);
|
||||||
+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_ipv4, tvb, offset, new_offset - offset, ENC_ASCII | ENC_NA);
|
|
||||||
+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_port, tvb, new_offset+1, realsize - (new_offset+1), ENC_ASCII | ENC_NA);
|
|
||||||
+ break; /* No more parameters */
|
+ break; /* No more parameters */
|
||||||
+ }
|
+ }
|
||||||
+ if(new_offset - offset < 6){
|
+
|
||||||
+ /* Only port is supplied */
|
+ /* NotifyTag was found */
|
||||||
+ ti = proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_ipv4, tvb, offset, 0, ENC_ASCII | ENC_NA);
|
+ rtpproxy_add_notify_addr(rtpproxy_tree, tvb, offset, new_offset);
|
||||||
+ proto_item_set_text(ti, "Notification IPv4: <skipped>");
|
|
||||||
+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_port, tvb, offset, new_offset - offset, ENC_ASCII | ENC_NA);
|
|
||||||
+ }
|
|
||||||
+ else{
|
|
||||||
+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_ipv4, tvb, offset, new_offset - offset, ENC_ASCII | ENC_NA);
|
|
||||||
+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_port, tvb, new_offset+1, realsize - (new_offset+1), ENC_ASCII | ENC_NA);
|
|
||||||
+ }
|
|
||||||
+ /* Skip whitespace */
|
+ /* Skip whitespace */
|
||||||
+ offset = tvb_skip_wsp(tvb, new_offset+1, -1);
|
+ offset = tvb_skip_wsp(tvb, new_offset+1, -1);
|
||||||
+
|
+
|
||||||
@ -624,16 +894,38 @@ index 0000000..f606abb
|
|||||||
+
|
+
|
||||||
+ /* Extract Port */
|
+ /* Extract Port */
|
||||||
+ new_offset = tvb_find_guint8(tvb, offset, -1, ' ');
|
+ new_offset = tvb_find_guint8(tvb, offset, -1, ' ');
|
||||||
|
+ /* Convert port to unsigned 16-bit number */
|
||||||
|
+ port = (guint16) g_ascii_strtoull((gchar*)tvb_get_ephemeral_string(tvb, offset, new_offset - offset), NULL, 10);
|
||||||
+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_port, tvb, offset, new_offset - offset, ENC_ASCII | ENC_NA);
|
+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_port, tvb, offset, new_offset - offset, ENC_ASCII | ENC_NA);
|
||||||
+ /* Skip whitespace */
|
+ /* Skip whitespace */
|
||||||
+ offset = tvb_skip_wsp(tvb, new_offset+1, -1);
|
+ offset = tvb_skip_wsp(tvb, new_offset+1, -1);
|
||||||
+
|
+
|
||||||
+ /* Extract IP */
|
+ /* Extract IP */
|
||||||
+ tmp = tvb_find_line_end(tvb, offset, -1, &new_offset, FALSE);
|
+ tmp = tvb_find_line_end(tvb, offset, -1, &new_offset, FALSE);
|
||||||
+ if (tvb_find_guint8(tvb, offset, -1, ':') == -1)
|
+ if (tvb_find_guint8(tvb, offset, -1, ':') == -1){
|
||||||
|
+ inet_pton(AF_INET, (char*)tvb_get_ephemeral_string(tvb, offset, tmp), &ipaddr);
|
||||||
|
+ addr.type = AT_IPv4;
|
||||||
|
+ addr.len = 4;
|
||||||
|
+ addr.data = ep_memdup(&ipaddr, 4);
|
||||||
+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_ipv4, tvb, offset, tmp, ENC_ASCII | ENC_NA);
|
+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_ipv4, tvb, offset, tmp, ENC_ASCII | ENC_NA);
|
||||||
+ else
|
+ }
|
||||||
|
+ else{
|
||||||
|
+ inet_pton(AF_INET6, (char*)tvb_get_ephemeral_string(tvb, offset, tmp), &ipaddr);
|
||||||
|
+ addr.type = AT_IPv6;
|
||||||
|
+ addr.len = 16;
|
||||||
|
+ addr.data = ep_memdup(&ipaddr, 16);
|
||||||
+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_ipv6, tvb, offset, tmp, ENC_ASCII | ENC_NA);
|
+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_ipv6, tvb, offset, tmp, ENC_ASCII | ENC_NA);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if(rtpproxy_establish_conversation){
|
||||||
|
+ if (rtp_handle) {
|
||||||
|
+ /* FIXME tell if isn't a video stream, and setup codec mapping */
|
||||||
|
+ rtp_add_address(pinfo, &addr, port, 0, "RTPproxy", pinfo->fd->num, 0, NULL);
|
||||||
|
+ }
|
||||||
|
+ if (rtcp_handle) {
|
||||||
|
+ rtcp_add_address(pinfo, &addr, port+1, 0, "RTPproxy", pinfo->fd->num);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
+ break;
|
+ break;
|
||||||
+ default:
|
+ default:
|
||||||
+ break;
|
+ break;
|
||||||
@ -807,6 +1099,123 @@ index 0000000..f606abb
|
|||||||
+ }
|
+ }
|
||||||
+ },
|
+ },
|
||||||
+ {
|
+ {
|
||||||
|
+ &hf_rtpproxy_command_parameter,
|
||||||
|
+ {
|
||||||
|
+ "Parameter",
|
||||||
|
+ "rtpproxy.command_parameter",
|
||||||
|
+ FT_UINT8,
|
||||||
|
+ BASE_DEC,
|
||||||
|
+ VALS(paramtypenames),
|
||||||
|
+ 0x0,
|
||||||
|
+ NULL,
|
||||||
|
+ HFILL
|
||||||
|
+ }
|
||||||
|
+ },
|
||||||
|
+ {
|
||||||
|
+ &hf_rtpproxy_command_parameter_codec,
|
||||||
|
+ {
|
||||||
|
+ "Allowed codec",
|
||||||
|
+ "rtpproxy.command_parameter_codec",
|
||||||
|
+ FT_STRING,
|
||||||
|
+ BASE_NONE,
|
||||||
|
+ NULL,
|
||||||
|
+ 0x0,
|
||||||
|
+ NULL,
|
||||||
|
+ HFILL
|
||||||
|
+ }
|
||||||
|
+ },
|
||||||
|
+ {
|
||||||
|
+ &hf_rtpproxy_command_parameter_local,
|
||||||
|
+ {
|
||||||
|
+ "Local IP address",
|
||||||
|
+ "rtpproxy.command_parameter_local",
|
||||||
|
+ FT_STRING,
|
||||||
|
+ BASE_NONE,
|
||||||
|
+ NULL,
|
||||||
|
+ 0x0,
|
||||||
|
+ NULL,
|
||||||
|
+ HFILL
|
||||||
|
+ }
|
||||||
|
+ },
|
||||||
|
+ {
|
||||||
|
+ &hf_rtpproxy_command_parameter_remote,
|
||||||
|
+ {
|
||||||
|
+ "Remote IP address",
|
||||||
|
+ "rtpproxy.command_parameter_remote",
|
||||||
|
+ FT_STRING,
|
||||||
|
+ BASE_NONE,
|
||||||
|
+ NULL,
|
||||||
|
+ 0x0,
|
||||||
|
+ NULL,
|
||||||
|
+ HFILL
|
||||||
|
+ }
|
||||||
|
+ },
|
||||||
|
+ {
|
||||||
|
+ &hf_rtpproxy_command_parameter_repacketize,
|
||||||
|
+ {
|
||||||
|
+ "Repacketize (ms)",
|
||||||
|
+ "rtpproxy.command_parameter_repacketize",
|
||||||
|
+ FT_STRING,
|
||||||
|
+ BASE_NONE,
|
||||||
|
+ NULL,
|
||||||
|
+ 0x0,
|
||||||
|
+ NULL,
|
||||||
|
+ HFILL
|
||||||
|
+ }
|
||||||
|
+ },
|
||||||
|
+ {
|
||||||
|
+ &hf_rtpproxy_command_parameter_dtmf,
|
||||||
|
+ {
|
||||||
|
+ "DTMF payload ID",
|
||||||
|
+ "rtpproxy.command_parameter_dtmf",
|
||||||
|
+ FT_STRING,
|
||||||
|
+ BASE_NONE,
|
||||||
|
+ NULL,
|
||||||
|
+ 0x0,
|
||||||
|
+ NULL,
|
||||||
|
+ HFILL
|
||||||
|
+ }
|
||||||
|
+ },
|
||||||
|
+ {
|
||||||
|
+ &hf_rtpproxy_command_parameter_proto,
|
||||||
|
+ {
|
||||||
|
+ "RTP tramsission protocol",
|
||||||
|
+ "rtpproxy.command_parameter_proto",
|
||||||
|
+ FT_UINT8,
|
||||||
|
+ BASE_DEC,
|
||||||
|
+ VALS(prototypenames),
|
||||||
|
+ 0x0,
|
||||||
|
+ NULL,
|
||||||
|
+ HFILL
|
||||||
|
+ }
|
||||||
|
+ },
|
||||||
|
+ {
|
||||||
|
+ &hf_rtpproxy_command_parameter_transcode,
|
||||||
|
+ {
|
||||||
|
+ "Transcode to",
|
||||||
|
+ "rtpproxy.command_parameter_transcode",
|
||||||
|
+ FT_STRING,
|
||||||
|
+ BASE_NONE,
|
||||||
|
+ NULL,
|
||||||
|
+ 0x0,
|
||||||
|
+ NULL,
|
||||||
|
+ HFILL
|
||||||
|
+ }
|
||||||
|
+ },
|
||||||
|
+ {
|
||||||
|
+ &hf_rtpproxy_command_parameter_acc,
|
||||||
|
+ {
|
||||||
|
+ "Accounting",
|
||||||
|
+ "rtpproxy.command_parameter_acc",
|
||||||
|
+ FT_UINT8,
|
||||||
|
+ BASE_DEC,
|
||||||
|
+ VALS(acctypenames),
|
||||||
|
+ 0x0,
|
||||||
|
+ NULL,
|
||||||
|
+ HFILL
|
||||||
|
+ }
|
||||||
|
+ },
|
||||||
|
+ {
|
||||||
+ &hf_rtpproxy_copy_target,
|
+ &hf_rtpproxy_copy_target,
|
||||||
+ {
|
+ {
|
||||||
+ "Copy target",
|
+ "Copy target",
|
||||||
@ -911,6 +1320,19 @@ index 0000000..f606abb
|
|||||||
+ }
|
+ }
|
||||||
+ },
|
+ },
|
||||||
+ {
|
+ {
|
||||||
|
+ &hf_rtpproxy_notify_ipv6,
|
||||||
|
+ {
|
||||||
|
+ "Notification IPv6",
|
||||||
|
+ "rtpproxy.notify_ipv6",
|
||||||
|
+ FT_STRING,
|
||||||
|
+ BASE_NONE,
|
||||||
|
+ NULL,
|
||||||
|
+ 0x0,
|
||||||
|
+ NULL,
|
||||||
|
+ HFILL
|
||||||
|
+ }
|
||||||
|
+ },
|
||||||
|
+ {
|
||||||
+ &hf_rtpproxy_notify_port,
|
+ &hf_rtpproxy_notify_port,
|
||||||
+ {
|
+ {
|
||||||
+ "Notification Port",
|
+ "Notification Port",
|
||||||
@ -1009,6 +1431,16 @@ index 0000000..f606abb
|
|||||||
+ &ett_rtpproxy,
|
+ &ett_rtpproxy,
|
||||||
+ &ett_rtpproxy_request,
|
+ &ett_rtpproxy_request,
|
||||||
+ &ett_rtpproxy_command,
|
+ &ett_rtpproxy_command,
|
||||||
|
+ &ett_rtpproxy_command_parameters,
|
||||||
|
+ &ett_rtpproxy_command_parameters_codecs,
|
||||||
|
+ &ett_rtpproxy_command_parameters_local,
|
||||||
|
+ &ett_rtpproxy_command_parameters_remote,
|
||||||
|
+ &ett_rtpproxy_command_parameters_repacketize,
|
||||||
|
+ &ett_rtpproxy_command_parameters_dtmf,
|
||||||
|
+ &ett_rtpproxy_command_parameters_cmap,
|
||||||
|
+ &ett_rtpproxy_command_parameters_proto,
|
||||||
|
+ &ett_rtpproxy_command_parameters_transcode,
|
||||||
|
+ &ett_rtpproxy_command_parameters_acc,
|
||||||
+ &ett_rtpproxy_tag,
|
+ &ett_rtpproxy_tag,
|
||||||
+ &ett_rtpproxy_notify,
|
+ &ett_rtpproxy_notify,
|
||||||
+ &ett_rtpproxy_reply
|
+ &ett_rtpproxy_reply
|
||||||
@ -1035,6 +1467,11 @@ index 0000000..f606abb
|
|||||||
+ "RTPproxy UDP Port", /* Descr */
|
+ "RTPproxy UDP Port", /* Descr */
|
||||||
+ 10,
|
+ 10,
|
||||||
+ &rtpproxy_udp_port);
|
+ &rtpproxy_udp_port);
|
||||||
|
+ prefs_register_bool_preference(rtpproxy_module, "establish_conversation",
|
||||||
|
+ "Establish Media Conversation",
|
||||||
|
+ "Specifies that RTP/RTCP/T.38/MSRP/etc streams are decoded based "
|
||||||
|
+ "upon port numbers found in RTPproxy answers",
|
||||||
|
+ &rtpproxy_establish_conversation);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+void
|
+void
|
||||||
@ -1066,6 +1503,10 @@ index 0000000..f606abb
|
|||||||
+ if(rtpproxy_udp_port != 0 && old_rtpproxy_udp_port != rtpproxy_udp_port)
|
+ if(rtpproxy_udp_port != 0 && old_rtpproxy_udp_port != rtpproxy_udp_port)
|
||||||
+ dissector_add_uint("udp.port", rtpproxy_udp_port, rtpproxy_udp_handle);
|
+ dissector_add_uint("udp.port", rtpproxy_udp_port, rtpproxy_udp_handle);
|
||||||
+ old_rtpproxy_udp_port = rtpproxy_udp_port;
|
+ old_rtpproxy_udp_port = rtpproxy_udp_port;
|
||||||
|
+
|
||||||
|
+ rtcp_handle = find_dissector("rtcp");
|
||||||
|
+ rtp_events_handle = find_dissector("rtpevent");
|
||||||
|
+ rtp_handle = find_dissector("rtp");
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+/*
|
+/*
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
From 1904600d69fb059c768170d12d636137f3b19de0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Anders Broman <anders.broman@ericsson.com>
|
From: Anders Broman <anders.broman@ericsson.com>
|
||||||
Date: Thu, 11 Jul 2013 21:13:27 +0000
|
Date: Thu, 11 Jul 2013 21:13:27 +0000
|
||||||
Subject: [PATCH] The beginning of an openflow dissector.
|
Subject: [PATCH] The beginning of an openflow dissector.
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
From 37c27f6c58004b8682bcc3bb10c2cc13cd81a653 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Radek=20Vok=C3=A1l?= <rvokal@fedoraproject.org>
|
From: =?UTF-8?q?Radek=20Vok=C3=A1l?= <rvokal@fedoraproject.org>
|
||||||
Date: Mon, 21 Dec 2009 11:19:39 +0000
|
Date: Mon, 21 Dec 2009 11:19:39 +0000
|
||||||
Subject: [PATCH] adds autoconf macro file
|
Subject: [PATCH] adds autoconf macro file
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
From 1022a03e6f71efdff1b91c87b2426a229a24791d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Lemenkov <lemenkov@gmail.com>
|
From: Peter Lemenkov <lemenkov@gmail.com>
|
||||||
Date: Fri, 13 Sep 2013 14:36:55 +0400
|
Date: Fri, 13 Sep 2013 14:36:55 +0400
|
||||||
Subject: [PATCH] Restore Fedora-specific groups
|
Subject: [PATCH] Restore Fedora-specific groups
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
From 5fcb09305500b72fa2cb584c4ef8ab0e3a08c22c Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Radek=20Vok=C3=A1l?= <rvokal@fedoraproject.org>
|
From: =?UTF-8?q?Radek=20Vok=C3=A1l?= <rvokal@fedoraproject.org>
|
||||||
Date: Thu, 17 Dec 2009 09:17:07 +0000
|
Date: Thu, 17 Dec 2009 09:17:07 +0000
|
||||||
Subject: [PATCH] Add pkgconfig entry
|
Subject: [PATCH] Add pkgconfig entry
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
From 019eea6cacbf7f01290ac6b42c1609c573ba0a33 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Lemenkov <lemenkov@gmail.com>
|
From: Peter Lemenkov <lemenkov@gmail.com>
|
||||||
Date: Fri, 13 Sep 2013 15:25:12 +0400
|
Date: Fri, 13 Sep 2013 15:25:12 +0400
|
||||||
Subject: [PATCH] Install autoconf-related file
|
Subject: [PATCH] Install autoconf-related file
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
From 0ecd119162d513c50e37206846f4238257fde247 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Hatina <phatina@redhat.com>
|
From: Peter Hatina <phatina@redhat.com>
|
||||||
Date: Tue, 24 Sep 2013 10:55:09 +0200
|
Date: Tue, 24 Sep 2013 10:55:09 +0200
|
||||||
Subject: [PATCH] move default temporary directory to /var/tmp
|
Subject: [PATCH] move default temporary directory to /var/tmp
|
||||||
|
60
wireshark-0013-Copy-over-r49999-from-trunk.patch
Normal file
60
wireshark-0013-Copy-over-r49999-from-trunk.patch
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
From: Guy Harris <guy@alum.mit.edu>
|
||||||
|
Date: Thu, 7 Nov 2013 01:54:16 +0000
|
||||||
|
Subject: [PATCH] Copy over r49999 from trunk:
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
r49999 | eapache | 2013-06-17 18:02:26 -0700 (Mon, 17 Jun 2013) | 10 lines
|
||||||
|
|
||||||
|
Don't limit the on-the-wire length of packets to 64KB, there are larger packets
|
||||||
|
out there (especially over USB) and we should be able to load them as long as
|
||||||
|
they are snapped to a sane length.
|
||||||
|
|
||||||
|
Also validate that packets do not specify a snapshot length larger than the one
|
||||||
|
in the file header, though only make it a warning, as this is not necessarily a
|
||||||
|
fatally corrupt packet.
|
||||||
|
|
||||||
|
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8808
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Also fixes bug 9390.
|
||||||
|
|
||||||
|
svn path=/trunk-1.10/; revision=53123
|
||||||
|
|
||||||
|
diff --git a/wiretap/libpcap.c b/wiretap/libpcap.c
|
||||||
|
index cb9e97c..9601332 100644
|
||||||
|
--- a/wiretap/libpcap.c
|
||||||
|
+++ b/wiretap/libpcap.c
|
||||||
|
@@ -773,21 +773,8 @@ static int libpcap_read_header(wtap *wth, int *err, gchar **err_info,
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (hdr->hdr.orig_len > WTAP_MAX_PACKET_SIZE) {
|
||||||
|
- /*
|
||||||
|
- * Probably a corrupt capture file; return an error,
|
||||||
|
- * so that our caller doesn't blow up trying to
|
||||||
|
- * cope with a huge "real" packet length, and so that
|
||||||
|
- * the code to try to guess what type of libpcap file
|
||||||
|
- * this is can tell when it's not the type we're guessing
|
||||||
|
- * it is.
|
||||||
|
- */
|
||||||
|
- *err = WTAP_ERR_BAD_FILE;
|
||||||
|
- if (err_info != NULL) {
|
||||||
|
- *err_info = g_strdup_printf("pcap: File has %u-byte packet, bigger than maximum of %u",
|
||||||
|
- hdr->hdr.orig_len, WTAP_MAX_PACKET_SIZE);
|
||||||
|
- }
|
||||||
|
- return -1;
|
||||||
|
+ if (hdr->hdr.incl_len > wth->snapshot_length) {
|
||||||
|
+ g_warning("pcap: File has packet larger than file's snapshot length.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return bytes_read;
|
||||||
|
@@ -955,7 +942,7 @@ static gboolean libpcap_dump(wtap_dumper *wdh,
|
||||||
|
rec_hdr.hdr.incl_len = phdr->caplen + phdrsize;
|
||||||
|
rec_hdr.hdr.orig_len = phdr->len + phdrsize;
|
||||||
|
|
||||||
|
- if (rec_hdr.hdr.incl_len > WTAP_MAX_PACKET_SIZE || rec_hdr.hdr.orig_len > WTAP_MAX_PACKET_SIZE) {
|
||||||
|
+ if (rec_hdr.hdr.incl_len > WTAP_MAX_PACKET_SIZE) {
|
||||||
|
*err = WTAP_ERR_BAD_FILE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
@ -1,129 +0,0 @@
|
|||||||
From a507e19a98210dd7347acd0ffad901c915d09751 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Lemenkov <lemenkov@gmail.com>
|
|
||||||
Date: Thu, 7 Nov 2013 22:12:37 +0400
|
|
||||||
Subject: [PATCH] Initial version of RT(C)P dissector hinting
|
|
||||||
|
|
||||||
Backported from patch sent upstream:
|
|
||||||
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9397
|
|
||||||
|
|
||||||
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
|
|
||||||
|
|
||||||
diff --git a/epan/dissectors/packet-rtpproxy.c b/epan/dissectors/packet-rtpproxy.c
|
|
||||||
index f606abb..7920e87 100644
|
|
||||||
--- a/epan/dissectors/packet-rtpproxy.c
|
|
||||||
+++ b/epan/dissectors/packet-rtpproxy.c
|
|
||||||
@@ -31,11 +31,24 @@
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#include <ctype.h>
|
|
||||||
+#include <glib.h>
|
|
||||||
|
|
||||||
+#include <epan/address.h>
|
|
||||||
#include <epan/packet.h>
|
|
||||||
#include <epan/prefs.h>
|
|
||||||
#include <epan/conversation.h>
|
|
||||||
|
|
||||||
+#ifdef HAVE_ARPA_INET_H
|
|
||||||
+#include <arpa/inet.h>
|
|
||||||
+#endif
|
|
||||||
+#ifdef NEED_INET_V6DEFS_H
|
|
||||||
+# include "wsutil/inet_v6defs.h"
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+/* For setting up RTP/RTCP dissectors based on the RTPproxy's answers */
|
|
||||||
+#include "packet-rtp.h"
|
|
||||||
+#include "packet-rtcp.h"
|
|
||||||
+
|
|
||||||
static int proto_rtpproxy = -1;
|
|
||||||
|
|
||||||
static int hf_rtpproxy_cookie = -1;
|
|
||||||
@@ -74,6 +87,9 @@ typedef struct _rtpproxy_info {
|
|
||||||
nstime_t req_time;
|
|
||||||
} rtpproxy_info_t;
|
|
||||||
|
|
||||||
+static dissector_handle_t rtp_handle;
|
|
||||||
+static dissector_handle_t rtcp_handle;
|
|
||||||
+
|
|
||||||
typedef struct _rtpproxy_conv_info {
|
|
||||||
emem_tree_t *trans;
|
|
||||||
} rtpproxy_conv_info_t;
|
|
||||||
@@ -158,6 +174,7 @@ static gint ett_rtpproxy_reply = -1;
|
|
||||||
|
|
||||||
static guint rtpproxy_tcp_port = 22222;
|
|
||||||
static guint rtpproxy_udp_port = 22222;
|
|
||||||
+static gboolean rtpproxy_establish_conversation = TRUE;
|
|
||||||
|
|
||||||
void proto_reg_handoff_rtpproxy(void);
|
|
||||||
|
|
||||||
@@ -245,6 +262,10 @@ dissect_rtpproxy(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
|
|
||||||
conversation_t *conversation;
|
|
||||||
rtpproxy_conv_info_t *rtpproxy_conv;
|
|
||||||
gchar* cookie = NULL;
|
|
||||||
+ /* For RT(C)P setup */
|
|
||||||
+ address addr;
|
|
||||||
+ guint16 port;
|
|
||||||
+ guint32 ipaddr[4];
|
|
||||||
|
|
||||||
/* If it does not start with a printable character it's not RTPProxy */
|
|
||||||
if(!isprint(tvb_get_guint8(tvb, 0)))
|
|
||||||
@@ -501,16 +522,36 @@ dissect_rtpproxy(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
|
|
||||||
|
|
||||||
/* Extract Port */
|
|
||||||
new_offset = tvb_find_guint8(tvb, offset, -1, ' ');
|
|
||||||
+ /* Convert port to unsigned 16-bit number */
|
|
||||||
+ port = (guint16) g_ascii_strtoull((gchar*)tvb_get_ephemeral_string(tvb, offset, new_offset - offset), NULL, 10);
|
|
||||||
proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_port, tvb, offset, new_offset - offset, ENC_ASCII | ENC_NA);
|
|
||||||
/* Skip whitespace */
|
|
||||||
offset = tvb_skip_wsp(tvb, new_offset+1, -1);
|
|
||||||
|
|
||||||
/* Extract IP */
|
|
||||||
tmp = tvb_find_line_end(tvb, offset, -1, &new_offset, FALSE);
|
|
||||||
- if (tvb_find_guint8(tvb, offset, -1, ':') == -1)
|
|
||||||
+ if (tvb_find_guint8(tvb, offset, -1, ':') == -1){
|
|
||||||
+ inet_pton(AF_INET, (char*)tvb_get_ephemeral_string(tvb, offset, tmp), &ipaddr);
|
|
||||||
+ addr.type = AT_IPv4;
|
|
||||||
+ addr.len = 4;
|
|
||||||
+ addr.data = se_memdup(&ipaddr, 4);
|
|
||||||
proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_ipv4, tvb, offset, tmp, ENC_ASCII | ENC_NA);
|
|
||||||
- else
|
|
||||||
+ }
|
|
||||||
+ else{
|
|
||||||
+ inet_pton(AF_INET6, (char*)tvb_get_ephemeral_string(tvb, offset, tmp), &ipaddr);
|
|
||||||
+ addr.type = AT_IPv6;
|
|
||||||
+ addr.len = 16;
|
|
||||||
+ addr.data = se_memdup(&ipaddr, 16);
|
|
||||||
proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_ipv6, tvb, offset, tmp, ENC_ASCII | ENC_NA);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (rtp_handle) {
|
|
||||||
+ /* FIXME tell is is't a video stream, and setup codec mapping */
|
|
||||||
+ rtp_add_address(pinfo, &addr, port, 0, "RTPproxy", pinfo->fd->num, 0, NULL);
|
|
||||||
+ }
|
|
||||||
+ if (rtcp_handle) {
|
|
||||||
+ rtcp_add_address(pinfo, &addr, port+1, 0, "RTPproxy", pinfo->fd->num);
|
|
||||||
+ }
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
@@ -912,6 +953,11 @@ proto_register_rtpproxy(void)
|
|
||||||
"RTPproxy UDP Port", /* Descr */
|
|
||||||
10,
|
|
||||||
&rtpproxy_udp_port);
|
|
||||||
+ prefs_register_bool_preference(rtpproxy_module, "establish_conversation",
|
|
||||||
+ "Establish Media Conversation",
|
|
||||||
+ "Specifies that RTP/RTCP/T.38/MSRP/etc streams are decoded based "
|
|
||||||
+ "upon port numbers found in RTPproxy answers",
|
|
||||||
+ &rtpproxy_establish_conversation);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
@@ -943,6 +989,9 @@ proto_reg_handoff_rtpproxy(void)
|
|
||||||
if(rtpproxy_udp_port != 0 && old_rtpproxy_udp_port != rtpproxy_udp_port)
|
|
||||||
dissector_add_uint("udp.port", rtpproxy_udp_port, rtpproxy_udp_handle);
|
|
||||||
old_rtpproxy_udp_port = rtpproxy_udp_port;
|
|
||||||
+
|
|
||||||
+ rtp_handle = find_dissector("rtp");
|
|
||||||
+ rtcp_handle = find_dissector("rtcp");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
@ -0,0 +1,22 @@
|
|||||||
|
From: Pascal Quantin <pascal.quantin@gmail.com>
|
||||||
|
Date: Sat, 9 Nov 2013 15:44:01 +0000
|
||||||
|
Subject: [PATCH] Fix https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9388
|
||||||
|
: Avoid an infinite loop in SIP dissector (backport of r51738)
|
||||||
|
|
||||||
|
svn path=/trunk-1.10/; revision=53195
|
||||||
|
|
||||||
|
diff --git a/epan/dissectors/packet-sip.c b/epan/dissectors/packet-sip.c
|
||||||
|
index a3ceec2..b012837 100644
|
||||||
|
--- a/epan/dissectors/packet-sip.c
|
||||||
|
+++ b/epan/dissectors/packet-sip.c
|
||||||
|
@@ -2134,6 +2134,10 @@ dissect_sip_common(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr
|
||||||
|
*/
|
||||||
|
orig_offset = offset;
|
||||||
|
linelen = tvb_find_line_end(tvb, offset, -1, &next_offset, FALSE);
|
||||||
|
+ if(linelen==0){
|
||||||
|
+ return -2;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (tvb_strnlen(tvb, offset, linelen) > -1)
|
||||||
|
{
|
||||||
|
/*
|
84
wireshark-0015-Add-expert-info-about-timeouts.patch
Normal file
84
wireshark-0015-Add-expert-info-about-timeouts.patch
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
From: Peter Lemenkov <lemenkov@gmail.com>
|
||||||
|
Date: Mon, 4 Nov 2013 22:46:16 +0400
|
||||||
|
Subject: [PATCH] Add expert info about timeouts
|
||||||
|
|
||||||
|
Backported patch from this bugzilla ticket:
|
||||||
|
|
||||||
|
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9484
|
||||||
|
|
||||||
|
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
|
||||||
|
|
||||||
|
diff --git a/epan/dissectors/packet-rtpproxy.c b/epan/dissectors/packet-rtpproxy.c
|
||||||
|
index 831448b..04830bc 100644
|
||||||
|
--- a/epan/dissectors/packet-rtpproxy.c
|
||||||
|
+++ b/epan/dissectors/packet-rtpproxy.c
|
||||||
|
@@ -37,6 +37,7 @@
|
||||||
|
#include <epan/packet.h>
|
||||||
|
#include <epan/prefs.h>
|
||||||
|
#include <epan/conversation.h>
|
||||||
|
+#include <epan/expert.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_ARPA_INET_H
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
@@ -248,9 +249,14 @@ static gint ett_rtpproxy_notify = -1;
|
||||||
|
|
||||||
|
static gint ett_rtpproxy_reply = -1;
|
||||||
|
|
||||||
|
+/* Default values */
|
||||||
|
static guint rtpproxy_tcp_port = 22222;
|
||||||
|
static guint rtpproxy_udp_port = 22222;
|
||||||
|
static gboolean rtpproxy_establish_conversation = TRUE;
|
||||||
|
+/* See - http://www.opensips.org/html/docs/modules/1.11.x/rtpproxy.html#id250018 */
|
||||||
|
+/* See - http://www.kamailio.org/docs/modules/devel/modules/rtpproxy.html#idm448 */
|
||||||
|
+static guint rtpproxy_timeout = 1000;
|
||||||
|
+static nstime_t rtpproxy_timeout_ns = {1, 0};
|
||||||
|
|
||||||
|
void proto_reg_handoff_rtpproxy(void);
|
||||||
|
|
||||||
|
@@ -415,6 +421,8 @@ rtpproxy_add_tid(gboolean is_request, tvbuff_t *tvb, packet_info *pinfo, proto_t
|
||||||
|
nstime_delta(&ns, &pinfo->fd->abs_ts, &rtpproxy_info->req_time);
|
||||||
|
pi = proto_tree_add_time(rtpproxy_tree, hf_rtpproxy_response_time, tvb, 0, 0, &ns);
|
||||||
|
PROTO_ITEM_SET_GENERATED(pi);
|
||||||
|
+ if (nstime_cmp(&rtpproxy_timeout_ns, &ns) < 0)
|
||||||
|
+ expert_add_info_format(pinfo, rtpproxy_tree, PI_RESPONSE_CODE, PI_WARN, "Response timeout %'.3f seconds", nstime_to_sec(&ns));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -1283,6 +1291,7 @@ proto_register_rtpproxy(void)
|
||||||
|
proto_register_subtree_array(ett, array_length(ett));
|
||||||
|
|
||||||
|
rtpproxy_module = prefs_register_protocol(proto_rtpproxy, proto_reg_handoff_rtpproxy);
|
||||||
|
+
|
||||||
|
prefs_register_uint_preference(rtpproxy_module, "tcp.port",
|
||||||
|
"RTPproxy TCP Port", /* Title */
|
||||||
|
"RTPproxy TCP Port", /* Descr */
|
||||||
|
@@ -1294,11 +1303,18 @@ proto_register_rtpproxy(void)
|
||||||
|
"RTPproxy UDP Port", /* Descr */
|
||||||
|
10,
|
||||||
|
&rtpproxy_udp_port);
|
||||||
|
+
|
||||||
|
prefs_register_bool_preference(rtpproxy_module, "establish_conversation",
|
||||||
|
"Establish Media Conversation",
|
||||||
|
"Specifies that RTP/RTCP/T.38/MSRP/etc streams are decoded based "
|
||||||
|
"upon port numbers found in RTPproxy answers",
|
||||||
|
&rtpproxy_establish_conversation);
|
||||||
|
+
|
||||||
|
+ prefs_register_uint_preference(rtpproxy_module, "reply.timeout",
|
||||||
|
+ "RTPproxy reply timeout", /* Title */
|
||||||
|
+ "Maximum timeout value in waiting for reply from RTPProxy (in milliseconds).", /* Descr */
|
||||||
|
+ 10,
|
||||||
|
+ &rtpproxy_timeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
@@ -1334,6 +1350,10 @@ proto_reg_handoff_rtpproxy(void)
|
||||||
|
rtcp_handle = find_dissector("rtcp");
|
||||||
|
rtp_events_handle = find_dissector("rtpevent");
|
||||||
|
rtp_handle = find_dissector("rtp");
|
||||||
|
+
|
||||||
|
+ /* Calculate nstime_t struct for the timeout from the rtpproxy_timeout value in milliseconds */
|
||||||
|
+ rtpproxy_timeout_ns.secs = (rtpproxy_timeout - rtpproxy_timeout % 1000) / 1000;
|
||||||
|
+ rtpproxy_timeout_ns.nsecs = (rtpproxy_timeout % 1000) * 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
@ -21,7 +21,7 @@
|
|||||||
Summary: Network traffic analyzer
|
Summary: Network traffic analyzer
|
||||||
Name: wireshark
|
Name: wireshark
|
||||||
Version: 1.10.3
|
Version: 1.10.3
|
||||||
Release: 4%{?dist}
|
Release: 5%{?dist}
|
||||||
License: GPL+
|
License: GPL+
|
||||||
Group: Applications/Internet
|
Group: Applications/Internet
|
||||||
Source0: http://wireshark.org/download/src/%{name}-%{version}.tar.bz2
|
Source0: http://wireshark.org/download/src/%{name}-%{version}.tar.bz2
|
||||||
@ -47,9 +47,13 @@ Patch10: wireshark-0010-Add-pkgconfig-entry.patch
|
|||||||
Patch11: wireshark-0011-Install-autoconf-related-file.patch
|
Patch11: wireshark-0011-Install-autoconf-related-file.patch
|
||||||
# Fedora-specific
|
# Fedora-specific
|
||||||
Patch12: wireshark-0012-move-default-temporary-directory-to-var-tmp.patch
|
Patch12: wireshark-0012-move-default-temporary-directory-to-var-tmp.patch
|
||||||
|
# Backported from upstream.
|
||||||
|
Patch13: wireshark-0013-Copy-over-r49999-from-trunk.patch
|
||||||
|
# Backported from upstream.
|
||||||
|
Patch14: wireshark-0014-Fix-https-bugs.wireshark.org-bugzilla-show_bug.cgi-i.patch
|
||||||
# Backported to 1.10.x from the patch from this ticket:
|
# Backported to 1.10.x from the patch from this ticket:
|
||||||
# https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9397
|
# https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9484
|
||||||
Patch13: wireshark-0013-Initial-version-of-RT-C-P-dissector-hinting.patch
|
Patch15: wireshark-0015-Add-expert-info-about-timeouts.patch
|
||||||
|
|
||||||
Url: http://www.wireshark.org/
|
Url: http://www.wireshark.org/
|
||||||
BuildRequires: libpcap-devel >= 0.9
|
BuildRequires: libpcap-devel >= 0.9
|
||||||
@ -156,7 +160,9 @@ and plugins.
|
|||||||
%patch10 -p1 -b .add_pkgconfig
|
%patch10 -p1 -b .add_pkgconfig
|
||||||
%patch11 -p1 -b .install_autoconf
|
%patch11 -p1 -b .install_autoconf
|
||||||
%patch12 -p1 -b .tmp_dir
|
%patch12 -p1 -b .tmp_dir
|
||||||
%patch13 -p1 -b .rtpproxy_hinting
|
%patch13 -p1 -b .allow_64kpackets_for_usb
|
||||||
|
%patch14 -p1 -b .dont_die_during_sip_dissection
|
||||||
|
%patch15 -p1 -b .add_expert_info_about_rtpproxy
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%ifarch s390 s390x sparcv9 sparc64
|
%ifarch s390 s390x sparcv9 sparc64
|
||||||
@ -351,6 +357,12 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
|
|||||||
%{_datadir}/aclocal/*
|
%{_datadir}/aclocal/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Nov 27 2013 Peter Lemenkov <lemenkov@gmail.com> - 1.10.3-5
|
||||||
|
- Updated RTPproxy dissector (again)
|
||||||
|
- Allow packets more than 64k (for USB capture). See patch no. 13
|
||||||
|
- Don't die during loading of some SIP capture files. See patch no. 14
|
||||||
|
- Backport support for RTPproxy dissector timeouts detection. See patch no. 15
|
||||||
|
|
||||||
* Wed Nov 13 2013 Peter Lemenkov <lemenkov@gmail.com> - 1.10.3-4
|
* Wed Nov 13 2013 Peter Lemenkov <lemenkov@gmail.com> - 1.10.3-4
|
||||||
- Updated RTPproxy dissector
|
- Updated RTPproxy dissector
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user