[OpenSIPS-Users] Problems with goes_to_gw Drouting
Sven Schulz
svens at psu.edu
Thu Nov 4 21:23:39 CET 2010
Hi Bogdan,
I tried your method instead, and it works great with either hostname or IP.
Thank you,
Sven
On 11/3/10 9:23 AM, "Bogdan-Andrei Iancu" <bogdan at voice-system.ro> wrote:
> 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#id2944
>>>>>>>>>>> 69
>>>>>>>>>>> ?
>>>>>>>>>>>
>>>>>>>>>>> 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
>>
>>
>
More information about the Users
mailing list