Hi again,<br><br>I have made several changes to the script so that I can successfully add, for instance, a custom header to the INVITE request that the b2bua generates after receiving an external one. I&#39;m doing it in a local_route block which is the supposed way to process an outgoing INVITE request that is going to be sent by the b2bua module, right?<br>

<br>but.. I&#39;m not being able to set the destination of such INVITE to the place I want. I have tried the following:<br><ul><li>ds_select_dst() function: it works in the main route block, but it cannot be used in a local_route block.</li>

<li>modifying $du variable. I can successfully modify this variable, but it has no effect on where the INVITE is being sent to.</li><li>rewriteuri() function: same result as modifying $du variable.<br></li></ul>I need that outgoing INVITE to be sent to a specific host and port, but I do not see how to modify the current behaviour which is that the INVITE is being sent to the public ip address of the opensips server, which in turn generates a loop as that INVITE is processed by the b2bua and a new INVITE is sent out to that same address again.<br>

<br><br>Regards,<br>David<br><br><div class="gmail_quote">On Thu, Oct 14, 2010 at 9:08 AM, Anca Vamanu <span dir="ltr">&lt;<a href="mailto:anca@opensips.org">anca@opensips.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

Hi David,<br>
<br>
The dispatcher is working right - just that if you use b2bua it doesn&#39;t<br>
have no effect as it does not use the newly set $du. Since it is sent<br>
again to your opensips you can do a filter after the source address of<br>
the message and do processing needed for the Invite going out if the<br>
source is itself.<br>
<br>
if (!has_totag() &amp;&amp; is_method(&quot;INVITE&quot;) &amp;&amp; !(src_ip==&quot;MY_IP&quot; &amp;&amp;<br>
src_port==&quot;MY_PORT&quot;)) {<br>
<div class="im">     b2b_init_request(&quot;top hiding&quot;);<br>
     exit;<br>
}<br>
</div>....<br>
the rest of the changes needed.<br>
<br>
Anyhow, I should add using the $du as the outbound proxy for the newly<br>
generated request on the features to implement list.<br>
<br>
Regards,<br>
<font color="#888888">Anca<br>
</font><div><div></div><div class="h5"><br>
<br>
On 10/13/2010 12:19 PM, David Santiago wrote:<br>
&gt; I&#39;ll check it later, but the fact is that I have to solve first the<br>
&gt; problem that prevents the INVITEs generated by OpenSIPs to be sent to<br>
&gt; the internal jain slee server.<br>
&gt;<br>
&gt; I have confirmed that after the call to ds_select(), the value of $du<br>
&gt; points to such server (which has been obtained from the<br>
&gt; /opt/opensipsnotls/etc/opensips/dispatcher.list file), but the INVITEs<br>
&gt; are not sent there, but to the public IP address of the OpenSIPs<br>
&gt; server. Without the b2bua &quot;setup&quot;, the dispatcher has been working<br>
&gt; fine in other tests I&#39;ve made...<br>
&gt;<br>
&gt;<br>
&gt; Regards,<br>
&gt; David<br>
&gt;<br>
&gt; On Tue, Oct 12, 2010 at 11:22 AM, Anca Vamanu&lt;<a href="mailto:anca@opensips.org">anca@opensips.org</a>&gt;  wrote:<br>
&gt;<br>
&gt;&gt; Hi David,<br>
&gt;&gt;<br>
&gt;&gt; The only thing that won&#39;t work as you like is the append_hf - it won&#39;t<br>
&gt;&gt; work as you like since the b2bua module won&#39;t see that header. You need<br>
&gt;&gt; to do that for the new request generated by the b2bua and put that code<br>
&gt;&gt; in the local_route.<br>
&gt;&gt;<br>
&gt;&gt; Regards,<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; Anca Vamanu<br>
&gt;&gt; <a href="http://www.voice-system.ro" target="_blank">www.voice-system.ro</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On 10/11/2010 01:48 PM, David Santiago wrote:<br>
&gt;&gt;<br>
&gt;&gt;&gt; Hi all,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; After cleaning up the initialization problems in the b2bua related<br>
&gt;&gt;&gt; modules I&#39;m testing a configuration I want to use in order to enable<br>
&gt;&gt;&gt; the &quot;top hiding&quot; scenario, plus using the dispatcher module so I can<br>
&gt;&gt;&gt; configure the internal jain slee server that receives the requests<br>
&gt;&gt;&gt; from the opensips proxy, like this:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; VOIP PROVIDER&lt;-------&gt;      OPENSIPS&lt;-------&gt;    INTERNAL JAIN SLEE SERVER<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I will write here the configuration I&#39;m using, taken from the<br>
&gt;&gt;&gt; configuration example available, that results in the INVITEs received<br>
&gt;&gt;&gt; from the VOIP PROVIDER being sent by OPENSIPS to itself (to its public<br>
&gt;&gt;&gt; address, in particular), ad infinitum.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; The modparam(&quot;dispatcher&quot;, &quot;list_file&quot;,<br>
&gt;&gt;&gt; &quot;/opt/opensipsnotls/etc/opensips/dispatcher.list&quot;) entry points to the<br>
&gt;&gt;&gt; file required by the dispatcher module to determine the ip and port<br>
&gt;&gt;&gt; where the internal jain slee server is running. Furthermore, our<br>
&gt;&gt;&gt; service implementation requires the addition of the<br>
&gt;&gt;&gt; P-Preferred-Service header, which is done with append_hf().<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Any hint would be appreciated. Thanks in advance!<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; # Debugging mode:<br>
&gt;&gt;&gt; debug=9<br>
&gt;&gt;&gt; memlog=6<br>
&gt;&gt;&gt; fork=yes<br>
&gt;&gt;&gt; auto_aliases=no<br>
&gt;&gt;&gt; log_stderror=no<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; disable_dns_blacklist=yes<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; listen=<a href="http://10.122.54.163:5060" target="_blank">10.122.54.163:5060</a> # private opensips ip<br>
&gt;&gt;&gt; # alias=OSIPS_REALM<br>
&gt;&gt;&gt; #port=OSIPS_PORT<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; sip_warning=0<br>
&gt;&gt;&gt; #server_header=&quot;SRV_SIGNATURE&quot;<br>
&gt;&gt;&gt; #user_agent_header=&quot;PP_USER_AGENT&quot;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; #mhomed=yes<br>
&gt;&gt;&gt; #memlog=2<br>
&gt;&gt;&gt; check_via=no<br>
&gt;&gt;&gt; dns=off<br>
&gt;&gt;&gt; rev_dns=off<br>
&gt;&gt;&gt; children=8<br>
&gt;&gt;&gt; disable_tcp=yes<br>
&gt;&gt;&gt; log_facility=LOG_LOCAL0<br>
&gt;&gt;&gt; # for more info: opensips -h<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; # ------------------ module loading ----------------------------------<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; mpath=&quot;/opt/opensipsnotls/lib/opensips/modules/&quot;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; #loadmodule &quot;db_mysql.so&quot;<br>
&gt;&gt;&gt; #loadmodule &quot;xlog.so&quot;<br>
&gt;&gt;&gt; loadmodule &quot;textops.so&quot;<br>
&gt;&gt;&gt; loadmodule &quot;maxfwd.so&quot;<br>
&gt;&gt;&gt; loadmodule &quot;rr.so&quot;<br>
&gt;&gt;&gt; loadmodule &quot;sl.so&quot;<br>
&gt;&gt;&gt; loadmodule &quot;tm.so&quot;<br>
&gt;&gt;&gt; loadmodule &quot;signaling.so&quot;<br>
&gt;&gt;&gt; loadmodule &quot;b2b_entities.so&quot;<br>
&gt;&gt;&gt; loadmodule &quot;b2b_logic.so&quot;<br>
&gt;&gt;&gt; loadmodule &quot;usrloc.so&quot;<br>
&gt;&gt;&gt; loadmodule &quot;registrar.so&quot;<br>
&gt;&gt;&gt; loadmodule &quot;mi_fifo.so&quot;<br>
&gt;&gt;&gt; loadmodule &quot;dispatcher.so&quot;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; # ----------------- setting module-specific parameters ---------------<br>
&gt;&gt;&gt; modparam(&quot;mi_fifo&quot;, &quot;fifo_name&quot;, &quot;/tmp/opensips_fifo&quot;)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; #modparam(&quot;usrloc&quot;, &quot;db_url&quot;, &quot;mysql://opensips:opensipsrw@localhost/opensips&quot;)<br>
&gt;&gt;&gt; #modparam(&quot;usrloc&quot;, &quot;db_mode&quot;, 2)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; modparam(&quot;tm&quot;, &quot;pass_provisional_replies&quot;, 1)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; modparam(&quot;dispatcher&quot;, &quot;list_file&quot;,<br>
&gt;&gt;&gt; &quot;/opt/opensipsnotls/etc/opensips/dispatcher.list&quot;)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; modparam(&quot;b2b_entities&quot;, &quot;server_address&quot;,<br>
&gt;&gt;&gt; &quot;sip:MY_OPENSIPS_PUBLIC_IP_GOES_HERE:5060&quot;)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; #modparam(&quot;b2b_logic&quot;, &quot;script_scenario&quot;,<br>
&gt;&gt;&gt; &quot;/home/anca/work/opensips/modules/b2b_logic/scenario_script.xml&quot;)<br>
&gt;&gt;&gt; #modparam(&quot;b2b_logic&quot;, &quot;extern_scenario&quot;,<br>
&gt;&gt;&gt; &quot;/home/anca/work/opensips/modules/b2b_logic/scenario_extern.xml&quot;)<br>
&gt;&gt;&gt; modparam(&quot;b2b_entities&quot;, &quot;script_req_route&quot;, &quot;b2b_request&quot;)<br>
&gt;&gt;&gt; modparam(&quot;b2b_entities&quot;, &quot;script_reply_route&quot;, &quot;b2b_reply&quot;)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; route[b2b_request] {<br>
&gt;&gt;&gt;     xlog(&quot;b2b_request ($ci)\n&quot;);<br>
&gt;&gt;&gt; }<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; route[b2b_reply] {<br>
&gt;&gt;&gt;     xlog(&quot;b2b_reply ($ci)\n&quot;);<br>
&gt;&gt;&gt; }<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; route {<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;     xlog(&quot;mozaa - Here we go...&quot;);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;     if (!mf_process_maxfwd_header(&quot;10&quot;)) {<br>
&gt;&gt;&gt;       sl_send_reply(&quot;483&quot;,&quot;Too Many Hops&quot;);<br>
&gt;&gt;&gt;       exit;<br>
&gt;&gt;&gt;     };<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;     if (msg:len&gt;= 2380 ) {<br>
&gt;&gt;&gt;       sl_send_reply(&quot;513&quot;, &quot;Message too big&quot;);<br>
&gt;&gt;&gt;       exit;<br>
&gt;&gt;&gt;     };<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;     if (!method==&quot;REGISTER&quot;)<br>
&gt;&gt;&gt;       record_route();<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;     # subsequent messages withing a dialog should take the<br>
&gt;&gt;&gt;     # path determined by record-routing<br>
&gt;&gt;&gt;     if (loose_route()) {<br>
&gt;&gt;&gt;       # mark routing logic in request<br>
&gt;&gt;&gt;       append_hf(&quot;P-hint: rr-enforced\r\n&quot;);<br>
&gt;&gt;&gt;       route(1);<br>
&gt;&gt;&gt;     };<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;     if(is_method(&quot;INVITE&quot;)&amp;&amp;      /* only for Invite messages from bob*/<br>
&gt;&gt;&gt;             !(src_ip == &quot;10.122.54.163&quot;&amp;&amp;    src_port ==5060)) /* skip<br>
&gt;&gt;&gt; Invite messages generated by the server*/<br>
&gt;&gt;&gt;     {<br>
&gt;&gt;&gt;       # DO NOT call t_newtran() on this request -&gt;    it will result in the<br>
&gt;&gt;&gt; transaction never being deleted<br>
&gt;&gt;&gt;       ##b2b_init_request(&quot;prepaid&quot;, &quot;<a href="http://sip:320@opensips.org:5070" target="_blank">sip:320@opensips.org:5070</a>&quot;,<br>
&gt;&gt;&gt; &quot;<a href="http://sip:321@opensips.org:5070" target="_blank">sip:321@opensips.org:5070</a>&quot;);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;       xlog(&quot;mozaa ft - [$ft]&quot;);<br>
&gt;&gt;&gt;       xlog(&quot;mozaa fu - [$fu]&quot;);<br>
&gt;&gt;&gt;       xlog(&quot;mozaa tt - [$tt]&quot;);<br>
&gt;&gt;&gt;       xlog(&quot;mozaa tu - [$tu]&quot;);<br>
&gt;&gt;&gt;       xlog(&quot;mozaa du - [$du]&quot;);<br>
&gt;&gt;&gt;       xlog(&quot;mozaa si - [$si]&quot;);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;       $var(to) = $tu;<br>
&gt;&gt;&gt;       $var(to) = $(var(to){s.substr,4,0});<br>
&gt;&gt;&gt;       $var(to) = $(var(to){s.select,0,@});<br>
&gt;&gt;&gt;       $var(proxy_public_addr) = $(var(to){s.select,1,@});<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;       xlog(&quot;mozaa to - [$var(to)]&quot;);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;       xlog(&quot;mozaa contact - $hdr(Contact)&quot;);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;       $var(from) = $fu;<br>
&gt;&gt;&gt;       $var(from) = $(var(from){s.substr,4,0});<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;       if($var(to)==&quot;THE_NUMBER_REGISTERED_IN_MY_VOIP_PROVIDER_GOES_HERE&quot;) {<br>
&gt;&gt;&gt;                       xlog(&quot;mozaa x - SPAIN&quot;);<br>
&gt;&gt;&gt;                       if (<br>
&gt;&gt;&gt; subst(&#39;/^From:(.*)sip:[^@]*@[a-zA-Z0-9.]+(.*)$/From:\1sip:34$var(from)\2/ig&#39;)<br>
&gt;&gt;&gt; ) {<br>
&gt;&gt;&gt;                                  xlog(&quot;mozaa from modified!&quot;);<br>
&gt;&gt;&gt;                       };<br>
&gt;&gt;&gt;                       append_hf(&quot;P-Preferred-Service: OneService\r\n&quot;);<br>
&gt;&gt;&gt;               } else {<br>
&gt;&gt;&gt;                       xlog(&quot;mozaa x - USA&quot;);<br>
&gt;&gt;&gt;                       append_hf(&quot;P-Preferred-Service: AnotherService\r\n&quot;);<br>
&gt;&gt;&gt;               }<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;           ds_select_dst(&quot;1&quot;, &quot;0&quot;);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;           xlog(&quot;mozaa - Launching top hiding scenario for du = $du&quot;);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;       b2b_init_request(&quot;top hiding&quot;);<br>
&gt;&gt;&gt;       exit;<br>
&gt;&gt;&gt;     };<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;     if (!uri==myself) {<br>
&gt;&gt;&gt;       # mark routing logic in request<br>
&gt;&gt;&gt;       append_hf(&quot;P-hint: outbound\r\n&quot;);<br>
&gt;&gt;&gt;       route(1);<br>
&gt;&gt;&gt;     };<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;     if (uri==myself) {<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;       if (method==&quot;REGISTER&quot;) {<br>
&gt;&gt;&gt;         save(&quot;location&quot;);<br>
&gt;&gt;&gt;         exit;<br>
&gt;&gt;&gt;       };<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;       # native SIP destinations are handled using our USRLOC DB<br>
&gt;&gt;&gt;       if (!lookup(&quot;location&quot;)) {<br>
&gt;&gt;&gt;         sl_send_reply(&quot;404&quot;, &quot;Not Found&quot;);<br>
&gt;&gt;&gt;         exit;<br>
&gt;&gt;&gt;       };<br>
&gt;&gt;&gt;       append_hf(&quot;P-hint: usrloc applied\r\n&quot;);<br>
&gt;&gt;&gt;     };<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;     route(1);<br>
&gt;&gt;&gt; }<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; route[1] {<br>
&gt;&gt;&gt;     # send it out now; use stateful forwarding as it works reliably<br>
&gt;&gt;&gt;     # even for UDP2TCP<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;     if (!t_relay()) {<br>
&gt;&gt;&gt;       sl_reply_error();<br>
&gt;&gt;&gt;     };<br>
&gt;&gt;&gt;     exit;<br>
&gt;&gt;&gt; }<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; Users mailing list<br>
&gt;&gt;&gt; <a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a><br>
&gt;&gt;&gt; <a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Users mailing list<br>
&gt;&gt; <a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a><br>
&gt;&gt; <a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt; _______________________________________________<br>
&gt; Users mailing list<br>
&gt; <a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a><br>
&gt; <a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
&gt;<br>
&gt;<br>
<br>
<br>
</div></div>--<br>
<div class="im">Anca Vamanu<br>
<a href="http://www.voice-system.ro" target="_blank">www.voice-system.ro</a><br>
<br>
<br>
</div><div><div></div><div class="h5">_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a><br>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
</div></div></blockquote></div><br>