<div dir="ltr">Pasan, <div><br></div><div>Thanks for the recommendation. I have updated the UAC test to use the "31" argument, but get the same result.  </div><div>I will do more testing with the other arguments and report back.  <br></div></div><br><div class="gmail_quote"><div dir="ltr">On Thu, Oct 11, 2018 at 6:04 PM Pasan Meemaduma <<a href="mailto:pasandev@ymail.com">pasandev@ymail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="m_7051011890072012056ydp5e6ecf47yahoo-style-wrap" style="font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:16px"><div></div>
        <div>Hi Steven,</div><div> My understanding is that your nat_uac_test function never return true for your outgoing INVITEs due to the value you have used (23). I think you need to add 8 as well resulting 31 as the value to nat_uac_test function.<br></div><div><span>      - if (nat_uac_test("23")) {    <br></span></div><div><span>      +<span>if (nat_uac_test("31")) {</span></span></div><div><span><span></span></span><br></div><div><span><span class="m_7051011890072012056ydpa330de37emphasis"><em>8</em></span> -  SDP is searched for occurrence of
                        RFC1918 / RFC6598 addresses
                        </span><br></div><div><br></div><div>because by looking at your given INVITE packet sdp section holds the private ip which you are not testing, if your nat test success you should see following lines in your logs. But atm I don't see them in provided one.</div><div><br></div><div><span>xlog("L_INFO", "contact has been fixed for NAT");</span></div><div><span></span><span> xlog("L_INFO", "rtpproxy_offer has been executed");</span><br></div><div><br></div>
        
        </div><div id="m_7051011890072012056yahoo_quoted_9512332584" class="m_7051011890072012056yahoo_quoted">
            <div style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;color:#26282a">
                
                <div>
                    On Thursday, 11 October 2018, 8:57:58 PM GMT+5:30, Steven Platt <<a href="mailto:steven@olli-ai.com" target="_blank">steven@olli-ai.com</a>> wrote:
                </div>
                <div><br></div>
                <div><br></div>
                <div><div id="m_7051011890072012056yiv4653534357"><div><div dir="ltr"><div dir="ltr"><div dir="ltr">Hi Pasan, <div><br clear="none"></div><div>I'm not sure im understanding correctly on how to check for NAT in the relay route. </div><div>I add "if (nat_uac_test("1"))   fix_nated_contact();" at the top of the relay route, but no luck. </div><div><br clear="none"></div><div>I have added additional log statements as well to check what functions are applied. </div><div>The log shows the client flagged for NAT on registration, and again on reply_route as you say. </div><div><br clear="none"></div><div>Below I have pasted the log prints and the full route config. Hopefully this will give more information. On my test call, the contact field is still not updated with the RTP Proxy address. Thanks again for your response. </div><div><br clear="none"></div><div>--------------------</div><div><br clear="none"></div><div>Call: Desktop (origination) ---> (Corporate NAT) ---> OPENSIPS ---> (CARRIER NAT) ---> Android</div><div><br clear="none"></div><div>ROUTE CONFIGURATION</div><div><br clear="none"></div><div><div>####### Routing Logic ########</div><div><br clear="none"></div><div># main request routing logic</div><div><br clear="none"></div><div>route{</div><div>    /* see declaration of tid in trace_id section */</div><div>    $var(trace_id) = "tid";</div><div>    $var(user) = "<a rel="nofollow" shape="rect" href="mailto:osip_user@opensips.org" target="_blank">osip_user@opensips.org</a>";</div><div><br clear="none"></div><div>        force_rport();</div><div>        if (nat_uac_test("23")) {</div><div>                if (is_method("REGISTER")) {</div><div>                        fix_nated_register();</div><div>                        setbflag(NAT);</div><div>                        #sip_trace("$var(trace_id)", "d", "sip|xlog", "$var(user)");</div><div>                        xlog("L_INFO", "registration has been flagged for NAT");</div><div>                } else {</div><div>                        fix_nated_contact();</div><div>                        xlog("L_INFO", "contact has been fixed for NAT");</div><div>                        setflag(NAT);</div><div>                }</div><div>        }</div><div><br clear="none"></div><div><br clear="none"></div><div>        if (!mf_process_maxfwd_header("10")) {</div><div>                sl_send_reply("483","Too Many Hops");</div><div>                exit;</div><div>        }</div><div><br clear="none"></div><div>        if (has_totag()) {</div><div>                # sequential request withing a dialog should</div><div>                # take the path determined by record-routing</div><div><br clear="none"></div><div>                if (loose_route()) {</div><div><br clear="none"></div><div>                        # validate the sequential request against dialog</div><div>                        if ( $DLG_status!=NULL && !validate_dialog() ) {</div><div>                                xlog("In-Dialog $rm from $si (callid=$ci) is not valid according to dialog\n");</div><div>                                ## exit;</div><div>                        }</div><div><br clear="none"></div><div>                        if (is_method("BYE")) {</div><div>                                # do accounting even if the transaction fails</div><div>                                do_accounting("db","failed");</div><div><br clear="none"></div><div>                        } else if (is_method("INVITE")) {</div><div><br clear="none"></div><div>                                # even if in most of the cases is useless, do RR for</div><div>                                # re-INVITEs alos, as some buggy clients do change route set</div><div>                                # during the dialog.</div><div>                                rtpproxy_engage();</div><div>                                xlog("L_INFO", "rtpproxy has been engaged");</div><div>                                record_route();</div><div>                        }</div><div><br clear="none"></div><div>                        if (check_route_param("nat=yes"))</div><div>                                setflag(NAT);</div><div><br clear="none"></div><div>                        # route it out to whatever destination was set by loose_route()</div><div>                        # in $du (destination URI).</div><div>                        route(relay);</div><div>                        xlog("L_INFO", "route has been sent to relay due to nat=yes flag");</div><div>                } else {</div><div><br clear="none"></div><div>                        if ( is_method("ACK") ) {</div><div>                                if ( t_check_trans() ) {</div><div>                                        # non loose-route, but stateful ACK; must be an ACK after</div><div>                                        # a 487 or e.g. 404 from upstream server</div><div>                                        t_relay();</div><div>                                        exit;</div><div>                                } else {</div><div>                                        # ACK without matching transaction -></div><div>                                        # ignore and discard</div><div>                                        exit;</div><div>                                }</div><div>                        }</div><div>                        sl_send_reply("404","Not here");</div><div>                }</div><div>                exit;</div><div>        }</div><div><br clear="none"></div><div>        # CANCEL processing</div><div>        if (is_method("CANCEL"))</div><div>        {</div><div>                if (t_check_trans())</div><div>                        t_relay();</div><div>                exit;</div><div>        }</div><div><br clear="none"></div><div>        t_check_trans();</div><div><br clear="none"></div><div>        if ( !(is_method("REGISTER")  ) ) {</div><div><br clear="none"></div><div>                if (from_uri==myself)</div><div><br clear="none"></div><div>                {</div><div><br clear="none"></div><div>                        # authenticate if from local subscriber</div><div>                        # authenticate all initial non-REGISTER request that pretend to be</div><div>                        # generated by local subscriber (domain from FROM URI is local)</div><div>                        if (!proxy_authorize("", "subscriber")) {</div><div>                                proxy_challenge("", "0");</div><div>                                exit;</div><div>                        }</div><div>                        if (!db_check_from()) {</div><div>                                sl_send_reply("403","Forbidden auth ID");</div><div>                                exit;</div><div>                        }</div><div><br clear="none"></div><div>                        consume_credentials();</div><div>                        # caller authenticated</div><div><br clear="none"></div><div>                } else {</div><div>                        # if caller is not local, then called number must be local</div><div><br clear="none"></div><div>                        if (!uri==myself) {</div><div>                                send_reply("403","Rely forbidden");</div><div>                                exit;</div><div>                        }</div><div>                }</div><div><br clear="none"></div><div>        }</div><div><br clear="none"></div><div>        # preloaded route checking</div><div>        if (loose_route()) {</div><div>                xlog("L_ERR",</div><div>                "Attempt to route with preloaded Route's [$fu/$tu/$ru/$ci]");</div><div>                if (!is_method("ACK"))</div><div>                        sl_send_reply("403","Preload Route denied");</div><div>                exit;</div><div>        }</div><div><br clear="none"></div><div>        # record routing</div><div>        if (!is_method("REGISTER|MESSAGE"))</div><div>                record_route();</div><div><br clear="none"></div><div>        # account only INVITEs</div><div>        if (is_method("INVITE")) {</div><div><br clear="none"></div><div>                # create dialog with timeout</div><div>                if ( !create_dialog("B") ) {</div><div>                        send_reply("500","Internal Server Error");</div><div>                        exit;</div><div>                }</div><div><br clear="none"></div><div>                do_accounting("db");</div><div><br clear="none"></div><div>        }</div><div><br clear="none"></div><div><br clear="none"></div><div>        if (!uri==myself) {</div><div>                append_hf("P-hint: outbound\r\n");</div><div><br clear="none"></div><div>                route(relay);</div><div>        }</div><div><br clear="none"></div><div>        # requests for my domain</div><div><br clear="none"></div><div>        if (is_method("PUBLISH|SUBSCRIBE"))</div><div>        {</div><div>                sl_send_reply("503", "Service Unavailable");</div><div>                exit;</div><div>        }</div><div><br clear="none"></div><div>        if (is_method("REGISTER"))</div><div>        {</div><div><br clear="none"></div><div>                # authenticate the REGISTER requests</div><div>                if (!www_authorize("", "subscriber"))</div><div>                {</div><div>                        www_challenge("", "0");</div><div>                        exit;</div><div>                }</div><div><br clear="none"></div><div>                if (!db_check_to())</div><div>                {</div><div>                        sl_send_reply("403","Forbidden auth ID");</div><div>                        exit;</div><div>                }</div><div><br clear="none"></div><div>                if ( proto==TCP ||  0 ) setflag(TCP_PERSISTENT);</div><div><br clear="none"></div><div>                if (isflagset(NAT)) {</div><div>                        setbflag(SIP_PING_FLAG);</div><div>                        xlog("L_INFO", "SIP_PING_FLAG set");</div><div>                }</div><div><br clear="none"></div><div>                if (!save("location"))</div><div>                        sl_reply_error();</div><div><br clear="none"></div><div>                exit;</div><div>        }</div><div><br clear="none"></div><div>        if ($rU==NULL) {</div><div>                # request with no Username in RURI</div><div>                sl_send_reply("484","Address Incomplete");</div><div>                exit;</div><div>        }</div><div><br clear="none"></div><div><br clear="none"></div><div>        # apply DB based aliases</div><div>        alias_db_lookup("dbaliases");</div><div><br clear="none"></div><div><br clear="none"></div><div>        # apply transformations from dialplan table</div><div>        dp_translate("0","$rU/$rU");</div><div><br clear="none"></div><div><br clear="none"></div><div><br clear="none"></div><div>        # do lookup with method filtering</div><div>        if (!lookup("location","m")) {</div><div>                if (!db_does_uri_exist()) {</div><div>                        send_reply("420","Bad Extension");</div><div>                        exit;</div><div>                }</div><div><br clear="none"></div><div>                t_newtran();</div><div>                t_reply("404", "Not Found");</div><div>                exit;</div><div>        }</div><div><br clear="none"></div><div>        if (isbflagset(NAT)) setflag(NAT);</div><div><br clear="none"></div><div>        # when routing via usrloc, log the missed calls also</div><div>        do_accounting("db","missed");</div><div><br clear="none"></div><div>        route(relay);</div><div>}</div><div><br clear="none"></div><div><br clear="none"></div><div>route[relay] {</div><div><br clear="none"></div><div>        if (nat_uac_test("1"))</div><div>                xlog("L_INFO", "NAT contact fixed on relay route");</div><div>                fix_nated_contact();</div><div><br clear="none"></div><div>        # for INVITEs enable some additional helper routes</div><div>        if (is_method("INVITE")) {</div><div><br clear="none"></div><div>        sip_trace("$var(trace_id)", "d", "sip|xlog", "$var(user)");</div><div><br clear="none"></div><div>                if ( isflagset(NAT) ) {</div><div>                        rtpproxy_offer("of", "[OPENSIPS IP]");</div><div>                        xlog("L_INFO", "rtpproxy_offer has been executed");</div><div>                }</div><div><br clear="none"></div><div>                t_on_branch("per_branch_ops");</div><div>                t_on_reply("handle_nat");</div><div>                t_on_failure("missed_call");</div><div>        }</div><div><br clear="none"></div><div>        if (isflagset(NAT)) {</div><div>                add_rr_param(";nat=yes");</div><div>                }</div><div><br clear="none"></div><div>        if (!t_relay()) {</div><div>                send_reply("500","Internal Error");</div><div>        };</div><div>        exit;</div><div>}</div><div><br clear="none"></div><div><br clear="none"></div><div>branch_route[per_branch_ops] {</div><div>        xlog("new branch at $ru\n");</div><div>}</div><div><br clear="none"></div><div><br clear="none"></div><div>onreply_route[handle_nat] {</div><div><br clear="none"></div><div>   #sip_trace("$var(trace_id)", "d", "sip|xlog", "$var(user)");</div><div><br clear="none"></div><div>        if (nat_uac_test("1"))</div><div>                fix_nated_contact();</div><div>        if ( isflagset(NAT))</div><div>                rtpproxy_answer("of", "[OPENSIPS IP]");</div><div>                xlog("L_INFO", "rtpproxy_answer has been executed");</div><div>        xlog("incoming reply\n");</div><div>}</div><div><br clear="none"></div><div><br clear="none"></div><div>failure_route[missed_call] {</div><div>        if (t_was_cancelled()) {</div><div>                exit;</div><div>        }</div><div><br clear="none"></div><div>        # uncomment the following lines if you want to block client</div><div>        # redirect based on 3xx replies.</div><div>        ##if (t_check_status("3[0-9][0-9]")) {</div><div>        ##t_reply("404","Not found");</div><div>        ##      exit;</div><div>        ##}</div><div><br clear="none"></div><div><br clear="none"></div><div>}</div><div><br clear="none"></div><div><br clear="none"></div><div><br clear="none"></div><div>local_route {</div><div>        if (is_method("BYE") && $DLG_dir=="UPSTREAM") {</div><div><br clear="none"></div><div>                acc_db_request("200 Dialog Timeout", "acc");</div><div><br clear="none"></div><div>        }</div><div>}</div></div><div><br clear="none"></div><div><br clear="none"></div><div>LOG OUTPUT</div><div><br clear="none"></div><div><div>Oct 11 15:06:33 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23672]: registration has been flagged for NAT</div><div>Oct 11 15:06:33 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23672]: registration has been flagged for NAT</div><div>Oct 11 15:06:34 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23672]: registration has been flagged for NAT</div><div>Oct 11 15:06:34 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23672]: registration has been flagged for NAT</div><div>Oct 11 15:06:40 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23681]: INFO:core:probe_max_sock_buff: using snd buffer of 416 kb</div><div>Oct 11 15:06:40 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23681]: INFO:core:init_sock_keepalive: TCP keepalive enabled on socket 88</div><div>Oct 11 15:06:40 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23671]: registration has been flagged for NAT</div><div>Oct 11 15:06:40 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23671]: registration has been flagged for NAT</div><div>Oct 11 15:06:41 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23671]: registration has been flagged for NAT</div><div>Oct 11 15:06:41 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23671]: registration has been flagged for NAT</div><div>Oct 11 15:06:47 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23672]: new branch at sip:1001@[CORPORATE NAT IP]:44876;transport=TCP;rinstance=890c499f01f2952d</div><div>Oct 11 15:06:47 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23672]: new branch at sip:1001@[CARRIER NAT IP]:64261;transport=TCP;rinstance=08e5da8067b3e532</div><div>Oct 11 15:06:47 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23672]: new branch at sip:1001@[CARRIER NAT IP]:42804;transport=TCP;rinstance=e880e7c4509fbf0b</div><div>Oct 11 15:06:47 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23672]: INFO:core:probe_max_sock_buff: using snd buffer of 416 kb</div><div>Oct 11 15:06:47 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23672]: INFO:core:init_sock_keepalive: TCP keepalive enabled on socket 80</div><div>Oct 11 15:06:48 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23671]: rtpproxy_answer has been executed</div><div>Oct 11 15:06:48 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23671]: incoming reply</div><div>Oct 11 15:06:49 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23671]: rtpproxy_answer has been executed</div><div>Oct 11 15:06:49 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23671]: incoming reply</div><div>Oct 11 15:06:50 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23671]: rtpproxy_answer has been executed</div><div>Oct 11 15:06:50 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23671]: incoming reply</div><div>Oct 11 15:06:51 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23671]: rtpproxy_answer has been executed</div><div>Oct 11 15:06:51 opensips-23-4vcpu-8gb-sgp1-01 /usr/sbin/opensips[23671]: incoming reply</div></div></div></div></div><br clear="none"><div class="m_7051011890072012056yiv4653534357gmail_quote"><div class="m_7051011890072012056yiv4653534357yqt8783429176" id="m_7051011890072012056yiv4653534357yqt81938"><div dir="ltr">On Wed, Oct 10, 2018 at 4:55 AM Pasan Meemaduma via Users <<a rel="nofollow" shape="rect" href="mailto:users@lists.opensips.org" target="_blank">users@lists.opensips.org</a>> wrote:<br clear="none"></div><blockquote class="m_7051011890072012056yiv4653534357gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:16px"><div style="font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:16px"><div></div>
        <div>Hi Steven,</div><div><br clear="none"></div><div>looking at your config it doesn't seems you are testing for nat in your main route. only on reply route your have nat_uac_test function called.</div><div>you need to do the same in main route and set the NAT flag otherwise your condition "<span>if ( isflagset(NAT) ) {</span><span>rtpproxy_offer("of", "OPENSIPS IP");}</span>" to use rtpproxy won't work. you can verfiy it by adding an xlog statement inside that condition. As per the given config it shouldn't print anything in log.<br clear="none"></div><div><br clear="none"></div>
        
        </div><div class="m_7051011890072012056yiv4653534357m_7740802426112752899yahoo_quoted" id="m_7051011890072012056yiv4653534357m_7740802426112752899yahoo_quoted_9571003328">
            <div style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;color:#26282a">
                
                <div>
                    On Tuesday, 9 October 2018, 10:55:02 PM GMT+5:30, Steven Platt <<a rel="nofollow" shape="rect" href="mailto:steven@olli-ai.com" target="_blank">steven@olli-ai.com</a>> wrote:
                </div>
                <div><br clear="none"></div>
                <div><br clear="none"></div>
                <div><div id="m_7051011890072012056yiv4653534357m_7740802426112752899yiv1312819569"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Good morning, <div><br clear="none"></div><div>I have an installation of OpenSIPS 2.3.5, with RTPProxy running on a single server. </div><div>RTP Proxy is running as normal, and logs show support for it enabled during initial connection leg. </div><div><br clear="none"></div><div>My error is that Opensips does not update the connection IP (c=) of the SDP to force media to be proxied with RTPProxy. Instead, it keep the endpoint IP, which is behind a NAT, because of this - I have no audio.</div><div><br clear="none"></div><div>Is there something I miss in the configuration to enforce the update of the connection IP in the SDP? (so that media goes through opensips/rtpproxy)</div><div><br clear="none"></div><div>----------------------------</div><div><br clear="none"></div><div>My flow: </div><div><br clear="none"></div><div>desktop client (zoiper) <--> corporate NAT <--> OPENSIPS <--> carrier NAT <--> android (zoiper)</div><div><br clear="none"></div><div><b>Invite SDP Sent from Desktop Zoiper Client: </b></div><div><br clear="none"></div><div><div>Via: SIP/2.0/TCP [CORPORATE NAT]:59401;branch=z9hG4bK-524287-1---fecce2d50d9d5c20;rport</div><div>Max-Forwards: 70</div><div>Contact: <sip:1000@[CORPORATE NAT]:59401;transport=TCP></div><div>To: <sip:1001@[OPENSIPS]:5060;transport=TCP></div><div>From: <sip:1000@[OPENSIPS]:5060;transport=TCP>;tag=b27a0843</div><div>Call-ID: QMoyxf6JGTFYvxS5X8NsnA..</div><div>CSeq: 2 INVITE</div><div>Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, MESSAGE, OPTIONS, INFO, SUBSCRIBE</div><div>Content-Type: application/sdp</div><div>Proxy-Authorization: Digest username="1000",realm="[OPENSIPS IP]",nonce="5bbcdde1000000172b9f0086711cd36194c50f208fa420de",uri="sip:1001@[OPENSIPS IP]:5060;transport=TCP",response="a609cb9d82930d2d32668d8d51d64cb4",algorithm=MD5</div><div>User-Agent: Z 5.2.19 rv2.8.99</div><div>Allow-Events: presence, kpml, talk</div><div>Content-Length: 161</div><div><br clear="none"></div><div>v=0</div><div>o=Z 0 0 IN IP4 [DESKTOP IP]</div><div>s=Z</div><div>c=IN IP4 [DESKTOP IP]</div><div>t=0 0</div><div>m=audio 8000 RTP/AVP 0 101 8</div><div>a=rtpmap:101 telephone-event/8000</div><div>a=fmtp:101 0-16</div><div>a=sendrecv</div></div><div><br clear="none"></div><div><b>The 200OK sent by Opensips to the calling device: </b></div><div><br clear="none"></div><div><div>Via: SIP/2.0/TCP [CORPORATE NAT] :59401;received=[CARRIER IP];branch=z9hG4bK-524287-1---fecce2d50d9d5c20;rport=59401</div><div>Record-Route: <sip:[OPENSIPS IP];transport=tcp;lr;did=081.1ad6d9></div><div>Contact: <sip:1001@[CORPORATE NAT]:50758;transport=TCP></div><div>To: <sip:1001@[OPENSIPS IP]:5060;transport=TCP>;tag=07be6967</div><div>From: <sip:1000@[OPENSIPS IP]:5060;transport=TCP>;tag=b27a0843</div><div>Call-ID: QMoyxf6JGTFYvxS5X8NsnA..</div><div>CSeq: 2 INVITE</div><div>Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, MESSAGE, OPTIONS, INFO, SUBSCRIBE</div><div>Content-Type: application/sdp</div><div>User-Agent: Zoiper rv2.8.105</div><div>Allow-Events: presence, kpml, talk</div><div>Content-Length: 245</div><div><br clear="none"></div><div>v=0</div><div>o=Zoiper 0 1 IN IP4 [ANDROID IP]</div><div>s=Zoiper</div><div>c=IN IP4 [ANDROID IP]</div><div>t=0 0</div><div>m=audio 42032 RTP/AVP 0 3 8 101</div><div>a=rtpmap:0 PCMU/8000</div><div>a=rtpmap:3 GSM/8000</div><div>a=rtpmap:8 PCMA/8000</div><div>a=rtpmap:101 telephone-event/8000</div><div>a=fmtp:101 0-16</div><div>a=sendrecv</div></div><div><br clear="none"></div><div>---------------------------------------------------</div><div><br clear="none"></div><div><b>OpenSIPS Config</b></div><div><br clear="none"></div><div><br clear="none"></div><div><div><b>route[relay]</b> {</div><div>        if (is_method("INVITE")) {</div><div><br clear="none"></div><div>                if ( isflagset(NAT) ) {</div><div>                        rtpproxy_offer("of", "OPENSIPS IP");</div><div>                }</div><div><br clear="none"></div><div>                t_on_branch("per_branch_ops");</div><div>                t_on_reply("handle_nat");</div><div>                t_on_failure("missed_call");</div><div>        }</div><div><br clear="none"></div><div>        if (isflagset(NAT)) {</div><div>                add_rr_param(";nat=yes");</div><div>                }</div><div><br clear="none"></div><div>        if (!t_relay()) {</div><div>                send_reply("500","Internal Error");</div><div>        };</div><div>        exit;</div><div>}</div></div><div><br clear="none"></div><div><br clear="none"></div><div><div><b>onreply_route[handle_nat]</b> {</div><div><br clear="none"></div><div>        if (nat_uac_test("1"))<br clear="none"></div><div>                fix_nated_contact();</div><div>        if ( isflagset(NAT) )</div><div>                rtpproxy_answer("of", "OPENSIPS IP");</div><div>        xlog("incoming reply\n");</div><div>}</div></div><div><br clear="none"></div><div>----------------------------------------------</div><div><br clear="none"></div><div>I also do not see the (";nat=yes") being added in the SDP. </div><div>Do I understand correct that the script is not catching this call and flagging it correct as NAT?</div><div><br clear="none"></div><div>At this time, all signaling works as normal - only media is not being pinned to the opensips IP in the 200 OK response. </div><div><br clear="none"></div><div>Thanks in advance for any guidance on this one. </div><div><br clear="none"></div></div></div></div></div></div></div>_______________________________________________<br clear="none">Users mailing list<br clear="none"><a rel="nofollow" shape="rect" href="mailto:Users@lists.opensips.org" target="_blank">Users@lists.opensips.org</a><br clear="none"><a rel="nofollow" shape="rect" href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br clear="none"></div>
            </div>
        </div></div></div>_______________________________________________<br clear="none">
Users mailing list<br clear="none">
<a rel="nofollow" shape="rect" href="mailto:Users@lists.opensips.org" target="_blank">Users@lists.opensips.org</a><br clear="none">
<a rel="nofollow" shape="rect" href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br clear="none">
</blockquote></div></div></div></div></div>
            </div>
        </div></div></blockquote></div>