Hello, you remove header Route and insert header Record-Route, is it what you wanted to do? Maybe removing same Record-Route header, but be careful in the case you have more than one proxy in the chain of signaling.
Cheers, Daniel On 22/03/15 18:32, Slava Bendersky wrote: > Hello Daniel, > I end up insert routes like this. And right now on client side I see > only public ip route and private side only private ip routes. > > route[ROUTE_HDR_ORG] { > # Getting record routes > if(is_present_hf("Route")) { > xlog("L_INFO", "[$rm], Inbound connection from <$si>\n"); > if(is_method("NOTIFY")) { > if(is_ip_rfc1918($si)) { > xlog("L_INFO", "[$rm], Present Route: > $(route_uri{uri.host})\n"); > remove_hf("Route"); > insert_hf("Record-Route: <"sip" + > $sel(cfg_get.kamailio.bindpublicip) + ":" > $sel(cfg_get.kamailio.bindpublicport);transport=tcp;lr=on;ftag=$ft;nat=yes>\r\n"); > $fs = "tcp" + ":" > + $sel(cfg_get.kamailio.bindpublicip) + ":" + > $sel(cfg_get.kamailio.bindpublicport); > } else { > xlog("L_INFO", "[$rm], Present Route: > $(route_uri{uri.host})\n"); > remove_hf("Route"); > insert_hf("Record-Route: <"sip" + ":" > $sel(cfg_get.kamailio.bindip) + ":" > + $sel(cfg_get.kamailio.bindport);lr=on;ftag=$ft;nat=yes>\r\n"); > $fs = "udp" + ":" + > $sel(cfg_get.kamailio.bindip) + ":" + $sel(cfg_get.kamailio.bindport); > } > } > } > } > > And for initial SUBSCRIBE INVITE > > if (is_method("INVITE|SUBSCRIBE")) { > remove_hf("Route"); > insert_hf("Record-Route: <"sip" + ":" + > $sel(cfg_get.kamailio.bindip) + ":" + > $sel(cfg_get.kamailio.bindport);lr=on;ftag=$ft;nat=yes>\r\n"); > #record_route(); > } > > > Slava. > > ------------------------------------------------------------------------ > *From: *"Daniel-Constantin Mierla" <mico...@gmail.com> > *To: *"Slava Bendersky" <volga...@networklab.ca>, "sr-users" > <sr-users@lists.sip-router.org> > *Sent: *Wednesday, March 18, 2015 4:15:28 AM > *Subject: *Re: [SR-Users] remove_hf_value > > Hello, > > but the INVITE request goes out with 2 Record Route headers, if you > get them in the 200ok. > > Not sure how it is going to work overall, you will have to manually > set local sockets for requests within dialog, because you are doing > also trasport layer gatewaying (tcp-udp). > > Anyhow, as a solution, maybe you should just not be using > record_route() function and just add the header with insert_hf() for > the invite, remove the Record-Route header for 200ok with remove_hf() > and insert a new one again with insert_hf() > > If you know the local address (IP/port/transport) you want to put in > the Record-Route, you can build the header as: > > insert_hf("Record-Route: > <sip:_LOCAL_IP_:_LOCAL_PORT_;transport=_LOCAL_TRANSPORT_;lr=on;ftag=$ft;nat=yes>\r\n"); > > Requests within the dialog can be handled with loose_route(), but > again, you have to do more in config for selecting the local socket to > send to next hop. > > Cheers, > Daniel > > On 16/03/15 13:35, Slava Bendersky wrote: > > Hello Daniel, > I want do clean up on routes from first SUBSCRIBE, that when > traffic goes to public side of kamailio will be only public route > and when traffic is internal the Record-Route will stay internal > only. In SDP I see like this. > I tired double routes set 0 in rr, but didn't clean enough. > > <--- Transmitting (NAT) to 10.18.130.46:5060 ---> > SIP/2.0 200 OK > Via: SIP/2.0/UDP > > 10.18.130.46;branch=z9hG4bKf852.e0223f39c2bbad8366fdf1b7cb22b336.0;i=8;received=10.18.130.46;rport=5060 > Via: SIP/2.0/TCP > > 192.168.88.252:5062;received=client_pub_ipbranch=z9hG4bK0bbe1f7d27257bba9;rport=5062 > Record-Route: > <sip:10.18.130.46;r2=on;lr=on;ftag=a185d974ec;nat=yes> On public > side remote this Record-Route > Record-Route: > > <sip:kamailio_pub_ip:5084;transport=tcp;r2=on;lr=on;ftag=a185d974ec;nat=yes> > On private side remote this Record-Route > From: "Slava Bendersky" <sips:10...@networklab.ca>;tag=a185d974ec > To: <sips:10...@networklab.ca>;tag=as00757d3e > Call-ID: b08adb1ad1804a83 > CSeq: 236711034 SUBSCRIBE > Server: FPBX-2.11.0(11.15.1) > Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, > NOTIFY, INFO, PUBLISH, MESSAGE > Supported: replaces, timer > Expires: 3600 > Contact: <sip:10101@10.18.130.50:5060>;expires=3600 > Content-Length: 0 > > > Slava. > > ------------------------------------------------------------------------ > *From: *"Daniel-Constantin Mierla" <mico...@gmail.com> > *To: *"sr-users" <sr-users@lists.sip-router.org> > *Sent: *Monday, March 16, 2015 7:01:54 AM > *Subject: *Re: [SR-Users] remove_hf_value > > Hello, > > can you give an example of incoming header and how you want to be > after modification? > > It is not clear for me what end result you want/expect. > > Cheers, > Daniel > > On 14/03/15 06:41, Slava Bendersky wrote: > > Hello Everyone, > Here updated version. Trying remove Record-Route after the coma. > My log shows > > Mar 14 01:25:21 canlvprx01 /usr/sbin/kamailio[751]: INFO: > <script>: [SUBSCRIBE], Inbound connection from <Client Public IP> > Mar 14 01:25:21 canlvprx01 /usr/sbin/kamailio[751]: ERROR: > <script>: <null> > Mar 14 01:25:21 canlvprx01 /usr/sbin/kamailio[751]: INFO: > <script>: [SUBSCRIBE], Route for removal: '<null>' > > route snippet. > > route[ROUTE_HDR_ORG] { > # Getting record routes > if(is_present_hf("Route")) { > xlog("L_INFO", "[$rm], Inbound connection from > <$si>\n"); > if(is_method("SUBSCRIBE")) { > if(is_ip_rfc1918($si)) { > > xlog("$sel(@hf_value.Record_Route[-1])"); > xlog("L_INFO", "[$rm], Route > for removal: '$sel(@hf_value.Record_Route[-1])'\n"); > > remove_hf_value("Record-Route[-1]"); > } else { > > xlog("$sel(@hf_value.Record_Route[1])"); > xlog("L_INFO", "[$rm], Route > for removal: '$sel(@hf_value.Record_Route[1])'\n"); > > remove_hf_value("Record-Route[1]"); > } > } > } > return; > } > > > Slava, > > ------------------------------------------------------------------------ > *From: *"Slava Bendersky" <volga...@networklab.ca> > *To: *"sr-users" <sr-users@lists.sip-router.org> > *Sent: *Friday, March 13, 2015 1:00:44 PM > *Subject: *[SR-Users] remove_hf_value > > Hello Everyone, > I am trying adjust Record-Route, but can't match headers value > > And I am call route(ROUTE_HDR_ORG); right after route(WITHINDLG); > > route[ROUTE_HDR_ORG] { > # Getting record routes > if(is_present_hf("Record-Route")) { > if(is_method("SUBSCRIBE")) { > xlog("$sel(@hf_value.Record_Route[1])"); > xlog("L_INFO", "[$rm], Route for > removal: '$sel(@hf_value.Record_Route[1])'\n"); > remove_hf_value("Record-Route[1]"); > } > } > return; > } > > Any help Thank you, > Slava. > > _______________________________________________ > SIP Express Router (SER) and Kamailio (OpenSER) - sr-users > mailing list > sr-users@lists.sip-router.org > http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users > > > _______________________________________________ > SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing > list > sr-users@lists.sip-router.org > http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users > > > -- > Daniel-Constantin Mierla > http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda > Kamailio World Conference, May 27-29, 2015 > Berlin, Germany - http://www.kamailioworld.com > > > _______________________________________________ > SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing > list > sr-users@lists.sip-router.org > http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users > > > -- > Daniel-Constantin Mierla > http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda > Kamailio World Conference, May 27-29, 2015 > Berlin, Germany - http://www.kamailioworld.com > -- Daniel-Constantin Mierla http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda Kamailio World Conference, May 27-29, 2015 Berlin, Germany - http://www.kamailioworld.com
_______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users