[sr-dev] git:master: kamailio-basic.cfg: updates to track minimal common parts with kamailio.cfg

Daniel-Constantin Mierla miconda at gmail.com
Sat Sep 20 22:24:14 CEST 2014


Module: sip-router
Branch: master
Commit: c3b2a816518dafe72ea4d6496ede943f2e685b5f
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=c3b2a816518dafe72ea4d6496ede943f2e685b5f

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date:   Sat Sep 20 22:23:14 2014 +0200

kamailio-basic.cfg: updates to track minimal common parts with kamailio.cfg

---

 etc/kamailio-basic.cfg |  128 +++++++++++++++++++++++++++--------------------
 1 files changed, 73 insertions(+), 55 deletions(-)

diff --git a/etc/kamailio-basic.cfg b/etc/kamailio-basic.cfg
index 43309f3..3f072b3 100644
--- a/etc/kamailio-basic.cfg
+++ b/etc/kamailio-basic.cfg
@@ -37,6 +37,7 @@
 #     - install RTPProxy: http://www.rtpproxy.org
 #     - start RTPProxy:
 #        rtpproxy -l _your_public_ip_ -s udp:localhost:7722
+#     - option for NAT SIP OPTIONS keepalives: WITH_NATSIPPING
 #
 # *** To enable TLS support execute:
 #     - adjust CFGDIR/tls.cfg as needed
@@ -136,9 +137,9 @@ tcp_connection_lifetime=3605
 
 # set paths to location of modules (to sources or installation folders)
 #!ifdef WITH_SRCPATH
-mpath="modules_k:modules"
+mpath="modules"
 #!else
-mpath="/usr/local/lib/kamailio/modules_k/:/usr/local/lib/kamailio/modules/"
+mpath="/usr/local/lib/kamailio/modules/"
 #!endif
 
 #!ifdef WITH_MYSQL
@@ -327,6 +328,11 @@ request_route {
 
 	### only initial requests (no To tag)
 
+	# handle retransmissions
+	if(t_precheck_trans()) {
+		t_check_trans();
+		exit;
+	}
 	t_check_trans();
 
 	# authentication
@@ -399,6 +405,10 @@ route[REQINIT] {
 			exit;
 		}
 	}
+	if($ua =~ "friendly-scanner") {
+		sl_send_reply("200", "OK");
+		exit;
+	}
 #!endif
 
 	if (!mf_process_maxfwd_header("10")) {
@@ -406,6 +416,11 @@ route[REQINIT] {
 		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;
@@ -414,59 +429,60 @@ route[REQINIT] {
 
 # Handle requests within SIP dialogs
 route[WITHINDLG] {
-	if (has_totag()) {
-		# 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 statelessy
-				route(NATMANAGE);
-			}
-			else if ( is_method("NOTIFY") ) {
-				# Add Record-Route for in-dialog NOTIFY as per RFC 6665.
-				record_route();
-			}
+	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 statelessy
+			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("ACK") ) {
+		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 {
-			if ( is_method("ACK") ) {
-				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 {
-					# ACK without matching transaction ... ignore and discard
-					exit;
-				}
-			}
-			sl_send_reply("404","Not here");
+			# ACK without matching transaction ... ignore and discard
+			exit;
 		}
-		exit;
 	}
+	sl_send_reply("404", "Not here");
+	exit;
 }
 
 # Handle SIP registrations
 route[REGISTRAR] {
-	if (is_method("REGISTER")) {
-		if(isflagset(FLT_NATS)) {
-			setbflag(FLB_NATB);
-			# uncomment next line to do SIP NAT pinging 
-			## setbflag(FLB_NATSIPPING);
-		}
-		if (!save("location"))
-			sl_reply_error();
-
-		exit;
+	if (!is_method("REGISTER")) return;
+	if(isflagset(FLT_NATS)) {
+		setbflag(FLB_NATB);
+#!ifdef WITH_NATSIPPING
+		# do SIP NAT pinging
+		setbflag(FLB_NATSIPPING);
+#!endif
 	}
+	if (!save("location"))
+		sl_reply_error();
+
+	exit;
 }
 
-# USER location service
+# User location service
 route[LOCATION] {
 	if (!lookup("location")) {
 		$var(rc) = $rc;
@@ -492,7 +508,7 @@ route[LOCATION] {
 }
 
 
-# Authentication route
+# IP authorization and user uthentication
 route[AUTH] {
 #!ifdef WITH_AUTH
 
@@ -524,7 +540,7 @@ route[AUTH] {
 	return;
 }
 
-# Caller NAT detection route
+# Caller NAT detection
 route[NATDETECT] {
 #!ifdef WITH_NAT
 	force_rport();
@@ -532,7 +548,8 @@ route[NATDETECT] {
 		if (is_method("REGISTER")) {
 			fix_nated_register();
 		} else {
-			add_contact_alias();
+			if(is_first_hop())
+				set_contact_alias();
 		}
 		setflag(FLT_NATS);
 	}
@@ -564,7 +581,7 @@ route[NATMANAGE] {
 	}
 	if (is_reply()) {
 		if(isbflagset(FLB_NATB)) {
-			add_contact_alias();
+			set_contact_alias();
 		}
 	}
 #!endif
@@ -583,26 +600,27 @@ route[DLGURI] {
 
 # Routing to foreign domains
 route[SIPOUT] {
-	if (!uri==myself) {
-		append_hf("P-hint: outbound\r\n");
-		route(RELAY);
-	}
+	if (uri==myself) return;
+
+	append_hf("P-hint: outbound\r\n");
+	route(RELAY);
+	exit;
 }
 
-# manage outgoing branches
+# Manage outgoing branches
 branch_route[MANAGE_BRANCH] {
 	xdbg("new branch [$T_branch_idx] to $ru\n");
 	route(NATMANAGE);
 }
 
-# manage incoming replies
+# Manage incoming replies
 onreply_route[MANAGE_REPLY] {
 	xdbg("incoming reply\n");
 	if(status=~"[12][0-9][0-9]")
 		route(NATMANAGE);
 }
 
-# manage failure routing cases
+# Manage failure routing cases
 failure_route[MANAGE_FAILURE] {
 	route(NATMANAGE);
 




More information about the sr-dev mailing list