[SR-Users] LCR routing and From Uri

Alexey Mechanoshin ales999 at gmail.com
Wed Apr 11 08:21:11 CEST 2012


Hello all.

In my config added  LCR routing by this manual:
http://www.amitnepal.com/using-lcr-with-kamailio/  and if added, to
'lcr_rule' table, uri to 'from_uri' column - kamailio always reply 503
- 'No More Gateways' :-( If remove data - routing work. A'm using last
kamailio from git ...
Please help me change my config to working routing by checking 'from_uri' .

Need check routing prefix 5499 only from  IP 192.xxx.xxx.59 , as example.

In Log:
Apr 10 17:01:23 r59vredfs /usr/sbin/kamailio[29582]: INFO: <script>:
New request - M=INVITE RURI=sip:5499 at 192.xxx.xxx.50:5070
F=sip:5491 at 192.xxx.xxx.59 T=sip:5499 at 192.xxx.xxx.50:5070
IP=192.xxx.xxx.59 ID=6c518b61-fd9f-122f-91b7-002655e85348
Apr 10 17:01:23 r59vredfs /usr/sbin/kamailio[29582]: INFO: <script>:
Entering route[LCR] for method: INVITE <sip:5499 at 192.xxx.xxx.50:5070>,
and rU=5499, caller_uri='0'
Apr 10 17:01:23 r59vredfs /usr/sbin/kamailio[29582]: INFO: <script>:
No More Gateways …
Apr 10 17:01:23 r59vredfs /usr/sbin/kamailio[29582]: INFO: <script>:
Send back 503 code …


MySQL data:
mysql> select * from lcr_rule;
+----+--------+--------+----------+---------+---------+
| id | lcr_id | prefix | from_uri | stopper | enabled |
+----+--------+--------+----------+---------+---------+
|  1 |      1 | 5498   |          |       0 |       1 |
|  2 |      1 | 57     | NULL     |       0 |       1 |
|  3 |      1 | 58     | NULL     |       0 |       1 |
|  4 |      1 | 541    | NULL     |       0 |       1 |
|  5 |      1 | 5499   | sip:192.xxx.xxx.59 |       1 |       1 |
+----+--------+--------+----------+---------+---------+
5 rows in set (0.00 sec)

mysql> select * from lcr_gw;
+----+--------+---------+----------------+----------+------+--------+------------+-----------+-------+--------+------+-------+---------+
| id | lcr_id | gw_name | ip_addr        | hostname | port | params |
uri_scheme | transport | strip | prefix | tag  | flags | defunct |
+----+--------+---------+----------------+----------+------+--------+------------+-----------+-------+--------+------+-------+---------+
|  1 |      1 | route1  | 213.xxx.xxx.26 | NULL     | 5060 | NULL   |
        1 |         1 |  NULL |        | NULL |     1 |    NULL |
|  2 |      1 | routemy    | 192.xxx.xxx.59 | NULL     | 5070 | NULL
|          1 |         1 |  NULL | NULL   | NULL |     1 |    NULL |
|  3 |      1 | route1  | 213.xxx.xxx.27 | NULL     | 5060 | NULL   |
        1 |         1 |  NULL | NULL   | NULL |     1 |    NULL |
+----+--------+---------+----------------+----------+------+--------+------------+-----------+-------+--------+------+-------+---------+
3 rows in set (0.00 sec)

mysql> select * from lcr_rule_target;
+----+--------+---------+-------+----------+--------+
| id | lcr_id | rule_id | gw_id | priority | weight |
+----+--------+---------+-------+----------+--------+
|  1 |      1 |       1 |     1 |       10 |      1 |
|  2 |      1 |       2 |     2 |       10 |      1 |
|  3 |      1 |       3 |     2 |       10 |      1 |
|  4 |      1 |       4 |     2 |       10 |      1 |
|  5 |      1 |       5 |     1 |       10 |      1 |
|  6 |      1 |       5 |     3 |       20 |      1 |
+----+--------+---------+-------+----------+--------+
6 rows in set (0.00 sec)

Config:

#!define WITH_LCR
...
#!ifdef  WITH_LCR
loadmodule "avpops.so"
loadmodule "lcr.so"
#!endif
...
#!ifdef  WITH_LCR
modparam("lcr", "db_url",DBURL)
modparam("lcr", "gw_uri_avp", "$avp(i:709)")
modparam("lcr", "ruri_user_avp", "$avp(i:500)")
modparam("lcr", "flags_avp", "$avp(i:712)")
modparam("lcr", "lcr_id_avp", "$avp(s:lcr_id_avp)")
#!endif
...
        # dispatch destinations to PSTN
        route(PSTN);

        # LCR route
        route(LCR);

        # user location service
        #route(LOCATION);
...


# --=== LCR routing ===--
#
route[LCR] {
    xlog("L_INFO","Entering route[LCR] for method: $rm <$ru>, and
rU=$rU, caller_uri='$var(caller_uri)'\n");
#!ifdef  WITH_LCR
###  if (!load_gws(1)) {
### if (!load_gws(1, $rU)) {
  if (!load_gws(1)) {
      sl_send_reply("500", "Server Internal Error - Cannot load gateways");
      exit;
  } else {
    $var(i) = 0;
    while(is_avp_set("$(avp(i:709)[$var(i)])")) {
      xlog("L_INFO", "loading gw_uri_avp[$var(i)]='$(avp(i:709)[$var(i)])'\n");
      $var(i) = $var(i) + 1;
    }
    if(is_avp_set("$avp(i:709)")) {
      xlog("L_INFO", "Trying gateway '$avp(i:709)'\n");
    } else {
      xlog("L_INFO", "No More Gateways …\n");
    }
    # try the first matched gateway
    if (next_gw()) {
      xlog("L_INFO", "ruri_user_avp='$avp(i:500)'\n");
      # Print AVP - for debug
      #avp_print();
      # Route to failure for failover
      route(RELAY);
    } else {
      avp_print();
      xlog("L_INFO", "Send back 503 code …\n");
      sl_send_reply("503", "No available gateways");
      exit;
    }
  }
#!endif
   #sl_send_reply("503", "Service Unavailable");
   #exit;
   return;
}

PS Sorry for my bad English please.


--
"В связи с отсутствием интереса общественности, конец света отменяется" (с) ?
С Уважением, Механошин Алексей



More information about the sr-users mailing list