Hi Daniel,
you're right (as almost always): It's not a bug-fix, but more a new feature. I've reverted the change; that was the reason, why i only commited the feature only in trunk. Actually i did a cherry-pick, but git did not ask for a new comment, so i assumed it would automatically add the "cherry picked from commit..." message. No serious commits on the first day after a holiday. Thanks for reminding me.
Kind regards, Carsten
2012/11/1 Daniel-Constantin Mierla miconda@gmail.com:
Hello,
is this a bug fix, because at first sight seems to be a new feature. Backports to the code in stable branches must be only related to fixing issues, otherwise they become a mess and will be no longer stable.
In exceptional cases, if it is not clear that is a bug fix or a new feature, it should be discussed on the devel list before.
Moreover, the backports should be done via cherry-picking (or merging) commits from master branch, to be able to track what fixes were not backported -- some hints are presented at http://www.kamailio.org/wiki/devel/backporting-to-3.2.x .
It would be also good to try to follow git recommendations for commit messages, summarized at:
The email notifications as well as changelog will be then properly formatted.
Cheers, Daniel
On 11/1/12 8:27 PM, admin@sip-router.org wrote:
Module: sip-router Branch: 3.3 Commit: cd1c367218cdcd5f0867af2234f6080e8e6622a6 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=cd1c3672...
Author: Carsten Bock carsten@ng-voice.com Committer: Carsten Bock carsten@ng-voice.com Date: Mon Sep 17 17:25:38 2012 +0200
New Option: "x" for automatic bridging between IPv4 and IPv6. Based on the following assumption: "i" is the IPv4 interface and "e" is the IPv6 interface on the RTPProxy (tested with both RTPProxy and Sipwise's ngcp-mediaproxy-ng).
Mechanism is as follows:
- IP in SDP is IPv4: Do bridging "ie"
- IP in SDP is IPv6: Do bridging "ei"
Not a big deal, but makes the configuration much more easier.
modules/rtpproxy/doc/rtpproxy.xml | 8 ++++++++ modules/rtpproxy/doc/rtpproxy_admin.xml | 7 +++++++ modules/rtpproxy/rtpproxy.c | 22 +++++++++++++++++++++- 3 files changed, 36 insertions(+), 1 deletions(-)
diff --git a/modules/rtpproxy/doc/rtpproxy.xml b/modules/rtpproxy/doc/rtpproxy.xml index d5a15ee..741a4d9 100644 --- a/modules/rtpproxy/doc/rtpproxy.xml +++ b/modules/rtpproxy/doc/rtpproxy.xml @@ -57,6 +57,14 @@ <email>osas@voipembedded.com</email> </address> </editor>
<editor>
<firstname>Carsten</firstname>
<surname>Bock</surname>
<affiliation><orgname>ng-voice
GmbH</orgname></affiliation>
<address>
<email>carsten@ng-voice.com</email>
</address>
</editor> </authorgroup> <copyright> <year>2003-2008</year>
diff --git a/modules/rtpproxy/doc/rtpproxy_admin.xml b/modules/rtpproxy/doc/rtpproxy_admin.xml index 6b9577a..64843eb 100644 --- a/modules/rtpproxy/doc/rtpproxy_admin.xml +++ b/modules/rtpproxy/doc/rtpproxy_admin.xml @@ -343,6 +343,13 @@ rtpproxy_offer(); the 'w' flag for clients behind NAT! See also above notes! </para></listitem> <listitem><para>
<emphasis>x</emphasis> - this flag will do
automatic bridging between IPv4 on the
"internal network" and IPv6 on the
"external network". The distinction is done by
the given IP in the SDP, e.g. a IPv4
Address will always call "ie" to the RTPProxy
(IPv4(i) to IPv6(e)) and an IPv6Address
will always call "ei" to the RTPProxy (IPv6(e)
to IPv4(i)).
</para></listitem>
<listitem><para> <emphasis>f</emphasis> - instructs
rtpproxy to ignore marks inserted by another rtpproxy in transit to indicate that the session is already goes through another proxy. Allows creating diff --git a/modules/rtpproxy/rtpproxy.c b/modules/rtpproxy/rtpproxy.c index b50b2d1..e18655f 100644 --- a/modules/rtpproxy/rtpproxy.c +++ b/modules/rtpproxy/rtpproxy.c @@ -1939,6 +1939,7 @@ force_rtp_proxy(struct sip_msg* msg, char* str1, char* str2, int offer, int forc {NULL, 0}, /* Timeout-Socket */ }; int iovec_param_count;
int autobridge_ipv4v6; char *c1p, *c2p, *bodylimit, *o1p; char itoabuf_buf[20];
@@ -1958,7 +1959,7 @@ force_rtp_proxy(struct sip_msg* msg, char* str1, char* str2, int offer, int forc LM_ERR("out of pkg memory\n"); FORCE_RTP_PROXY_RET (-1); }
flookup = force = real = orgip = commip = via = 0;
flookup = force = real = orgip = commip = via = autobridge_ipv4v6
= 0; for (cp = str1; cp != NULL && *cp != '\0'; cp++) { switch (*cp) { case '1': @@ -2022,6 +2023,11 @@ force_rtp_proxy(struct sip_msg* msg, char* str1, char* str2, int offer, int forc orgip = 1; break;
case 'x':
case 'X':
autobridge_ipv4v6 = 1;
break;
case 'w': case 'W': if (append_opts(&opts, 'S') == -1) {
@@ -2199,6 +2205,12 @@ force_rtp_proxy(struct sip_msg* msg, char* str1, char* str2, int offer, int forc } /* XXX must compare address families in all addresses */ if (pf == AF_INET6) {
if (autobridge_ipv4v6 != 0) {
if ((append_opts(&opts, 'E') ==
-1) && (append_opts(&opts, 'I') == -1)) {
LM_ERR("out of pkg
memory\n");
FORCE_RTP_PROXY_RET (-1);
}
} if (append_opts(&opts, '6') == -1) { LM_ERR("out of pkg memory\n"); FORCE_RTP_PROXY_RET (-1);
@@ -2206,7 +2218,15 @@ force_rtp_proxy(struct sip_msg* msg, char* str1, char* str2, int offer, int forc /* We need to update the pointers and the length here, it has changed. */ v[1].iov_base = opts.s.s; v[1].iov_len = opts.oidx;
} else {
if (autobridge_ipv4v6 != 0) {
if ((append_opts(&opts, 'I') ==
-1) && (append_opts(&opts, 'E') == -1)) {
LM_ERR("out of pkg
memory\n");
FORCE_RTP_PROXY_RET (-1);
}
} }
#ifdef EXTRA_DEBUGSTR2IOVEC(newip, v[9]); STR2IOVEC(oldport, v[11]);
sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
-- Daniel-Constantin Mierla - http://www.asipto.com http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda Kamailio Advanced Training, Berlin, Nov 5-8, 2012 - http://asipto.com/u/kat Kamailio Advanced Training, Miami, USA, Nov 12-14, 2012 - http://asipto.com/u/katu