[OpenSIPS-Users] Routing Based on $si and $Ri

Trevor Steyn trevor at webon.co.za
Wed Aug 5 12:40:09 CEST 2015


Thanks Bogdan,

You have been a great help this is way better and cleaner way than what
i was going towards.

And thanks for the great project.

Regards
Trevor Steyn


On 05/08/2015 12:17, Bogdan-Andrei Iancu wrote:
> Hi Trevor,
>
> The proper (as syntax) way of doing the lookup should be:
>
> dp_translate("1","$si_$Ri/$var(out)",$avp(foo))
>
> Also, instead of using the attr, you can use directly the repl_exp to
> return some value.
>
> In terms of processing and unpacking the returned value, better use
> transformations. And to really simplify things, use ';' as separator
> rather than ',' (to have a string similar to a list of parameters:
>
> attrs: route=2;forced_socket=41.213.100.200
>
>
> $var(my_route) = $(avp(foo){param.value,route});
>
> See:
>     http://www.opensips.org/Documentation/Script-Tran-2-1#toc52
>
> Regards,
>
> Bogdan-Andrei Iancu
> OpenSIPS Founder and Developer
> http://www.opensips-solutions.com
>
> On 05.08.2015 12:44, Trevor Steyn wrote:
>> Ho Bogdan,
>>
>> Thanks for this just want to make sure i am doing this the right way
>>
>> So im my thinking i have the following tables in dialplan
>>
>> *************************** 1. row ***************************
>>           id: 6
>>         dpid: 1
>>           pr: 1
>>     match_op: 0
>>    match_exp: 196.2.97.165_41.213.100.100
>> match_flags: 0
>>    subst_exp:
>>     repl_exp:
>>      timerec:
>>     disabled: 0
>>        attrs: route=2,forced_socket=41.213.100.200
>> *************************** 2. row ***************************
>>           id: 4
>>         dpid: 1
>>           pr: 1
>>     match_op: 0
>>    match_exp: 196.2.97.165_41.213.100.200
>> match_flags: 0
>>    subst_exp:
>>     repl_exp: \2
>>      timerec:
>>     disabled: 0
>>        attrs: route=1,forced_socket=41.213.100.100
>>
>>
>> In my script I will have something like this
>>
>> if (dp_translate("1",/$si+"_"+$Ri,$avp(foo)) {
>>      Do some routing
>> }
>>
>> Is this the way you envisioned doing this, Also what is the correct way
>> to to get seperate AVP's for the attributes column i have not been able
>> to find the answer to this i currently manually get the attributes avp
>>
>> Lets say my attributes column has the following
>> route="1";somethingelse="random"
>>
>> I currently get the route by using avp_subst like so
>> avp_subst("$avp(foo)/$avp(string_custom_route)/",
>> '/.*Route=[^"]*"([^"]*).*/\1/');
>>
>> then i use ///$avp(string_custom_route)/ to route the call, I feel like
>> this is not good practice if you could guide me here i would
>> appreciate it
>> as i have tried finding examples with no avail.
>>
>> Regards
>> Trevor Steyn
>>    /
>> On 05/08/2015 09:50, Bogdan-Andrei Iancu wrote:
>>> Hi Trevor,
>>>
>>> Why not using the dialplan module which allows you do operate with
>>> custom data, it does regexp search and caching too.
>>>
>>> Regards,
>>> Bogdan-Andrei Iancu
>>> OpenSIPS Founder and Developer
>>> http://www.opensips-solutions.com
>>> On 04.08.2015 21:32, Trevor Steyn wrote:
>>>> Hi All,
>>>>
>>>> I would like to be able to route calls based on Source IP and
>>>> Destination IP (always one of opensips IPs), As usual there are many
>>>> ways to skin a cat,
>>>> My first thought was to have a table such as the address table but
>>>> modify the IP field to a concatenation of $si and $RI
>>>>
>>>> so you would have a table like this
>>>>
>>>>
>>>> *************************** 1. row ***************************
>>>>            id: 6
>>>>           grp: 1
>>>>            ip: 196.2.97.165_41.213.100.100
>>>>          mask: 32
>>>>          port: 0
>>>>         proto: udp
>>>>       pattern:
>>>> context_info: Route=2;Forced_Socket=41.213.100.200
>>>>
>>>> So in the route script i would do something like this
>>>>
>>>> /check_cource_address("1",$si+"_"+$Ri) /
>>>>
>>>> Obviously i cannot just do this with the permissions module as it
>>>> wont accept this in the IP field as it expects a valid IP,
>>>> So before i go down that road i was wondering if anyone knows an out
>>>> of the box way i can do this without impacting performance, I could
>>>> easily use avp_ops for this but as far as i can see  it does a db
>>>> query for every transaction, this is not something that needs to be
>>>> called for every new sip transaction it should be loaded into memory
>>>> at startup.
>>>>
>>>> Your thoughts would be appreciated I would just like to be pointed in
>>>> the right (Best possible way to do this) direction.
>>>>
>>>> Regards
>>>> Trevor Steyn
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Users mailing list
>>>> Users at lists.opensips.org
>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>




More information about the Users mailing list