[SR-Users] [sr-dev] how to add port in VIA header
Daniel-Constantin Mierla
miconda at gmail.com
Tue Mar 30 13:11:00 CEST 2021
Hello,
do not cross post to sr-dev and sr-users when the question is about
kamailio.cfg and using kamailio.
If port is not added, then it is the default one for that transport,
respectively 5060 for UDP/TCP and 5061 for TLS.
This is how the SIP specs say, is there any particular reason to have
the port always there?
Cheers,
Daniel
On 18.03.21 11:52, sudheermyworld at yahoo.com wrote:
> Please help me with a way to send replies/forwards to include VIA header with port, because i can see that its just sending IP but not the port in VIA header.
>
> my kamailio cfg file for route & route relay looks like below.
>
> route[RELAY] {
>
> # enable additional event routes for forwarded requests
> # - serial forking, RTP relaying handling, a.s.o.
> if (is_method("INVITE|BYE|SUBSCRIBE|UPDATE")) {
> if(!t_is_set("branch_route")) t_on_branch("MANAGE_BRANCH");
> }
> if (is_method("INVITE|SUBSCRIBE|UPDATE")) {
> if(!t_is_set("onreply_route")) t_on_reply("MANAGE_REPLY");
> }
> if (is_method("INVITE")) {
> if(!t_is_set("failure_route")) t_on_failure("MANAGE_FAILURE");
> }
> if (is_method("ACK|BYE")) {
> $duri= $ruri;
> t_relay();
> exit;
> }
>
> if (!t_relay()) {
> sl_reply_error();
> }
> exit;
> }
>
> # Per SIP request initial checks
> route[REQINIT] {
> #!ifdef WITH_ANTIFLOOD
> # flood detection from same IP and traffic ban for a while
> # be sure you exclude checking trusted peers, such as pstn gateways
> # - local host excluded (e.g., loop to self)
> if(src_ip!=myself) {
> if($sht(ipban=>$si)!=$null) {
> # ip is already blocked
> xdbg("request from blocked IP - $rm from $fu (IP:$si:$sp)\n");
> exit;
> }
> if (!pike_check_req()) {
> xlog("L_ALERT","ALERT: pike blocking $rm from $fu (IP:$si:$sp)\n");
> $sht(ipban=>$si) = 1;
> exit;
> }
> }
> #!endif
> if($ua =~ "friendly-scanner|sipcli|VaxSIPUserAgent") {
> # silent drop for scanners - uncomment next line if want to reply
> # sl_send_reply("200", "OK");
> exit;
> }
>
> if (!mf_process_maxfwd_header("10")) {
> sl_send_reply("483","Too Many Hops");
> exit;
> }
>
> if(is_method("OPTIONS") && uri==myself && $rU==$null) {
> sl_send_reply("200","Keepalive");
> exit;
> }
>
> if(!sanity_check("1511", "7")) {
> xlog("Malformed SIP message from $si:$sp\n");
> exit;
> }
> if (is_method("INVITE")) {
> send_reply("100", "Trying");
> }
> }
>
>
> # Handle requests within SIP dialogs
> route[WITHINDLG] {
> if (!has_totag()) return;
>
> # sequential request withing a dialog should
> # take the path determined by record-routing
> if (loose_route()) {
> route(DLGURI);
> if (is_method("BYE")) {
> setflag(FLT_ACC); # do accounting ...
> setflag(FLT_ACCFAILED); # ... even if the transaction fails
> } else if ( is_method("ACK") ) {
> # ACK is forwarded statelessly
> route(NATMANAGE);
> } else if ( is_method("NOTIFY") ) {
> # Add Record-Route for in-dialog NOTIFY as per RFC 6665.
> record_route();
> }
> route(RELAY);
> exit;
> }
>
> if (is_method("SUBSCRIBE") && uri == myself) {
> # in-dialog subscribe requests
> route(PRESENCE);
> exit;
> }
> if ( is_method("ACK|BYE") ) {
> #xlog("started ACK if else condition line 622 \n");
> if ( t_check_trans() ) {
> # no loose-route, but stateful ACK;
> # must be an ACK after a 487
> # or e.g. 404 from upstream server
> route(RELAY);
> exit;
> } else {
> route(RELAY);
> # Added after observing ACK not being sent by CSCF
> exit;
> }
> }
> sl_send_reply("404","Not here");
> exit;
> }
>
> # Caller NAT detection
> route[NATDETECT] {
> #!ifdef WITH_NAT
> force_rport();
> if (nat_uac_test("19")) {
> if (is_method("REGISTER")) {
> fix_nated_register();
> } else {
> if(is_first_hop()) {
> set_contact_alias();
> }
> }
> setflag(FLT_NATS);
> }
> #!endif
> return;
> }
>
> # RTPProxy control and signaling updates for NAT traversal
> route[NATMANAGE] {
> #!ifdef WITH_NAT
> if (is_request()) {
> if(has_totag()) {
> if(check_route_param("nat=yes")) {
> setbflag(FLB_NATB);
> }
> }
> }
> if (!(isflagset(FLT_NATS) || isbflagset(FLB_NATB))) return;
>
> if(nat_uac_test("8")) {
> rtpproxy_manage("co");
> } else {
> rtpproxy_manage("cor");
> }
>
> if (is_request()) {
> if (!has_totag()) {
> if(t_is_branch_route()) {
> add_rr_param(";nat=yes");
> }
> }
> }
> if (is_reply()) {
> if(isbflagset(FLB_NATB)) {
> if(is_first_hop())
> set_contact_alias();
> }
> }
> #!endif
> return;
> }
>
> # URI update for dialog requests
> route[DLGURI] {
> #!ifdef WITH_NAT
> if(!isdsturiset()) {
> handle_ruri_alias();
> }
> #!endif
> return;
> }
>
> # Routing to foreign domains
> route[SIPOUT] {
> if (uri==myself) return;
>
> append_hf("P-hint: outbound\r\n");
> route(RELAY);
> exit;
> }
>
> # PSTN GW routing
> route[PSTN] {
> #!ifdef WITH_PSTN
> $var(uri) = $sel(ruri);
> xavp_params_explode("$(var(uri){s.unbracket})", "uri"); $var(cic) = $xavp(uri=>cic[0]);
>
> if (($rU=~"^(\+)[0-9]{1,20}$")) {
> if(mt_match("ace", "$rU","0")) {
> insert_hf("Route: <sip:"+"$var(mtval)"+ ";lr\r\n");
> route(SYLKSERVERPOST);
> }
> }
>
> route(RELAY);
> exit;
> #!endif
> return;
> }
>
> # Sylkserver routing
> route[SYLKSERVERPOST] {
> if(mt_match("ace", "$rU","0")) {
> t_relay_to("udp:10.0.0.4", "0x01");
> exit;
> }
> }
>
>
>
> sample INVITE being forwarded
>
> Session Initiation Protocol (SIP as raw text)
> INVITE sip:+440000000 at spe01.vodafone.com SIP/2.0\r\n
> Record-Route: <sip:10.1.1.3;lr>\r\n
> Route: <sip:10.1.1.4:5060;lr>\r\n
> Via: SIP/2.0/UDP 10.1.1.3;branch=z9hG4bK4b7b.693512744570a1e2ea323648d7423180.0\r\n
> From: <sip:+4400000000 at 10.1.1.2:5060>;tag=1\r\n
> To: <sip:+4416300000001 at spe01.vodafone.com:5060;user=phone>\r\n
> Call-ID: 1-9256 at 10.1.1.4\r\n
> Date: TUE, 13 DEC 2016 09:34:57 GMT\r\n
> Supported: timer,resource-priority,replaces\r\n
> Min-SE: 900\r\n
> User-Agent: Cisco-CUCM10.5\r\n
> Allow: INVITE, OPTIONS, INFO, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE, NOTIFY\r\n
> CSeq: 101 INVITE\r\n
>
>
> please help how to change below via header
>
> Via: SIP/2.0/UDP 10.1.1.3;branch=z9hG4bK4b7b.693512744570a1e2ea323648d7423180.0
>
>
> to
>
> Via: SIP/2.0/UDP 10.1.1.3:5060;branch=z9hG4bK4b7b.693512744570a1e2ea323648d7423180.0
>
>
> my kamailio server is already listing to <IP>.:5060 port on UDP.
>
> _______________________________________________
> Kamailio (SER) - Development Mailing List
> sr-dev at lists.kamailio.org
> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev
--
Daniel-Constantin Mierla -- www.asipto.com
www.twitter.com/miconda -- www.linkedin.com/in/miconda
Funding: https://www.paypal.me/dcmierla
More information about the sr-users
mailing list