[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