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

Carsten Bock carsten at ng-voice.com
Thu Nov 1 21:07:50 CET 2012


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 at 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:
>   - 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
>



-- 
Carsten Bock
CEO (Geschäftsführer)

ng-voice GmbH
Schomburgstr. 80
D-22767 Hamburg / Germany

http://www.ng-voice.com
mailto:carsten at ng-voice.com

Office +49 40 34927219
Fax +49 40 34927220

Sitz der Gesellschaft: Hamburg
Registergericht: Amtsgericht Hamburg, HRB 120189
Geschäftsführer: Carsten Bock
Ust-ID: DE279344284

Hier finden Sie unsere handelsrechtlichen Pflichtangaben:
http://www.ng-voice.com/imprint/



More information about the sr-dev mailing list