Arafath-uz-zaman khan | 1 Feb 2010 09:28
Picon

[Kamailio-Users] protocol/port mismatch on BYE from Calle to Caller

Hello All,

I need a working example for sending all request to another sip server using kamailio.

X-lite-->TLS(7161)-->Kamailio-->UDP(5060)-->SIP Server-->PSTN Number. i have attached my cfg file. The problem is when i dialed any pstn number everything working fine except the by msg. If the caller send BYE callee get hangup but if Calle send BYE caller never hangup the call. i got the following msg on my log file

Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_msg:  method:  <BYE>
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_msg:  uri:     <sip:91131-Q0ErXNX1RuYjpa+D5RHevA@public.gmane.org:5060>
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_msg:  version: <SIP/2.0>
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_headers: flags=2
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:get_hdr_field: cseq <CSeq>: <1> <BYE>
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_via_param: found param type 232, <branch> = <z9hG4bk010213101521011481381407>; state=16
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_via: end of header reached, state=5
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_headers: via found, flags=2
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_headers: this is the first via
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:receive_msg: After parse_msg...
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:receive_msg: preparing to run routing scripts...
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_headers: flags=100
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_to_param: tag=b23c1531
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_to: end of header reached, state=29
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_to: display={"91131"}, ruri={sip:91131-Q0ErXNX1RuYjpa+D5RHevA@public.gmane.org:5060}
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:get_hdr_field: <To> [51]; uri=[sip:91131-Q0ErXNX1RuYjpa+D5RHevA@public.gmane.org:5060]
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:get_hdr_field: to body ["91131"<sip:91131-Q0ErXNX1RuYjpa+D5RHevA@public.gmane.org:5060>]
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:get_hdr_field: content_length=0
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:get_hdr_field: found end of header
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:maxfwd:is_maxfwd_present: max_forwards header not found!
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:check_via_address: params 192.168.10.2, 192.168.10.2, 0
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_headers: flags=80
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:siputils:has_totag: totag found
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_headers: flags=200
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:rr:is_preloaded: is_preloaded: No
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:grep_sock_info: checking if host==us: 12==13 &&  [192.168.10.2] == [192.168.10.1]
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:grep_sock_info: checking if port 5060 matches port 5060
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:grep_sock_info: checking if host==us: 12==13 &&  [192.168.10.2] == [192.168.10.1]
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:grep_sock_info: checking if port 7161 matches port 5060
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:grep_sock_info: no match for: [192.168.10.2:5060]
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:grep_aliases: no match for: [0:192.168.10.2:5060]
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:check_self: host != me
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:grep_sock_info: checking if host==us: 13==13 &&  [192.168.10.1] == [192.168.10.1]
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:grep_sock_info: checking if port 5060 matches port 5060
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:grep_sock_info: match found for: [192.168.10.1:5060]
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:check_self: host == me
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:rr:after_loose: Topmost route URI: 'sip:192.168.10.1;r2=on;lr=on;nat=yes' is me
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:grep_sock_info: checking if host==us: 13==13 &&  [192.168.10.1] == [192.168.10.1]
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:grep_sock_info: checking if port 7161 matches port 7161
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:grep_sock_info: match found for: [192.168.10.1:7161]
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_headers: flags=200
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:get_hdr_field: found end of header
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:rr:find_next_route: No next Route HF found
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:rr:after_loose: no next URI found
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:rr:check_route_param: params are <;r2=on;lr=on;nat=yes>
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_headers: flags=40
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_to_param: tag=01021310150514813644546133
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_to: end of header reached, state=29
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_to: display={"911317434"}, ruri={sip:911317434-Q0ErXNX1Ruajwy7PQIYkYA@public.gmane.org:5060}
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:siputils:has_totag: totag found
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:tm:t_newtran: transaction on entrance=0xffffffff
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_headers: flags=ffffffffffffffff
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_headers: flags=78
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:tm:t_lookup_request: start searching: hash=850, isACK=0
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:tm:t_lookup_request: proceeding to pre-RFC3261 transaction matching
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:tm:t_lookup_request: no transaction found
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:tm:run_reqin_callbacks: trans=0xb615b5f8, callback type 1, id 0 entered
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:parse_headers: flags=78
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:mk_proxy: doing DNS lookup...
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:get_send_socket: force_send_socket of different proto (1)!
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: WARNING:core:get_send_socket: protocol/port mismatch
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:tm:set_timer: relative timeout is 500000
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:tm:insert_timer_unsafe: [4]: 0xb615b744 (46600000)
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:tm:set_timer: relative timeout is 30
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:tm:insert_timer_unsafe: [0]: 0xb615b760 (76)
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:tm:t_relay_to: new transaction fwd'ed
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:tm:t_unref: UNREF_UNSAFE: after is 0
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:destroy_avp_list: destroying list (nil)
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8808]: DBG:core:receive_msg: cleaning up
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8809]: DBG:tm:utimer_routine: timer routine:4,tl=0xb615b744 next=(nil), timeout=46600000
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8809]: DBG:tm:retransmission_handler: retransmission_handler : request resending (t=0xb615b5f8, BYE sip:9 ... )
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8809]: DBG:tm:set_timer: relative timeout is 1000000
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8809]: DBG:tm:insert_timer_unsafe: [5]: 0xb615b744 (47600000)
Feb  1 04:27:29 ser /usr/local/sbin/kamailio[8809]: DBG:tm:retransmission_handler: retransmission_handler : done
Feb  1 04:27:30 ser /usr/local/sbin/kamailio[8809]: DBG:tm:utimer_routine: timer routine:5,tl=0xb615b744 next=(nil), timeout=47600000
Feb  1 04:27:30 ser /usr/local/sbin/kamailio[8809]: DBG:tm:retransmission_handler: retransmission_handler : request resending (t=0xb615b5f8, BYE sip:9 ... )
Feb  1 04:27:30 ser /usr/local/sbin/kamailio[8809]: DBG:tm:set_timer: relative timeout is 2000000
Feb  1 04:27:30 ser /usr/local/sbin/kamailio[8809]: DBG:tm:insert_timer_unsafe: [6]: 0xb615b744 (49600000)
Feb  1 04:27:30 ser /usr/local/sbin/kamailio[8809]: DBG:tm:retransmission_handler: retransmission_handler : done



#
# $Id: kamailio.cfg 5926 2009-09-24 18:37:43Z miconda $
#
# Kamailio (OpenSER) SIP Server - basic configuration script
#     - web: http://www.kamailio.org

#     - svn: http://openser.svn.sourceforge.net/viewvc/openser/

#
# Direct your questions about this file to: <users <at> lists.kamailio.org>
#
# Refer to the Core CookBook at http://www.kamailio.org/dokuwiki/doku.php

# for an explanation of possible statements, functions and parameters.
#
# There are comments showing how to enable different features in th econfig
# file. Such commented code starts with #X# where X is a letter to identify
# a feature. Delete entire #X# if you want to enable that feature. Next are
# sed commands that help you enable such features.
#
# *** To enamble mysql execute:
#     sed -i 's/#m#//g' kamailio.cfg
#
# *** To enamble authentication execute:
#     - enable mysql
#     sed -i 's/#a#//g' kamailio.cfg
#     - add users using 'kamctl'
#
# *** To enamble persistent user location execute:
#     - enable mysql
#     sed -i 's/#u#//g' kamailio.cfg
#
# *** To enamble presence server execute:
#     - enable mysql
#     sed -i 's/#p#//g' kamailio.cfg
#
# *** To enamble nat traversal execute:
#     sed -i 's/#n#//g' kamailio.cfg
#     - install RTPProxy: http://www.rtpproxy.org

#     - start RTPProxy:
#        rtpproxy -l _your_public_ip_ -s udp:localhost:7722
#
# *** To enhance accounting execute:
#     - enable mysql
#     sed -i 's/#c#//g' kamailio.cfg
#     - add following columns to database
# ALTER TABLE acc ADD COLUMN src_user VARCHAR(64) NOT NULL DEFAULT '';
# ALTER TABLE acc ADD COLUMN src_domain VARCHAR(128) NOT NULL DEFAULT '';
# ALTER TABLE acc ADD COLUMN dst_ouser VARCHAR(64) NOT NULL DEFAULT '';
# ALTER TABLE acc ADD COLUMN dst_user VARCHAR(64) NOT NULL DEFAULT '';
# ALTER TABLE acc ADD COLUMN dst_domain VARCHAR(128) NOT NULL DEFAULT '';
# ALTER TABLE missed_calls ADD COLUMN src_user VARCHAR(64) NOT NULL DEFAULT '';
# ALTER TABLE missed_calls ADD COLUMN src_domain VARCHAR(128) NOT NULL DEFAULT '';
# ALTER TABLE missed_calls ADD COLUMN dst_ouser VARCHAR(64) NOT NULL DEFAULT '';
# ALTER TABLE missed_calls ADD COLUMN dst_user VARCHAR(64) NOT NULL DEFAULT '';
# ALTER TABLE missed_calls ADD COLUMN dst_domain VARCHAR(128) NOT NULL DEFAULT '';
#


####### Global Parameters #########

debug=9
log_stderror=no
log_facility=LOG_LOCAL6

fork=yes
children=4

/* uncomment the following lines to enable debugging */
#debug=6
#fork=no
#log_stderror=yes

/* uncomment the next line to disable TCP (default on) */
#disable_tcp=yes

/* uncomment the next line to enable the auto temporary blacklisting of 
   not available destinations (default disabled) */
#disable_dns_blacklist=no

/* uncomment the next line to enable IPv6 lookup after IPv4 dns 
   lookup failures (default disabled) */
#dns_try_ipv6=yes

/* uncomment the next line to disable the auto discovery of local aliases
   based on revers DNS on IPs (default on) */
#auto_aliases=no

/* uncomment the following lines to enable TLS support  (default off) */
disable_tls = no
listen = tls:192.168.10.1:7161
tls_verify_server = 1
tls_verify_client = 0
tls_require_client_certificate = 0
tls_method = TLSv1
tls_certificate = "/usr/local/etc/kamailio/tls/user/user-cert.pem"
tls_private_key = "/usr/local/etc/kamailio/tls/user/user-privkey.pem"
tls_ca_list     = "/usr/local/etc/kamailio/tls/user/user-calist.pem"


#port=7160

/* uncomment and configure the following line if you want Kamailio to 
   bind on a specific interface/port/proto (default bind on all available) */
listen=udp:192.168.10.1:5060


####### Modules Section ########

#set module path
mpath="/usr/local/lib/kamailio/modules/"

/* uncomment next line for MySQL DB support */
loadmodule "db_mysql.so"
loadmodule "mi_fifo.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "pv.so"
loadmodule "maxfwd.so"
loadmodule "usrloc.so"
loadmodule "registrar.so"
loadmodule "textops.so"
loadmodule "uri_db.so"
loadmodule "siputils.so"
loadmodule "xlog.so"
loadmodule "acc.so"
/* uncomment next lines for MySQL based authentication support 
   NOTE: a DB (like db_mysql) module must be also loaded */
loadmodule "auth.so"
loadmodule "auth_db.so"
/* uncomment next line for aliases support
   NOTE: a DB (like db_mysql) module must be also loaded */
loadmodule "alias_db.so"
/* uncomment next line for multi-domain support
   NOTE: a DB (like db_mysql) module must be also loaded
   NOTE: be sure and enable multi-domain support in all used modules
         (see "multi-module params" section ) */
#loadmodule "domain.so"
/* uncomment the next two lines for presence server support
   NOTE: a DB (like db_mysql) module must be also loaded */
#p#loadmodule "presence.so"
#p#loadmodule "presence_xml.so"

loadmodule "nathelper.so"

# ----------------- setting module-specific parameters ---------------

# ----- mi_fifo params -----
modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")


# ----- rr params -----
# add value to ;lr param to cope with most of the UAs
modparam("rr", "enable_full_lr", 1)
# do not append from tag to the RR (no need for this script)
modparam("rr", "append_fromtag", 0)


# ----- rr params -----
modparam("registrar", "method_filtering", 1)
/* uncomment the next line to disable parallel forking via location */
# modparam("registrar", "append_branches", 1)
/* uncomment the next line not to allow more than 10 contacts per AOR */
#modparam("registrar", "max_contacts", 10)


# ----- uri_db params -----
/* by default we disable the DB support in the module as we do not need it
   in this configuration */
modparam("uri_db", "use_uri_table", 0)
modparam("uri_db", "db_url", "")


# ----- acc params -----
/* what sepcial events should be accounted ? */
modparam("acc", "early_media", 1)
modparam("acc", "report_ack", 1)
modparam("acc", "report_cancels", 1)
/* by default ww do not adjust the direct of the sequential requests.
   if you enable this parameter, be sure the enable "append_fromtag"
   in "rr" module */
modparam("acc", "detect_direction", 0)
/* account triggers (flags) */
modparam("acc", "failed_transaction_flag", 3)
modparam("acc", "log_flag", 1)
modparam("acc", "log_missed_flag", 2)
modparam("acc", "log_extra", 
	"src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")
/* uncomment the following lines to enable DB accounting also */
modparam("acc", "db_flag", 1)
modparam("acc", "db_missed_flag", 2)
modparam("acc", "db_url",
	"mysql://openser:openserrw <at> localhost/openser")
#modparam("acc", "db_extra",
#	"src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")


# ----- usrloc params -----
/* uncomment the following lines if you want to enable DB persistency
   for location entries */
modparam("usrloc", "db_mode",   2)
modparam("usrloc", "db_url",
	"mysql://openser:openserrw <at> localhost/openser")

# ----- auth_db params -----
/* uncomment the following lines if you want to enable the DB based
   authentication */
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
modparam("auth_db", "db_url",
	"mysql://openser:openserrw <at> localhost/openser")
modparam("auth_db", "load_credentials", "")


# ----- alias_db params -----
/* uncomment the following lines if you want to enable the DB based
   aliases */
modparam("alias_db", "db_url",
	"mysql://openser:openserrw <at> localhost/openser")


# ----- domain params -----
/* uncomment the following lines to enable multi-domain detection
   support */
#modparam("domain", "db_url",
#	"mysql://openser:openserrw <at> localhost/openser")
#modparam("domain", "db_mode", 1)   # Use caching


# ----- multi-module params -----
/* uncomment the following line if you want to enable multi-domain support
   in the modules (dafault off) */
#modparam("alias_db|auth_db|usrloc|uri_db", "use_domain", 1)


# ----- presence params -----
/* uncomment the following lines if you want to enable presence */
#p#modparam("presence|presence_xml", "db_url",
#p#	"mysql://openser:openserrw <at> localhost/openser")
#p#modparam("presence_xml", "force_active", 1)
#p#modparam("presence", "server_address", "sip:192.168.1.2:5060")

# -- nathelper
modparam("nathelper", "rtpproxy_sock", "udp:127.0.0.1:7722")
modparam("nathelper", "natping_interval", 30)
modparam("nathelper", "ping_nated_only", 1)
modparam("nathelper", "sipping_bflag", 7)
modparam("nathelper", "sipping_from", "sip:pinger <at> kamailio.org")
modparam("registrar|nathelper", "received_avp", "$avp(i:80)")
modparam("usrloc", "nat_bflag", 6)

####### Routing Logic ########


# main request routing logic

route{

	if (!mf_process_maxfwd_header("10")) {
		sl_send_reply("483","Too Many Hops");
		exit;
	}

	# NAT detection
	route(4);

	if (has_totag()) {
		# sequential request withing a dialog should
		# take the path determined by record-routing
		if (loose_route()) {
			if (is_method("BYE")) {
				setflag(1); # do accounting ...
				setflag(3); # ... even if the transaction fails
			}
			route(1);
		} else {
			if (is_method("SUBSCRIBE") && uri == myself) {
				# in-dialog subscribe requests
				route(2);
				exit;
			}
			if ( is_method("ACK") ) {
				if ( t_check_trans() ) {
					# non loose-route, but stateful ACK; must be an ACK after a 487 or e.g. 404 from upstream server
					t_relay();
					exit;
				} else {
					# ACK without matching transaction ... ignore and discard.\n");
					exit;
				}
			}
			sl_send_reply("404","Not here");
		}
		exit;
	}

	#initial requests

	# CANCEL processing
	if (is_method("CANCEL"))
	{
		if (t_check_trans())
			t_relay();
		exit;
	}

	t_check_trans();

	# authentication
	route(3);

	# record routing
	if (!is_method("REGISTER|MESSAGE"))
		record_route();

	# account only INVITEs
	if ($fU==":"&&is_method("INVITE")) {
#	if(is_method("INVITE")) {
		setflag(1); # do accounting
	record_route();
	rewritehost("192.168.10.2");
	t_relay();

	}
	if (!uri==myself)
	/* replace with following line if multi-domain support is used */
	##if (!is_uri_host_local())
	{
		append_hf("P-hint: outbound\r\n"); 
		# if you have some interdomain connections via TLS
		##if($rd=="tls_domain1.net") {
		##	t_relay("tls:domain1.net");
		##	exit;
		##} else if($rd=="tls_domain2.net") {
		##	t_relay("tls:domain2.net");
		##	exit;
		##}
		route(1);
	}

	# requests for my domain

	if( is_method("PUBLISH|SUBSCRIBE"))
		route(2);

	if (is_method("REGISTER"))
	{
		if (isflagset(5)) {
#n#			setbflag(6);
#n#			setbflag(7);
		}
		if (!save("location"))
			sl_reply_error();

		exit;
	}

	
	if ($rU==NULL) {
		# request with no Username in RURI
		sl_send_reply("484","Address Incomplete");
		exit;
	}

	# apply DB based aliases (uncomment to enable)
	alias_db_lookup("dbaliases");

	if (!lookup("location")) {
		switch ($retcode) {
			case -1:
			case -3:
				t_newtran();
				t_reply("404", "Not Found");
				exit;
			case -2:
				sl_send_reply("405", "Method Not Allowed");
				exit;
		}
	}

	# when routing via usrloc, log the missed calls also
	setflag(2);

	route(1);
}


route[1] {
	if (check_route_param("nat=yes")) {
		setbflag(6);
	}
if (isflagset(5) || isbflagset(6)) {
		route(5);
	}

	/* example how to enable some additional event routes */
	if (is_method("INVITE")) {
#		t_on_branch("1");
		t_on_reply("1");
		t_on_failure("1");
	}

	if (!t_relay()) {
		sl_reply_error();
	}
	exit;
}


# Presence route
/* uncomment the whole following route for enabling presence server */
route[2]
{
#p#	if (!t_newtran())
#p#	{
#p#		sl_reply_error();
#p#		exit;
#p#	};
#p#
#p#	if(is_method("PUBLISH"))
#p#	{
#p#		handle_publish();
#p#		t_release();
#p#	}
#p#	else
#p#	if( is_method("SUBSCRIBE"))
#p#	{
#p#		handle_subscribe();
#p#		t_release();
#p#	}
#p#	exit;
	
	# if presence enabled, this part will not be executed
	if (is_method("PUBLISH") || $rU==null)
	{
		sl_send_reply("404", "Not here");
		exit;
	}
	return;
}

# Authentication route
/* uncomment the whole following route for enabling authentication */
route[3] {
#	if (is_method("REGISTER"))
#	{
		# authenticate the REGISTER requests (uncomment to enable auth)
#		if (!www_authorize("", "subscriber"))
#		{
#			www_challenge("", "0");
#			exit;
#		}
#a#
#		if ($au!=$tU) 
#		{
#			sl_send_reply("403","Forbidden auth ID");
#			exit;
#		}
#	} else {
#a#		# authenticate if from local subscriber (uncomment to enable auth)
#		if (from_uri==myself)
#		{
#			if (!proxy_authorize("", "subscriber")) {
#				proxy_challenge("", "0");
#				exit;
#		}
#			if (is_method("PUBLISH"))
#			{
#				if ($au!=$tU) {
#					sl_send_reply("403","Forbidden auth ID");
#					exit;
#				}
#			} else {
#				if ($au!=$fU) {
#				sl_send_reply("403","Forbidden auth ID");
#					exit;
#				}
#			}
#a#
#			consume_credentials();
#a#			# caller authenticated
#		}
#	}
	return;
}

# Caller NAT detection route
/* uncomment the whole following route for enabling Caller NAT Detection */
route[4]{
	force_rport();
	if (nat_uac_test("19")) {
		if (method=="REGISTER")&&($fU==":.") {
#		if (method=="REGISTER") {
			fix_nated_register();
		} else {
			fix_nated_contact();
		}
		setflag(5);
	}
	return;
}

# RTPProxy control
/* uncomment the whole following route for enabling RTPProxy Control */
route[5] {
#	if (is_method("BYE")&&$fU==":.") {
	if (is_method("BYE")) {
		unforce_rtp_proxy();
	} else if (is_method("INVITE")){
		force_rtp_proxy();
	}
	  else if (is_method("INVITE")&&$fU==":."){
		force_rtp_proxy();
		rewritehost("sip:192.168.10.2");
    		t_relay();

	}
	if (!has_totag()) add_rr_param(";nat=yes");
	return;
}

branch_route[1] {
	xdbg("new branch at $ru\n");
}


onreply_route[1] {
	xdbg("incoming reply\n");

	if ((isflagset(5) || isbflagset(6)) && status=~"(183)|(2[0-9][0-9])") {
		force_rtp_proxy();
	}
	if (isbflagset(6)) {
		fix_nated_contact();
	}
}


failure_route[1] {
#	if (is_method("INVITE")
#			&& (isbflagset(6) || isflagset(5))) {
#		unforce_rtp_proxy();
#	}

	if (t_was_cancelled()) {
		exit;
	}

	# uncomment the following lines if you want to block client 
	# redirect based on 3xx replies.
	##if (t_check_status("3[0-9][0-9]")) {
	##t_reply("404","Not found");
	##	exit;
	##}

	# uncomment the following lines if you want to redirect the failed 
	# calls to a different new destination
	##if (t_check_status("486|408")) {
	##	sethostport("192.168.2.100:5060");
	##	append_branch();
	##	# do not set the missed call flag again
	##	t_relay();
	##}
}


#
# $Id: kamailio.cfg 5926 2009-09-24 18:37:43Z miconda $
#
# Kamailio (OpenSER) SIP Server - basic configuration script
#     - web: http://www.kamailio.org

#     - svn: http://openser.svn.sourceforge.net/viewvc/openser/

#
# Direct your questions about this file to: <users <at> lists.kamailio.org>
#
# Refer to the Core CookBook at http://www.kamailio.org/dokuwiki/doku.php

# for an explanation of possible statements, functions and parameters.
#
# There are comments showing how to enable different features in th econfig
# file. Such commented code starts with #X# where X is a letter to identify
# a feature. Delete entire #X# if you want to enable that feature. Next are
# sed commands that help you enable such features.
#
# *** To enamble mysql execute:
#     sed -i 's/#m#//g' kamailio.cfg
#
# *** To enamble authentication execute:
#     - enable mysql
#     sed -i 's/#a#//g' kamailio.cfg
#     - add users using 'kamctl'
#
# *** To enamble persistent user location execute:
#     - enable mysql
#     sed -i 's/#u#//g' kamailio.cfg
#
# *** To enamble presence server execute:
#     - enable mysql
#     sed -i 's/#p#//g' kamailio.cfg
#
# *** To enamble nat traversal execute:
#     sed -i 's/#n#//g' kamailio.cfg
#     - install RTPProxy: http://www.rtpproxy.org

#     - start RTPProxy:
#        rtpproxy -l _your_public_ip_ -s udp:localhost:7722
#
# *** To enhance accounting execute:
#     - enable mysql
#     sed -i 's/#c#//g' kamailio.cfg
#     - add following columns to database
# ALTER TABLE acc ADD COLUMN src_user VARCHAR(64) NOT NULL DEFAULT '';
# ALTER TABLE acc ADD COLUMN src_domain VARCHAR(128) NOT NULL DEFAULT '';
# ALTER TABLE acc ADD COLUMN dst_ouser VARCHAR(64) NOT NULL DEFAULT '';
# ALTER TABLE acc ADD COLUMN dst_user VARCHAR(64) NOT NULL DEFAULT '';
# ALTER TABLE acc ADD COLUMN dst_domain VARCHAR(128) NOT NULL DEFAULT '';
# ALTER TABLE missed_calls ADD COLUMN src_user VARCHAR(64) NOT NULL DEFAULT '';
# ALTER TABLE missed_calls ADD COLUMN src_domain VARCHAR(128) NOT NULL DEFAULT '';
# ALTER TABLE missed_calls ADD COLUMN dst_ouser VARCHAR(64) NOT NULL DEFAULT '';
# ALTER TABLE missed_calls ADD COLUMN dst_user VARCHAR(64) NOT NULL DEFAULT '';
# ALTER TABLE missed_calls ADD COLUMN dst_domain VARCHAR(128) NOT NULL DEFAULT '';
#


####### Global Parameters #########

debug=9
log_stderror=no
log_facility=LOG_LOCAL6

fork=yes
children=4

/* uncomment the following lines to enable debugging */
#debug=6
#fork=no
#log_stderror=yes

/* uncomment the next line to disable TCP (default on) */
#disable_tcp=yes

/* uncomment the next line to enable the auto temporary blacklisting of 
   not available destinations (default disabled) */
#disable_dns_blacklist=no

/* uncomment the next line to enable IPv6 lookup after IPv4 dns 
   lookup failures (default disabled) */
#dns_try_ipv6=yes

/* uncomment the next line to disable the auto discovery of local aliases
   based on revers DNS on IPs (default on) */
#auto_aliases=no

/* uncomment the following lines to enable TLS support  (default off) */
disable_tls = no
listen = tls:192.168.10.1:7161
tls_verify_server = 1
tls_verify_client = 0
tls_require_client_certificate = 0
tls_method = TLSv1
tls_certificate = "/usr/local/etc/kamailio/tls/user/user-cert.pem"
tls_private_key = "/usr/local/etc/kamailio/tls/user/user-privkey.pem"
tls_ca_list     = "/usr/local/etc/kamailio/tls/user/user-calist.pem"


#port=7160

/* uncomment and configure the following line if you want Kamailio to 
   bind on a specific interface/port/proto (default bind on all available) */
listen=udp:192.168.10.1:5060


####### Modules Section ########

#set module path
mpath="/usr/local/lib/kamailio/modules/"

/* uncomment next line for MySQL DB support */
loadmodule "db_mysql.so"
loadmodule "mi_fifo.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "pv.so"
loadmodule "maxfwd.so"
loadmodule "usrloc.so"
loadmodule "registrar.so"
loadmodule "textops.so"
loadmodule "uri_db.so"
loadmodule "siputils.so"
loadmodule "xlog.so"
loadmodule "acc.so"
/* uncomment next lines for MySQL based authentication support 
   NOTE: a DB (like db_mysql) module must be also loaded */
loadmodule "auth.so"
loadmodule "auth_db.so"
/* uncomment next line for aliases support
   NOTE: a DB (like db_mysql) module must be also loaded */
loadmodule "alias_db.so"
/* uncomment next line for multi-domain support
   NOTE: a DB (like db_mysql) module must be also loaded
   NOTE: be sure and enable multi-domain support in all used modules
         (see "multi-module params" section ) */
#loadmodule "domain.so"
/* uncomment the next two lines for presence server support
   NOTE: a DB (like db_mysql) module must be also loaded */
#p#loadmodule "presence.so"
#p#loadmodule "presence_xml.so"

loadmodule "nathelper.so"

# ----------------- setting module-specific parameters ---------------

# ----- mi_fifo params -----
modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")


# ----- rr params -----
# add value to ;lr param to cope with most of the UAs
modparam("rr", "enable_full_lr", 1)
# do not append from tag to the RR (no need for this script)
modparam("rr", "append_fromtag", 0)


# ----- rr params -----
modparam("registrar", "method_filtering", 1)
/* uncomment the next line to disable parallel forking via location */
# modparam("registrar", "append_branches", 1)
/* uncomment the next line not to allow more than 10 contacts per AOR */
#modparam("registrar", "max_contacts", 10)


# ----- uri_db params -----
/* by default we disable the DB support in the module as we do not need it
   in this configuration */
modparam("uri_db", "use_uri_table", 0)
modparam("uri_db", "db_url", "")


# ----- acc params -----
/* what sepcial events should be accounted ? */
modparam("acc", "early_media", 1)
modparam("acc", "report_ack", 1)
modparam("acc", "report_cancels", 1)
/* by default ww do not adjust the direct of the sequential requests.
   if you enable this parameter, be sure the enable "append_fromtag"
   in "rr" module */
modparam("acc", "detect_direction", 0)
/* account triggers (flags) */
modparam("acc", "failed_transaction_flag", 3)
modparam("acc", "log_flag", 1)
modparam("acc", "log_missed_flag", 2)
modparam("acc", "log_extra", 
	"src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")
/* uncomment the following lines to enable DB accounting also */
modparam("acc", "db_flag", 1)
modparam("acc", "db_missed_flag", 2)
modparam("acc", "db_url",
	"mysql://openser:openserrw <at> localhost/openser")
#modparam("acc", "db_extra",
#	"src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")


# ----- usrloc params -----
/* uncomment the following lines if you want to enable DB persistency
   for location entries */
modparam("usrloc", "db_mode",   2)
modparam("usrloc", "db_url",
	"mysql://openser:openserrw <at> localhost/openser")

# ----- auth_db params -----
/* uncomment the following lines if you want to enable the DB based
   authentication */
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
modparam("auth_db", "db_url",
	"mysql://openser:openserrw <at> localhost/openser")
modparam("auth_db", "load_credentials", "")


# ----- alias_db params -----
/* uncomment the following lines if you want to enable the DB based
   aliases */
modparam("alias_db", "db_url",
	"mysql://openser:openserrw <at> localhost/openser")


# ----- domain params -----
/* uncomment the following lines to enable multi-domain detection
   support */
#modparam("domain", "db_url",
#	"mysql://openser:openserrw <at> localhost/openser")
#modparam("domain", "db_mode", 1)   # Use caching


# ----- multi-module params -----
/* uncomment the following line if you want to enable multi-domain support
   in the modules (dafault off) */
#modparam("alias_db|auth_db|usrloc|uri_db", "use_domain", 1)


# ----- presence params -----
/* uncomment the following lines if you want to enable presence */
#p#modparam("presence|presence_xml", "db_url",
#p#	"mysql://openser:openserrw <at> localhost/openser")
#p#modparam("presence_xml", "force_active", 1)
#p#modparam("presence", "server_address", "sip:192.168.1.2:5060")

# -- nathelper
modparam("nathelper", "rtpproxy_sock", "udp:127.0.0.1:7722")
modparam("nathelper", "natping_interval", 30)
modparam("nathelper", "ping_nated_only", 1)
modparam("nathelper", "sipping_bflag", 7)
modparam("nathelper", "sipping_from", "sip:pinger <at> kamailio.org")
modparam("registrar|nathelper", "received_avp", "$avp(i:80)")
modparam("usrloc", "nat_bflag", 6)

####### Routing Logic ########


# main request routing logic

route{

	if (!mf_process_maxfwd_header("10")) {
		sl_send_reply("483","Too Many Hops");
		exit;
	}

	# NAT detection
	route(4);

	if (has_totag()) {
		# sequential request withing a dialog should
		# take the path determined by record-routing
		if (loose_route()) {
			if (is_method("BYE")) {
				setflag(1); # do accounting ...
				setflag(3); # ... even if the transaction fails
			}
			route(1);
		} else {
			if (is_method("SUBSCRIBE") && uri == myself) {
				# in-dialog subscribe requests
				route(2);
				exit;
			}
			if ( is_method("ACK") ) {
				if ( t_check_trans() ) {
					# non loose-route, but stateful ACK; must be an ACK after a 487 or e.g. 404 from upstream server
					t_relay();
					exit;
				} else {
					# ACK without matching transaction ... ignore and discard.\n");
					exit;
				}
			}
			sl_send_reply("404","Not here");
		}
		exit;
	}

	#initial requests

	# CANCEL processing
	if (is_method("CANCEL"))
	{
		if (t_check_trans())
			t_relay();
		exit;
	}

	t_check_trans();

	# authentication
	route(3);

	# record routing
	if (!is_method("REGISTER|MESSAGE"))
		record_route();

	# account only INVITEs
	if ($fU==":"&&is_method("INVITE")) {
#	if(is_method("INVITE")) {
		setflag(1); # do accounting
	record_route();
	rewritehost("192.168.10.2");
	t_relay();

	}
	if (!uri==myself)
	/* replace with following line if multi-domain support is used */
	##if (!is_uri_host_local())
	{
		append_hf("P-hint: outbound\r\n"); 
		# if you have some interdomain connections via TLS
		##if($rd=="tls_domain1.net") {
		##	t_relay("tls:domain1.net");
		##	exit;
		##} else if($rd=="tls_domain2.net") {
		##	t_relay("tls:domain2.net");
		##	exit;
		##}
		route(1);
	}

	# requests for my domain

	if( is_method("PUBLISH|SUBSCRIBE"))
		route(2);

	if (is_method("REGISTER"))
	{
		if (isflagset(5)) {
#n#			setbflag(6);
#n#			setbflag(7);
		}
		if (!save("location"))
			sl_reply_error();

		exit;
	}

	
	if ($rU==NULL) {
		# request with no Username in RURI
		sl_send_reply("484","Address Incomplete");
		exit;
	}

	# apply DB based aliases (uncomment to enable)
	alias_db_lookup("dbaliases");

	if (!lookup("location")) {
		switch ($retcode) {
			case -1:
			case -3:
				t_newtran();
				t_reply("404", "Not Found");
				exit;
			case -2:
				sl_send_reply("405", "Method Not Allowed");
				exit;
		}
	}

	# when routing via usrloc, log the missed calls also
	setflag(2);

	route(1);
}


route[1] {
	if (check_route_param("nat=yes")) {
		setbflag(6);
	}
if (isflagset(5) || isbflagset(6)) {
		route(5);
	}

	/* example how to enable some additional event routes */
	if (is_method("INVITE")) {
#		t_on_branch("1");
		t_on_reply("1");
		t_on_failure("1");
	}

	if (!t_relay()) {
		sl_reply_error();
	}
	exit;
}


# Presence route
/* uncomment the whole following route for enabling presence server */
route[2]
{
#p#	if (!t_newtran())
#p#	{
#p#		sl_reply_error();
#p#		exit;
#p#	};
#p#
#p#	if(is_method("PUBLISH"))
#p#	{
#p#		handle_publish();
#p#		t_release();
#p#	}
#p#	else
#p#	if( is_method("SUBSCRIBE"))
#p#	{
#p#		handle_subscribe();
#p#		t_release();
#p#	}
#p#	exit;
	
	# if presence enabled, this part will not be executed
	if (is_method("PUBLISH") || $rU==null)
	{
		sl_send_reply("404", "Not here");
		exit;
	}
	return;
}

# Authentication route
/* uncomment the whole following route for enabling authentication */
route[3] {
#	if (is_method("REGISTER"))
#	{
		# authenticate the REGISTER requests (uncomment to enable auth)
#		if (!www_authorize("", "subscriber"))
#		{
#			www_challenge("", "0");
#			exit;
#		}
#a#
#		if ($au!=$tU) 
#		{
#			sl_send_reply("403","Forbidden auth ID");
#			exit;
#		}
#	} else {
#a#		# authenticate if from local subscriber (uncomment to enable auth)
#		if (from_uri==myself)
#		{
#			if (!proxy_authorize("", "subscriber")) {
#				proxy_challenge("", "0");
#				exit;
#		}
#			if (is_method("PUBLISH"))
#			{
#				if ($au!=$tU) {
#					sl_send_reply("403","Forbidden auth ID");
#					exit;
#				}
#			} else {
#				if ($au!=$fU) {
#				sl_send_reply("403","Forbidden auth ID");
#					exit;
#				}
#			}
#a#
#			consume_credentials();
#a#			# caller authenticated
#		}
#	}
	return;
}

# Caller NAT detection route
/* uncomment the whole following route for enabling Caller NAT Detection */
route[4]{
	force_rport();
	if (nat_uac_test("19")) {
		if (method=="REGISTER")&&($fU==":.") {
#		if (method=="REGISTER") {
			fix_nated_register();
		} else {
			fix_nated_contact();
		}
		setflag(5);
	}
	return;
}

# RTPProxy control
/* uncomment the whole following route for enabling RTPProxy Control */
route[5] {
#	if (is_method("BYE")&&$fU==":.") {
	if (is_method("BYE")) {
		unforce_rtp_proxy();
	} else if (is_method("INVITE")){
		force_rtp_proxy();
	}
	  else if (is_method("INVITE")&&$fU==":."){
		force_rtp_proxy();
		rewritehost("sip:192.168.10.2");
    		t_relay();

	}
	if (!has_totag()) add_rr_param(";nat=yes");
	return;
}

branch_route[1] {
	xdbg("new branch at $ru\n");
}


onreply_route[1] {
	xdbg("incoming reply\n");

	if ((isflagset(5) || isbflagset(6)) && status=~"(183)|(2[0-9][0-9])") {
		force_rtp_proxy();
	}
	if (isbflagset(6)) {
		fix_nated_contact();
	}
}


failure_route[1] {
#	if (is_method("INVITE")
#			&& (isbflagset(6) || isflagset(5))) {
#		unforce_rtp_proxy();
#	}

	if (t_was_cancelled()) {
		exit;
	}

	# uncomment the following lines if you want to block client 
	# redirect based on 3xx replies.
	##if (t_check_status("3[0-9][0-9]")) {
	##t_reply("404","Not found");
	##	exit;
	##}

	# uncomment the following lines if you want to redirect the failed 
	# calls to a different new destination
	##if (t_check_status("486|408")) {
	##	sethostport("192.168.2.100:5060");
	##	append_branch();
	##	# do not set the missed call flag again
	##	t_relay();
	##}
}


Asim Riaz | 1 Feb 2010 11:15
Picon

Re: [Kamailio-Users] kamailio 1.4 cpc

Yes its valid to add such parameter into Remote-part-ID and P-Asserted-Identity heade, do I need to use Textops ?
I also need to add diffrent cpc for diffrent calling party types e.g mobile, landline etc.

Thanks,
Asim

On Sun, Jan 31, 2010 at 1:41 AM, Iñaki Baz Castillo <ibc-fpoTKEY401ReoWH0uzbU5w@public.gmane.org> wrote:
El Domingo, 31 de Enero de 2010, Asim Riaz escribió:
> Hi Iñaki,
> Its an ISUP parameter, it appear in sip INVITE like below;
>
> From:unavailable<sip:unavailable;cpc=operator-NUWZaosJkaW10C5VSZ60rg@public.gmane.org
>
> >;tag=95ffcd055e0f78f7d5d397020e89288d78a1
>
>  or
>
> From:unavailable<sip:unavailable-NUWZaosJkaW10C5VSZ60rg@public.gmane.org<sip%3Aunavailable-NUWZaosJkaXBWNZp46sVrw@public.gmane.org
> 9> ;cpc=operator>;tag=95ffcd055e0f78f7d5d397020e89288d78a1

Well, both approachs are not equivalent as the first one means a SIP userinfo
paramenter while the second one means a SIP uri parameter.

However you can achieve it by using the uac module to replace the From header
value, but it could be not really funny. Would be valid to add such parameter
in the P-Asserted-Identity header?

<div>
<p>Yes its valid to add such parameter into Remote-part-ID and P-Asserted-Identity heade, do I need to use Textops ?<br>I also need to add diffrent cpc for diffrent calling party types e.g mobile, landline etc.<br><br>Thanks,<br>
Asim<br><br></p>
<div class="gmail_quote">On Sun, Jan 31, 2010 at 1:41 AM, I&ntilde;aki Baz Castillo <span dir="ltr">&lt;<a href="mailto:ibc@...">ibc@...</a>&gt;</span> wrote:<br><blockquote class="gmail_quote">
El Domingo, 31 de Enero de 2010, Asim Riaz escribi&oacute;:<br><div class="im">&gt; Hi I&ntilde;aki,<br>
&gt; Its an ISUP parameter, it appear in sip INVITE like below;<br>
&gt;<br>
&gt; From:unavailable&lt;sip:unavailable;cpc=<a href="mailto:operator <at> 10.129.39.59">operator@...</a><br>
&gt;<br>
&gt; &gt;;tag=95ffcd055e0f78f7d5d397020e89288d78a1<br>
&gt;<br>
&gt; &nbsp;or<br>
&gt;<br>
</div>&gt; From:unavailable&lt;<a href="mailto:sip%3Aunavailable@...9.59">sip:unavailable@...</a>&lt;<a href="mailto:sip%253Aunavailable@...">sip%3Aunavailable@...</a><br>
&gt; 9&gt; ;cpc=operator&gt;;tag=95ffcd055e0f78f7d5d397020e89288d78a1<br><br>
Well, both approachs are not equivalent as the first one means a SIP userinfo<br>
paramenter while the second one means a SIP uri parameter.<br><br>
However you can achieve it by using the uac module to replace the From header<br>
value, but it could be not really funny. Would be valid to add such parameter<br>
in the P-Asserted-Identity header?<br><div>
<div></div>
<div class="h5">
<br>
--<br>
I&ntilde;aki Baz Castillo &lt;<a href="mailto:ibc@...">ibc@...</a>&gt;<br><br>
_______________________________________________<br>
Kamailio (OpenSER) - Users mailing list<br><a href="mailto:Users@...">Users@...</a><br><a href="http://lists.kamailio.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.kamailio.org/cgi-bin/mailman/listinfo/users</a><br><a href="http://lists.openser-project.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.openser-project.org/cgi-bin/mailman/listinfo/users</a>
</div>
</div>
</blockquote>
</div>
<br>
</div>
Iñaki Baz Castillo | 1 Feb 2010 11:44
Gravatar

Re: [Kamailio-Users] kamailio 1.4 cpc

El Lunes, 1 de Febrero de 2010, Asim Riaz escribió:
> Yes its valid to add such parameter into Remote-part-ID and
> P-Asserted-Identity heade, do I need to use Textops ?
> I also need to add diffrent cpc for diffrent calling party types e.g
>  mobile, landline etc.

Remote-Party-ID can be added using some functions in textops module (I think, 
or perhaps they are in other module). However it's easier just to create P-
Asserted-Identity (which is the real standard rather than Remote-Party-Id) 
from scrath:

  append_hf("P-Asserted-Identity: <sip:$AVP(SOME_AVP) <at> MY_DOMAIN>\r\n");

You can add there the required parameters.

--

-- 
Iñaki Baz Castillo <ibc <at> aliax.net>

_______________________________________________
Kamailio (OpenSER) - Users mailing list
Users <at> lists.kamailio.org
http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
http://lists.openser-project.org/cgi-bin/mailman/listinfo/users
Elena-Ramona Modroiu | 1 Feb 2010 11:50
Favicon

[Kamailio-Users] xlog enhancements

Hi,

I added two new functions to xlog (modules_k):

- xlogl(level, message)
- xdbgl(message)

They are similar to the existing functions, in addition they print the 
config line at the beginning of the message. The printed value is:

"cfglineno:message"

In this way you can spot easily in the logs where the function was used 
to print a particular message.

http://sip-router.org/docbook/sip-router/branch/master/modules_k/xlog/xlog.html

Regards,
Ramona

Iñaki Baz Castillo | 1 Feb 2010 11:55
Gravatar

Re: [Kamailio-Users] xlog enhancements

El Lunes, 1 de Febrero de 2010, Elena-Ramona Modroiu escribió:
> Hi,
> 
> I added two new functions to xlog (modules_k):
> 
> - xlogl(level, message)
> - xdbgl(message)
> 
> They are similar to the existing functions, in addition they print the
> config line at the beginning of the message. The printed value is:
> 
> "cfglineno:message"
> 
> In this way you can spot easily in the logs where the function was used
> to print a particular message.
> 
> http://sip-router.org/docbook/sip-router/branch/master/modules_k/xlog/xlog.
> html

Great!
What about when there are "include"?

--

-- 
Iñaki Baz Castillo <ibc@...>

Elena-Ramona Modroiu | 1 Feb 2010 12:03
Favicon

Re: [Kamailio-Users] xlog enhancements

Iñaki Baz Castillo wrote:
> El Lunes, 1 de Febrero de 2010, Elena-Ramona Modroiu escribió:
>   
>> Hi,
>>
>> I added two new functions to xlog (modules_k):
>>
>> - xlogl(level, message)
>> - xdbgl(message)
>>
>> They are similar to the existing functions, in addition they print the
>> config line at the beginning of the message. The printed value is:
>>
>> "cfglineno:message"
>>
>> In this way you can spot easily in the logs where the function was used
>> to print a particular message.
>>
>> http://sip-router.org/docbook/sip-router/branch/master/modules_k/xlog/xlog.
>> html
>>     
>
> Great!
> What about when there are "include"?
>   

it is the line in the included file. xlog has now also the reference to 
the file name, but I haven't printed it not to get the message too long. 
Could be added a module parameter to control it if people find that useful.

Regards,
Ramona

Asim Riaz | 1 Feb 2010 12:25
Picon

Re: [Kamailio-Users] kamailio 1.4 cpc

you mean adding the required parameters in AVP? is it possible to to emplain how can i add diffrent cpc into p-asserted-id based on calling party number? e.g if the calling party is mobile then cpc is mobile

Thanks,

Asim

On Mon, Feb 1, 2010 at 10:44 AM, Iñaki Baz Castillo <ibc-fpoTKEY401ReoWH0uzbU5w@public.gmane.org> wrote:
El Lunes, 1 de Febrero de 2010, Asim Riaz escribió:
> Yes its valid to add such parameter into Remote-part-ID and
> P-Asserted-Identity heade, do I need to use Textops ?
> I also need to add diffrent cpc for diffrent calling party types e.g
>  mobile, landline etc.

Remote-Party-ID can be added using some functions in textops module (I think,
or perhaps they are in other module). However it's easier just to create P-
Asserted-Identity (which is the real standard rather than Remote-Party-Id)
from scrath:

 append_hf("P-Asserted-Identity: <sip:$AVP(SOME_AVP) <at> MY_DOMAIN>\r\n");

You can add there the required parameters.


--

<div>
<p>you mean adding the required parameters in AVP? is it possible to to emplain how can i add diffrent cpc into p-asserted-id based on calling party number? e.g if the calling party is mobile then cpc is mobile <br><br>Thanks,<br><br>Asim<br><br></p>
<div class="gmail_quote">On Mon, Feb 1, 2010 at 10:44 AM, I&ntilde;aki Baz Castillo <span dir="ltr">&lt;<a href="mailto:ibc@...">ibc@...</a>&gt;</span> wrote:<br><blockquote class="gmail_quote">
El Lunes, 1 de Febrero de 2010, Asim Riaz escribi&oacute;:<br><div class="im">&gt; Yes its valid to add such parameter into Remote-part-ID and<br>
&gt; P-Asserted-Identity heade, do I need to use Textops ?<br>
&gt; I also need to add diffrent cpc for diffrent calling party types e.g<br>
&gt; &nbsp;mobile, landline etc.<br><br>
</div>Remote-Party-ID can be added using some functions in textops module (I think,<br>
or perhaps they are in other module). However it's easier just to create P-<br>
Asserted-Identity (which is the real standard rather than Remote-Party-Id)<br>
from scrath:<br><br>
 &nbsp;append_hf("P-Asserted-Identity: &lt;sip:$AVP(SOME_AVP) <at> MY_DOMAIN&gt;\r\n");<br><br>
You can add there the required parameters.<br><br><br>
--<br><div>
<div></div>
<div class="h5">I&ntilde;aki Baz Castillo &lt;<a href="mailto:ibc@...">ibc@...</a>&gt;<br><br>
_______________________________________________<br>
Kamailio (OpenSER) - Users mailing list<br><a href="mailto:Users@...">Users@...</a><br><a href="http://lists.kamailio.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.kamailio.org/cgi-bin/mailman/listinfo/users</a><br><a href="http://lists.openser-project.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.openser-project.org/cgi-bin/mailman/listinfo/users</a>
</div>
</div>
</blockquote>
</div>
<br>
</div>
Iñaki Baz Castillo | 1 Feb 2010 13:09
Gravatar

Re: [Kamailio-Users] kamailio 1.4 cpc

El Lunes, 1 de Febrero de 2010, Asim Riaz escribió:
> you mean adding the required parameters in AVP? is it possible to to
>  emplain how can i add diffrent cpc into p-asserted-id based on calling
>  party number? e.g if the calling party is mobile then cpc is mobile

I don't think it's so hard to undersand. But please, you need to read the 
documentation first to know how to use AVP's, variables, how to do a simple 
"if" or "switch" to check if the calling number is a mobile or fixed or 
whatever, and so on.

IMHO you are asking for a given solution. Read the documentation, try it by 
yourself, and ask again when you have specific doubts ;)

--

-- 
Iñaki Baz Castillo <ibc <at> aliax.net>

_______________________________________________
Kamailio (OpenSER) - Users mailing list
Users <at> lists.kamailio.org
http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
http://lists.openser-project.org/cgi-bin/mailman/listinfo/users
Alex Balashov | 1 Feb 2010 13:18
Gravatar

Re: [Kamailio-Users] xlog enhancements

On 02/01/2010 05:50 AM, Elena-Ramona Modroiu wrote:

> - xlogl(level, message)
> - xdbgl(message)
>
> They are similar to the existing functions, in addition they print the
> config line at the beginning of the message. The printed value is:
>
> "cfglineno:message"

What an excellent enhancement!  Thanks Elena!

--

-- 
Alex Balashov - Principal
Evariste Systems LLC

Tel    : +1 678-954-0670
Direct : +1 678-954-0671
Web    : http://www.evaristesys.com/

Daniel-Constantin Mierla | 1 Feb 2010 13:22
Picon

[Kamailio-Users] project updates

Hello,

I do not know how many noticed so far, for several days the management 
web page was update to reflect an enlarged group of people that 
represent Kamailio project. Since the collaboration within SIP Router 
project proved fruitful, it is clear that the future development is 
related to that project, therefore devel decisions will happen there 
(join sr-dev@... to be in touch).

The last year and half was filled with heavy integration work and 
testing, most of it not very challenging, but had to be done, so we 
wanted to acknowledge the help given by our most active community 
contributors.

As a project policy, we maintain officially the latest two stable 
releases, now being 1.5.x and 3.0.x. The efforts of the group will be 
directed in advocating and promoting Kamailio and SIP Router projects 
world wide. Also some of them sponsor and take care of maintaining 
resources such as servers, dns and web pages.

http://www.kamailio.org/mos/view/Management/

Given the big amount of work done for 3.0.0, the feedback so far is very 
good, in these tree weeks we discovered few issues, most relevant 
affecting sip_trace and uac modules, with a pretty active discussions 
pool about this version. 3.0.0 branches are run by some open voip 
providers for quite some time now (e.g., voipuser.org and iptel.org), 
servicing thousands of active users, ensuring that the core modules 
(e.g., acc, tm, auth, nat traversal, group, dialog, presence, 
dispatcher, pv, textops, ...) are working smooth. As a side note, I have 
it in other several production systems.

While I encourage everyone to send feedback about 3.0.0, worth to 
mention that devel version (git master branch to become 3.1.0) has 
already quite a lot of new features, so if you are looking for 
adventures or need Lua API, geoip location, in memory tree indexed data, 
Python API, user registrations to remote SIP servers (for inbound 
calls), check-out git master and give it a try. Note that master is as 
stable as 3.0.0 branches so far regarding old code, new additions 
haven't touched other parts, being stand alone.

Looking forward to 3.1.0 as introducing new features but also providing 
more tight integration with SIP Router, especially on some common used 
modules.

Cheers,
Daniel


Gmane