[OpenSIPS-Users] Issue Drouting prefix overlap
Bogdan-Andrei Iancu
bogdan at opensips.org
Wed Mar 6 11:54:12 CET 2013
Hi Mickael,
In this case I would suggest using 2 groups of rules - one for the short
numbers, one for the normal numbers.
First try the short numbers and enforce the matching based on the len of
the number (I guess the premium numbers have some fix len) ; also
consider the L flag (see
http://www.opensips.org/html/docs/modules/1.9.x/drouting.html#id293614).
If this first matching failed -> try in the second group with the long
numbers.
More or less, your approach seems correct, I would say.
Regards,
Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com
On 03/06/2013 12:09 PM, Mickael HUBERT wrote:
> Hi,
> It's not OK for me, look:
>
> If I have:
> +33 366985475 (landline number in France)
>
> and
>
> +33 3669 (premium rate number in France)
>
> In my DB in dr_rules table I have:
>
> INSERT INTO `dr_rules` (`ruleid`, `groupid`, `prefix`, `timerec`,
> `priority`, `routeid`, `gwlist`, `attrs`, `description`) VALUES
> (1, '1', '333', '', 1, '', '#1', NULL, 'all number 3XYZ'),
>
> but landline number match with rule 1.
>
> how to differentiate this two prefixes?
>
> Actualy I've coded:
>
> 560 if(uri=~"^sip:3[0-9]{3}@" || uri=~"^sip:10[0-9]{2}@" ||
> uri=~"^sip:118[0-9]{3}@") *# premium rate number**FRANCE no E164 format*
> 561 {
> 562 if(!do_routing("3"))
> 563 {
> 564 send_reply("503","No Rules matching the URI");
> 565 xlog("L_ERR","$ci No DR_RULES matching the URI for
> DR_GROUP 3\n");
> 566 exit;
> 567 }
> 568 }
> 569 else *# other number E164 format*
> 570 {
> 571 strip(1);
> 572 setflag(29);
> 573
> 574 if(!do_routing("1"))
> 575 {
> 576 send_reply("503","No Rules matching the URI");
> 577 xlog("L_ERR","$ci No DR_RULES matching the URI for
> DR_GROUP 1\n");
> 578 exit;
> 579 }
> 580 }
>
> Should I continue with this code ? I will wish improve this code and
> make it simple ;)
>
>
> Le 05/03/2013 14:07, Bogdan-Andrei Iancu a écrit :
>> Hi Mickael,
>>
>> I guess your overlapping happens because the prefixes are not
>> consistent as format. The 3669 is a France national number and 36xxx
>> is international format.
>>
>> If you want to put those numbers in the same routing group, you
>> should consider having all in the same international format, to avoid
>> collisions :
>> +33 3669
>> +36 xxxx
>>
>> Regards,
>> Bogdan-Andrei Iancu
>> OpenSIPS Founder and Developer
>> http://www.opensips-solutions.com
>>
>> On 03/05/2013 11:25 AM, Mickael HUBERT wrote:
>>> Hi list,
>>> I have a issue in my drouting module.
>>>
>>> In fact I have many prefixes and overlap is not OK to me.
>>>
>>> _Example:_
>>>
>>> Prefix: 3669 (In France is premium rate number, 4 digits is talking
>>> clock service)
>>>
>>> Prefix: 36.... (is prefix hungary)
>>>
>>> In my dr_rule table is:
>>>
>>> /INSERT INTO `dr_rules` (`ruleid`, `groupid`, `prefix`, `timerec`,
>>> `priority`, `routeid`, `gwlist`, `attrs`, `description`) VALUES//
>>> //(1, '1', '3', '', 1, '', '#1', NULL, 'All numbers 3XYZ'),//
>>> //(2, '1', '36', '', 1, '', '#2', NULL, 'Hungary prefixe');/
>>>
>>> If +36 1 398 0344 (to hungary destination), Drouting module choose
>>> id 2 no ?
>>> if 3669 (to clock service), drouting module choose id 2 too ?
>>>
>>> how to differentiate this two prefixes?
>>>
>>> thanks in advance
>>>
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20130306/f28bbac8/attachment-0001.htm>
More information about the Users
mailing list