[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