Daniel,<br><br>    Yes I&#39;m doing an append_hf(&quot;X-Duri: $du\r\n&quot;); inside of branch_route[] i.e.:<br><br>branch_route[2]<br>{<br>    if(isbflagset(4)){<br>        # thats me! <br>    } else {<br>        # at this point X-Duri is null, so we are not saving it from the lookup? <br>
        # we need to save this to pass onto Proxy B, however the value is NULL at this point, and at the point of Proxy B (when received).<br>        append_hf(&quot;X-Duri: $avp(s:duri)\r\n&quot;);<br>        if(isbflagset(6)){<br>
            $du = &quot;sip:PROXY_B;transport=udp;&quot;;<br>        }<br>    }<br><br>    xlog(&quot;L_INFO&quot;, &quot;[$ci][branch_route][$T_branch_idx] ru=$ru fu=$fu tu=$tu si=$si flag=$bF du=$du&quot;);<br>}<br><br>
Then when X-Duri reaches Proxy B, if I see the INVITE comes from Proxy A, I take X-Duri and restore &quot;$du&quot; with the correct value.<br><br>However this is causing issues now as the value is &lt;null&gt;, I&#39;ve tried saving $du into avp after looking up usrloc, I&#39;ve tried simply calling $du in branch_route[], and I&#39;ve tried saving $du in loose_route() into an avp, all to no avail.<br>
<br>What am I missing here as far as passing the value of $du from branch route to header, to pass along to Proxy B.<br><br>Thanks again!<br><br><div class="gmail_quote">On Wed, Apr 29, 2009 at 2:42 AM, Daniel-Constantin Mierla <span dir="ltr">&lt;<a href="mailto:miconda@gmail.com">miconda@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="im"><br>
<br>
On 04/29/2009 11:32 AM, Brandon Armstead wrote:<br>
</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Daniel,<br>
<br><div class="im">
    It looks like you helped me find part of the problem, apparently Proxy A was sharing same branch flag as the one I used to distinguish which proxy it was.  I corrected this and now branch flag for branch 1 is 00000060, and branch 2 is 00000040, however now both branches are routed appropriately to the correct server, however the X-Duri (to restore to in the INVITE) is null.<br>

</div></blockquote>
<br>
I may not followed all discussion branch - the X-Duri is a header you append to the message? If yes, it is not visible immediately in the script, but you can see it when the messages is ent to the network.<div class="im">
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
  Do I need to save this value into an AVP after lookup(&quot;location&quot;)?<br>
</blockquote>
<br></div>
What you need to do with it? Where is its values taken from?<br>
<br>
Cheers,<br>
Daniel<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="im">
  Or should it be readily available in branch_route[], and for some reason my variable is null?<br>
<br>
P.S. (recap)<br>
Proxy A NAT Branch Flag: 5<br>
Proxy B NAT Branch Flag: 5<br>
<br>
(Problem existed as used Flag 5 to distinguish &quot;itself&quot; as proxy) -- changed this to 4 so now:<br>
<br>
Proxy A NAT Branch Flag: 4<br>
Proxy B NAT Branch Flag: 6<br>
<br>
Calls are routed to Proxy B<br>
<br>
X-Duri: &lt;null&gt; (as it is null in Proxy A).  I&#39;m append_hf(X-Duri: $du) inside of branch_route[].<br>
<br>
Thanks!<br>
<br></div><div class="im">
On Wed, Apr 29, 2009 at 2:17 AM, Daniel-Constantin Mierla &lt;<a href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a> &lt;mailto:<a href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a>&gt;&gt; wrote:<br>

<br>
<br>
<br>
    On 04/29/2009 11:11 AM, Brandon Armstead wrote:<br>
<br>
        Daniel,<br>
<br>
           No that would be the UAC (I have two clients behind the<br>
        same NAT).  The problem is it looks like the branch flag is<br>
        not being set for both for some reason (when comparing) even<br>
        though in the database it is the same?<br>
<br>
<br>
    So you have the brach flag for nat and branch flags for next<br>
    proxy, right? What is the value of branch flag? The value are<br>
    different indeed, but some flags  you are looking for might be<br>
    set. It is easier spot if you print the hexa format of the flags<br>
    rather than decimal one.<br>
<br>
    Cheers,<br>
    Daniel<br>
<br>
         Take a look at the flag= value from each of those logs (this<br>
        is one call) to a UAC with two registrations line1/line2.<br>
<br>
        On Wed, Apr 29, 2009 at 2:02 AM, Daniel-Constantin Mierla<br>
        &lt;<a href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a> &lt;mailto:<a href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a>&gt;<br></div><div><div></div><div class="h5">
        &lt;mailto:<a href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a> &lt;mailto:<a href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a>&gt;&gt;&gt; wrote:<br>
<br>
           Hello,<br>
<br>
<br>
           On 04/29/2009 10:53 AM, Brandon Armstead wrote:<br>
<br>
               Hey guys,<br>
<br>
                  Still facing a few challenges and seeing if any further<br>
               input, I&#39;m specifically trying inaki&#39;s suggestions /<br>
        method,<br>
               but here are the current problems:<br>
<br>
               sip:/etc/kamailio/m4cfgs# tail -f /var/log/openser.log<br>
        | grep<br>
               -v -E &#39;non-local|repeated&#39; | grep branch_route<br>
               Apr 29 07:38:05 db06 /sbin/kamailio[21279]:<br>
               [<a href="mailto:77e4c600-147767fb@172.16.1.35" target="_blank">77e4c600-147767fb@172.16.1.35</a><br>
        &lt;mailto:<a href="mailto:77e4c600-147767fb@172.16.1.35" target="_blank">77e4c600-147767fb@172.16.1.35</a>&gt;<br>
               &lt;mailto:<a href="mailto:77e4c600-147767fb@172.16.1.35" target="_blank">77e4c600-147767fb@172.16.1.35</a><br>
        &lt;mailto:<a href="mailto:77e4c600-147767fb@172.16.1.35" target="_blank">77e4c600-147767fb@172.16.1.35</a>&gt;&gt;<br>
               &lt;mailto:<a href="mailto:77e4c600-147767fb@172.16.1.35" target="_blank">77e4c600-147767fb@172.16.1.35</a><br>
        &lt;mailto:<a href="mailto:77e4c600-147767fb@172.16.1.35" target="_blank">77e4c600-147767fb@172.16.1.35</a>&gt;<br>
               &lt;mailto:<a href="mailto:77e4c600-147767fb@172.16.1.35" target="_blank">77e4c600-147767fb@172.16.1.35</a><br>
        &lt;mailto:<a href="mailto:77e4c600-147767fb@172.16.1.35" target="_blank">77e4c600-147767fb@172.16.1.35</a>&gt;&gt;&gt;][branch_route][1]<br>
               ru=sip:CALLEE@99.XX.XX.XX:5079<br>
        fu=<a href="mailto:sip%3ACALLER@sip.example.com" target="_blank">sip:CALLER@sip.example.com</a><br>
        &lt;mailto:<a href="mailto:sip%253ACALLER@sip.example.com" target="_blank">sip%3ACALLER@sip.example.com</a>&gt;<br>
               &lt;mailto:<a href="mailto:sip%253ACALLER@sip.example.com" target="_blank">sip%3ACALLER@sip.example.com</a><br>
        &lt;mailto:<a href="mailto:sip%25253ACALLER@sip.example.com" target="_blank">sip%253ACALLER@sip.example.com</a>&gt;&gt;<br>
               &lt;mailto:<a href="mailto:sip%253ACALLER@sip.example.com" target="_blank">sip%3ACALLER@sip.example.com</a><br>
        &lt;mailto:<a href="mailto:sip%25253ACALLER@sip.example.com" target="_blank">sip%253ACALLER@sip.example.com</a>&gt;<br>
               &lt;mailto:<a href="mailto:sip%25253ACALLER@sip.example.com" target="_blank">sip%253ACALLER@sip.example.com</a><br></div></div>
        &lt;mailto:<a href="mailto:sip%2525253ACALLER@sip.example.com" target="_blank">sip%25253ACALLER@sip.example.com</a>&gt;&gt;&gt;<div class="im"><br>
<br>
               tu=<a href="mailto:sip%3ACALLEE@sip.example.com" target="_blank">sip:CALLEE@sip.example.com</a><br>
        &lt;mailto:<a href="mailto:sip%253ACALLEE@sip.example.com" target="_blank">sip%3ACALLEE@sip.example.com</a>&gt;<br>
               &lt;mailto:<a href="mailto:sip%253ACALLEE@sip.example.com" target="_blank">sip%3ACALLEE@sip.example.com</a><br>
        &lt;mailto:<a href="mailto:sip%25253ACALLEE@sip.example.com" target="_blank">sip%253ACALLEE@sip.example.com</a>&gt;&gt;<br>
               &lt;mailto:<a href="mailto:sip%253ACALLEE@sip.example.com" target="_blank">sip%3ACALLEE@sip.example.com</a><br>
        &lt;mailto:<a href="mailto:sip%25253ACALLEE@sip.example.com" target="_blank">sip%253ACALLEE@sip.example.com</a>&gt;<br>
               &lt;mailto:<a href="mailto:sip%25253ACALLEE@sip.example.com" target="_blank">sip%253ACALLEE@sip.example.com</a><br></div>
        &lt;mailto:<a href="mailto:sip%2525253ACALLEE@sip.example.com" target="_blank">sip%25253ACALLEE@sip.example.com</a>&gt;&gt;&gt; si=99.XX.XX.XX<div class="im"><br>
<br>
               flag=96 du=&lt;null&gt;<br>
<br>
<br>
               This call is not sent to Proxy B (this is a result of bflag<br>
               not being set) ???<br>
<br>
           is the proxy B at 99.XX.XX.XX:5079? If not, then set $du to the<br>
           address of that proxy. It is null in the log above.<br>
<br>
           Cheers,<br>
           Daniel<br>
<br>
               My question is &quot;Why&quot;, I look at the AOR / usrloc and<br>
        they both<br>
               have the &quot;same exact flags set&quot;, this call is rather sent<br>
               directly to UAC endpoint.<br>
<br>
               ---<br>
<br>
               Apr 29 07:38:05 db06 /sbin/kamailio[21279]:<br>
               [<a href="mailto:77e4c600-147767fb@172.16.1.35" target="_blank">77e4c600-147767fb@172.16.1.35</a><br>
        &lt;mailto:<a href="mailto:77e4c600-147767fb@172.16.1.35" target="_blank">77e4c600-147767fb@172.16.1.35</a>&gt;<br>
               &lt;mailto:<a href="mailto:77e4c600-147767fb@172.16.1.35" target="_blank">77e4c600-147767fb@172.16.1.35</a><br>
        &lt;mailto:<a href="mailto:77e4c600-147767fb@172.16.1.35" target="_blank">77e4c600-147767fb@172.16.1.35</a>&gt;&gt;<br></div><div class="im">
               &lt;mailto:<a href="mailto:77e4c600-147767fb@172.16.1.35" target="_blank">77e4c600-147767fb@172.16.1.35</a><br>
        &lt;mailto:<a href="mailto:77e4c600-147767fb@172.16.1.35" target="_blank">77e4c600-147767fb@172.16.1.35</a>&gt;<br>
               &lt;mailto:<a href="mailto:77e4c600-147767fb@172.16.1.35" target="_blank">77e4c600-147767fb@172.16.1.35</a><br></div><div class="im">
        &lt;mailto:<a href="mailto:77e4c600-147767fb@172.16.1.35" target="_blank">77e4c600-147767fb@172.16.1.35</a>&gt;&gt;&gt;][branch_route][2]<br>
               ru=sip:CALLEE@99.XX.XX.XX:5062<br>
        fu=<a href="mailto:sip%3ACALLER@sip.example.com" target="_blank">sip:CALLER@sip.example.com</a><br>
        &lt;mailto:<a href="mailto:sip%253ACALLER@sip.example.com" target="_blank">sip%3ACALLER@sip.example.com</a>&gt;<br>
               &lt;mailto:<a href="mailto:sip%253ACALLER@sip.example.com" target="_blank">sip%3ACALLER@sip.example.com</a><br>
        &lt;mailto:<a href="mailto:sip%25253ACALLER@sip.example.com" target="_blank">sip%253ACALLER@sip.example.com</a>&gt;&gt;<br></div><div class="im">
               &lt;mailto:<a href="mailto:sip%253ACALLER@sip.example.com" target="_blank">sip%3ACALLER@sip.example.com</a><br>
        &lt;mailto:<a href="mailto:sip%25253ACALLER@sip.example.com" target="_blank">sip%253ACALLER@sip.example.com</a>&gt;<br>
               &lt;mailto:<a href="mailto:sip%25253ACALLER@sip.example.com" target="_blank">sip%253ACALLER@sip.example.com</a><br></div>
        &lt;mailto:<a href="mailto:sip%2525253ACALLER@sip.example.com" target="_blank">sip%25253ACALLER@sip.example.com</a>&gt;&gt;&gt;<div class="im"><br>
<br>
               tu=<a href="mailto:sip%3ACALLEE@sip.example.com" target="_blank">sip:CALLEE@sip.example.com</a><br>
        &lt;mailto:<a href="mailto:sip%253ACALLEE@sip.example.com" target="_blank">sip%3ACALLEE@sip.example.com</a>&gt;<br>
               &lt;mailto:<a href="mailto:sip%253ACALLEE@sip.example.com" target="_blank">sip%3ACALLEE@sip.example.com</a><br>
        &lt;mailto:<a href="mailto:sip%25253ACALLEE@sip.example.com" target="_blank">sip%253ACALLEE@sip.example.com</a>&gt;&gt;<br>
               &lt;mailto:<a href="mailto:sip%253ACALLEE@sip.example.com" target="_blank">sip%3ACALLEE@sip.example.com</a><br>
        &lt;mailto:<a href="mailto:sip%25253ACALLEE@sip.example.com" target="_blank">sip%253ACALLEE@sip.example.com</a>&gt;<br>
               &lt;mailto:<a href="mailto:sip%25253ACALLEE@sip.example.com" target="_blank">sip%253ACALLEE@sip.example.com</a><br></div>
        &lt;mailto:<a href="mailto:sip%2525253ACALLEE@sip.example.com" target="_blank">sip%25253ACALLEE@sip.example.com</a>&gt;&gt;&gt; si=99.XX.XX.XX<div><div></div><div class="h5"><br>
<br>
               flag=64 du=sip:PROXY_B;transport=udp;<br>
<br>
<br>
               This call is sent to Proxy B (however Proxy B) -<br>
        however the<br>
               X-Duri (is null) as it is not existant in Proxy A&#39;s branch<br>
               route? should I save this from right after the<br>
               lookup(&quot;location&quot;) result into an avp?<br>
<br>
<br>
               Again, thank you for all and any help, thanks!<br>
<br>
               On Mon, Apr 27, 2009 at 5:42 PM, Brandon Armstead<br>
               &lt;<a href="mailto:brandon@cryy.com" target="_blank">brandon@cryy.com</a> &lt;mailto:<a href="mailto:brandon@cryy.com" target="_blank">brandon@cryy.com</a>&gt;<br>
        &lt;mailto:<a href="mailto:brandon@cryy.com" target="_blank">brandon@cryy.com</a> &lt;mailto:<a href="mailto:brandon@cryy.com" target="_blank">brandon@cryy.com</a>&gt;&gt;<br>
               &lt;mailto:<a href="mailto:brandon@cryy.com" target="_blank">brandon@cryy.com</a> &lt;mailto:<a href="mailto:brandon@cryy.com" target="_blank">brandon@cryy.com</a>&gt;<br>
        &lt;mailto:<a href="mailto:brandon@cryy.com" target="_blank">brandon@cryy.com</a> &lt;mailto:<a href="mailto:brandon@cryy.com" target="_blank">brandon@cryy.com</a>&gt;&gt;&gt;&gt; wrote:<br>
<br>
                  Klaus, Inaki, Daniel,<br>
<br>
                      Thanks!  Sorry I did not see this email come<br>
        through, I&#39;m<br>
                  going to go ahead and give this method a go, and I&#39;ll<br>
               update with<br>
                  the results, I have optimistic views.<br>
<br>
                  As for the reason I was rewriting $ru and setting $du to<br>
               null, is<br>
                  because originally when I just changed $du to the<br>
        &#39;destination<br>
                  proxy&#39; it did not seem to work at all (I do not even<br>
        recall<br>
               what<br>
                  exactly what was happening) however I decided to just<br>
               change $ru,<br>
                  and have the other proxy just &quot;lookup&quot; the usrloc<br>
        information<br>
                  again.  Again, this method looks interesting and<br>
        I&#39;ll let<br>
               you guys<br>
                  know how it goes, thanks for all the input and help!<br>
<br>
                  Sincerely,<br>
                  Brandon.<br>
<br>
<br>
                  On Fri, Apr 24, 2009 at 1:18 AM, Klaus Darilion<br>
                  &lt;<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a><br>
        &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a>&gt;<br>
               &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a><br>
        &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a>&gt;&gt;<br></div></div><div><div></div><div class="h5">
                  &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a><br>
        &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a>&gt;<br>
               &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a><br>
        &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a>&gt;&gt;&gt;&gt; wrote:<br>
<br>
<br>
<br>
                      Brandon Armstead schrieb:<br>
<br>
                          Klaus,<br>
<br>
                             So I took you and Inaki&#39;s input and<br>
        essentially<br>
                          constructed a setup like so after the<br>
               lookup(&quot;location&quot;) call:<br>
<br>
                          if(isbflagset(1)){<br>
                             $du = null;<br>
                             $rd = &quot;P1&quot;;<br>
                          } else if(isbflagset(2)){<br>
                             $du = null;<br>
                             $rd = &quot;P2&quot;;<br>
                          } else if(isbflagset(3)){<br>
                             $du = null;<br>
                             $rd = &quot;P3&quot;;<br>
                          } else if(isbflagset(4)){<br>
                             $du = null;<br>
                             $rd = &quot;P4&quot;;<br>
                          }<br>
<br>
<br>
                      1. The above code has to be in the branch_route<br>
        block -<br>
                      otherwise multiple registrations of a single<br>
        user are not<br>
                      handled correctly.<br>
<br>
                      2. you are rewriting the RURI. You should not do<br>
        that<br>
               as some<br>
                      clients wants to the in the RURI the Contact<br>
        provided<br>
               during<br>
                      REGISTER.<br>
<br>
                      3. probably you use fix_nated_register() to<br>
        store the<br>
               public<br>
                      IP:port of the client too. After lookup, this<br>
               information is<br>
                      written to DURI. Thus, by setting $du you overwrite<br>
               this info.<br>
                      You should put it into a special header so that<br>
        you can<br>
                      restore it in the other proxy.<br>
<br>
                      Here a snippet how it should work (untested, no<br>
               warranty): ( I<br>
                      use the term &quot;originating&quot; proxy for the proxy which<br>
               received<br>
                      the INVITE and the term &quot;serving&quot; proxy for the<br>
        proxy which<br>
                      handles the connection/registration of a certain SIP<br>
               client).<br>
<br>
                      e.g:<br>
                      Alice -----INVITE-----&gt; P1-------&gt;P2-----&gt;Bob2<br>
                                             /  \<br>
                                            /    \<br>
                                           /      V<br>
                                          V       P3----&gt;Bob3<br>
                                       Bob1<br>
<br>
                      Bob&#39;s client Bob1 is connected to P1.<br>
                      Bob&#39;s client Bob2 is connected to P2.<br>
                      Bob&#39;s client Bob3 is connected to P3.<br>
<br>
                      So, P1 is the originating proxy. P2 is the<br>
        serving proxy of<br>
                      Bob2. ....<br>
<br>
                      We do NAT traversal (note: we must not call<br>
                      fix_nated_contact() for messages sent between the<br>
               proxies!):<br>
                      the originating proxy for the call-leg to the<br>
        caller, the<br>
                      serving proxy for the call-leg to the callee.<br>
                      The RTP proxy will be managed by the originating<br>
        proxy<br>
               only.<br>
<br>
<br>
<br>
                      route{<br>
                      if (loose_route()) {<br>
                       ... additional loose route processing...<br>
                       if (check_route_param(&quot;rtpproxy=yes&quot;)) {<br>
                         force_rtp_proxy();<br>
                         setbflag(7);<br>
                       }<br>
<br>
                       # downstream: in-dialog request is in the same<br>
               direction as the<br>
                       # initial request<br>
                       if ( (check_route_param(&quot;nat=caller&quot;) &amp;&amp;<br>
                      is_direction(&quot;downstream&quot;))<br>
                         || (check_route_param(&quot;nat=callee&quot;) &amp;&amp;<br>
                      is_direction(&quot;upstream&quot;))) {<br>
                         fix_nated_contact();<br>
                       } else if (check_route_param(&quot;nat=both&quot;) {<br>
                         fix_nated_contact();<br>
                         setbflag(8);<br>
                       } else {<br>
                         setbflag(8);<br>
                       }<br>
<br>
                       t_on_reply(&quot;1&quot;);<br>
                       t_relay();<br>
                       exit();<br>
                      }<br>
                      ...<br>
<br>
                      # I am proxy 1<br>
                      if ((src_ip=ip.of.proxy.2) ||<br>
        (src_ip=ip.of.proxy.3)...) {<br>
                       # request comes from other proxy, that means I<br>
        am the<br>
                       # serving proxy<br>
                       # do not lookup(), RURI is already set and<br>
                       # DURI is provided in our X-DURI header<br>
                       $du = $header(X-DURI);<br>
                       # we do not care about an RTP proxy because<br>
        that&#39;s the<br>
               task<br>
                      of the<br>
                       # proxy which performed the lookup() (the<br>
        originating<br>
               proxy)<br>
                       # add some record-route cookie to mark that we<br>
        should<br>
               perform<br>
                       # SIP NAT traversal for the callee<br>
                       add_rr_param(&quot;;nat=callee&quot;);<br>
                       # activate reply_route to fix_nated_contact of<br>
        callee<br>
                       setbflag(8); # flag 8 = fix contact<br>
                       t_on_reply(&quot;1&quot;);<br>
                       record_route();<br>
                       t_relay();<br>
                       exit;<br>
                      }<br>
<br>
                      ...<br>
                      # a new request - thus I am the originating proxy<br>
<br>
                      if ($dU looks like phone number) {<br>
                        ... route to Gateway....<br>
                       exit;<br>
                      }<br>
<br>
                      if (!lookup(&quot;location&quot;)) {<br>
                       sl_send_reply(&quot;404&quot;,&quot;not found&quot;);<br>
                       exit;<br>
                      }<br>
                      # activate branch route to have dedicated<br>
        routing per<br>
               branch<br>
                      t_on_branch(&quot;1&quot;);<br>
<br>
                      # activate reply route to activate RTP proxy<br>
                      t_on_reply(&quot;1&quot;);<br>
<br>
                      # NAT traversal<br>
                      fix_nated_contact();<br>
<br>
                      record_route();<br>
                      t_relay();<br>
                      exit;<br>
                      }<br>
<br>
                      branch_route[1]{<br>
                       if(isbflagset(1)){<br>
                        # oh, that&#39;s me<br>
<br>
                        # add some record-route cookie to mark that we<br>
        should<br>
               perform<br>
                        # SIP NAT traversal for the callee and caller<br>
                        add_rr_param(&quot;;nat=both&quot;);<br>
<br>
                        # add some record-route cookie to mark that we are<br>
                        # in charge for the RTP proxy<br>
                        add_rr_param(&quot;;rtpproxy=yes&quot;);<br>
<br>
                        force_rtp_proxy();<br>
                        setbflag(7); # flag 7 = RTP proxy<br>
                       } else {<br>
                        # add some record-route cookie to mark that we<br>
        should<br>
               perform<br>
                        # SIP NAT traversal for the caller<br>
                        add_rr_param(&quot;;nat=caller&quot;);<br>
<br>
                        # we have to route the request to the serving<br>
        proxy<br>
                        # write DURI in the header<br>
                        append_hf(&quot;X-DURI: $du&quot;);<br>
                        if(isbflagset(2)){<br>
                            $du = sip:ip.of.proxy.2;transport=udp;<br>
                        } else if(isbflagset(3)){<br>
                            $du = sip:ip.of.proxy.3;transport=udp;<br>
                        } else if(isbflagset(4)){<br>
                            $du = sip:ip.of.proxy.4;transport=udp;<br>
                        }<br>
                       }<br>
                      }<br>
<br>
                      reply_route[1]{<br>
                       if (isbflagset(7) &amp;&amp; has_body(&quot;application/sdp&quot;)) {<br>
                         force_rtp_proxy()<br>
                       }<br>
                       if (isbflagset(8)) {<br>
                         fix_nated_contact()<br>
                       }<br>
                      }<br>
<br>
<br>
<br>
                      Note: this code does not care about the received<br>
        socket<br>
               of the<br>
                      proxy. Thus it works if the proxy listens only<br>
        on one port.<br>
<br>
                      regards<br>
                      klaus<br>
<br>
<br>
                          On each Proxy, I changed the code appropriately<br>
               excluding<br>
                          the Proxy from itself (so it does not forward to<br>
               itself).<br>
                           I&#39;m noticing weird behavior however as it<br>
        seems as if<br>
                          what is happening is it created other issues<br>
        such as:<br>
<br>
                          [INCOMING SERVER] -&gt; P1 -&gt; P2 -&gt; P1 -&gt; (loop?)<br>
<br>
                          Also I setup this test amongst two development<br>
               servers (in<br>
                          which case it worked without issues).  Once I<br>
               included in<br>
                          more development instances into the ring it<br>
        seemed<br>
               as if<br>
                          the flags were being set when they should<br>
        not be?<br>
<br>
                          I.e. I placed a call FROM UA1 (with bflag 5 SET)<br>
               From the<br>
                          above example configuration ^ code.  If you<br>
        notice<br>
               (flag<br>
                          5) is missing.  To UA2 (Flag 3), again this<br>
        looked<br>
               to be<br>
                          doing some strange things such as acting as<br>
        if another<br>
                          flag was set when it should not have been, thus<br>
               forwarding<br>
                          to the wrong proxy or the wrong proxy order.  Do<br>
               you guys<br>
                          have any further thoughts or input on this?<br>
         Thanks!<br>
<br>
                          On Thu, Apr 23, 2009 at 12:31 AM, Klaus Darilion<br>
                          &lt;<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a><br>
        &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a>&gt;<br>
               &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a><br>
        &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a>&gt;&gt;<br>
                          &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a><br>
        &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a>&gt;<br>
               &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a><br>
        &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a>&gt;&gt;&gt;<br>
                          &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a><br>
        &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a>&gt;<br>
               &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a><br>
        &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a>&gt;&gt;<br>
                          &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a><br>
        &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a>&gt;<br>
               &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a><br>
        &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at" target="_blank">klaus.mailinglists@pernau.at</a>&gt;&gt;&gt;&gt;&gt; wrote:<br>
<br>
                             Hi Brandon!<br>
<br>
                             Back to the original email ....<br>
<br>
                             Brandon Armstead schrieb:<br>
<br>
                                 Hello guys,<br>
<br>
                                    Is there a method upon using<br>
               lookup(&quot;location&quot;)<br>
                          to also pull<br>
                                 out the &quot;socket&quot; information for the<br>
        original<br>
                          location the UAC<br>
                                 registered to, for scenarios of this<br>
        example:<br>
<br>
                                 P1 &amp; P2 share same usrloc database.<br>
<br>
                                 UA1 registers to P1<br>
                                 UA2 registers to P2<br>
<br>
                                 UA1 calls UA2<br>
<br>
                                 UA1 invites -&gt; P1 -&gt; INVITES -&gt; UA2<br>
               (bypassing P2<br>
                          -- where the<br>
                                 actual nat binding is).<br>
<br>
                                 Now upon P1 looking up usrloc for UA2, I<br>
               would like<br>
                          to recognize<br>
                                 that P1 is not the Proxy to deliver the<br>
               call, and<br>
                          forward the<br>
                                 request to P2 to send to UA2.<br>
<br>
                                 So currently I have:<br>
<br>
                                 UA1 INVITE -&gt; P1 INVITE -&gt; UA2<br>
<br>
                                 I wish to have:<br>
<br>
                                 UA1 INVITE -&gt; P1 INVITE -&gt; P2 INVITE<br>
        -&gt; UA2<br>
<br>
                                 Is there an easy method to do this?<br>
         I have been<br>
                          looking at the<br>
                                 new nat traversal module it looks<br>
        like it is<br>
               doable<br>
                          with this<br>
                                 (any further input as far as that?).<br>
         Also is it<br>
                          possible with<br>
                                 the classic Nat Helper module?  Any<br>
        input is<br>
                          appreciated, thanks!<br>
<br>
<br>
                             I think the nat_traversal module can not<br>
        help you in<br>
                          this case, nor<br>
                             nathelper.<br>
<br>
                             One possibility would be to spoof at P1<br>
        the IP<br>
               address<br>
                          of P2 -<br>
                             nevertheless this would cause the reply<br>
        sent back to<br>
                          P2, but the<br>
                             transaction is created in P1. (and you<br>
        need to hack<br>
                          Kamailio for IP<br>
                             spoofing).<br>
<br>
                             Another easy solution would be: In P1 set<br>
        a certain<br>
                          branch-flag when<br>
                             the client registers, e.g. bflag 1. In P2<br>
        set a<br>
               certain<br>
                          branch-flag<br>
                             when the client registers, e.g. bflag 2.<br>
<br>
                             Now, if a user is called, just make a<br>
        lookup() and<br>
                          t_relay. Further<br>
                             in the branch_route check if:<br>
                              in P1: isbflagset(2) --&gt; forward to P2<br>
                              in P2: isbflagset(1) --&gt; forward to P1<br>
<br>
                             klaus<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
                                                        ------------------------------------------------------------------------<br>
<br>
                                        _______________________________________________<br>
                                 Kamailio (OpenSER) - Users mailing list<br>
                                 <a href="mailto:Users@lists.kamailio.org" target="_blank">Users@lists.kamailio.org</a><br>
        &lt;mailto:<a href="mailto:Users@lists.kamailio.org" target="_blank">Users@lists.kamailio.org</a>&gt;<br>
               &lt;mailto:<a href="mailto:Users@lists.kamailio.org" target="_blank">Users@lists.kamailio.org</a><br>
        &lt;mailto:<a href="mailto:Users@lists.kamailio.org" target="_blank">Users@lists.kamailio.org</a>&gt;&gt;<br>
                          &lt;mailto:<a href="mailto:Users@lists.kamailio.org" target="_blank">Users@lists.kamailio.org</a><br>
        &lt;mailto:<a href="mailto:Users@lists.kamailio.org" target="_blank">Users@lists.kamailio.org</a>&gt;<br>
               &lt;mailto:<a href="mailto:Users@lists.kamailio.org" target="_blank">Users@lists.kamailio.org</a><br>
        &lt;mailto:<a href="mailto:Users@lists.kamailio.org" target="_blank">Users@lists.kamailio.org</a>&gt;&gt;&gt;<br>
                          &lt;mailto:<a href="mailto:Users@lists.kamailio.org" target="_blank">Users@lists.kamailio.org</a><br>
        &lt;mailto:<a href="mailto:Users@lists.kamailio.org" target="_blank">Users@lists.kamailio.org</a>&gt;<br>
               &lt;mailto:<a href="mailto:Users@lists.kamailio.org" target="_blank">Users@lists.kamailio.org</a><br>
        &lt;mailto:<a href="mailto:Users@lists.kamailio.org" target="_blank">Users@lists.kamailio.org</a>&gt;&gt;<br>
                          &lt;mailto:<a href="mailto:Users@lists.kamailio.org" target="_blank">Users@lists.kamailio.org</a><br>
        &lt;mailto:<a href="mailto:Users@lists.kamailio.org" target="_blank">Users@lists.kamailio.org</a>&gt;<br>
               &lt;mailto:<a href="mailto:Users@lists.kamailio.org" target="_blank">Users@lists.kamailio.org</a><br>
        &lt;mailto:<a href="mailto:Users@lists.kamailio.org" target="_blank">Users@lists.kamailio.org</a>&gt;&gt;&gt;&gt;<br>
<br>
                                                        <a href="http://lists.kamailio.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.kamailio.org/cgi-bin/mailman/listinfo/users</a><br>
                                                        <a href="http://lists.openser-project.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.openser-project.org/cgi-bin/mailman/listinfo/users</a><br>
<br>
<br>
<br>
<br>
                      ------------------------------------------------------------------------<br>
<br>
               _______________________________________________<br>
               Kamailio (OpenSER) - Users mailing list<br>
               <a href="mailto:Users@lists.kamailio.org" target="_blank">Users@lists.kamailio.org</a><br>
        &lt;mailto:<a href="mailto:Users@lists.kamailio.org" target="_blank">Users@lists.kamailio.org</a>&gt;<br>
        &lt;mailto:<a href="mailto:Users@lists.kamailio.org" target="_blank">Users@lists.kamailio.org</a><br>
        &lt;mailto:<a href="mailto:Users@lists.kamailio.org" target="_blank">Users@lists.kamailio.org</a>&gt;&gt;<br>
<br>
               <a href="http://lists.kamailio.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.kamailio.org/cgi-bin/mailman/listinfo/users</a><br>
                      <a href="http://lists.openser-project.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.openser-project.org/cgi-bin/mailman/listinfo/users</a><br>
<br>
<br></div></div><div class="im">
           --    Daniel-Constantin Mierla<br>
           <a href="http://www.asipto.com/" target="_blank">http://www.asipto.com/</a><br>
<br>
<br>
<br>
    --     Daniel-Constantin Mierla<br>
    <a href="http://www.asipto.com/" target="_blank">http://www.asipto.com/</a><br>
<br>
<br>
</div></blockquote><div><div></div><div class="h5">
<br>
-- <br>
Daniel-Constantin Mierla<br>
<a href="http://www.asipto.com/" target="_blank">http://www.asipto.com/</a><br>
<br>
</div></div></blockquote></div><br>