[SR-Users] LCR routing, and finaly route to media gateway if not found

Loic Chabert chabert.loic.74 at gmail.com
Fri Sep 23 15:59:20 CEST 2016


Hello List,

I'm finishing my implementation of LCR with kamailio for outgoing calls but
one use case does not work.
Let me explain:
- I have some sbc for one destination. If one destination fail, kamailio
try to second one etc..
- If no SBC is available for this destination (for exemple, all are down),
i want to send my call to an error server (asterisk), play an error sound.

To accomplish this, i re-write the RURI: "sip:error1 at errorserver.local",
and launch RELAY route. But kamailio dont make a DNS query to find IP of
"errorserver.local", only change RURI and try to send to the last LCR
gateway.

I have also try to add a new branch, but same result... Why kamailio do not
make a new DNS query ?













































































*route[RELAY] {        #if (is_method("INVITE")) {        #
if(!t_is_set("failure_route")) t_on_failure("MANAGE_FAILURE");
#}        if (!t_relay()) {                sl_reply_error();
}        exit;}route[NOTFOUND]{        $ru =
"sip:error1 at errorserver.local";        xlog("L_WARN", "[$ci]|$si|Routing
this call to $ru (error server)\n");        append_branch($ru);
route(RELAY);}route[LCR] {        xlog("L_INFO", "[$ci]|$si|Loading
gateways...\n");        if (!load_gws(1)) {                xlog("L_ERR",
"[$ci]|$si|Can't load LCR gateways\n");                sl_send_reply("503",
"Unable to load gateways");                exit;        } else
{                $var(i) = 0;
while(is_avp_set("$(avp(i:709)[$var(i)])")) {
xlog("L_INFO", "[$ci]|$si|This gateway was found:
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",
"[$ci]|$si|Trying gateway ‘$avp(i:709)’\n");                } else
{                        xlog("L_INFO", "[$ci]|$si|No more gateways. Goto
route NOTFOUND...\n");
route(NOTFOUND);                };                # try the first matched
gateway                if (next_gw()) {
xlog("L_INFO", "[$ci]|$si|New request URI built: $ru . Relaying it (and
arming backup destination if needed).");                        # Route to
failure for failover
t_on_failure("lcrfailure");
route(RELAY);                } else {                        xlog("L_INFO",
"[$ci]|$si|No more gateways (after next_gw()). Goto route
NOTFOUND...");                        route(NOTFOUND);
};        };        exit;}failure_route[lcrfailure] {        # the previous
gateway is no good        if (t_check_status("408|50[34]"))
{                xlog("L_WARN", "[$ci]|$si|Entering in entering
failure_route[lcrfailure]. Error code: $T_reply_code \n");
if(is_avp_set("$avp(i:709)")) {                        xlog("L_INFO",
"[$ci]|$si|Trying gateway ‘$avp(i:709)’\n");                } else
{                        xlog("L_ERR", "[$ci]|$si|AVP is not
set\n");                };                if (next_gw())
{                        xlog("L_INFO", "[$ci]|$si|New request URI built:
$ru . Relaying it (and arming backup destination if
needed).");                        # Route to failure for
failover
t_on_failure("lcrfailure");
route(RELAY);                } else {                        xlog("L_INFO",
"[$ci]|$si|No more gateways (after next_gw()). Goto route
NOTFOUND...");                        route(NOTFOUND);
};        exit;        };}*

Many thanks,
Regards.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20160923/ac7533a5/attachment.html>


More information about the sr-users mailing list