[sr-dev] git:3.3: New Option: "x" for automatic bridging between IPv4 and IPv6.

Daniel-Constantin Mierla miconda at gmail.com
Thu Nov 1 20:37:25 CET 2012


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:
   - http://www.kamailio.org/wiki/devel/git-commit-guidelines#commit_message

The email notifications as well as changelog will be then properly 
formatted.

Cheers,
Daniel

On 11/1/12 8:27 PM, admin at 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=cd1c367218cdcd5f0867af2234f6080e8e6622a6
>
> Author: Carsten Bock <carsten at ng-voice.com>
> Committer: Carsten Bock <carsten at 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 at voipembedded.com</email>
>   		</address>
>   		</editor>
> +		<editor>
> +		<firstname>Carsten</firstname>
> +		<surname>Bock</surname>
> +		<affiliation><orgname>ng-voice GmbH</orgname></affiliation>
> +		<address>
> +			<email>carsten at 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);
> +					}
> +				}
>   			}
> +
>   			STR2IOVEC(newip, v[9]);
>   			STR2IOVEC(oldport, v[11]);
>   #ifdef EXTRA_DEBUG
>
>
> _______________________________________________
> sr-dev mailing list
> sr-dev at 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




More information about the sr-dev mailing list