[Serusers] Please help with LCR

Steve Blair blairs at isc.upenn.edu
Wed Jan 10 14:40:56 CET 2007


Arun:

 This depends a little on your configuration. Generally speaking the 
!load_gws and !next_gw would be in route block 0. You will most likely 
want to do any per-call checks or rewrites before determining which 
gateway should receive the call. The failure_route can be inserted after 
your route blocks.

-Steve

Arun Kumar wrote:
> Hi,
>
> thanks, One more thing can you please guide me where do I've to place 
> this code in my ser.cfg.
>
> thanks
>
> arun
>
> On 1/10/07, *Steve Blair * <blairs at isc.upenn.edu 
> <mailto:blairs at isc.upenn.edu>> wrote:
>
>
>     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>
>     <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>
>     > <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>
>     > <mailto: greger at teigre.com <mailto:greger at teigre.com>>> wrote:
>     >
>     >     A quick search on iptel.org <http://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
>     <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>
>     <mailto: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 <mailto:Serusers at lists.iptel.org>
>     > http://lists.iptel.org/mailman/listinfo/serusers
>     >
>
>



More information about the sr-users mailing list