Table of Contents
List of Examples
route_lir_user_unknown parameter
usageroute_uar_user_unknown parameter
usagescscf_entry_expiry parameter usagecxdx_forced_peer parameter usagecxdx_dest_realm parameter usageuse_preferred_scscf_uri parameter usagepreferred_scscf_uri parameter usageI_scscf_select
usageI_scscf_drop usageTable of Contents
The Following modules must be loaded before this module:
TM - Transaction Manager
SL - Stateless Reply
CDP - C Diameter Peer
CDP_AVP - CDP AVP Applications
This is the route which is executed if HSS returns "user unknown" in LIR
Default value is ''.
Example 1.1. route_lir_user_unknown parameter
usage
...
modparam("ims_icscf","route_lir_user_unknown", "lir_term_user_unknown")
...
This is the route which is executed if HSS returns "user unknown" in UAR.
Default value is ''.
Example 1.2. route_uar_user_unknown parameter
usage
...
modparam("ims_icscf","route_uar_user_unknown", "uar_term_user_unknown")
...
This is the time in s after which S-CSCF entries in the I-CSCF's SCSCF list will expire.
Default value is 300.
Example 1.3. scscf_entry_expiry parameter usage
...
modparam("ims_icscf","scscf_entry_expiry", 300)
...
FQDN of Diameter Peer (HSS) to use for communication (UAR, LIR). If you use this, the routing defined in your diameter xml configuration file (CDP) will be ignored and as a result you will lose the benefits of load balancing and failover.
Default value is "".
Example 1.4. cxdx_forced_peer parameter usage
...
modparam("ims_icscf", "cxdx_forced_peer", "hss.ims.smilecoms.com")
...
Destination realm to be used in Diameter messags to HSS
Default value is "ims.smilecoms.com".
Example 1.5. cxdx_dest_realm parameter usage
...
modparam("ims_icscf", "cxdx_dest_realm", "ims.smilecoms.com")
...
Whether or not this ICSCF has a preferred S-CSCF to use when the HSS returns a list of SCSCFs. 0 means this I-CSCF has no preferred SCSCF. 1 means it has a preferred S-CSCF.
Default value is 0.
Example 1.6. use_preferred_scscf_uri parameter usage
...
modparam("ims_icscf", "use_preferred_scscf_uri", 1)
...
This function is used to retrieve the next unused SCSCF from thelist for this request (based on callid).
A positive return code (1) means an SCSCF was found and is armed for routing.
Meaning of the parameters is as follows:
initial - Signal whether or not this is an original or subsequent.
This function can be used from REQUEST_ROUTE | FAILURE_ROUTE.
Example 1.8. I_scscf_select
usage
...
if (I_scscf_select("0")) {
#there is an S-CSCF list - no need to do a UAR
t_on_reply("register_reply");
t_on_failure("register_failure");
t_relay();
}
...
Drop the list of SCSCFs for this request (based on callid).
This function can be used from REQUEST_ROUTE | FAILURE_ROUTE | REPLY_ROUTE
.
Perform a UAR on Diameter CXDX interface. This function will build a list of SCSCFs to be used and populate the SCSCF list for the request. On a succesful return of this message you can get the next available SCSCF by using the I_scscf_select functoin in 4.1.
Route block to resume after async UAR Diameter reply.
capabilities - whether to request capabilities or not "1" - with capabilities, "0" - no capabilities.
This function can be used from REQUEST_ROUTE.
p.s. this is executed asynchronously. See example on how to retrieve return value
Example 1.10. I_perform_user_authorization_request usage
...
I_perform_user_authorization_request("REG_UAR_REPLY","0"); #0=REG/DEREG; 1=REG+Capabilities
exit;
...
route[REG_UAR_REPLY]
{
#this is async so to know status we have to check the reply avp
switch ($avp(s:uaa_return_code)){
case 1: #success
if (I_scscf_select("0")){
t_on_failure("register_failure");
t_on_reply("register_reply");
#now relay to appropriate SCSCF
if (!t_relay()) {
t_reply("500", "Error forwarding to SCSCF");
}
} else {#select failed
I_scscf_drop();
t_reply("500", "Server error on SCSCF Select (UAR)");
}
break;
case -1: #failure
xlog("L_ERR", "UAR failure - error response sent from module\n");
break;
case -2: #error
xlog("L_ERR", "UAR error - sending error response now\n");
t_reply("500", "UAR failed");
break;
default:
xlog("L_ERR", "Unknown return code from UAR, value is [$avp(s:uaa_return_code)]\n");
t_reply("500", "Unknown response code from UAR");
break;
}
}
...
Perform a LIR on Diameter CXDX interface.
Route block to resume after async LIR Diameter reply.
This function can be used from REQUEST_ROUTE.
p.s. this is executed asynchronously. See example on how to retrieve return value
Example 1.11. I_perform_location_information_request
...
I_perform_location_information_request("SESSION_LIR_REPLY","0");
exit;
...
route[SESSION_LIR_REPLY]
{
if ($avp(lia_return_code) == 1) {
if (I_scscf_select("0")) {
append_branch();
t_on_reply("initial_request_reply");
t_on_failure("initial_request_failure");
if (!t_relay()) {
t_reply("500","Error forwarding towards S-CSCF");
break;
}
break;
} else {
xlog("L_DBG", "dropping scscf list on initial request\n");
I_scscf_drop();
t_reply("500", "Server error on LIR select S-CSCF");
break;
}
} else {
t_reply("500", "Server error on LIR");
break;
}
break;
}
...
The average response time in milliseconds for UAR-UAA transaction.
The average response time in milliseconds for LIR-LIA transaction.