[OpenSIPS-Users] Problems with goes_to_gw Drouting

Bogdan-Andrei Iancu bogdan at voice-system.ro
Wed Nov 3 14:23:40 CET 2010


Better use the "attr" field in the GW definition - that is the opaque 
string that will be returned in script (via an AVP - see 
http://www.opensips.org/html/docs/modules/1.6.x/drouting.html#id294060) 
when the GW is selected - you can check the value of the AVP for 
whatever purposes.

You can use "attr" to place a token meaning GW is internal or external.

Regards,
Bogdan

Sven Schulz wrote:
> Thanks Bogdan.
> If it only works with IP adrress, then I can accept that. I was just
> confused at first when I had a host name in dr_gateways and the goes_to_gw
> function wasn't acting the way I thought it would.
>
> Here's my reason for checking goes_to_gw after do_routing...
>
> I have a number of gateways in the dr-gateways table that are on my internal
> network and also on external network. The ones on the external network can
> only be reached through a SBC. So I use the "type" field in dr_gateways to
> handle this. If a gateway is type 1, just t_relay it normally. If it is a
> type 2 then t-relay through my SBC... t_relay("IP of SBC").
>
> Does my method above seem "correct"? Or is there a more elegant way to
> handle this?
>
>
> On 11/3/10 5:36 AM, "Bogdan-Andrei Iancu" <bogdan at voice-system.ro> wrote:
>
>   
>> Got it - it looks like the problem is that  goes_to_gw() checks IP
>> versus IP - the IP from RURI versus the IPs of the GWs.........But in
>> your case the RURI does not have an IP in the RURI, but a name, so the
>> function fails without doing any kind of checks.
>>
>> goes_to_gw() was mainly designed for checking the destination of the
>> sequential requests where IPs are involved.
>>
>> May I ask why do you call goes_to_gw() after do_routing() ? I mean,
>> after do_routing() it is pretty sure the call will go to a gw.
>>
>> Regards,
>> Bogdan
>>
>>
>> Sven Schulz wrote:
>>     
>>> After hitting do_routing, the RURI contains the DNS name of the selected gw.
>>> Because I have the DNS name entered in dr_gateways. If I change the DNS name
>>> in dr_gateways to the correct IP, the goes_to_gw function works.
>>>
>>>
>>> On 11/2/10 8:34 AM, "Bogdan-Andrei Iancu" <bogdan at voice-system.ro> wrote:
>>>
>>>   
>>>       
>>>> and when calling goes_to_gw(), what the current RURI contains: the IP or
>>>> the name ?
>>>>
>>>> Bogdan
>>>>
>>>> Sven Schulz wrote:
>>>>     
>>>>         
>>>>> Yes that is the correct IP. But the IP address works fine, its the DNS name
>>>>> shown in the output below that doesn't work in goes_to_gw.
>>>>>
>>>>>
>>>>> On 11/2/10 5:21 AM, "Bogdan-Andrei Iancu" <bogdan at voice-system.ro> wrote:
>>>>>
>>>>>   
>>>>>       
>>>>>           
>>>>>> Hi Sven,
>>>>>>
>>>>>> So the IP 146.186.136.146 is the correct one you are trying to detect
>>>>>> via goes_to_gw() and does not work? If so, I can provide you a small
>>>>>> patch for extra debugging to doublechecks the checks in goes_to_gw()
>>>>>>
>>>>>> Regards,
>>>>>> Bogdan
>>>>>>
>>>>>> Sven Schulz wrote:
>>>>>>     
>>>>>>         
>>>>>>             
>>>>>>> Yes I believe Im seeing it resolve when I reload drouting:
>>>>>>>
>>>>>>> Oct 29 13:22:14 testsipcore1 /sbin/opensips[9313]: DBG:core:get_record:
>>>>>>> lookup(sbcma.sip.psu.edu, 35) failed
>>>>>>> Oct 29 13:22:14 testsipcore1 /sbin/opensips[9313]:
>>>>>>> DBG:core:sip_resolvehost:
>>>>>>> no valid NAPTR record found for sbcma.sip.psu.edu, trying direct SRV
>>>>>>> lookup... 
>>>>>>> Oct 29 13:22:14 testsipcore1 /sbin/opensips[9313]: DBG:core:get_record:
>>>>>>> lookup(_sip._udp.sbcma.sip.psu.edu, 33) failed
>>>>>>> Oct 29 13:22:14 testsipcore1 /sbin/opensips[9313]:
>>>>>>> DBG:core:sip_resolvehost:
>>>>>>> no valid SRV record found for _sip._udp.sbcma.sip.psu.edu, trying A
>>>>>>> record
>>>>>>> lookup... 
>>>>>>> Oct 29 13:22:14 testsipcore1 /sbin/opensips[9313]: DBG:drouting:add_dst:
>>>>>>> first gw ip addr [146.186.136.146]
>>>>>>>
>>>>>>> BTW, reloading drouting with 30,000+ routes and debug=6 takes a little
>>>>>>> while
>>>>>>> :)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 10/29/10 11:58 AM, "Bogdan-Andrei Iancu" <bogdan at voice-system.ro>
>>>>>>> wrote:
>>>>>>>
>>>>>>>   
>>>>>>>       
>>>>>>>           
>>>>>>>               
>>>>>>>> Hi Sven,
>>>>>>>>
>>>>>>>> and it debug=6 do you see in the logs the messages I mentioned ?
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> Bogdan
>>>>>>>>
>>>>>>>> Sven Schulz wrote:
>>>>>>>>     
>>>>>>>>         
>>>>>>>>            
>>>>>>>>                 
>>>>>>>>> HI Bogden,
>>>>>>>>>
>>>>>>>>> I thought this param was enabled by default? But I set it anyways and
>>>>>>>>> it
>>>>>>>>> doesn't make a difference.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 10/23/10 6:57 AM, "Bogdan-Andrei Iancu" <bogdan at voice-system.ro>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>   
>>>>>>>>>       
>>>>>>>>>           
>>>>>>>>>           
>>>>>>>>>                   
>>>>>>>>>> Hi Steven,
>>>>>>>>>>
>>>>>>>>>> do you have enabled the "force_dns" param:
>>>>>>>>>> http://www.opensips.org/html/docs/modules/1.6.x/drouting.html#id294469
>>>>>>>>>> ?
>>>>>>>>>>
>>>>>>>>>> in latest SVN 1.6.3, in debug mode, you should see some messages (at
>>>>>>>>>> startup) like :
>>>>>>>>>> first gw ip addr [xxxxx]
>>>>>>>>>> additional gw ip addr [xxxx]
>>>>>>>>>>
>>>>>>>>>> indicating the DNS resolving of GWs defined by names.
>>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>> Bogdan
>>>>>>>>>>
>>>>>>>>>> Sven Schulz wrote:
>>>>>>>>>>     
>>>>>>>>>>         
>>>>>>>>>>          
>>>>>>>>>>          
>>>>>>>>>>                     
>>>>>>>>>>> Using opensips 1.6.3 SVN # 7282
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> I noticed that if I have a gateway defined in the dr_gateways tables
>>>>>>>>>>> as a hostname, the goes_to_gw function never works (it gets skipped).
>>>>>>>>>>> But if I change that hostname to an IP address, the function works
>>>>>>>>>>> properly. Is this how its supposed to function or is it a bug?
>>>>>>>>>>>
>>>>>>>>>>> do_routing()
>>>>>>>>>>> if (goes_to_gw("2")) {
>>>>>>>>>>> xlog ("the GW type is 2");
>>>>>>>>>>> setflag(10);
>>>>>>>>>>> route(4);
>>>>>>>>>>> exit;
>>>>>>>>>>> }
>>>>>>>>>>>
>>>>>>>>>>> For example, the above code only works if the gateway is defined as
>>>>>>>>>>> ³10.1.1.5² not ³test.something.com². The gw type field is always set
>>>>>>>>>>> to ³2².
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>         
>>>>>>>>>>>                       
>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>   


-- 
Bogdan-Andrei Iancu
OpenSIPS Bootcamp
15 - 19 November 2010, Edison, New Jersey, USA
www.voice-system.ro




More information about the Users mailing list