[asterisk-commits] file: branch 1.6.0 r118648 - in /branches/1.6.0: ./ channels/ configs/
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed May 28 09:31:42 CDT 2008
Author: file
Date: Wed May 28 09:31:42 2008
New Revision: 118648
URL: http://svn.digium.com/view/asterisk?view=rev&rev=118648
Log:
Merged revisions 118647 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
................
r118647 | file | 2008-05-28 11:29:01 -0300 (Wed, 28 May 2008) | 12 lines
Merged revisions 118646 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r118646 | file | 2008-05-28 11:23:34 -0300 (Wed, 28 May 2008) | 4 lines
Add an option to use the source IP address of RTP as the destination IP address of UDPTL when a specific option is enabled. If the remote side is properly configured (ports forwarded) then UDPTL will flow.
(closes issue #10417)
Reported by: cstadlmann
........
................
Modified:
branches/1.6.0/ (props changed)
branches/1.6.0/CHANGES
branches/1.6.0/channels/chan_sip.c
branches/1.6.0/configs/sip.conf.sample
Propchange: branches/1.6.0/
------------------------------------------------------------------------------
Binary property 'trunk-merged' - no diff available.
Modified: branches/1.6.0/CHANGES
URL: http://svn.digium.com/view/asterisk/branches/1.6.0/CHANGES?view=diff&rev=118648&r1=118647&r2=118648
==============================================================================
--- branches/1.6.0/CHANGES (original)
+++ branches/1.6.0/CHANGES Wed May 28 09:31:42 2008
@@ -151,6 +151,7 @@
SIP session.
* Added experimental TCP and TLS support for SIP. See doc/siptls.txt and
configs/sip.conf.sample for more information on how it is used.
+ * Added t38pt_usertpsource option. See sip.conf.sample for details.
IAX2 changes
------------
Modified: branches/1.6.0/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/branches/1.6.0/channels/chan_sip.c?view=diff&rev=118648&r1=118647&r2=118648
==============================================================================
--- branches/1.6.0/channels/chan_sip.c (original)
+++ branches/1.6.0/channels/chan_sip.c Wed May 28 09:31:42 2008
@@ -987,11 +987,12 @@
#define SIP_PAGE2_RFC2833_COMPENSATE (1 << 25) /*!< DP: Compensate for buggy RFC2833 implementations */
#define SIP_PAGE2_BUGGY_MWI (1 << 26) /*!< DP: Buggy CISCO MWI fix */
#define SIP_PAGE2_REGISTERTRYING (1 << 29) /*!< DP: Send 100 Trying on REGISTER attempts */
+#define SIP_PAGE2_UDPTL_DESTINATION (1 << 30) /*!< DP: Use source IP of RTP as destination if NAT is enabled */
#define SIP_PAGE2_FLAGS_TO_COPY \
(SIP_PAGE2_ALLOWSUBSCRIBE | SIP_PAGE2_ALLOWOVERLAP | SIP_PAGE2_VIDEOSUPPORT | \
SIP_PAGE2_T38SUPPORT | SIP_PAGE2_RFC2833_COMPENSATE | SIP_PAGE2_BUGGY_MWI | \
- SIP_PAGE2_TEXTSUPPORT )
+ SIP_PAGE2_TEXTSUPPORT | SIP_PAGE2_UDPTL_DESTINATION)
/*@}*/
@@ -6556,6 +6557,16 @@
if (p->udptl) {
if (udptlportno > 0) {
sin.sin_port = htons(udptlportno);
+ if (ast_test_flag(&p->flags[0], SIP_NAT) && ast_test_flag(&p->flags[1], SIP_PAGE2_UDPTL_DESTINATION)) {
+ struct sockaddr_in peer;
+ ast_rtp_get_peer(p->rtp, &peer);
+ if (peer.sin_addr.s_addr) {
+ memcpy(&sin.sin_addr, &peer.sin_addr, sizeof(&sin.sin_addr));
+ if (debug) {
+ ast_log(LOG_DEBUG, "Peer T.38 UDPTL is set behind NAT and with destination, destination address now %s\n", ast_inet_ntoa(sin.sin_addr));
+ }
+ }
+ }
ast_udptl_set_peer(p->udptl, &sin);
if (debug)
ast_debug(1, "Peer T.38 UDPTL is at port %s:%d\n", ast_inet_ntoa(sin.sin_addr), ntohs(sin.sin_port));
@@ -19286,6 +19297,9 @@
} else if (!strcasecmp(v->name, "buggymwi")) {
ast_set_flag(&mask[1], SIP_PAGE2_BUGGY_MWI);
ast_set2_flag(&flags[1], ast_true(v->value), SIP_PAGE2_BUGGY_MWI);
+ } else if (!strcasecmp(v->name, "t38pt_usertpsource")) {
+ ast_set_flag(&mask[1], SIP_PAGE2_UDPTL_DESTINATION);
+ ast_set2_flag(&flags[1], ast_true(v->value), SIP_PAGE2_UDPTL_DESTINATION);
} else
res = 0;
Modified: branches/1.6.0/configs/sip.conf.sample
URL: http://svn.digium.com/view/asterisk/branches/1.6.0/configs/sip.conf.sample?view=diff&rev=118648&r1=118647&r2=118648
==============================================================================
--- branches/1.6.0/configs/sip.conf.sample (original)
+++ branches/1.6.0/configs/sip.conf.sample Wed May 28 09:31:42 2008
@@ -691,14 +691,14 @@
; videosupport videosupport
; maxcallbitrate maxcallbitrate
; rfc2833compensate mailbox
-; session-timers busylevel
+; session-timers busylevel
; session-expires
-; session-minse template
-; session-refresher fromdomain
-; regexten
-; fromuser
-; host
-; port
+; session-minse template
+; session-refresher fromdomain
+; t38pt_usertpsource regexten
+; fromuser
+; host
+; port
; qualify
; defaultip
; defaultuser
@@ -716,7 +716,7 @@
; timert1
; timerb
; qualifyfreq
-
+; t38pt_usertpsource
;[sip_proxy]
; For incoming calls only. Example: FWD (Free World Dialup)
@@ -935,3 +935,7 @@
;host=dynamic
;rfc2833compensate=yes ; Compensate for pre-1.4 DTMF transmission from another Asterisk machine.
; You must have this turned on or DTMF reception will work improperly.
+;t38pt_usertpsource=yes ; Use the source IP address of RTP as the destination IP address for UDPTL packets
+ ; if the nat option is enabled. If a single RTP packet is received Asterisk will know the
+ ; external IP address of the remote device. If port forwarding is done at the client side
+ ; then UDPTL will flow to the remote device.
More information about the asterisk-commits
mailing list