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.