[Serusers] Problem with nat + forward on busy

Martina piga at netresults.it
Fri Feb 8 13:38:13 CET 2008


Hi,

I have the following problem when using t_relay in a failure route:
- next hop is correctly set but SIP message is forwaded to a wrong IP
address (specifically to the address in request uri)

failure_route[failure] {

if (t_check_status("486|600")) {
        xlog("L_ERR", "LXLOG FAILURE_ROUTE: forward busy\n");
        attr2uri("$tr.forward_busy");
        $tu.uid=$tu.uid_busy;
        route(INBOUND);
        }

}

In route[INBOUND] several actions are performed including lookup_contacts
and NAT_MANGLE

Finally in the route[FORWARD]

if (isflagset(FLAG_FAILUREROUTE)) {
                xlog("L_ERR","LXLOG: FORWARD: failure flag is set");
                append_branch();
                }

        # if this is an INVITE we might try another
        # (forwarding or voicemail) target after receiving an error

        if (method=="INVITE" && !$to_gw){
                xlog("L_ERR","LXLOG: FORWARD: set_failure_route");
                t_on_failure("FAILURE_ROUTE");
                }

        # send it out now; use stateful forwarding as it works reliably
        # even for UDP2TCP
        xlog("L_ERR","L_XLOG <%ru> request uri <%nh> <%ds>");
        if (!t_relay()) {
                sl_reply_error();
                xlog("L_ERR","LXLOG: FORWARD: !t_relay");
                };

        drop;

The LOG IS:
Feb  7 18:32:40 pc005 ser[11574]: LXLOG: FORWARD: set_failure_route
Feb  7 18:32:40 pc005 ser[11574]: LXLOG:  %ru = <sip:103 at 192.168.23.237>
%nh = <sip:100.0.0.2:1037;dstip=100.0.0.1;dstport=5060> %ds = <Contact:
<sip:103 at 192.168.23.237>;q=0, sip:103 at 192.168.23.237>

but when I look at the sent packets using ethereal INVITE message is sent
to 192.168.23.237 instead that 100.0.0.2.

Do you have any suggestion about possible cause of this behaviour?

Thanks in advance

Martina




More information about the sr-users mailing list