[Serusers] PSTN

Nicky nicky at caliber.com.sg
Tue Nov 30 15:57:56 CET 2004


I have downloaded the patches that you provide the link to me, but still
cannot, please advice.

regards,
nicky...

----- Original Message ----- 
From: "Greger V. Teigre" <greger at teigre.com>
To: "Nicky" <nicky at caliber.com.sg>
Cc: <serusers at lists.iptel.org>
Sent: Tuesday, November 30, 2004 10:31 PM
Subject: Re: [Serusers] PSTN


> That's because you have to patch rtpproxy with the patch I attached
> before -i will be available.
>
> However:
>         # forward to current uri now; use stateful forwarding; that
>         # works reliably even if we forward from TCP to UDP
>         if (!t_relay()) {
>                 sl_reply_error();
>                 break;
>         };
>  t_on_reply("1");
>
> t_on_reply must be BEFORE t_relay, so the above has no effect. Your
handling
> of INVITEs:
>  if (method=="INVITE") {
>   log(1,"LOG:INVITE \n");
>   #record_route();
>   setflag(1);
>   setflag(2);
>   force_rtp_proxy();
>   t_on_reply("1");
>  };
>
> Here you call t_on_reply, but you need to call t_on_reply for all methods,
> not only INVITE.
>
> Finally:
>
>       if (uri=~"sip:99[0-9]+ at IP_Address") {
>          rewritehostport("IP:5060");
>          t_relay_to_udp("IP","5060");
>          break;
>       };
>
> If you want calls that go to this host to also be handled by the proxy,
you
> need t_on_reply before the above section.
>
> You should look at the example configs in nathelper source directory or
> berlios cvs.  Make sure that the execution path of your script is the same
> as the example.  Better still: Start with the example and build you config
> around it...
> g-)
>
> Nicky wrote:
> > Hi Geger,
> >
> > I have tried your method on the rtpproxy is saying that -i command is
> > not found.
> > I am running rtpproxy in the same system as ser. I have attached my
> > ser.cfg file....
> > Please help....
> >
> > Regards,
> > Nicky
> > ----- Original Message -----
> > From: "Greger V. Teigre" <greger at teigre.com>
> > To: "Nicky" <nicky at caliber.com.sg>
> > Cc: <serusers at lists.iptel.org>
> > Sent: Tuesday, November 30, 2004 9:56 PM
> > Subject: Re: [Serusers] PSTN
> >
> >
> >> Nicky,
> >> I'm not sure I understand your setup and problem, but I assume you
> >> run rtpproxy in bridge mode?   Could you please describe your setup
> >> and post your config file?
> >> A blind shot based on the ser.cfg in this thread:  t_on_reply("1");
> >> should be called before any t_relay.
> >> g-)
> >>
> >> Nicky wrote:
> >>> Hi Geger,
> >>>
> >>> Thank you for your reply. My rtpproxy is not behind NAT. how can I
> >>> make the c=IP4 not to be rewritten by the nathelper?
> >>> I do my rtpproxy commands like this :~ rtpproxy -2fv -l public_ip
> >>> public_ip....is this correct?
> >>>
> >>> Regards,
> >>> Nicky
> >>> ----- Original Message -----
> >>> From: "Greger V. Teigre" <greger at teigre.com>
> >>> To: "Nicky" <nicky at caliber.com.sg>; "Kapil Dhawan"
> >>> <sersavvy at hotmail.com>; <zeus.ng at isquare.com.au>
> >>> Cc: <serusers at lists.iptel.org>
> >>> Sent: Tuesday, November 30, 2004 8:40 PM
> >>> Subject: Re: [Serusers] PSTN
> >>>
> >>>
> >>>> Nicky,
> >>>> You have your rtp proxy behind a NAT?  If so, no wonders you have
> >>>> problems making the RTP streams flow.
> >>>>     The IP address in the c=IP4 is rewritten by nathelper, but it
> >>>> is received from the rtpproxy.  I attach a small patch that adds -i
> >>>> parameter to rtpproxy where you can define your public IP address
> >>>> of rtpproxy: rtpproxy -l internal_address -i public_ip.
> >>>>     It is against the cvs version at
> >>>> http://cvs.berlios.de/cgi-bin/viewcvs.cgi/ser/rtpproxy/
> >>>>
> >>>> Hope it helps,
> >>>> Greger
> >>>>
> >>>> Nicky wrote:
> >>>>> Hi ,
> >>>>>
> >>>>> i am facing the same problem, can advice where you add the
> >>>>> t_on_reply("1") to make the PSTN have audio.
> >>>>> I have another problem I want to send public address instead of
> >>>>> NAT address in the c=IP4 function in the SDP message, anyone done
> >>>>> this before, i am a newbie I am problem in trying to code it.
> >>>>> Please help. Thanks in advance.....
> >>>>>
> >>>>> Regards,
> >>>>> nicky
> >>>>> ----- Original Message -----
> >>>>> From: "Kapil Dhawan" <sersavvy at hotmail.com>
> >>>>> To: <zeus.ng at isquare.com.au>
> >>>>> Cc: <serusers at lists.iptel.org>
> >>>>> Sent: Wednesday, June 02, 2004 12:19 PM
> >>>>> Subject: RE: [Serusers] PSTN
> >>>>>
> >>>>>
> >>>>> exactly...you are right...i was skipping it somehow and now
> >>>>> working ok....
> >>>>>
> >>>>>
> >>>>>> From: "Zeus Ng" <zeus.ng at isquare.com.au>
> >>>>>> To: "Kapil Dhawan" <sersavvy at hotmail.com>
> >>>>>> CC: serusers at lists.iptel.org
> >>>>>> Subject: RE: [Serusers] PSTN
> >>>>>> Date: Wed, 2 Jun 2004 11:42:07 +1000 (EST)
> >>>>>>
> >>>>>> You should do the t_on_reply("1") for PSTN call as well. I hope
> >>>>>> the other thread you mentioned about solving the problem is what
> >>>>>> I said here.
> >>>>>>
> >>>>>> Zeus
> >>>>>>
> >>>>>>> Hi List
> >>>>>>>
> >>>>>>> I am still unable to solve this issue why the my NAT user is
> >>>>>>> unable to hear
> >>>>>>> when he makes a PSTn call..
> >>>>>>>
> >>>>>>> # ----------- global configuration parameters
> >>>>>>> ------------------------
> >>>>>>>
> >>>>>>> debug=8         # debug level (cmd line: -dddddddddd)
> >>>>>>> fork=yes
> >>>>>>> log_stderror=yes # (cmd line: -E)
> >>>>>>>
> >>>>>>> check_via=no # (cmd. line: -v)
> >>>>>>> dns=no           # (cmd. line: -r)
> >>>>>>> rev_dns=no      # (cmd. line: -R)
> >>>>>>> port=5060
> >>>>>>> children=4
> >>>>>>> fifo="/tmp/ser_fifo"
> >>>>>>>
> >>>>>>> # ------------------ module loading
> >>>>>>> ----------------------------------
> >>>>>>>
> >>>>>>> # Uncomment this if you want to use SQL database
> >>>>>>> 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/textops.so"
> >>>>>>>
> >>>>>>> # Uncomment this if you want digest authentication
> >>>>>>> # mysql.so must be loaded !
> >>>>>>> loadmodule "/usr/local/lib/ser/modules/auth.so"
> >>>>>>> loadmodule "/usr/local/lib/ser/modules/auth_db.so"
> >>>>>>>
> >>>>>>> # !! Nathelper
> >>>>>>> loadmodule "/usr/local/lib/ser/modules/nathelper.so"
> >>>>>>>
> >>>>>>> # !! Accounting
> >>>>>>> loadmodule "/usr/local/lib/ser/modules/acc.so"
> >>>>>>>
> >>>>>>> # ----------------- setting module-specific parameters
> >>>>>>> ---------------
> >>>>>>>
> >>>>>>> # -- usrloc params --
> >>>>>>>
> >>>>>>> #modparam("usrloc", "db_mode",   0)
> >>>>>>>
> >>>>>>> # Uncomment this if you want to use SQL database
> >>>>>>> # for persistent storage and comment the previous line
> >>>>>>> modparam("usrloc", "db_mode", 2)
> >>>>>>>
> >>>>>>> # -- auth params --
> >>>>>>> # Uncomment if you are using auth module
> >>>>>>> #
> >>>>>>> modparam("auth_db", "calculate_ha1", yes)
> >>>>>>> #
> >>>>>>> # If you set "calculate_ha1" parameter to yes (which true in
> >>>>>>> this config), # uncomment also the following parameter)
> >>>>>>> #
> >>>>>>> modparam("auth_db", "password_column", "password")
> >>>>>>>
> >>>>>>> # -- rr params --
> >>>>>>> # add value to ;lr param to make some broken UAs happy
> >>>>>>> modparam("rr", "enable_full_lr", 1)
> >>>>>>>
> >>>>>>> # !! Nathelper
> >>>>>>> # -- nathelper params --
> >>>>>>> modparam("registrar", "nat_flag", 6)
> >>>>>>> modparam("nathelper", "natping_interval", 30) # Ping interval
> >>>>>>> 30 s modparam("nathelper", "ping_nated_only", 1)   # Ping only
> >>>>>>> clients behind NAT
> >>>>>>>
> >>>>>>> # !! Accounting
> >>>>>>> # -- acc params --
> >>>>>>> # set the reporting log level
> >>>>>>> modparam("acc", "log_level", 2)   # Set log_level to 2
> >>>>>>> # number of flag, which will be used for accounting; if a
> >>>>>>> message is # labeled with this flag, its completion status will
> >>>>>>> be reported modparam("acc", "log_flag", 1 )
> >>>>>>> modparam("acc", "log_missed_flag", 2)
> >>>>>>> modparam("acc", "failed_transactions", 1)
> >>>>>>> modparam("acc", "report_cancels", 1)
> >>>>>>> modparam("acc", "db_url", "mysql://ser:heslo@localhost/ser")
> >>>>>>> modparam("acc", "db_flag", 1)
> >>>>>>> modparam("acc", "db_missed_flag", 2)
> >>>>>>>
> >>>>>>> # -------------------------  request routing logic
> >>>>>>> -------------------
> >>>>>>>
> >>>>>>> # main routing logic
> >>>>>>>
> >>>>>>> route{
> >>>>>>>
> >>>>>>> # initial sanity checks -- messages with
> >>>>>>> # max_forwards==0, or excessively long requests
> >>>>>>> if (!mf_process_maxfwd_header("10")) {
> >>>>>>> sl_send_reply("483","Too Many Hops");
> >>>>>>> break;
> >>>>>>> };
> >>>>>>> if (msg:len >=  max_len ) {
> >>>>>>> sl_send_reply("513", "Message too big");
> >>>>>>> break;
> >>>>>>> };
> >>>>>>>
> >>>>>>>         # !! Nathelper
> >>>>>>> # Special handling for NATed clients; first, NAT test is
> >>>>>>> # executed: it looks for via!=received and RFC1918 addresses
> >>>>>>> # in Contact (may fail if line-folding is used); also,
> >>>>>>> # the received test should, if completed, should check all
> >>>>>>> # vias for rpesence of received
> >>>>>>> if (nat_uac_test("3")) {
> >>>>>>> # Allow RR-ed requests, as these may indicate that
> >>>>>>> # a NAT-enabled proxy takes care of it; unless it is
> >>>>>>> # a REGISTER
> >>>>>>>
> >>>>>>> if (method == "REGISTER" || ! search("^Record-Route:")) {
> >>>>>>>     log("LOG: Someone trying to register from private IP,
> >>>>>>> rewriting\n");
> >>>>>>>
> >>>>>>>     # This will work only for user agents that support symmetric
> >>>>>>>     # communication. We tested quite many of them and majority
> >>>>>>>     is # smart enough to be symmetric. In some phones it takes a
> >>>>>>> configuration
> >>>>>>>     # option. With Cisco 7960, it is called NAT_Enable=Yes, with
> >>>>>>> kphone it
> >>>>>>> is
> >>>>>>>     # called "symmetric media" and "symmetric signalling".
> >>>>>>>
> >>>>>>>     fix_nated_contact(); # Rewrite contact with source IP of
> >>>>>>>     signalling if (method == "INVITE") {
> >>>>>>>         fix_nated_sdp("1"); # Add direction=active to SDP
> >>>>>>>     };
> >>>>>>>     force_rport(); # Add rport parameter to topmost Via
> >>>>>>>     setflag(6);    # Mark as NATed
> >>>>>>> };
> >>>>>>> };
> >>>>>>>
> >>>>>>>         # labeled all transaction for accounting
> >>>>>>>         setflag(1);
> >>>>>>>         setflag(2);
> >>>>>>>
> >>>>>>> # we record-route all messages -- to make sure that
> >>>>>>> # subsequent messages will go through our proxy; that's
> >>>>>>> # particularly good if upstream and downstream entities
> >>>>>>> # use different transport protocol
> >>>>>>> if (!method=="REGISTER") record_route();
> >>>>>>>
> >>>>>>> # subsequent messages withing a dialog should take the
> >>>>>>> # path determined by record-routing
> >>>>>>> if (loose_route()) {
> >>>>>>> # mark routing logic in request
> >>>>>>> append_hf("P-hint: rr-enforced\r\n");
> >>>>>>> route(1);
> >>>>>>> break;
> >>>>>>> };
> >>>>>>>
> >>>>>>> if (!uri==myself) {
> >>>>>>> # mark routing logic in request
> >>>>>>> append_hf("P-hint: outbound\r\n");
> >>>>>>> route(1);
> >>>>>>> break;
> >>>>>>> };
> >>>>>>>
> >>>>>>> # if the request is for other domain use UsrLoc
> >>>>>>> # (in case, it does not work, use the following command
> >>>>>>> # with proper names and addresses in it)
> >>>>>>> if (uri==myself) {
> >>>>>>>
> >>>>>>> if (method=="REGISTER") {
> >>>>>>>
> >>>>>>> # Uncomment this if you want to use digest authentication
> >>>>>>> if (!www_authorize("1.1.1.1","subscriber")) {
> >>>>>>> www_challenge("1.1.1.1", "0");
> >>>>>>> break;
> >>>>>>> };
> >>>>>>>
> >>>>>>> save("location");
> >>>>>>> break;
> >>>>>>> };
> >>>>>>>
> >>>>>>> if(uri=~"^sip:00*"){
> >>>>>>>                         append_hf("P-hint: PSTN call\r\n");
> >>>>>>> route(1);
> >>>>>>> break;
> >>>>>>> };
> >>>>>>>
> >>>>>>> lookup("aliases");
> >>>>>>> if (!uri==myself) {
> >>>>>>> append_hf("P-hint: outbound alias\r\n");
> >>>>>>> route(1);
> >>>>>>> break;
> >>>>>>> };
> >>>>>>>
> >>>>>>> # native SIP destinations are handled using our USRLOC DB
> >>>>>>> if (!lookup("location")) {
> >>>>>>> sl_send_reply("404", "Not Found");
> >>>>>>> break;
> >>>>>>> };
> >>>>>>> };
> >>>>>>> append_hf("P-hint: usrloc applied\r\n");
> >>>>>>> route(1);
> >>>>>>> }
> >>>>>>>
> >>>>>>> route[1]
> >>>>>>> {
> >>>>>>> # !! Nathelper
> >>>>>>> if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)"
> >>>>>>> && !search("^Route:")){
> >>>>>>>     sl_send_reply("479", "We don't forward to private IP
> >>>>>>>     addresses"); break;
> >>>>>>>         };
> >>>>>>>
> >>>>>>> # if client or server know to be behind a NAT, enable relay
> >>>>>>> if (isflagset(6)) {
> >>>>>>>     force_rtp_proxy();
> >>>>>>> };
> >>>>>>>
> >>>>>>> if(uri=~"^sip:00*"){
> >>>>>>>                 rewritehost("2.2.2.2");
> >>>>>>>                 t_relay_to_udp("2.2.2.2","5060");
> >>>>>>>                 break;
> >>>>>>> };
> >>>>>>>
> >>>>>>> # NAT processing of replies; apply to all transactions (for
> >>>>>>> example, # re-INVITEs from public to private UA are hard to
> >>>>>>> identify as # NATed at the moment of request processing); look
> >>>>>>> at replies t_on_reply("1");
> >>>>>>>
> >>>>>>> # send it out now; use stateful forwarding as it works reliably
> >>>>>>> # even for UDP2TCP
> >>>>>>> if (!t_relay()) {
> >>>>>>> sl_reply_error();
> >>>>>>> };
> >>>>>>> }
> >>>>>>>
> >>>>>>> # !! Nathelper
> >>>>>>> onreply_route[1] {
> >>>>>>>     # NATed transaction ?
> >>>>>>>     if (isflagset(6) && status =~ "(183)|2[0-9][0-9]") {
> >>>>>>>         fix_nated_contact();
> >>>>>>> force_rtp_proxy();
> >>>>>>>     # otherwise, is it a transaction behind a NAT and we did not
> >>>>>>>     # know at time of request processing ? (RFC1918 contacts)
> >>>>>>>     } else if (nat_uac_test("1")) {
> >>>>>>>         fix_nated_contact();
> >>>>>>>     };
> >>>>>>> }
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>> From: "Kapil Dhawan" <sersavvy at hotmail.com>
> >>>>>>>> To: sersavvy at hotmail.com
> >>>>>>>> CC: serusers at lists.iptel.org
> >>>>>>>> Subject: RE: [Serusers] PSTN
> >>>>>>>> Date: Tue, 01 Jun 2004 05:02:54 +0000
> >>>>>>>>
> >>>>>>>> Hi my second part is done...i have used t_relay_to_udp rather
> >>>>>>>> than forward
> >>>>>>>> for pstn calls and now logs are coming....for pstn as well
> >>>>>>>>
> >>>>>>>> but first is till not done.
> >>>>>>>>
> >>>>>>>>> From: "Kapil Dhawan" <sersavvy at hotmail.com>
> >>>>>>>>> To: serusers at lists.iptel.org
> >>>>>>>>> Subject: [Serusers] PSTN
> >>>>>>>>> Date: Tue, 01 Jun 2004 00:59:07 +0000
> >>>>>>>>>
> >>>>>>>>> Hi List
> >>>>>>>>>
> >>>>>>>>> I am running rtpproxy and nathelper which is fine for me...but
> >>>>>>>>> when i
> >>>>>>>> transfer all calls starting with 00 to my SIP gateway...then
> >>>>>>>> person calling
> >>>>>>>> from public IP is able to hear properly the pstn call and
> >>>>>>>> person calling behind NAT can not hear but the pstn callee can
> >>>>>>>> hear that behind NAT guy...
> >>>>>>>>>
> >>>>>>>>> and second is i am storing logs in acc table...there is i
> >>>>>>>>> make a
> >>>>>>>> SIP-SIP
> >>>>>>>> call, i get proper logs but if i make PSTN call whether from
> >>>>>>>> public or private IP, i only get BYE record..
> >>>>>>>>>
> >>>>>>>>> below is my ser.cfg
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> #
> >>>>>>>>> # $Id: nathelper.cfg,v 1.1.2.1 2003/11/24 14:47:18 janakj Exp
> >>>>>>>>> $ #
> >>>>>>>>> # simple quick-start config script including nathelper support
> >>>>>>>>>
> >>>>>>>>> # This default script includes nathelper support. To make it
> >>>>>>>>> work # you will also have to install Maxim's RTP proxy. The
> >>>>>>>>> proxy is enforced # if one of the parties is behind a NAT.
> >>>>>>>>> #
> >>>>>>>>> # If you have an endpoing in the public internet which is
> >>>>>>>>> known to # support symmetric RTP (Cisco PSTN gateway or
> >>>>>>>>> voicemail, for example), # then you don't have to force RTP
> >>>>>>>>> proxy. If you don't want to enforce # RTP proxy for some
> >>>>>>>>> destinations than simply use t_relay() instead of # route(1)
> >>>>>>>>> #
> >>>>>>>>> # Sections marked with !! Nathelper contain modifications for
> >>>>>>>>> nathelper #
> >>>>>>>>> # NOTE !! This config is EXPERIMENTAL !
> >>>>>>>>> #
> >>>>>>>>> # ----------- global configuration parameters
> >>>>>>>>> ------------------------
> >>>>>>>>>
> >>>>>>>>> debug=8         # debug level (cmd line: -dddddddddd)
> >>>>>>>>> fork=yes
> >>>>>>>>> log_stderror=yes # (cmd line: -E)
> >>>>>>>>>
> >>>>>>>>> /* Uncomment these lines to enter debugging mode
> >>>>>>>>> fork=no
> >>>>>>>>> log_stderror=yes
> >>>>>>>>> */
> >>>>>>>>>
> >>>>>>>>> check_via=no # (cmd. line: -v)
> >>>>>>>>> dns=no           # (cmd. line: -r)
> >>>>>>>>> rev_dns=no      # (cmd. line: -R)
> >>>>>>>>> port=5060
> >>>>>>>>> children=4
> >>>>>>>>> fifo="/tmp/ser_fifo"
> >>>>>>>>>
> >>>>>>>>> # ------------------ module loading
> >>>>>>>>> ----------------------------------
> >>>>>>>>>
> >>>>>>>>> # Uncomment this if you want to use SQL database
> >>>>>>>>> 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/textops.so"
> >>>>>>>>>
> >>>>>>>>> # Uncomment this if you want digest authentication
> >>>>>>>>> # mysql.so must be loaded !
> >>>>>>>>> loadmodule "/usr/local/lib/ser/modules/auth.so"
> >>>>>>>>> loadmodule "/usr/local/lib/ser/modules/auth_db.so"
> >>>>>>>>>
> >>>>>>>>> # !! Nathelper
> >>>>>>>>> loadmodule "/usr/local/lib/ser/modules/nathelper.so"
> >>>>>>>>>
> >>>>>>>>> # !! Accounting
> >>>>>>>>> loadmodule "/usr/local/lib/ser/modules/acc.so"
> >>>>>>>>>
> >>>>>>>>> # !! Voicemail And Conference
> >>>>>>>>> loadmodule "/usr/local/lib/ser/modules/vm.so"
> >>>>>>>>>
> >>>>>>>>> # ----------------- setting module-specific parameters
> >>>>>>>>> ---------------
> >>>>>>>>>
> >>>>>>>>> # -- usrloc params --
> >>>>>>>>>
> >>>>>>>>> #modparam("usrloc", "db_mode",   0)
> >>>>>>>>>
> >>>>>>>>> # Uncomment this if you want to use SQL database
> >>>>>>>>> # for persistent storage and comment the previous line
> >>>>>>>>> modparam("usrloc", "db_mode", 2)
> >>>>>>>>>
> >>>>>>>>> # -- auth params --
> >>>>>>>>> # Uncomment if you are using auth module
> >>>>>>>>> #
> >>>>>>>>> modparam("auth_db", "calculate_ha1", yes)
> >>>>>>>>> #
> >>>>>>>>> # If you set "calculate_ha1" parameter to yes (which true in
> >>>>>>>>> this config), # uncomment also the following parameter)
> >>>>>>>>> #
> >>>>>>>>> modparam("auth_db", "password_column", "password")
> >>>>>>>>>
> >>>>>>>>> # -- rr params --
> >>>>>>>>> # add value to ;lr param to make some broken UAs happy
> >>>>>>>>> modparam("rr", "enable_full_lr", 1)
> >>>>>>>>>
> >>>>>>>>> # !! Nathelper
> >>>>>>>>> # -- nathelper params --
> >>>>>>>>> modparam("registrar", "nat_flag", 6)
> >>>>>>>>> modparam("nathelper", "natping_interval", 30) # Ping interval
> >>>>>>>>> 30 s modparam("nathelper", "ping_nated_only", 1)   # Ping only
> >>>>>>>>> clients
> >>>>>>>> behind
> >>>>>>>> NAT
> >>>>>>>>>
> >>>>>>>>> # !! Accounting
> >>>>>>>>> # -- acc params --
> >>>>>>>>> # set the reporting log level
> >>>>>>>>> modparam("acc", "log_level", 2)   # Set log_level to 2
> >>>>>>>>> # number of flag, which will be used for accounting; if a
> >>>>>>>>> message is # labeled with this flag, its completion status
> >>>>>>>>> will be reported modparam("acc", "log_flag", 1 )
> >>>>>>>>> modparam("acc", "log_missed_flag", 2)
> >>>>>>>>> modparam("acc", "failed_transactions", 1)
> >>>>>>>>> modparam("acc", "report_cancels", 1)
> >>>>>>>>> modparam("acc", "db_url", "mysql://ser:heslo@localhost/ser")
> >>>>>>>>> modparam("acc", "db_flag", 1)
> >>>>>>>>> modparam("acc", "db_missed_flag", 2)
> >>>>>>>>>
> >>>>>>>>> # !! Transaction
> >>>>>>>>> # -- tm params --
> >>>>>>>>> modparam("tm", "fr_inv_timer", 200)
> >>>>>>>>>
> >>>>>>>>> # -------------------------  request routing logic
> >>>>>>>>> -------------------
> >>>>>>>>>
> >>>>>>>>> # main routing logic
> >>>>>>>>>
> >>>>>>>>> route{
> >>>>>>>>>
> >>>>>>>>> # initial sanity checks -- messages with
> >>>>>>>>> # max_forwards==0, or excessively long requests
> >>>>>>>>> if (!mf_process_maxfwd_header("10")) {
> >>>>>>>>> sl_send_reply("483","Too Many Hops");
> >>>>>>>>> break;
> >>>>>>>>> };
> >>>>>>>>> if (msg:len >=  max_len ) {
> >>>>>>>>> sl_send_reply("513", "Message too big");
> >>>>>>>>> break;
> >>>>>>>>> };
> >>>>>>>>>
> >>>>>>>>>        # !! Nathelper
> >>>>>>>>> # Special handling for NATed clients; first, NAT test is
> >>>>>>>>> # executed: it looks for via!=received and RFC1918 addresses
> >>>>>>>>> # in Contact (may fail if line-folding is used); also,
> >>>>>>>>> # the received test should, if completed, should check all
> >>>>>>>>> # vias for rpesence of received
> >>>>>>>>> if (nat_uac_test("3")) {
> >>>>>>>>> # Allow RR-ed requests, as these may indicate that
> >>>>>>>>> # a NAT-enabled proxy takes care of it; unless it is
> >>>>>>>>> # a REGISTER
> >>>>>>>>>
> >>>>>>>>> if (method == "REGISTER" || ! search("^Record-Route:")) {
> >>>>>>>>>     log("LOG: Someone trying to register from private IP,
> >>>>>>>>> rewriting\n");
> >>>>>>>>>
> >>>>>>>>>     # This will work only for user agents that support
> >>>>>>>>>     symmetric # communication. We tested quite many of them
> >>>>>>>>>     and majority is # smart enough to be symmetric. In some
> >>>>>>>>>     phones it takes a configuration # option. With Cisco
> >>>>>>>>> 7960, it is called NAT_Enable=Yes, with
> >>>>>>>> kphone
> >>>>>>>> it is
> >>>>>>>>>     # called "symmetric media" and "symmetric signalling".
> >>>>>>>>>
> >>>>>>>>>     fix_nated_contact(); # Rewrite contact with source IP of
> >>>>>>>>>     signalling if (method == "INVITE") {
> >>>>>>>>>         fix_nated_sdp("1"); # Add direction=active to SDP
> >>>>>>>>>     };
> >>>>>>>>>     force_rport(); # Add rport parameter to topmost Via
> >>>>>>>>>     setflag(6);    # Mark as NATed
> >>>>>>>>> };
> >>>>>>>>> };
> >>>>>>>>>
> >>>>>>>>>        # labeled all transaction for accounting
> >>>>>>>>>        setflag(1);
> >>>>>>>>>        setflag(2);
> >>>>>>>>>
> >>>>>>>>> # we record-route all messages -- to make sure that
> >>>>>>>>> # subsequent messages will go through our proxy; that's
> >>>>>>>>> # particularly good if upstream and downstream entities
> >>>>>>>>> # use different transport protocol
> >>>>>>>>> if (!method=="REGISTER") record_route();
> >>>>>>>>>
> >>>>>>>>> # subsequent messages withing a dialog should take the
> >>>>>>>>> # path determined by record-routing
> >>>>>>>>> if (loose_route()) {
> >>>>>>>>> # mark routing logic in request
> >>>>>>>>> append_hf("P-hint: rr-enforced\r\n");
> >>>>>>>>> route(1);
> >>>>>>>>> break;
> >>>>>>>>> };
> >>>>>>>>>
> >>>>>>>>> if (!uri==myself) {
> >>>>>>>>> # mark routing logic in request
> >>>>>>>>> append_hf("P-hint: outbound\r\n");
> >>>>>>>>> route(1);
> >>>>>>>>> break;
> >>>>>>>>> };
> >>>>>>>>>
> >>>>>>>>> # if the request is for other domain use UsrLoc
> >>>>>>>>> # (in case, it does not work, use the following command
> >>>>>>>>> # with proper names and addresses in it)
> >>>>>>>>> if (uri==myself) {
> >>>>>>>>>
> >>>>>>>>> if (method=="REGISTER") {
> >>>>>>>>>
> >>>>>>>>> # Uncomment this if you want to use digest authentication
> >>>>>>>>> if (!www_authorize("220.226.42.185","subscriber")) {
> >>>>>>>>> www_challenge("220.226.42.185", "0");
> >>>>>>>>> break;
> >>>>>>>>> };
> >>>>>>>>>
> >>>>>>>>> save("location");
> >>>>>>>>> break;
> >>>>>>>>> };
> >>>>>>>>>
> >>>>>>>>> lookup("aliases");
> >>>>>>>>> if (!uri==myself) {
> >>>>>>>>> append_hf("P-hint: outbound alias\r\n");
> >>>>>>>>> route(1);
> >>>>>>>>> break;
> >>>>>>>>> };
> >>>>>>>>>
> >>>>>>>>> # native SIP destinations are handled using our USRLOC DB
> >>>>>>>>> if (!lookup("location")) {
> >>>>>>>>> sl_send_reply("404", "Not Found");
> >>>>>>>>> break;
> >>>>>>>>> };
> >>>>>>>>> };
> >>>>>>>>> append_hf("P-hint: usrloc applied\r\n");
> >>>>>>>>> route(1);
> >>>>>>>>> }
> >>>>>>>>>
> >>>>>>>>> route[1]
> >>>>>>>>> {
> >>>>>>>>> # !! Nathelper
> >>>>>>>>> if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)"
> >>>>>>>>>     && !search("^Route:")){ sl_send_reply("479", "We don't
> >>>>>>>>>     forward to private IP addresses"); break;
> >>>>>>>>>        };
> >>>>>>>>>
> >>>>>>>>> # if client or server know to be behind a NAT, enable relay
> >>>>>>>>> if (isflagset(6)) {
> >>>>>>>>>     force_rtp_proxy();
> >>>>>>>>> };
> >>>>>>>>>
> >>>>>>>>> # NAT processing of replies; apply to all transactions (for
> >>>>>>>>> example, # re-INVITEs from public to private UA are hard to
> >>>>>>>>> identify as # NATed at the moment of request processing); look
> >>>>>>>>> at replies t_on_reply("1");
> >>>>>>>>>
> >>>>>>>>> if(uri=~"^sip:00*")
> >>>>>>>>> {
> >>>>>>>>> rewritehost();
> >>>>>>>>> forward()
> >>>>>>>>> break;
> >>>>>>>>> };
> >>>>>>>>>
> >>>>>>>>> # send it out now; use stateful forwarding as it works
> >>>>>>>>> reliably # even for UDP2TCP
> >>>>>>>>> if (!t_relay()) {
> >>>>>>>>> sl_reply_error();
> >>>>>>>>> };
> >>>>>>>>> }
> >>>>>>>>>
> >>>>>>>>> # !! Nathelper
> >>>>>>>>> onreply_route[1] {
> >>>>>>>>>    # NATed transaction ?
> >>>>>>>>>    if (isflagset(6) && status =~ "(183)|2[0-9][0-9]") {
> >>>>>>>>>        fix_nated_contact();
> >>>>>>>>> force_rtp_proxy();
> >>>>>>>>>    # otherwise, is it a transaction behind a NAT and we did
> >>>>>>>>>    not # know at time of request processing ? (RFC1918
> >>>>>>>>>    contacts) } else if (nat_uac_test("1")) {
> >>>>>>>>>        fix_nated_contact();
> >>>>>>>>>    };
> >>>>>>>>> }
> >>>>>>>>>
> >>>>>>>>>
_________________________________________________________________
> >>>>>>>>> Post Classifieds on MSN classifieds.
> >>>>>>>> http://go.msnserver.com/IN/44045.asp
> >>>>>>>> Buy and Sell on MSN Classifieds.
> >>>>>>>>>
> >>>>>>>>> _______________________________________________
> >>>>>>>>> Serusers mailing list
> >>>>>>>>> serusers at lists.iptel.org
> >>>>>>>>> http://lists.iptel.org/mailman/listinfo/serusers
> >>>>>>>>
> >>>>>>>
> >>>>>>> _________________________________________________________________
> >>>>>>> Marriage?
> >>>>>>> http://www.bharatmatrimony.com/cgi-bin/bmclicks1.cgi?74 Join
> >>>>>>> BharatMatrimony.com for free.
> >>>>>>>
> >>>>>>> _______________________________________________
> >>>>>>> Serusers mailing list
> >>>>>>> serusers at lists.iptel.org
> >>>>>>> http://lists.iptel.org/mailman/listinfo/serusers
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>> _________________________________________________________________
> >>>>> Get ready to dream with Citibank Ready Cash.
> >>>>> http://go.msnserver.com/IN/49355.asp The Next Generation Personal
> >>>>> Loan!
> >>>>>
> >>>>> _______________________________________________
> >>>>> Serusers mailing list
> >>>>> 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