[OpenSIPS-Users] OpenSIPS and SIP source routing

Labus roman_chel at mail.ru
Tue Apr 20 10:36:45 CEST 2010


Hello there!

 I have a small question: is it possible to route by source SIP-domain?

I have one MS OCS installation and one mediation server, that route calls to
OpenSIPS server. So, I have several SIP-domains on OCS. Every domain have
self PSTN-GW (asterisk) and I need to route outound calls to desired
asterisk GW by source sip.

 I made several attempts, but no luck (sorry my bad english).

/******************My config******************************/

route {

    if (!mf_process_maxfwd_header("10")) {
        xlog("L_NOTICE","Too many hops\n");
        sl_send_reply("483", "Too many hops, forward count exceeded
limit\n");
        exit();
    };

    if (msg:len >= max_len) {
        xlog("L_NOTICE","Message too large, >= 2048 bytes\n");
        sl_send_reply("513", "Message too large, exceeded limit\n");
        exit();
    };

    if (is_method("OPTIONS")) {
        sl_send_reply("200", "ok");
        exit();
    };

    #Routes
#    if (has_totag()) {
            if (src_ip ==A.A.A.A) {             #IP of OCS

#                     route(1); #from OCS

             xlog("L_ERR", "******************* $fu 
************************");
             if (uri =~"sip:.+ at domain1.loc") {
                     sethostport("B.B.B.B:5060");   #Asterisk PSTN gw for
domain1.loc
                     xlog( "L_ERR",
"-----------------------------------------------------\n" );
                     xlog( "L_ERR", "LOG: from uri=[$fu] \n");
                     xlog( "L_ERR", "LOG: request's method=[$rm] \n ");
                     xlog( "L_ERR", "LOG: request's uri=[$ru] \n ");
                     xlog( "L_ERR", "LOG: to uri=[$tu] \n");
                     xlog( "L_ERR", "LOG: ip source=[$src_ip]\n" );
                     xlog( "L_ERR", "LOG: remote uri=[$rU]\n" );
                     xlog( "L_ERR",
"------------------------------------------------------------\n" );
                exit;
             };
             if (uri =~"sip:.+ at domain2.loc") { #Asterisk PSTN-GW for
domain2.loc
                     sethostport("C.C.C.C:5060");
                     xlog( "L_ERR",
"-----------------------------------------------------\n" );
                     xlog( "L_ERR", "LOG: from uri=[$fu] \n");
                     xlog( "L_ERR", "LOG: request's method=[$rm] \n ");
                     xlog( "L_ERR", "LOG: request's uri=[$ru] \n ");
                     xlog( "L_ERR", "LOG: to uri=[$tu] \n");
                     xlog( "L_ERR", "LOG: ip source=[$src_ip]\n" );
                     xlog( "L_ERR", "LOG: remote uri=[$rU]\n" );
                     xlog( "L_ERR",
"------------------------------------------------------------\n" );
               exit;
              };
             if (!t_relay()) {
                         sl_reply_error();
                     exit;
#             };



            } else {
#                       route(2); }; #from Asterisk
             sethostport("A.A.A.A:5060");  #My mediation server IP

    };


    };
}

onreply_route {
    xlog( "L_ERR",
"------------------------------------------------------------\n" );
    xlog( "L_ERR", "LOG: from uri=[$fu] \n , request's method=[$rm] \n ,
request's uri=[$ru] \n ,to uri=[$tu] \n , ip source=[$src_ip]\n" );
    xlog( "L_ERR", "LOG: remote uri=[$rU]\n" );
    xlog( "L_ERR",
"------------------------------------------------------------\n" );
    exit;
}

-- 
View this message in context: http://n2.nabble.com/OpenSIPS-and-SIP-source-routing-tp4930040p4930040.html
Sent from the OpenSIPS - Users mailing list archive at Nabble.com.



More information about the Users mailing list