[Serusers] Please help with LCR

Steve Blair blairs at isc.upenn.edu
Wed Jan 10 13:58:42 CET 2007


Arun:

 I would try something like the following:

       if (!load_gws()) {
          sl_send_reply("500", "Server Internal Error - Cannot load 
gateways");
          break;
       } else {
          xlog("L_INFO", "\n[SER]: - [$Tf] Method: <$rm> R-uri: <$ru> 
From: <$fu>
            To <$tu>  : Successfully Loaded Gateway List\n");
       };

       ......

       if (!next_gw()) {
         t_reply("503", "Service not available - No more gateways");
         break;
       } else {
         t_on_failure("2");  <--- This will be where you load the next 
gateway
         t_relay();
         break;
       };

      failure_route[2] {

       if (!next_gw()) {
          xlog("L_CRIT","No more gateways for <$tu>\n");
          t_reply("503", "Service not available - No more gateways");
          break;
       } else {
          t_on_failure("2");
          t_relay();
          break;
       }
     }

-Steve

Arun Kumar wrote:
> Hi
>
> thanks for your prompt reply but I've already checked and I'm not able 
> to make my lcr working by seeing these two pages I got this conf but
>
> This config is sending the call to my first gateway but when My first 
> gateway is down its not sending the calls to other gateways. Plese 
> help me to make this working.  Here is my config file.
>
> ------------------------
>   debug=3
>   fork=no
>   log_stderror=yes
>
>   listen= 192.168.2.210 <http://192.168.2.210/>     # INSERT YOUR IP 
> ADDRESS HERE
>   port=5060
>   children=4
>
>   dns=no
>   rev_dns=no
>   fifo="/tmp/ser_fifo"
>   fifo_db_url="mysql://ser:pass@localhost/ser"
>
> loadmodule "/usr/local/lib/ser/modules
> /mysql.so"
> loadmodule "/usr/local/lib/ser/modules/sl.so"
> loadmodule "/usr/local/lib/ser/modules/tm.so"
> loadmodule "/usr/local/lib/ser/modules/rr.so"
> loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
> loadmodule "/usr/local/lib/ser/modules/usrloc.so"
> loadmodule "/usr/local/lib/ser/modules/registrar.so"
> loadmodule "/usr/local/lib/ser/modules/auth.so"
> loadmodule "/usr/local/lib/ser/modules/auth_db.so"
> loadmodule "/usr/local/lib/ser/modules/uri.so"
> loadmodule "/usr/local/lib/ser/modules/uri_db.so"
> loadmodule "/usr/local/lib/ser/modules/domain.so"
> loadmodule "/usr/local/lib/ser/modules/nathelper.so"
> loadmodule "/usr/local/lib/ser/modules/avpops.so"
> loadmodule "/usr/local/lib/ser/modules/textops.so"
> loadmodule "/usr/local/lib/ser/modules/mediaproxy.so"
> loadmodule "/usr/local/lib/ser/modules/permissions.so"
> loadmodule "/usr/local/lib/ser/modules/acc.so"
> loadmodule "/usr/local/lib/ser/modules/auth_radius.so"
> loadmodule "/usr/local/lib/ser/modules/lcr.so"
>
>
>   modparam("auth_db|permissions|uri_db|usrloc|domain", "db_url",  " 
> mysql://ser:pass@localhost/ser")
>   modparam("auth_db", "calculate_ha1", 1)
>   modparam("auth_db", "password_column", "password")
>   modparam("nathelper", "rtpproxy_disable", 1)
>   modparam("nathelper", "natping_interval", 0)
>
>   modparam("mediaproxy","natping_interval", 30)
>   modparam("mediaproxy","mediaproxy_socket", "/var/run/mediaproxy.sock")
> #  
> modparam("mediaproxy","sip_asymmetrics","/usr/local/etc/ser/sip-clients")
> #  
> modparam("mediaproxy","rtp_asymmetrics","/usr/local/etc/ser/rtp-clients")
>
>   modparam("usrloc", "db_mode", 2)
>
>   modparam("registrar", "nat_flag", 6)
>
>   modparam("rr", "enable_full_lr", 1)
>
>   modparam("tm", "fr_inv_timer", 120)
>   modparam("tm", "fr_inv_timer_avp", "inv_timeout")
>
>   modparam("permissions", "db_mode", 1)
>   modparam("permissions", "trusted_table", "trusted")
>
>  modparam("lcr","db_url", "mysql://ser:pass@localhost/ser")
>  modparam("lcr","gw_table","gw")
>  modparam("lcr","gw_name_column","gw_name")
>  modparam("lcr","ip_addr_column","ip_addr")
>  modparam("lcr","port_column","port")
>  modparam("lcr","grp_id_column","grp_id")
>  modparam("lcr","lcr_table","lcr")
>  modparam("lcr","prefix_column","prefix")
>  modparam("lcr","from_uri_column","from_uri")
>  modparam("lcr","priority_column","priority")
>  modparam("lcr","contact_avp","1401")
>  modparam("lcr","fr_inv_timer_avp","fr_inv_timer_avp")
>  modparam("lcr","fr_inv_timer",90)
>  modparam("lcr","fr_inv_timer_next",60)
> # ------ Account and Radius modules--------------
> modparam("acc", "db_url", " mysql://ser:pass@localhost/ser")
>
> modparam("acc","log_level",1)
> modparam("acc","log_flag",1)
> modparam("acc", "db_flag", 1)
>
> modparam("acc","radius_flag",1)
> modparam("acc","service_type",15)
> #modparam("acc","radius_config","/usr/local/etc/radiusclient-ng/radiusclient.conf")
>
>
>   route {
>
>     # -----------------------------------------------------------------
>     # Sanity Check Section
>     # -----------------------------------------------------------------
>     if (!mf_process_maxfwd_header("10")) {
>       sl_send_reply("483", "Too Many Hops");
>       break;
>     };
>
>     if (msg:len > max_len) {
>       sl_send_reply("513", "Message Overflow");
>       break;
>     };
>
>     # -----------------------------------------------------------------
>     # Record Route Section
>     # -----------------------------------------------------------------
>     if (method=="INVITE" && client_nat_test("3")) { # setflag(1);
>       # INSERT YOUR IP ADDRESS HERE
>       record_route_preset("192.168.2.210:5060 
> <http://192.168.2.210:5060/>;nat=yes");
>     } else if (method!="REGISTER") {
>       record_route();
>     };
>     # -----------------------------------------------------------------
>     # Call Tear Down Section
>     # -----------------------------------------------------------------
>     if (method=="BYE" || method=="CANCEL") {  setflag(1);
>      end_media_session();
>     };
>
>     # -----------------------------------------------------------------
>     # Loose Route Section
>     # -----------------------------------------------------------------
>     if (loose_route()) {
>
>       if ((method=="INVITE" || method=="REFER") && !has_totag()) {
>         sl_send_reply("403", "Forbidden Cant cross 1st bridge");
>         break;
>       };
>
>       if (method=="INVITE") {
>
>         if (!allow_trusted()) {
>
>           if (!proxy_authorize("","subscriber")) {
>             proxy_challenge("","0");
>             break;
>           } else if (!check_from()) {
>             sl_send_reply("403", "Use From=ID");
>             break;
>           };
>
>           consume_credentials();
>         };
>
>         if (client_nat_test("3")||search("^Route:.*;nat=yes")){
>           setflag(6);
>           use_media_proxy();
>         };
>       };
>
>       route(1);
>       break;
>   };
>   # -----------------------------------------------------------------
>   # Call Type Processing Section
>   # -----------------------------------------------------------------
>   if (!is_uri_host_local()) {
>     if (is_from_local() || allow_trusted()) {
>         sl_send_reply("404", "I am trusted host, ");
>       route(4);
>       route(1);
>     } else {
>       sl_send_reply("403", "Forbidden, I am here");
>     };
>     break;
>   };
>
>   if (method=="ACK") {  setflag(1);
>     route(1);
>     break;
>   } if (method=="CANCEL") {  setflag(1);
>     route(1);
>     break;
>   } else if (method=="INVITE") {  setflag(1);
> #    sl_send_reply("410", "I am sending your call, ");
>     route(3);
>     break;
>   } else  if (method=="REGISTER") {
>     route(2);
>     break;
>   };
>
>   lookup("aliases");
>   if (!is_uri_host_local()) {
>     route(4);
>     route(1);
>     break;
>   };
>
>   if (!lookup("location")) {
>     sl_send_reply("404", "User Not Found");
>     break;
>   };
>
>   route(1);
> }
>
> route[1] {
>
>   # -----------------------------------------------------------------
>   # Default Message Handler
>   # -----------------------------------------------------------------
>
>   t_on_reply("1");
>
>   if (!t_relay()) {
>
>     if (method=="INVITE" || method=="ACK") {  setflag(1);
>       end_media_session();
>     };
>
>     sl_reply_error();
>   };
> }
>
> route[2] {
>
>   # -----------------------------------------------------------------
>   # REGISTER Message Handler
>   # -----------------------------------------------------------------
>
>   sl_send_reply("100", "Trying");
>
>   if (!search("^Contact:[ ]*\*") && client_nat_test("7")) {
>     setflag(6);
>     fix_nated_register();
>     force_rport();
>   };
>
>   if (!www_authorize("","subscriber")) {
>     www_challenge("","0");
>     break;
>   };
>   if (!check_to()) {
>     sl_send_reply("401", "Unauthorized");
>     break;
>   };
>
>   consume_credentials();
>
>   if (!save("location")) {
>     sl_reply_error();
>   };
> }
>
> route[3] {
>
>   # -----------------------------------------------------------------
>   # INVITE Message Handler
>   # -----------------------------------------------------------------
>
>   if (client_nat_test("3")) {
>     setflag(7);
>     force_rport();
>     fix_nated_contact();
>   };
>
>   if (!allow_trusted()) {
>
>     if (!proxy_authorize("","subscriber")) {
>       proxy_challenge("","0");
>       break;
>     } else if (!check_from()) {
>       sl_send_reply("403", "Use From=ID");
>       break;
>     };
>
>     consume_credentials();
>   };
>
> route(4);
>
> if(!load_gws()){
>    sl_send_reply("500", "Internal server error, unable to load gateways");
>  break;
>  }
>  if(!next_gw()){
>    sl_send_reply("503", "Service not available, no gateways found");
>  break;
>  };
>
>   if (!is_uri_host_local()) {
>     route(4);
>     route(1);
>     break;
>   };
>
>
> #  route(1);
> }
>
> route[4] {
>
>   # -----------------------------------------------------------------
>   # NAT Traversal Section
>   # -----------------------------------------------------------------
>
>   if (isflagset(6) || isflagset(7)) {
>     if (!isflagset(8)) {
>       setflag(8);
>       use_media_proxy();
>     };
>   };
> }
>
> onreply_route[1] {
>
>   if ((isflagset(6) || isflagset(7)) &&
>       (status=~"(180)|(183)|2[0-9][0-9]")) {
>
>     if (!search("^Content-Length:[ ]*0")) {
>       use_media_proxy();
>     };
>   };
>
>   if (client_nat_test("1")) {
>     fix_nated_contact();
>   };
> }
>
>
> thanks very much
>
> arun
>
> On 1/10/07, * Greger V. Teigre* <greger at teigre.com 
> <mailto:greger at teigre.com>> wrote:
>
>     A quick search on iptel.org <http://iptel.org> would have given
>     you these:
>     http://www.iptel.org/lcr_module_drop_in_for_0_9_x
>     http://www.iptel.org/lcr_with_mysql_accounting
>
>
>     Arun Kumar wrote:
>>     Hi
>>
>>     please help with LCR can some one show his lcr config file
>>     please. I'm not able to make it working.
>>
>>     please help
>>
>>     thanks
>>     arun
>>     ------------------------------------------------------------------------
>>
>>     _______________________________________________
>>     Serusers mailing list
>>     Serusers at lists.iptel.org <mailto:Serusers at lists.iptel.org>
>>     http://lists.iptel.org/mailman/listinfo/serusers
>>       
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Serusers mailing list
> Serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
>   



More information about the sr-users mailing list