[SR-Users] LCR, problem with routing (prefix, from_uri, grp_id)

Maciej Bylica mbsip at gazeta.pl
Thu May 13 13:53:46 CEST 2010


>> This occurs because the rules with id=1 and id=3 do match the INVITE
>> so if the first fails (longest matching prefix) the other will be
>> executed. This is how LCR works.
>>
>> Use load_gws() with a pseudo-variable as I recommend you in the other
>> mail so you won't rely on the From URI but on the call origin you have
>> previously analized in the script.
>>
It works :)

In lcr:
+----+-----------+----------------+--------+----------+
| id | prefix    | from_uri       | grp_id | priority |
+----+-----------+----------------+--------+----------+
|  1 | 48        | ^from_sip$ |      1 |        1 |
|  2 | 48        | ^from_pstn$ |      2 |        1 |
+----+-----------+----------------+--------+----------+

gw,
+----+--------------+--------+----------------+----------+------+------------+-----------+-------+------+--------+------+-------+
| id | gw_name      | grp_id | ip_addr        | hostname | port |
uri_scheme | transport | strip | tag  | weight | ping | flags |
+----+--------------+--------+----------------+----------+------+------------+-----------+-------+------+--------+------+-------+
|  1 | CLI48   |      1 | 77.77.77.70 | NULL     | 5060 |       NULL |
    NULL |  NULL | NULL |    150 |    0 |     0 |
|  2 | CLI48backup   |      1 | 77.77.77.71 | NULL     | 5060 |
NULL |      NULL |  NULL | NULL |    150 |    0 |     0 |
|  3 | CLI49  |      1 | 77.77.77.75 | NULL     | 5060 |       NULL |
   NULL |  NULL | NULL |     15 |    0 |     0 |
|  4 | CLI49backup  |      1 | 77.77.77.76 | NULL     | 5060 |
NULL |      NULL |  NULL | NULL |     15 |    0 |     0 |
|  5 | SIPWORLD      |      2 | 88.88.88.88  | NULL     | 5060 |
NULL |      NULL |  NULL | NULL |    250 |    0 |     0 |
+----+--------------+--------+----------------+----------+------+------------+-----------+-------+------+--------+------+-------+

if (allow_source_address("1"))  {
                        $var(origin) = "from_sip";
                                                }
                else if (allow_source_address("2"))  {
                        $var(origin) = "from_pstn";
                                                }
                else                            {
                        sl_send_reply("403", "Forbidden");
                        exit;
where "1" and "2" are MGWs and SIPWORLD ips.
Then load_gws("$var(origin)") is called.


But still one issue remains (only from SIPWORLD ---> Kamailio ---->
MGWs scenario).
As aforementioned i need to inspect calling number and choose proper
MGWs to have the call terminated.
I need to be able to identify calling numbers like 48 (only two
starting digits), 48221112233 (the whole number), and the rest.
Is there any way i can implement this functionality with lcr module?

Thx,
Maciej.



More information about the sr-users mailing list