[Serusers] routing question

Vitaly Nikolaev vitaly at cifnet.com
Wed Apr 7 20:45:24 CEST 2004



Hello,

I have small problem with dinamic routing.. my config looks like:
(page down)


as u see i have two steps routing.. second exec_dset return me uri of
voicemail or it could be another number. the question is:

how can i do rtp_proxy on second step ? i can not just put
force_rtp_proxy(); in failure_route.. it is not allowed....

Please help



short version:




route {
       if (nat_uac_test("2")) {
                xlog("L_ALERT", "(%ci) src address different than via header->NAT detected");
                force_rport();
                fix_nated_contact();
                setflag(5);
        }
	if(uri==myself) {
		exec_dset("/usr/local/ser/bin/getroute");
		route(1);
	}
}

route [1] {
        xlog("L_ALERT", "(%ci) entering route[1] - relaying SIP message to online user\n");
        if ((isflagset(5)) || (isflagset(6))) {
                xlog("L_ALERT", "(%ci) at least one of the participants is NATed->record_route\n");
                record_route();
                xlog("L_ALERT", "(%ci)      -->setting up reply processing ->onreply_route[1]");
                t_on_reply("1");
                if (method=="INVITE") {
                        xlog("L_ALERT", "(%ci)    INVITE request-->force_rtp_proxy, set NATED-INVITE flag(7)");
                        force_rtp_proxy();
                        append_hf("P-hint: request forced to rtp proxy\r\n");
                        setflag(7);
                };
        };
        t_on_failure("1");

        xlog("L_ALERT", "(%ci) relaying message ...(%tu)");
        if (!t_relay()) {
                xlog("L_ALERT", "(%ci) t_relay error occured\n");
                sl_reply_error();
        };
}


onreply_route[1] {
        xlog("L_ALERT", "(%ci) onreply_route[1] entered\n");
        if ( (status=~"200" || status=~"183") ) {
                xlog("L_ALERT", "(%ci) status 2xx or 183");
                if ( isflagset(7) ) {
                        xlog("L_ALERT", "(%ci) marked(7) as NATED-INVITE -> force_rtp_proxy \n");
                        force_rtp_proxy();
                        append_hf("P-hint: response forced to rtp proxy\r\n");
                };
        };
}


failure_route[3] {
  /* XX: note: unsafe if preloaded routes without username used */
        xlog("L_ALERT", "(%ci) failureroute[1] entered\");

        exec_dset("/usr/local/ser/bin/getroute vm");

        t_on_failure("4");

        xlog("L_ALERT", "(%ci) relaying message ...(%tu)");
        append_branch();
        if (!t_relay()) {
                xlog("L_ALERT", "(%ci) t_relay error occured\n");
#                sl_reply_error();
        };

}




More information about the sr-users mailing list