0,0 → 1,960 |
/* |
* @author STF 346 |
* @version $Id$ |
* @desc This module provides the types used by the test component |
* for SIP-IMS tests. |
*/ |
|
module LibIms_Steps |
{ |
//LibSip |
import from LibSip_SIPTypesAndValues all; |
import from LibSip_SDPTypes all; |
import from LibSip_Templates all; |
import from LibSip_Steps all; |
import from LibSip_PIXITS all; |
import from LibSip_Interface all; |
import from LibSip_XMLTypes all; |
//LibIms |
import from LibIms_Templates all; |
import from LibIms_Interface all; |
import from LibIms_PIXITS all; |
import from LibIms_SIPTypesAndValues all; |
|
group externalfunctions { |
} |
group parameterOperations { |
} |
group fieldOperations { |
|
/* |
* |
* @desc setting of BYE header fields (IMS addresses) |
* extension of general settings from LibSip basic function |
* @param p_cSeq_s current cSeq |
* @param p_to_user user_profile id of the user to send Bye |
* @verdict |
*/ |
function f_setHeadersBYE(inout CSeq p_cSeq_s, in integer p_to_user) runs on ImsComponent |
{ |
vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier |
|
vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier |
|
vc_requestUri := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header |
|
LibSip_Steps.f_setHeadersBYE(p_cSeq_s); |
|
}// end f_setHeadersBYE |
|
/** |
* |
* @desc function set headers for forward request from AS in case if AS acts as Proxy |
*/ |
function f_setHeadersForwardRequestFromAS (inout CSeq p_cSeq_s) runs on ImsComponent |
{ |
var Request v_request; |
v_request := vc_request; |
|
vc_via := v_request.msgHeader.via; // TODO via header need to be adapted due to standards |
|
vc_route := v_request.msgHeader.route; // TODO route header need to be adapted due to standards |
|
}// end function f_setHeadersForwardRequest |
|
/** |
* |
* @desc function set headers for forward request from AS in case if AS acts as Proxy |
*/ |
function f_setHeadersForwardResponseFromAS (inout CSeq p_cSeq_s) runs on ImsComponent |
{ |
var Response v_response; |
v_response := vc_response; |
|
vc_via:= v_response.msgHeader.via; // TODO via header need to be adapted due to standards |
|
if (ispresent(v_response.msgHeader.recordRoute)) { |
vc_recordRoute:= v_response.msgHeader.recordRoute; // TODO recordRoute header need to be adapted due to standards |
} |
}// end function f_setHeadersForwardResponse |
|
/* |
* |
* @desc setting of Invite header fields (IMS addresses) |
* extension of general settings from LibSip basic function |
* @param p_cSeq_s current cSeq |
* @param p_to_user user_profile id of the user to be invited |
* @verdict |
*/ |
function f_setHeadersINVITE(inout CSeq p_cSeq_s, in integer p_to_user) runs on ImsComponent |
{ |
vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier |
|
vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier |
|
vc_requestUri := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header |
|
if (vc_boo_route) |
{ vc_route := valueof(m_route_interface(vc_interfaceprofile))}; |
if (vc_boo_recordRoute) |
{ vc_recordRoute := valueof(m_recordRoute_currIpAddr(vc_userprofile))}; |
|
LibSip_Steps.f_setHeadersINVITE(p_cSeq_s); |
|
}// end f_setHeadersINVITE |
|
/* |
* |
* @desc setting of Message header fields (IMS addresses) |
* extension of general settings from LibSip basic function |
* @param p_cSeq_s current cSeq |
* @param p_to_user user_profile id of the user to be invited |
* @verdict |
*/ |
function f_setHeadersMESSAGE(inout CSeq p_cSeq_s, in integer p_to_user) runs on ImsComponent |
{ |
vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier |
|
vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier |
|
vc_requestUri := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header |
|
LibSip_Steps.f_setHeadersMESSAGE(p_cSeq_s); |
|
}// end f_setHeadersMESSAGE |
|
function f_setHeadersReINVITE (inout CSeq p_cSeq_s) runs on ImsComponent |
{ |
f_setHeadersGeneral(p_cSeq_s, "INVITE"); // cseq, contact, branch, via |
|
vc_reqHostPort := vc_requestUri.hostPort; |
|
vc_to := vc_caller_To; |
|
vc_from := vc_caller_From; |
|
}// end function f_setHeadersReINVITE |
|
/** |
* |
* @desc function set headers for ReINVITE method on terminating side e.g. UE2 |
*/ |
function f_setHeadersReINVITE_ (inout CSeq p_cSeq_s) runs on ImsComponent |
{ |
f_setHeadersGeneral(p_cSeq_s, "INVITE"); // cseq, contact, branch, via |
|
vc_reqHostPort := vc_requestUri.hostPort; |
|
vc_to := vc_callee_To; |
|
vc_from := vc_callee_From; |
|
//vc_requestUri := f_initSipUrl(p_to_user); //bpin need to be implemeted// Request URI of Invite is identical with To header |
|
}// end function f_setHeadersReINVITE |
|
/** |
* |
* @desc function for setting of component variables related to message header fields |
* when sending requests from the home I-CSCF (TS) to the visited P-CSCF (SUT) |
* (message type independent: CSeq, contact, via), function uses information from |
* userprofile and interfaceprofile |
* |
* @param p_cSeq_s CSeq parameter |
* @param p_method method name for cSeq header field |
*/ |
function f_setHeadersGeneral_ICSCF(inout CSeq p_cSeq_s, in charstring p_method) runs on SipComponent |
{ |
var SemicolonParam_List v_params; |
|
p_cSeq_s.fieldName := CSEQ_E; |
p_cSeq_s.seqNumber := p_cSeq_s.seqNumber + 1; |
p_cSeq_s.method := p_method ; |
vc_cSeq := p_cSeq_s; |
|
vc_contact := valueof(m_Contact(m_SipUrl_contactIpaddr(vc_userprofile))); |
|
vc_branch := c_branchCookie & f_getRndTag(); |
vc_branch_ICSCF := c_branchCookie & f_getRndTag(); |
|
vc_via:={ |
fieldName := VIA_E, |
viaBody := {valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile)), |
valueof(m_ViaBody_virtualUEinPCSCF(vc_branch_ICSCF, vc_userprofile)) |
} |
}; |
}// end function f_setHeadersGeneral_ICSCF |
|
/** |
* |
* @desc function sets header field for the next outgoing REGISTER message |
* from the visited P-CSCF to the home I-CSCF |
* @param p_cSeq_s CSeq parameter to be applied |
*/ |
function f_setHeaders_REGISTER_PCSCF(inout CSeq p_cSeq_s) runs on SipComponent |
{ |
var SemicolonParam_List v_params; |
|
f_setHeadersGeneral(p_cSeq_s, "REGISTER"); // cseq, contact, branch, via |
|
vc_requestUri:= |
{ |
scheme := c_sipScheme, |
userInfo := omit, |
hostPort := {host:=vc_userprofile.registrarDomain, portField:=omit}, |
urlParameters := omit, |
headers := omit |
}; |
|
vc_reqHostPort := vc_requestUri.hostPort; |
|
vc_callId := { fieldName:=CALL_ID_E, callid:=f_getRndCallId(p_cSeq_s) & c_AT & vc_userprofile.currIpaddr }; |
vc_callIdReg := vc_callId; |
|
vc_to := valueof(m_To(m_SipUrl_currDomain(vc_userprofile))); |
v_params := {{id:=c_tagId, paramValue:=f_getRndTag()}} |
vc_from := {fieldName := FROM_E, |
addressField :=vc_to.addressField, |
fromParams := v_params |
}; |
|
if(not vc_firstREGISTER_sent) |
{ |
v_params := {{id:=c_expiresId, paramValue:=c_shortRegistration}}; |
vc_contact.contactBody.contactAddresses[0].contactParams := v_params; |
} |
|
vc_firstREGISTER_sent := true;//f_setHeaders_Register is called in deREGISTER function |
|
vc_authorization := |
{ |
fieldName := AUTHORIZATION_E, |
body := {f_calculatecCredentials_empty(vc_userprofile)} |
} |
|
}// end function setHeaders_REGISTER_PCSCF |
|
|
|
/* |
* |
* @desc setting of REFER header fields (IMS addresses) |
* extension of general settings from LibSip basic function |
* @param p_cSeq_s current cSeq |
* @param p_to_user user_profile id of the user to be invited |
* @verdict |
*/ |
function f_setHeadersREFER(inout CSeq p_cSeq_s, in integer p_to_user) runs on ImsComponent |
{ |
vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier |
|
vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier |
|
vc_requestUri := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header |
|
if (vc_boo_route) |
{ vc_route := valueof(m_route_interface(vc_interfaceprofile))}; |
if (vc_boo_recordRoute) |
{ vc_recordRoute := valueof(m_recordRoute_currIpAddr(vc_userprofile))}; |
|
LibSip_Steps.f_setHeadersREFER(p_cSeq_s); |
|
}// end f_setHeadersREFER |
|
} // end group fieldOperations |
|
group awaitingMessage { |
} |
group sendMessage { |
} |
group globalSteps { |
|
/* |
* |
* @desc setting of user parameters with PIXIT values |
* @param p_user identifies the selected user configuration and location |
* @verdict |
*/ |
function f_init_userprofile(in integer p_user) runs on ImsComponent |
{ |
LibSip_Steps.f_init_userprofile(p_user); |
|
select(p_user){ |
case (c_userProfile_UE1atSUThome) { //variant c_userProfile_UE1atSUThome |
vc_userprofile.currPort := PX_IMS_TS_UE1_PORT; |
vc_userprofile.currIpaddr := PX_IMS_TS_UE1_IPADDR; |
vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; |
vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; |
} |
case (c_userProfile_UE2atSUThome) { //variant c_userProfile_UE2atSUThome |
vc_userprofile.currPort := PX_IMS_TS_UE2_PORT; |
vc_userprofile.currIpaddr := PX_IMS_TS_UE2_IPADDR; |
vc_userprofile.contactPort := PX_IMS_TS_UE2_PORT; |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE2_IPADDR; |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE2_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE2_HOME_DOMAIN; |
vc_userprofile.publUsername := PX_IMS_SUT_UE2_PUBLIC_USER; |
vc_userprofile.qop := PX_IMS_SUT_UE2_QOP; |
vc_userprofile.privUsername := PX_IMS_SUT_UE2_PRIVAT_USERNAME; |
vc_userprofile.passwd := PX_IMS_SUT_UE2_PRIVAT_PASSWD; |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE2_REGISTRAR; |
} |
case (c_userProfile_UE1atSUTvisiting) { //variant c_userProfile_UE1atSUTvisiting |
vc_userprofile.currPort := PX_IMS_TS_UE1_PORT; |
vc_userprofile.currIpaddr := PX_IMS_TS_UE1_IPADDR; |
vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; |
vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; |
vc_userprofile.registrarDomain := PX_IMS_TS_UE1_REGISTRAR; |
} |
// //temporary not used and it can be deleted during validation |
// case (c_userProfile_UE1atSUTvisiting) { //variant c_userProfile_UE1atSUTvisiting |
// vc_userprofile.currPort := PX_IMS_TS_UE2_PORT; |
// vc_userprofile.currIpaddr := PX_IMS_TS_UE2_IPADDR; |
// vc_userprofile.contactPort := PX_IMS_TS_UE2_PORT; |
// vc_userprofile.contactIpaddr := PX_IMS_TS_UE2_IPADDR; |
// vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE2_BEARER_IPADDR; |
// vc_userprofile.homeDomain := PX_IMS_SUT_UE2_HOME_DOMAIN; |
// vc_userprofile.publUsername := PX_IMS_SUT_UE2_PUBLIC_USER; |
// vc_userprofile.qop := PX_IMS_SUT_UE2_QOP; |
// vc_userprofile.privUsername := PX_IMS_SUT_UE2_PRIVAT_USERNAME; |
// vc_userprofile.passwd := PX_IMS_SUT_UE2_PRIVAT_PASSWD; |
// vc_userprofile.registrarDomain := PX_IMS_TS_UE2_REGISTRAR; |
// } |
|
|
case (c_userProfile_IBCFwithHomeUE) { //variant c_userProfile_IBCFwithHomeUE |
vc_userprofile.currPort := PX_IMS_TS_IBCF_PORT; // via (Ic interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_IBCF_IPADDR; // via |
vc_userprofile.contactPort := PX_IMS_TS_IBCF_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_IBCF_IPADDR; // contact |
vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) |
vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization |
} |
|
|
case (c_userProfile_IBCFwithVisitingUE) { //variant c_userProfile_IBCFwithVisitingUE |
vc_userprofile.currPort := PX_IMS_TS_IBCF_PORT; // via (Ic interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_IBCF_IPADDR; // via |
vc_userprofile.contactPort := PX_IMS_TS_IBCF_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_IBCF_IPADDR; // contact |
//vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) |
vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization |
} |
|
case (c_userProfile_ICSCFwithHomeUE) { //variant c_userProfile_ICSCFwithHomeUE |
vc_userprofile.currPort := PX_IMS_TS_ICSCF_PORT; // via (Mw interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_ICSCF_IPADDR; // via |
vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact |
vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) |
vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization |
} |
|
case (c_userProfile_IBCFwithUnknownUE) { //variant |
vc_userprofile.currPort := PX_IMS_TS_ICSCF_PORT; // via (Mw interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_ICSCF_IPADDR; // via |
vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact |
vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) |
vc_userprofile.publUsername := PX_IMS_SUT_unknownUE_PUBLIC_USER; // From, To (register) |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization |
} |
|
case (c_userProfile_PCSCFwithHomeUE) { //variant c_userProfile_PCSCFwithHomeUE |
vc_userprofile.currPort := PX_IMS_TS_PCSCF_PORT; // via (Mw interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_PCSCF_IPADDR; // via |
vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact |
vc_userprofile.homeDomain := PX_IMS_TS_IMS1UE_HOME_DOMAIN; // From, To (register) |
vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization |
} |
|
case (c_userProfile_PCSCFwithVisitingUE) { //variant c_userProfile_PCSCFwithVisitingUE |
vc_userprofile.currPort := PX_IMS_TS_PCSCF_PORT; // via (Mw interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_PCSCF_IPADDR; // via |
vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact |
vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) |
vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization |
} |
|
// another visting user in IMS (cp. TP_IMST2_MW_REG_15: different public id, same private id) |
case (c_userProfile_PCSCFwithVisitingUE2) { //variant |
vc_userprofile.currPort := PX_IMS_TS_PCSCF_PORT; // via (Mw interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_PCSCF_IPADDR; // via |
vc_userprofile.contactPort := PX_IMS_TS_UE2_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE2_IPADDR; // contact |
vc_userprofile.homeDomain := PX_IMS_SUT_UE2_HOME_DOMAIN; // From, To (register) |
vc_userprofile.publUsername := PX_IMS_SUT_UE2_PUBLIC_USER; // From, To (register) |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization |
} |
|
// unknown visting user in IMS (cp. TP_IMST2_MW_REG_16) |
case (c_userProfile_PCSCFwithUnknownVisitingUE) { //variant |
vc_userprofile.currPort := PX_IMS_TS_PCSCF_PORT; // via (Mw interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_PCSCF_IPADDR; // via |
vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact |
vc_userprofile.homeDomain := PX_IMS_SUT_UE2_HOME_DOMAIN; // From, To (register) |
vc_userprofile.publUsername := PX_IMS_SUT_unknownUE_PUBLIC_USER; // From, To (register) |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization |
} |
|
case (c_userProfile_SCSCFwithHomeUE) { //variant c_userProfile_SCSCFwithHomeUE |
vc_userprofile.currPort := PX_IMS_TS_SCSCF_PORT; // via (Mw interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_SCSCF_IPADDR; // via |
vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact |
vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) |
vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization |
} |
|
case (c_userProfile_AS1) { //variant c_userProfile_AS1 |
vc_userprofile.currPort := PX_IMS_TS_AS1_PORT; // via, route(Isc interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_AS1_IPADDR; // via, route |
vc_userprofile.homeDomain := PX_IMS_TS_AS1_HOME_DOMAIN; // via, route |
} |
|
case (c_userProfile_AS2) { //variant c_userProfile_AS2 |
vc_userprofile.currPort := PX_IMS_TS_AS2_PORT; // via, route(Isc interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_AS2_IPADDR; // via, route |
vc_userprofile.homeDomain := PX_IMS_TS_AS2_HOME_DOMAIN; // via, route |
} |
|
case (c_userProfile_UE1atSUThome) { //variant c_userProfile_UE1atSUThome |
vc_userprofile.currPort := PX_IMS_TS_UE1_PORT; |
vc_userprofile.currIpaddr := PX_IMS_TS_UE1_IPADDR; |
vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; |
vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; |
} |
|
|
} |
} |
|
function f_initToHeader(in integer p_user) runs on ImsComponent return To |
{ |
var To p_to := c_empty_To; |
p_to := { fieldName := TO_E, |
addressField := |
{nameAddr := { |
displayName := omit, // optional charstring |
addrSpec := f_initSipUrl(p_user) // SipUrl |
}},//end addressField |
toParams := omit |
}; |
return(p_to); |
} |
|
|
function f_initFromHeader(in integer p_user, charstring p_tag_str) runs on ImsComponent return From |
{ |
var From p_from := c_empty_From; |
p_from := { fieldName := FROM_E, |
addressField := |
{nameAddr := { |
displayName := omit, // optional charstring |
addrSpec := f_initSipUrl(p_user) // SipUrl |
}},//end addressField |
fromParams := {{id := c_tagId, paramValue := p_tag_str}} |
}; |
return(p_from) |
} |
|
function f_initSipUrl(in integer p_user) runs on ImsComponent return SipUrl |
{ |
var SipUrl p_sipUrl := { |
scheme := c_sipScheme, // contains "sip" |
userInfo := omit, |
hostPort := omit, |
urlParameters := omit, |
headers := omit}; |
|
select(p_user){ |
case (c_userProfile_UE1atSUThome) { |
p_sipUrl.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE1_PUBLIC_USER, password:=omit}; |
p_sipUrl.hostPort := {host := PX_IMS_SUT_UE1_HOME_DOMAIN, portField :=omit} |
} |
case (c_userProfile_UE2atSUThome) { |
p_sipUrl.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE2_PUBLIC_USER, password:=omit}; |
p_sipUrl.hostPort := {host := PX_IMS_SUT_UE2_HOME_DOMAIN, portField :=omit} |
} |
case (c_userProfile_UE3atSUThome) { |
p_sipUrl.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE3_PUBLIC_USER, password:=omit}; |
p_sipUrl.hostPort := {host := PX_IMS_SUT_UE3_HOME_DOMAIN, portField :=omit} |
} |
case (c_userProfile_IBCFwithHomeUE) { |
p_sipUrl.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_IMS1UE_PUBLIC_USER, password:=omit}; |
p_sipUrl.hostPort := {host := PX_IMS_TS_IMS1UE_HOME_DOMAIN, portField :=omit} |
} |
case (c_userProfile_ICSCFwithHomeUE) { |
p_sipUrl.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_IMS1UE_PUBLIC_USER, password:=omit}; |
p_sipUrl.hostPort := {host := PX_IMS_TS_IMS1UE_HOME_DOMAIN, portField :=omit} |
} |
case (c_userProfile_PCSCFwithHomeUE) { |
p_sipUrl.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_IMS1UE_PUBLIC_USER, password:=omit}; |
p_sipUrl.hostPort := {host := PX_IMS_TS_PCSCF_IPADDR, portField :=omit} |
} |
case (c_userProfile_SCSCFwithHomeUE) { |
p_sipUrl.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_IMS1UE_PUBLIC_USER, password:=omit}; |
p_sipUrl.hostPort := {host := PX_IMS_TS_SCSCF_IPADDR, portField :=omit} |
} |
case (c_userProfile_ISUP) { |
p_sipUrl.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_ISUP_PUBLIC_USER, password:=omit}; |
p_sipUrl.hostPort := {host := PX_IMS_TS_ISUP_HOME_DOMAIN, portField :=omit} |
} |
case (c_serviceProfile_EMERGENCY) { |
p_sipUrl.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_EMERGENCY_SERVICE, password:=omit}; |
p_sipUrl.hostPort := {host := PX_IMS_SUT_EMERGENCY_HOME_DOMAIN, portField :=omit} |
} |
case (c_serviceProfile_EMERGENCY_INVALID) { |
p_sipUrl.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_EMERGENCY_SERVICE_INVALID, password:=omit}; |
p_sipUrl.hostPort := {host := PX_IMS_SUT_EMERGENCY_HOME_DOMAIN, portField :=omit} |
} |
|
// following setting is used for the assignment of the Path header field |
case (c_interfaceProfile_IMS_SUT_PCSCF1) { |
p_sipUrl.userInfo := {userOrTelephoneSubscriber:="", password:=omit}; |
p_sipUrl.hostPort := {host := PX_IMS_SUT_PCSCF1_HOME_DOMAIN, portField :=PX_IMS_SUT_PCSCF1_PORT} |
} |
|
// following setting is used in relation to the route headers list elements |
case (c_interfaceSIPURL_IMS_SUT_PCSCF1_domain) { |
p_sipUrl.userInfo := {userOrTelephoneSubscriber:="", password:=omit}; |
p_sipUrl.hostPort := {host := PX_IMS_SUT_PCSCF1_HOME_DOMAIN, portField :=PX_IMS_SUT_PCSCF1_PORT} |
} |
case (c_interfaceSIPURL_IMS_SUT_PCSCF1_ip) { |
p_sipUrl.userInfo := {userOrTelephoneSubscriber:="", password:=omit}; |
p_sipUrl.hostPort := {host := PX_IMS_SUT_PCSCF1_IPADDR, portField :=PX_IMS_SUT_PCSCF1_PORT} |
} |
case (c_conferenceProfile_factoryURI) { |
p_sipUrl.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_CONF_FACTORY_NAME, password:=omit}; |
p_sipUrl.hostPort := {host := PX_IMS_SUT_CONF_HOME_DOMAIN, portField := PX_IMS_SUT_CONF_PORT} |
} |
}; |
return(p_sipUrl) |
} |
|
|
/* |
* |
* @desc setting of user parameters with PIXIT values |
* @param p_user identifies the selected user configuration and location |
* @verdict |
*/ |
function f_init_interfaceprofile(in integer p_interface) runs on ImsComponent |
{ |
select(p_interface){ |
case (c_interfaceProfile_IMS_SUT_IBCF1) { //variant c_interfaceProfile_IMS_SUT_IBCF1 |
vc_interfaceprofile.SUTPort := PX_IMS_SUT_IBCF1_PORT; |
vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IBCF1_IPADDR; |
vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IBCF1_HOME_DOMAIN; |
} |
case (c_interfaceProfile_IMS_SUT_IBCF2) { //variant c_interfaceProfile_IMS_SUT_IBCF2 |
vc_interfaceprofile.SUTPort := PX_IMS_SUT_IBCF2_PORT; |
vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IBCF2_IPADDR; |
vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IBCF2_HOME_DOMAIN; |
} |
case (c_interfaceProfile_IMS_SUT_PCSCF1) { //variant c_interfaceProfile_IMS_SUT_PCSCF1 |
vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF1_PORT; |
vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF1_IPADDR; |
vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF1_HOME_DOMAIN; |
} |
case (c_interfaceProfile_IMS_SUT_PCSCF2) { //variant c_interfaceProfile_IMS_SUT_PCSCF2 |
vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF2_PORT; |
vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF2_IPADDR; |
vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF2_HOME_DOMAIN; |
} |
case (c_interfaceProfile_IMS_SUT_PCSCF) { //variant c_interfaceProfile_IMS_SUT_PCSCF |
vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF_PORT; |
vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF_IPADDR; |
vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF_HOME_DOMAIN; |
} |
case (c_interfaceProfile_IMS_SUT_SCSCF) { //variant c_interfaceProfile_IMS_SUT_SCSCF |
vc_interfaceprofile.SUTPort := PX_IMS_SUT_SCSCF_PORT; |
vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_SCSCF_IPADDR; |
vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_SCSCF_HOME_DOMAIN; |
} |
case (c_interfaceProfile_IMS_SUT_ICSCF) { //variant c_interfaceProfile_IMS_SUT_ICSCF |
vc_interfaceprofile.SUTPort := PX_IMS_SUT_ICSCF_PORT; |
vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_ICSCF_IPADDR; |
vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_ICSCF_HOME_DOMAIN; |
} |
case (c_interfaceProfile_IMS_SUT_MGCF) { //variant c_interfaceProfile_IMS_SUT_MGCF |
vc_interfaceprofile.SUTPort := PX_IMS_SUT_IMGCF_PORT; |
vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IMGCF_IPADDR; |
vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IMGCF_HOME_DOMAIN; |
} |
} |
} |
|
/* |
* |
* @desc retrieve HostPort value of the interface profile |
* @param p_interface identifies the selected interface |
* @return HostPort template |
*/ |
function f_get_interfaceHostPort (in ImsInterfaceProfile p_interface) runs on ImsComponent return /*template*/ HostPort // STS commented out template but check why in there in first place |
{ |
return {p_interface.SUTIpaddr,p_interface.SUTPort} |
} |
|
/* |
* |
* @desc retrieve DomainPort value of the interface profile |
* @param p_interface identifies the selected interface |
* @return DomainPort template |
*/ |
function f_get_interfaceDomainPort (in ImsInterfaceProfile p_interface) runs on ImsComponent return /*template*/ HostPort |
{ |
return {p_interface.SUTHomeDomain,p_interface.SUTPort} |
} |
|
/* |
* @desc retrieve SipUrl of the interface profile |
* @param p_interface identifies the selected interface |
* @return SipUrl template |
*/ |
function f_get_interfaceNameAddr(in ImsInterfaceProfile p_interface) runs on ImsComponent return template NameAddr |
{ |
return mw_SipUrl_SUTinterface(p_interface.SUTIpaddr,p_interface.SUTPort) |
} |
|
|
} |
group registration { |
|
/** |
* |
* @desc registration and authentication with MD5 |
* @param p_cSeq_s cseq parameter |
* @param p_auth flag indicating if authentication is needed |
*/ |
function f_Registration_IMS(inout CSeq p_cSeq_s, in boolean p_auth) runs on SipComponent |
{ |
f_setHeaders_REGISTER(p_cSeq_s); |
f_SendREGISTER(m_REGISTER_Request_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest(vc_authorization,{c_Integrity_protected_no}))); //LibSip |
|
//awaiting of 401 and sending 2nd REGISTER and awaiting 200 OK REGISTER |
if (p_auth) |
{ |
// receiving 401 Unauthorized response. |
// and Re-send REGISTER request with Authorization header |
tc_ack.start(PX_SIP_TACK); |
alt |
{ |
[] SIPP.receive (mw_Response_Base(c_statusLine401, vc_callId, p_cSeq_s)) -> value vc_response |
{ |
tc_ack.stop; |
// set headers via, cseq and authorization |
f_setHeaders_2ndREGISTER(); |
f_SendREGISTER(m_REGISTER_Request_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest(vc_authorization,{c_Integrity_protected_yes}))); //LibSip |
|
// awaiting 200 OK REGISTER |
f_awaitingOkResponse(p_cSeq_s); |
f_getServiceRouteMapIntoRouteInRegistration(p_cSeq_s, vc_response); |
} |
[] SIPP.receive (mw_Response_Base(c_statusLine200, vc_callId, p_cSeq_s)) |
{ |
tc_ack.stop; |
log ("Authorization was not requested as expected"); |
setverdict(inconc) |
} |
} |
} |
else |
{ |
f_awaitingOkResponse(p_cSeq_s); |
f_getServiceRouteMapIntoRouteInRegistration(p_cSeq_s, vc_response); |
}; |
}//end function f_Registration_IMS |
|
/** |
* |
* @desc awaiting UE1 registration (with authentication) |
* @param p_cSeq_s cseq parameter |
*/ |
function f_awaitingRegistration_IMS(inout CSeq p_cSeq_s) runs on SipComponent |
{ |
|
//Awaiting 1st REGISTER |
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS); |
|
// 401 response |
f_sendResponse(m_Response_WWWauthenticate_IMS(c_statusLine401, |
vc_callId, vc_cSeq,vc_caller_From, vc_caller_To, vc_via, |
m_wwwAuthenticate(f_calculatecChallenge_forWWWAuthorization |
(PX_IMS_SUT_UE1_QOP,vc_authorization.body[0].digestResponse))) |
); |
|
//Awaiting 2nd REGISTER with authorization header |
f_awaitingREGISTER(mw_REGISTER_authorizedRequest_IMS(m_Authorization_digest(mw_digestResponse(c_Integrity_protected_yes)))); |
|
// 200OK to complete the request |
vc_contact := vc_request.msgHeader.contact; |
vc_contact.contactBody.contactAddresses[0].contactParams := {{"expires",int2str(3600)}}; |
f_sendResponse(m_Response_2xxonREGISTER_IMS(c_statusLine200,vc_callId, vc_cSeq,vc_callee_From, vc_callee_To, vc_via,vc_contact,f_initSipUrl(c_userProfile_SCSCFwithHomeUE))); |
|
}//end function f_awaitingRegistration_IMS |
|
} // end group registration |
|
group preambles { |
|
/* |
* |
* @desc Set variables and default initialization for user profile where proxy role is present |
* @param p_userprofile user profile of call |
* @param p_cSeq_s cseq parameter |
*/ |
function f_IMS_preamble_MGCF(in integer p_userprofile, inout CSeq p_cSeq_s) runs on ImsComponent |
{ |
vc_boo_recordRoute := true; |
vc_boo_route := true; |
f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_MGCF); |
|
f_IMS_preamble_woRegistration(p_userprofile, p_cSeq_s); |
} |
|
/* |
* |
* @desc Set variables and default initialization for user profile |
* @param p_userprofile user profile of call |
* @param p_cSeq_s cseq parameter |
*/ |
function f_IMS_preamble_woRegistration(in integer p_userprofile, inout CSeq p_cSeq_s) runs on ImsComponent |
{ |
//Variables & defaults initialization |
LibSip_Steps.f_init_component(p_cSeq_s); |
|
//Preamble |
f_init_userprofile(p_userprofile); // assignment of PIXIT values to component variable |
vc_sdp_local := valueof(m_SDP_bandwidth(valueof(m_media_dynPT(PX_SIP_SDP_dyn, PX_SIP_SDP_encoding)), vc_userprofile)); |
|
} |
|
/* |
* |
* @desc Set variables and default initialization for user profile and handle registration and authentication with MD5 |
* @param p_userprofile user profile of call |
* @param p_cSeq_s cseq parameter |
* @param p_register register template |
*/ |
function f_IMS_preamble_withRegistration (in integer p_userprofile, inout CSeq p_cSeq_s, template REGISTER_Request p_register) runs on ImsComponent |
{ |
|
//Variables & defaults initialization |
f_IMS_preamble_woRegistration(p_userprofile, p_cSeq_s); |
|
//Preamble |
f_Registration(p_cSeq_s, p_register, PX_SIP_REGISTER_AUTHENTICATION_ENABLED); |
|
f_Subscription(p_cSeq_s, m_SUBSCRIBE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact)); |
} |
|
/* |
* |
* @desc Set variables and default initialization for user profile and handle registration and authentication with MD5 |
* (basic registration template) |
* @param p_userprofile user profile of call |
* @param p_cSeq_s cseq parameter |
*/ |
function f_IMS_preamble_withRegistrationBasic (in integer p_userprofile, inout CSeq p_cSeq_s) runs on ImsComponent |
{ |
|
//Variables & defaults initialization |
f_IMS_preamble_woRegistration(p_userprofile, p_cSeq_s); |
|
//Preamble |
f_Registration_IMS(p_cSeq_s, PX_SIP_REGISTER_AUTHENTICATION_ENABLED); |
|
f_Subscription(p_cSeq_s, m_SUBSCRIBE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact)); |
} |
|
} // end group preambles |
|
group postambles { |
|
function f_IMS_postamble_withDeRegistration (CSeq p_CSeq) runs on ImsComponent { |
f_RemoveRegistration(p_CSeq); // TODO check if applicable for IMS |
|
f_terminate_component(); |
} |
|
function f_SIP_postamble_IMS1_withoutRegistration () runs on ImsComponent |
{f_terminate_component()}; |
|
function f_IMS_postamble_withoutDeRegistration () runs on ImsComponent |
{f_terminate_component()}; |
|
function f_SIP_postamble_IMS1_awaitDeRegistration () runs on ImsComponent |
{ |
//Awaiting 1st REGISTER |
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS); |
|
// 401 response |
f_sendResponse(m_Response_WWWauthenticate_IMS(c_statusLine401, |
vc_callId, vc_cSeq,vc_caller_From, vc_caller_To, vc_via, |
m_wwwAuthenticate(f_calculatecChallenge_forWWWAuthorization |
(PX_IMS_SUT_UE1_QOP,vc_authorization.body[0].digestResponse))) |
); |
|
//Awaiting 2nd REGISTER with authorization header |
f_awaitingREGISTER(mw_REGISTER_authorizedRequest_IMS(m_Authorization_digest(mw_digestResponse(c_Integrity_protected_yes)))); |
|
// 200OK to complete the request |
vc_contact := vc_request.msgHeader.contact; |
vc_contact.contactBody.contactAddresses[0].contactParams := {{"expires",int2str(3600)}}; |
f_sendResponse(m_Response_2xxonREGISTER_IMS(c_statusLine200,vc_callId, vc_cSeq,vc_callee_From, vc_callee_To, vc_via,vc_contact,f_initSipUrl(c_userProfile_SCSCFwithHomeUE))); |
|
f_terminate_component() |
}; |
|
function f_IMS_postamble_awaitDeRegistration () runs on ImsComponent |
{ |
//Awaiting 1st REGISTER |
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS); |
|
// 401 response |
f_sendResponse(m_Response_WWWauthenticate_IMS(c_statusLine401, |
vc_callId, vc_cSeq,vc_caller_From, vc_caller_To, vc_via, |
m_wwwAuthenticate(f_calculatecChallenge_forWWWAuthorization |
(PX_IMS_SUT_UE1_QOP,vc_authorization.body[0].digestResponse))) |
); |
|
//Awaiting 2nd REGISTER with authorization header |
f_awaitingREGISTER(mw_REGISTER_authorizedRequest_IMS(m_Authorization_digest(mw_digestResponse(c_Integrity_protected_yes)))); |
|
// 200OK to complete the request |
vc_contact := vc_request.msgHeader.contact; |
vc_contact.contactBody.contactAddresses[0].contactParams := {{"expires",int2str(3600)}}; |
f_sendResponse(m_Response_2xxonREGISTER_IMS(c_statusLine200,vc_callId, vc_cSeq,vc_callee_From, vc_callee_To, vc_via,vc_contact,f_initSipUrl(c_userProfile_SCSCFwithHomeUE))); |
|
f_terminate_component() |
}; |
|
function f_SIP_postamble_UE1_withoutRegistration () runs on ImsComponent |
{f_terminate_component()}; |
|
function f_SIP_postamble_UE2_withoutRegistration () runs on ImsComponent |
{f_terminate_component()}; |
|
/** |
* |
* @desc function send BYE and awaits reponse |
* @param p_CallId parameter for outgoing BYE |
* @param p_cSeq parameter for outgoing BYE |
* @param p_from parameter for outgoing BYE |
* @param p_to parameter for outgoing BYE |
* @param p_reqHostPort parameter for outgoing BYE |
*/ |
function f_terminateCall_IMS(SipUrl p_requestUri, CallId p_CallId, inout CSeq p_cSeq, From p_from, |
template To p_to) runs on ImsComponent |
{ |
// Sending of a BYE request to release the call and expect a final response |
f_SendBYE(m_BYE_Request_IMS(p_requestUri, p_CallId, p_cSeq, p_from, valueof(p_to), vc_via, vc_route)); |
|
tc_resp.start(PX_SIP_TRESP); |
alt |
{ |
[] SIPP.receive (mw_Response_Base(mw_statusLine1xx, p_CallId, p_cSeq)) |
{ |
repeat; |
} |
[] SIPP.receive (mw_Response_Base(mw_statusLineFinal, p_CallId, p_cSeq)) |
{ |
tc_resp.stop; |
} |
// timeout should be handled in default_alt_step |
} |
} // end function f_terminateCall |
|
|
/** |
* |
* @desc function send BYE and awaits reponse |
* @param p_CallId parameter for outgoing BYE |
* @param p_cSeq parameter for outgoing BYE |
* @param p_from parameter for outgoing BYE |
* @param p_to parameter for outgoing BYE |
* @param p_reqHostPort parameter for outgoing BYE |
*/ |
function f_terminateCall_UE(SipUrl p_requestUri, CallId p_CallId, inout CSeq p_cSeq, From p_from, |
template To p_to) runs on ImsComponent |
{ |
// Sending of a BYE request to release the call and expect a final response |
f_SendBYE(m_BYE_Request_UE(p_requestUri, p_CallId, p_cSeq, p_from, valueof(p_to), vc_via, vc_route)); |
|
tc_resp.start(PX_SIP_TRESP); |
alt |
{ |
[] SIPP.receive (mw_Response_Base(mw_statusLine1xx, p_CallId, p_cSeq)) |
{ |
repeat; |
} |
[] SIPP.receive (mw_Response_Base(mw_statusLineFinal, p_CallId, p_cSeq)) |
{ |
tc_resp.stop; |
} |
// timeout should be handled in default_alt_step |
} |
} // end function f_terminateCall_UE |
|
} |
group defaults { |
} |
} // module LibIms_Steps |
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+Id |
\ No newline at end of property |
Index: v1.0.0/ttcn/LibIms_Templates.ttcn |
=================================================================== |
--- v1.0.0/ttcn/LibIms_Templates.ttcn (nonexistent) |
+++ v1.0.0/ttcn/LibIms_Templates.ttcn (revision 156) |
@@ -0,0 +1,2376 @@ |
+/* |
+ * @author STF 346 |
+ * @version $Id$ |
+ * @desc This module provides the types used by the test component |
+ * for SIP-IMS tests. Module become from STF306 and STF334-336 |
+ */ |
+ |
+module LibIms_Templates |
+{ |
+ //LibCommon |
+ import from LibCommon_DataStrings all; |
+ |
+ //LibSip |
+ import from LibSip_SIPTypesAndValues all; |
+ import from LibSip_SDPTypes all; |
+ import from LibSip_Templates all; |
+ import from LibSip_Steps all; |
+ import from LibSip_PIXITS all; |
+ import from LibSip_XMLTypes all; |
+ |
+ //LibIms |
+ import from LibIms_SIPTypesAndValues all; |
+ |
+ import from LibIms_PIXITS all; |
+ |
+ template charstring m_international_number_format := pattern "\\+\d+";//pattern "\+\d+"; |
+ |
+ template NameAddr mw_SipUrl_SUTinterface(charstring p_host, integer p_port) := |
+ { |
+ displayName := *, |
+ addrSpec := { |
+ scheme := "sip:", |
+ userInfo := *, |
+ hostPort := {p_host, p_port}, |
+ urlParameters := *, |
+ headers := * |
+ } |
+ } |
+ |
+ template Addr_Union mw_UE1_Addr_display := {nameAddr:={displayName:=PX_IMS_SUT_UE1_DISPLAY,addrSpec:=?}}; |
+ |
+group Subfields{ |
+ |
+ template SemicolonParam_List mw_semicolonParams_realm (template charstring p_realm) := |
+ ?; //superset({"realm",p_realm},{"rand",?},{"autn",?},{"algorithm","AKAv1-MD5"},{"ik",?},{"ck",?}) // ERROR HERE! Superset operation must contain value list - no templates! |
+ |
+ template SemicolonParam_List m_semicolonParams_language (template charstring p_language):= |
+ {{"language",p_language}} |
+ |
+ template SemicolonParam_List mw_semicolonParams_language (template charstring p_language):= |
+ {{"language",p_language}} |
+} |
+ |
+group HeaderFieldTemplates{ |
+ |
+ template MinSE m_minSE(DeltaSec p_ds):= |
+ { |
+ fieldName := MIN_SE_E, |
+ deltaSec:=p_ds, |
+ minSeParam:=omit |
+ } |
+ |
+ template PathValue m_pathvalue (SipUrl p_sipUrl):= |
+ { |
+ nameAddr := {displayName := omit, // optional charstring |
+ addrSpec := p_sipUrl // SipUrl |
+ }, |
+ rrParam := omit |
+ } |
+ |
+ template Path m_path (SipUrl p_sipUrl):= |
+ { |
+ fieldName := PATH_E, |
+ pathValues := { |
+ {nameAddr := { |
+ displayName := omit, // optional charstring |
+ addrSpec := p_sipUrl // SipUrl |
+ }, |
+ rrParam := omit} |
+ } |
+ } |
+ |
+/* |
+ * @desc Path header field expectation with at least one path value |
+ * @param p_sipUrl value of the last element in the list of path values |
+ */ |
+ template Path mw_path (SipUrl p_sipUrl):= |
+ { |
+ fieldName := PATH_E, |
+ pathValues := {*,m_pathvalue(p_sipUrl)} // any number of SipUrl may occur before p_sipUrl |
+ } |
+ |
+ template PAccessNetworkInfo m_pAccessNetworkInfo_IEEE_11a := |
+ { |
+ fieldName := P_ACCESS_NETWORK_INFO_E, |
+ accessType := "IEEE-802.11a", |
+ genericParams := {{id:="extension-access-info",paramValue :="192.1.1.20"}} |
+ }; |
+ |
+ template PAssertedService m_pAssertedService (PAssertedServiceValue p_pAssertedServiceValue):= |
+ { |
+ fieldName := P_ASSERTED_SERVICE_E, |
+ pAssertedServiceValue := p_pAssertedServiceValue |
+ }; |
+ |
+ template PChargingFunctionAddresses m_pChargingFunctionAddresses_fixedValue := |
+ { |
+ fieldName := P_CHARGING_FUNCTION_ADDRESSES_E, |
+ chargeAddrParams := {{id:="ccf",paramValue :="192.1.1.1"}, // value is fixed because it is deleted on proxy |
+ {id:="ecf",paramValue :="192.1.1.2"}} // value is fixed because it is deleted on proxy |
+ }; |
+ |
+ |
+ template PChargingVector m_pChargingVector_fixedValue(charstring p_homeDomain) := |
+ { |
+ fieldName := P_CHARGING_VECTOR_E, |
+ chargeParams := {{id:="icid-value", paramValue :="123abc"}, |
+ {id:="icid-generated-at", paramValue :="192.1.1.10"}, |
+ {id:="orig-ioi", paramValue := p_homeDomain}} |
+ }; |
+ template PChargingVector m_pChargingVector_fixedValue1(charstring p_homeDomain) := |
+ { |
+ fieldName := P_CHARGING_VECTOR_E, |
+ chargeParams := { |
+ {id:="icid-generated-at", paramValue :="192.1.1.10"}, |
+ {id:="orig-ioi", paramValue := p_homeDomain}} |
+ }; |
+ |
+ template PChargingVector mw_pChargingVector(template charstring p_id, template charstring p_paramValue) := |
+ { |
+ fieldName := P_CHARGING_VECTOR_E, |
+ chargeParams := superset({id := valueof(p_id), paramValue := p_paramValue}) |
+ }; |
+ |
+ template PMediaAuthorization m_pMediaAuthorization_fixedValue := |
+ { |
+ fieldName := P_MEDIA_AUTHORIZATION_E, |
+ pMediaAuthorizations := {"A"} // example |
+ }; |
+ |
+ |
+ template PEarlyMedia m_pEarlyMedia_sup := |
+ {fieldName := P_EARLY_MEDIA_E, em_param := {"supported"}}; |
+ |
+ |
+ template ProxyRequire m_proxyRequire_secAgree := |
+ { |
+ fieldName := PROXY_REQUIRE_E, |
+ optionsTags := {"sec-agree"} |
+ }; |
+ |
+ template PVisitedNetworkID mw_pVisitedNetworkID := |
+ { |
+ fieldName := P_VISITED_NETWORK_E, |
+ vNetWorkSpec := {{vNetworkSpecToken := PX_IMS_SUT_PCSCF_VisitedNetworkID, |
+ genericParams := *}} |
+ } |
+ |
+ template RecordRoute m_recordRoute_notmatching:= |
+ { |
+ fieldName := RECORD_ROUTE_E, |
+ routeBody := |
+ {{ |
+ nameAddr := |
+ { |
+ displayName := omit, |
+ addrSpec := |
+ { |
+ scheme := c_sipScheme, // contains "sip" |
+ userInfo := {userOrTelephoneSubscriber := "unknown", password := omit}, |
+ hostPort := |
+ { |
+ host := "unknown.domain.name", // hostname, IPv4 or IPv6 as a charstring |
+ portField := omit |
+ }, |
+ urlParameters := omit, |
+ headers := omit |
+ } |
+ }, |
+ rrParam := omit |
+ } } |
+ }; |
+ |
+ template Require m_require_secAgree := |
+ { |
+ fieldName := REQUIRE_E, |
+ optionsTags := {"sec-agree"} |
+ }; |
+ |
+ template Require mw_require_path := |
+ { |
+ fieldName := REQUIRE_E, |
+ optionsTags := superset("path") |
+ }; |
+ |
+ template Route m_route_interface (in ImsInterfaceProfile p_interfaceprofile):= |
+ { |
+ fieldName := ROUTE_E, |
+ routeBody := {{nameAddr := {displayName := omit, |
+ addrSpec := {scheme := c_sipScheme, // contains "sip" |
+ userInfo := omit, |
+ hostPort := {host:=p_interfaceprofile.SUTIpaddr, portField:= p_interfaceprofile.SUTPort}, |
+ urlParameters := omit, |
+ headers := omit} |
+ }, |
+ rrParam := omit} |
+ }}; |
+ |
+ template Route m_route_notmatching:= |
+ { |
+ fieldName := ROUTE_E, |
+ routeBody := |
+ {{ |
+ nameAddr := |
+ { |
+ displayName := omit, |
+ addrSpec := |
+ { |
+ scheme := c_sipScheme, // contains "sip" |
+ userInfo := {userOrTelephoneSubscriber := "unknown", password := omit}, |
+ hostPort := |
+ { |
+ host := "unknown.domain.name", // hostname, IPv4 or IPv6 as a charstring |
+ portField := omit |
+ }, |
+ urlParameters := omit, |
+ headers := omit |
+ } |
+ }, |
+ rrParam := omit |
+ } } |
+ }; |
+ |
+ template SessionExpires m_se(DeltaSec p_ds):= |
+ { |
+ fieldName := SESSION_EXPIRES_E, |
+ deltaSec:=p_ds, |
+ seParam:=omit |
+ } |
+ |
+ template SessionExpires mw_se:= |
+ { |
+ fieldName := SESSION_EXPIRES_E, |
+ deltaSec:=?, |
+ seParam:=omit |
+ } |
+ |
+ template Supported m_supported_timer:= |
+ { |
+ fieldName := SUPPORTED_E, |
+ optionsTags := {"timer"} |
+ } |
+ |
+ |
+ template Supported m_supported_fromChange:= |
+ { |
+ fieldName := SUPPORTED_E, |
+ optionsTags := {"from-change"} |
+ } |
+ |
+ template To m_To_targetRefreshRequest(template To p_To) := |
+ { |
+ fieldName := TO_E, |
+ addressField := |
+ {nameAddr := { |
+ displayName := p_To.addressField.nameAddr.displayName, |
+ addrSpec := p_To.addressField.nameAddr.addrSpec |
+ }},//end addressField |
+ toParams := {{id := c_tagId, paramValue := f_getRndTag()}} |
+ }; |
+ |
+ template ViaBody m_ViaBody_virtualUEinPCSCF(charstring branch_val,in SipUserProfile p_userprofile) := |
+ { |
+ sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT), |
+ sentBy:={host:=p_userprofile.contactIpaddr, portField:= p_userprofile.contactPort}, |
+ viaParams:={{id :=c_branchId,paramValue :=branch_val}} |
+ } |
+ |
+ template Via m_via_notmatching:= |
+ { |
+ fieldName := VIA_E, |
+ viaBody := |
+ {{ |
+ sentProtocol := valueof(m_SentProtocol("UDP")), |
+ sentBy:={host:="unknown.domain.name", portField:= 10000}, |
+ viaParams:={{id :=c_branchId,paramValue :="abcd0000"}} |
+ } } |
+ }; |
+ |
+ /* |
+ * @desc WWW-Authenticate header field |
+ * @param p_challenge value |
+ */ |
+ template WwwAuthenticate m_wwwAuthenticate (Challenge p_challenge):= |
+ { |
+ fieldName := WWW_AUTHENTICATE_E, |
+ challenge := p_challenge |
+ } |
+ |
+ /* |
+ * @desc WWW-Authenticate header field |
+ * @param p_challenge value |
+ */ |
+ template WwwAuthenticate mw_wwwAuthenticate (template SemicolonParam_List p_semicolonParam_List):= |
+ { |
+ fieldName := WWW_AUTHENTICATE_E, |
+ challenge := |
+ {digestCln := p_semicolonParam_List // set of GenericParam |
+ } |
+ } |
+ |
+ |
+ |
+ /* |
+ * @desc AcceptContact header field |
+ * @param p_acValues value |
+ */ |
+ template AcceptContact m_acceptContact (template SemicolonParam_List p_semicolonParam_List):= |
+ { |
+ fieldName := ACCEPT_CONTACT_E, |
+ acValues := {{wildcard:=c_WILDCARD, acRcParams := p_semicolonParam_List} // set of GenericParam |
+ } |
+ } |
+ |
+ /* |
+ * @desc Authenticate header field |
+ * @param p_challenge value |
+ */ |
+ template AcceptContact mw_acceptContact (template SemicolonParam_List p_semicolonParam_List):= |
+ { |
+ fieldName := ACCEPT_CONTACT_E, |
+ acValues := |
+ {{wildcard:=c_WILDCARD, acRcParams := p_semicolonParam_List} // set of GenericParam |
+ } |
+ } |
+ |
+ template SubscriptionState mw_subscriptionState(charstring p_state) := { |
+ fieldName := SUBSCRIPTION_STATE_E, |
+ subState := p_state, |
+ substateParams := omit |
+ } |
+ |
+} // end group HeaderFieldTemplates |
+ |
+group MessageBodyTemplates { |
+ |
+group XMLTemplates { |
+ |
+ template XmlBody m_XmlBody_ACR_ICB(template Incoming_communication_barring p_icb) := |
+ { |
+ icb := p_icb |
+ }; |
+ |
+ template XmlBody m_XmlBody_ACR_OCB(template Outgoing_communication_barring p_ocb) := |
+ { |
+ ocb := p_ocb |
+ }; |
+ |
+ template XmlBody m_XmlBody_ConfInfo(template Conference_info p_confInfo) := |
+ { |
+ conferenceInfo := p_confInfo |
+ }; |
+ |
+ template XmlBody m_XmlBody_CUG(template Cug p_cug) := |
+ { |
+ cug := p_cug |
+ }; |
+ |
+ template XmlBody m_XmlBody_MCID(template Mcid p_mcid) := |
+ { |
+ mcid := p_mcid |
+ }; |
+ |
+ template XmlBody m_XmlBody_PSTNTransit(template PSTN_transit p_pstn) := |
+ { |
+ pstnTransit := p_pstn |
+ }; |
+ |
+ template XmlBody m_XmlBody_CDIVN(template Comm_div_info p_cdivn) := |
+ { |
+ cdivn := p_cdivn |
+ }; |
+ |
+ template XmlBody mw_XmlBody_ConfInfo(template Conference_info p_confInfo) := |
+ { |
+ conferenceInfo := p_confInfo |
+ }; |
+ |
+ template XmlBody mw_XmlBody_CUG(template Cug p_cug) := |
+ { |
+ cug := p_cug |
+ }; |
+ |
+ template XmlBody mw_XmlBody_MCID(template Mcid p_mcid) := |
+ { |
+ mcid := p_mcid |
+ }; |
+ |
+ template XmlBody mw_XmlBody_PSTNTransit(template PSTN_transit p_pstn) := |
+ { |
+ pstnTransit := p_pstn |
+ }; |
+ |
+ template XmlBody mw_XmlBody_CDIVN(template Comm_div_info p_cdivn) := |
+ { |
+ cdivn := p_cdivn |
+ }; |
+ |
+}// end group XMLTemplates |
+ |
+group ACR_CBTemplates { |
+ |
+ template Incoming_communication_barring m_ICB(RuleType p_ruleType) := |
+ { |
+ ruleset_icb := { |
+ rule:= {p_ruleType} |
+ } |
+ } |
+ |
+ template Outgoing_communication_barring m_OCB(RuleType p_ruleType) := |
+ { |
+ ruleset_ocb := { |
+ rule:= {p_ruleType} |
+ } |
+ } |
+ |
+ template RuleType m_ruleType_actionFalse(template ConditionsType p_condition) := |
+ { |
+ id := "rule66", |
+ conditions := p_condition, |
+ actions := {bool := false}, |
+ transformations := omit |
+ } |
+ |
+ template ConditionsType m_conditionsType_identity(template charstring p_id, template charstring p_scheme) := { |
+ choice := {{ |
+ identity := {{ |
+ choice := {{ |
+ one := { |
+ id := p_id, |
+ scheme := p_scheme, |
+ any_1 := omit |
+ } |
+ }} |
+ }} |
+ }} |
+ } |
+ |
+ |
+ |
+ |
+} //end group ACR_CBTemplates |
+ |
+group CUGTemplates { |
+ |
+ template Cug m_CUG (template CugRequestType p_crt, |
+ template NetworkIdentityType p_nit, |
+ template SixteenbitType p_cibc, |
+ template TwoBitType p_cci):= |
+ { |
+ cugCallOperation := p_crt, |
+ networkIndicator := p_nit, |
+ cugInterlockBinaryCode := p_cibc, |
+ cugCommunicationIndicator :=p_cci |
+ } |
+ |
+ template Cug mw_CUG (template CugRequestType p_crt, |
+ template NetworkIdentityType p_nit, |
+ template SixteenbitType p_cibc, |
+ template TwoBitType p_cci):= |
+ { |
+ cugCallOperation := p_crt, |
+ networkIndicator := p_nit, |
+ cugInterlockBinaryCode := p_cibc, |
+ cugCommunicationIndicator := p_cci |
+ } |
+ |
+ template CugRequestType m_cugReqType(template boolean p_outAccessRequest, template integer p_cugIndex) := |
+ { |
+// outgoingAccessRequest := p_outAccessRequest, |
+// cugIndex := p_cugIndex |
+//TODO: workaround for ttwb118 |
+ outgoingAccessRequest := {bool:=p_outAccessRequest}, |
+ cugIndex := valueof(p_cugIndex) |
+ } |
+ |
+ template CugRequestType mw_cugReqType(template boolean p_outAccessRequest, template integer p_cugIndex) := |
+ { |
+ outgoingAccessRequest := {bool:=p_outAccessRequest}, |
+ cugIndex := p_cugIndex |
+ } |
+}//end group CUGTemplates |
+ |
+group MCIDTemplates { |
+ |
+ template Mcid m_mcid_request_mcidIndicatorTrue := |
+ { |
+ choice := { |
+ request := {McidRequestIndicator := bit2str('1'B), |
+ HoldingIndicator := bit2str('0'B)} |
+ } |
+ } |
+ |
+ template Mcid m_mcid_response_mcidIndicatorTrue := |
+ { |
+ choice := { |
+ response := {McidResponseIndicator := bit2str('1'B), |
+ HoldingProvidedIndicator := bit2str('0'B)} |
+ } |
+ } |
+ |
+ template Mcid mw_mcid_request_mcidIndicatorTrue := |
+ { |
+ choice := { |
+ request := {McidRequestIndicator := bit2str('1'B), |
+ HoldingIndicator := *} |
+ } |
+ } |
+ |
+ template Mcid mw_mcid_response_mcidIndicatorTrue := |
+ { |
+ choice := { |
+ response := {McidResponseIndicator := bit2str('1'B), |
+ HoldingProvidedIndicator := *} |
+ } |
+ } |
+ |
+} //end group MCIDTemplates |
+ |
+group PSTNTemplates { |
+ |
+ template PSTN_transit m_PSTN_transit(template BearerCapabilityType p_bct, |
+ template BearerCapabilityType p_bct2, |
+ template HighLayerCompatibilityType p_hlc, |
+ template HighLayerCompatibilityType p_hlc2, |
+ template LowLayerCompatibilityType p_llc, |
+ template ProgressIndicatorType p_pi, |
+ template DisplayType p_d) := |
+ { |
+ BearerInfomationElement := {p_bct, p_bct2}, |
+ HighLayerCompatibility := {p_hlc, p_hlc2}, |
+ LowLayerCompatibility := p_llc, |
+ ProgressIndicator := {p_pi}, |
+ Display := {p_d} |
+ } |
+ |
+ template PSTN_transit m_PSTN_transit_2PI(template BearerCapabilityType p_bct, |
+ template BearerCapabilityType p_bct2, |
+ template HighLayerCompatibilityType p_hlc, |
+ template HighLayerCompatibilityType p_hlc2, |
+ template LowLayerCompatibilityType p_llc, |
+ template ProgressIndicatorType p_pi, |
+ template ProgressIndicatorType p_pi2, |
+ template DisplayType p_d) := |
+ { |
+ BearerInfomationElement := {p_bct, p_bct2}, |
+ HighLayerCompatibility := {p_hlc, p_hlc2}, |
+ LowLayerCompatibility := p_llc, |
+ ProgressIndicator := {p_pi, p_pi2}, |
+ Display := {p_d} |
+ } |
+ |
+ template PSTN_transit m_PSTN_transit_3PI(template BearerCapabilityType p_bct, |
+ template BearerCapabilityType p_bct2, |
+ template HighLayerCompatibilityType p_hlc, |
+ template HighLayerCompatibilityType p_hlc2, |
+ template LowLayerCompatibilityType p_llc, |
+ template ProgressIndicatorType p_pi, |
+ template ProgressIndicatorType p_pi2, |
+ template ProgressIndicatorType p_pi3, |
+ template DisplayType p_d) := |
+ { |
+ BearerInfomationElement := {p_bct, p_bct2}, |
+ HighLayerCompatibility := {p_hlc, p_hlc2}, |
+ LowLayerCompatibility := p_llc, |
+ ProgressIndicator := {p_pi, p_pi2, p_pi3}, |
+ Display := {p_d} |
+ } |
+ |
+ template PSTN_transit mw_PSTN_transit_bc(template BearerCapabilityType p_bct, |
+ template BearerCapabilityType p_bct2) := |
+ { |
+ BearerInfomationElement := {p_bct, p_bct2}, |
+ HighLayerCompatibility := {*, *}, |
+ LowLayerCompatibility := *, |
+ ProgressIndicator := {*}, |
+ Display := {*} |
+ } |
+ |
+ |
+ template BearerCapabilityType m_BearerCapabilityType (template Bit5 p_InfoTrfCap):= { |
+ BCoctet3 := {CodingStandard := bit2str('00'B), //Coding standard = CCITT standardized coding |
+ InformationTransferCapability := bit2str(p_InfoTrfCap)},//Information transfer capability |
+ BCoctet4 := {TransferMode := bit2str('00'B), //Coding standard = CCITT standardized coding |
+ InformationTransferRate := bit2str('10000'B)}, //Information transfer rate = 64 kbit/s |
+ BCoctet4_1 := omit, |
+ BCoctet5 := omit, |
+ BCoctet5a := omit, |
+ BCoctet5bV110 := omit, |
+ BCoctet5bV120 := omit, |
+ BCoctet5c := omit, |
+ BCoctet5d := omit, |
+ BCoctet6 := omit, |
+ BCoctet7 := omit, |
+ BCoctet7a := omit, |
+ BCoctet7b := omit |
+ } |
+ |
+ template ProgressIndicatorType m_ProgressIndicatorType (template Bit7 p_progDesc) := { |
+ ProgressOctet3 := {CodingStandard := bit2str('00'B), |
+ Location := bit2str('0000'B) |
+ }, |
+ ProgressOctet4 := {ProgressDescription := bit2str(p_progDesc)} |
+ } |
+ |
+ template LowLayerCompatibilityType m_LowLayerCompatibilityType (template Bit5 p_InfoTrfCap) := { |
+ LLOctet3 := {CodingStandard := bit2str('00'B), //Coding standard = CCITT standardized coding |
+ InformationTransferCapability := bit2str(p_InfoTrfCap)},//Information transfer capability |
+ LLOctet3a := omit, |
+ LLOctet4 := {TransferMode := bit2str('00'B), //Coding standard = CCITT standardized coding |
+ InformationTransferRate := bit2str('10000'B)}, //Information transfer rate = 64 kbit/s |
+ LLOctet4_1 := omit, |
+ LLOctet5 := omit, |
+ LLOctet5a := omit, |
+ LLOctet5bV110 := omit, |
+ LLOctet5bV120 := omit, |
+ LLOctet5c := omit, |
+ LLOctet5d := omit, |
+ LLOctet6 := omit, |
+ LLOctet6aHDLC := omit, |
+ LLOctet6aUserSpecific := omit, |
+ LLOctet6b := omit, |
+ LLOctet7 := omit, |
+ LLOctet7aUserSpecific := omit, |
+ LLOctet7aX25 := omit, |
+ LLOctet7bX25 := omit, |
+ LLOctet7c := omit, |
+ LLOctet7aTR9577 := omit, |
+ LLOctet7bTR9577 := omit |
+ } |
+ |
+ template HighLayerCompatibilityType m_HighLayerCompatibilityType |
+ (template Bit7 p_HLOctet4):= { |
+ HLOctet3 := { |
+ CodingStandard :=bit2str('00'B), |
+ Interpretation :=bit2str('100'B), |
+ PresentationMethod := bit2str('01'B) |
+ }, |
+ HLOctet4 := { |
+ HighLayerCharacteristics := bit2str(p_HLOctet4) |
+ }, |
+ HLOctet4aMaintenance := omit, |
+ HLOctet4Audio := omit |
+ } |
+ |
+ template BearerCapabilityType mw_BearerCapabilityType (template BCOctet3Type p_BCOctet3Type, template BCOctet4Type p_BCOctet4Type):= { |
+ BCoctet3 := p_BCOctet3Type, |
+ BCoctet4 := p_BCOctet4Type, |
+ BCoctet4_1 := * , |
+ BCoctet5 := * , |
+ BCoctet5a := * , |
+ BCoctet5bV110 := * , |
+ BCoctet5bV120 := * , |
+ BCoctet5c := * , |
+ BCoctet5d := * , |
+ BCoctet6 := * , |
+ BCoctet7 := * , |
+ BCoctet7a := * , |
+ BCoctet7b := * |
+ } |
+ |
+ template BearerCapabilityType mw_BearerCapabilityType_TrfCap (template Bit5 p_InfoTrfCap):= { |
+ BCoctet3 := {CodingStandard := bit2str('00'B), //Coding standard = CCITT standardized coding |
+ InformationTransferCapability := bit2str(p_InfoTrfCap)},//Information transfer capability |
+ BCoctet4 := {TransferMode := bit2str('00'B), //Coding standard = CCITT standardized coding |
+ InformationTransferRate := bit2str('10000'B)}, //Information transfer rate = 64 kbit/s |
+ BCoctet4_1 := * , |
+ BCoctet5 := * , |
+ BCoctet5a := * , |
+ BCoctet5bV110 := * , |
+ BCoctet5bV120 := * , |
+ BCoctet5c := * , |
+ BCoctet5d := * , |
+ BCoctet6 := * , |
+ BCoctet7 := * , |
+ BCoctet7a := * , |
+ BCoctet7b := * |
+ } |
+ |
+ template ProgressIndicatorType mw_ProgressIndicatorType (template ProgressOctet3Type p_ProgressOctet3Type, template ProgressOctet4Type p_ProgressOctet4Type) := { |
+ ProgressOctet3 := p_ProgressOctet3Type, |
+ ProgressOctet4 := p_ProgressOctet4Type |
+ } |
+ |
+ template LowLayerCompatibilityType mw_LowLayerCompatibilityType |
+ (template LLOctet3Type p_LLOctet3, template LLOctet4Type p_LLOctet4, template LLOctet7Type p_LLOctet7) := { |
+ LLOctet3 := p_LLOctet3, |
+ LLOctet3a := * , |
+ LLOctet4 := p_LLOctet4, |
+ LLOctet4_1 := * , |
+ LLOctet5 := * , |
+ LLOctet5a := * , |
+ LLOctet5bV110 := * , |
+ LLOctet5bV120 := * , |
+ LLOctet5c := * , |
+ LLOctet5d := * , |
+ LLOctet6 := * , |
+ LLOctet6aHDLC := * , |
+ LLOctet6aUserSpecific := * , |
+ LLOctet6b := * , |
+ LLOctet7 := p_LLOctet7, |
+ LLOctet7aUserSpecific := * , |
+ LLOctet7aX25 := * , |
+ LLOctet7bX25 := * , |
+ LLOctet7c := * , |
+ LLOctet7aTR9577 := * , |
+ LLOctet7bTR9577 := * |
+ } |
+ |
+ template HighLayerCompatibilityType mw_HighLayerCompatibilityType |
+ (template HLOctet3Type p_HLOctet3, template HLOctet4Type p_HLOctet4):= { |
+ HLOctet3 := p_HLOctet3, |
+ HLOctet4 := p_HLOctet4, |
+ HLOctet4aMaintenance := *, |
+ HLOctet4Audio := * |
+ } |
+ |
+} //end group PSTNTemplates |
+ |
+group CDIVNTemplates { |
+ |
+ /* general CDIVN subscription */ |
+ template Comm_div_info m_CDIVN_sub := { |
+ entity := ?, |
+ comm_div_subs_info := { |
+ anyAttributes := omit, |
+ comm_div_selection_criteria := { |
+ anyAttributes := ?, |
+ originating_user_selection_criteria := omit, |
+ diverting_user_selection_criteria := omit, |
+ diverted_to_user_selection_criteria := omit, |
+ diversion_time_selection_criteria := omit, |
+ diversion_reason_selection_criteria := omit, |
+ any_1 := omit |
+ }, |
+ comm_div_ntfy_trigger_criteria := omit, |
+ comm_div_info_selection_criteria := omit, |
+ any_1 := omit |
+ }, |
+ comm_div_ntfy_info := omit, |
+ any_1 := omit |
+ } |
+ |
+ |
+} // end grouup CDIVNTemplates |
+ |
+} // end group MessageBodyTemplates |
+ |
+group MessageTemplates { |
+ |
+group modified_templates { |
+ |
+group request_send { |
+ |
+ template BYE_Request m_BYE_Request_IMS |
+ ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Route p_route) |
+ modifies m_BYE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ route := p_route |
+ } |
+ } |
+ |
+ template BYE_Request m_BYE_Request_Reason_IMS |
+ ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Route p_route, integer p_cause) |
+ modifies m_BYE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ reason := mw_Reason(p_cause), |
+ route := p_route |
+ } |
+ } |
+ |
+ template BYE_Request m_BYE_Request_UE |
+ ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Route p_route) |
+ modifies m_BYE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation |
+ route := p_route |
+ } |
+ } |
+ |
+ template CANCEL_Request m_CANCEL_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Route p_route) modifies m_CANCEL_Request_Base := |
+ { |
+ msgHeader := |
+ { |
+ route := p_route |
+ } |
+ } |
+ |
+ template CANCEL_Request m_CANCEL_Request_Reason_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Route p_route, integer p_cause) modifies m_CANCEL_Request_Base := |
+ { |
+ msgHeader := |
+ { |
+ reason := mw_Reason(p_cause), |
+ route := p_route |
+ } |
+ } |
+ |
+ template CANCEL_Request m_CANCEL_Request_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Route p_route) modifies m_CANCEL_Request_Base := |
+ { |
+ msgHeader := |
+ { |
+ route := p_route |
+ } |
+ } |
+ |
+ /* |
+ * |
+ * @desc INFO message |
+ * |
+ */ |
+ template INFO_Request m_INFO_Request_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template MessageBody p_mb ) |
+ modifies m_INFO_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication} |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ /* |
+ * |
+ * @desc INFO message |
+ * |
+ */ |
+ template INFO_Request m_INFO_Request_Mime_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template MessageBody p_mb ) |
+ modifies m_INFO_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart} |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template INVITE_Request m_INVITE_Request_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template Supported p_supported, template MessageBody p_mb ) |
+ modifies m_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ require := p_require, |
+ route := p_route, |
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation |
+ supported := p_supported |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template INVITE_Request m_INVITE_Request_Allow_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template Supported p_supported, template MessageBody p_mb, template Allow p_allow) |
+ modifies m_INVITE_Request_UE |
+ := |
+ { |
+ msgHeader := |
+ { |
+ allow := p_allow |
+ } |
+ } |
+ |
+ |
+ /* |
+ * |
+ * @desc INVITE message exchanged at Mw |
+ * |
+ */ |
+ template INVITE_Request m_INVITE_Request_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb ) |
+ modifies m_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ require := p_require, |
+ pChargingVector := p_pChargingVector, |
+ recordRoute := p_recordRoute, |
+ route := p_route, |
+ supported := p_supported |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ /* |
+ * |
+ * @desc INVITE message exchanged at Mw |
+ * |
+ */ |
+ template INVITE_Request m_INVITE_Request_Mime_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb ) |
+ modifies m_INVITE_Request_IMS |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart} |
+ } |
+ } |
+ |
+ /* |
+ * |
+ * @desc INVITE message exchanged at Mw |
+ * |
+ */ |
+ template INVITE_Request m_INVITE_Request_Mime_PAsserted_Privacy_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, |
+ template PAssertedID p_pAssertedID, template Privacy p_privacy ) |
+ modifies m_INVITE_Request_IMS |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart}, |
+ pAssertedID := p_pAssertedID, |
+ privacy := p_privacy |
+ } |
+ } |
+ |
+ /* |
+ * |
+ * @desc INVITE message exchanged at Mw |
+ * |
+ */ |
+ template INVITE_Request m_INVITE_Request_PAsserted_AcceptContact_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template RecordRoute p_recordRoute, template AcceptContact p_acceptContact, template PAssertedID p_pAssertedID, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb ) |
+ modifies m_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ acceptContact := p_acceptContact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ require := p_require, |
+ pAssertedID := p_pAssertedID, |
+ pChargingVector := p_pChargingVector, |
+ recordRoute := p_recordRoute, |
+ route := p_route, |
+ supported := p_supported |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ /* |
+ * |
+ * @desc INVITE message exchanged at Mw |
+ * |
+ */ |
+ template INVITE_Request m_INVITE_Request_PAsserted_Privacy_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template RecordRoute p_recordRoute, template PAssertedID p_pAssertedID, template Privacy p_privacy, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb ) |
+ modifies m_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ require := p_require, |
+ pAssertedID := p_pAssertedID, |
+ pChargingVector := p_pChargingVector, |
+ privacy := p_privacy, |
+ recordRoute := p_recordRoute, |
+ route := p_route, |
+ supported := p_supported |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ /* |
+ * |
+ * @desc INVITE message exchanged at Mw |
+ * |
+ */ |
+ template INVITE_Request m_INVITE_Request_PAssertedService_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template PAssertedService p_pAssertedService) |
+ modifies m_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ require := p_require, |
+ pChargingVector := p_pChargingVector, |
+ route := p_route, |
+ supported := p_supported, |
+ pAssertedService := p_pAssertedService |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ /* |
+ * |
+ * @desc INVITE message exchanged at Mw |
+ * |
+ */ |
+ template INVITE_Request m_INVITE_Request_PEarlyMedia_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb ) |
+ modifies m_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ require := p_require, |
+ pChargingVector := p_pChargingVector, |
+ pEarlyMedia := m_pEarlyMedia_sup, |
+ recordRoute := p_recordRoute, |
+ route := p_route, |
+ supported := p_supported |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template INVITE_Request m_INVITE_Request_PPreferred_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template Supported p_supported, template MessageBody p_mb,template PPreferredID p_pPreferredID ) |
+ modifies m_INVITE_Request_UE |
+ := |
+ { |
+ msgHeader := |
+ { |
+ pPreferredID := p_pPreferredID |
+ } |
+ } |
+ |
+ template INVITE_Request m_INVITE_Request_PPreferred_Privacy_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template Supported p_supported, template MessageBody p_mb,template PPreferredID p_pPreferredID, template Privacy p_privacy) |
+ modifies m_INVITE_Request_UE |
+ := |
+ { |
+ msgHeader := |
+ { |
+ pPreferredID := p_pPreferredID, |
+ privacy := p_privacy |
+ } |
+ } |
+ |
+ template INVITE_Request m_INVITE_Request_SessionExpires_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template Supported p_supported, template MessageBody p_mb, template SessionExpires p_se) |
+ modifies m_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ require := p_require, |
+ route := p_route, |
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation |
+ supported := p_supported, |
+ sessionExpires := p_se |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template INVITE_Request m_INVITE_Request_minSE_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template Supported p_supported, template MessageBody p_mb, template MinSE p_minSE) |
+ modifies m_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ require := p_require, |
+ route := p_route, |
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation |
+ supported := p_supported, |
+ minSE := p_minSE |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ /* |
+ * |
+ * @desc INVITE message exchanged at Mw |
+ * |
+ */ |
+ template INVITE_Request m_INVITE_Request_minSE_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template MinSE p_minSE) |
+ modifies m_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ require := p_require, |
+ pChargingVector := p_pChargingVector, |
+ route := p_route, |
+ supported := p_supported, |
+ minSE := p_minSE |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template MESSAGE_Request m_MESSAGE_Request_NoBody_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Require p_require, |
+ template Route p_route, template Supported p_supported) |
+ modifies m_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ require := p_require, |
+ route := p_route, |
+ supported := p_supported |
+ }, |
+ messageBody := omit |
+ } |
+ |
+ template MESSAGE_Request m_MESSAGE_Request_PCharging_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Require p_require, |
+ template Route p_route, template Supported p_supported) |
+ modifies m_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue, |
+ pChargingVector := m_pChargingVector_fixedValue(PX_IMS_SUT_UE1_HOME_DOMAIN), |
+ require := p_require, |
+ route := p_route, |
+ supported := p_supported |
+ }, |
+ messageBody := omit |
+ } |
+ |
+ template MESSAGE_Request m_MESSAGE_Request_PCharging_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Require p_require, |
+ template Route p_route, template Supported p_supported, |
+ template PChargingVector p_pChargingVector) |
+ modifies m_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue, |
+ pChargingVector := p_pChargingVector, |
+ require := p_require, |
+ route := p_route, |
+ supported := p_supported |
+ }, |
+ messageBody := omit |
+ } |
+ |
+ template MESSAGE_Request m_MESSAGE_Request_PMediaAuth_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Require p_require, |
+ template Route p_route, template Supported p_supported) |
+ modifies m_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ pMediaAuthorization := m_pMediaAuthorization_fixedValue, |
+ require := p_require, |
+ route := p_route, |
+ supported := p_supported |
+ }, |
+ messageBody := omit |
+ } |
+ |
+ template MESSAGE_Request m_MESSAGE_Request_PPreferred_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Require p_require, |
+ template Route p_route, template Supported p_supported, template PPreferredID p_pPreferredID) |
+ modifies m_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ pPreferredID := p_pPreferredID, |
+ require := p_require, |
+ route := p_route, |
+ supported := p_supported |
+ }, |
+ messageBody := omit |
+ } |
+ |
+ template MESSAGE_Request m_MESSAGE_Request_1300Bytes_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Require p_require, |
+ template Route p_route, template Supported p_supported) |
+ modifies m_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_TextPlainLength(valueof(m_MBody_longPlainText))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText}, |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ require := p_require, |
+ route := p_route, |
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation |
+ supported := p_supported |
+ }, |
+ messageBody := m_MBody_longPlainText |
+ } |
+ |
+ template REGISTER_Request m_REGISTER_Request_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template Authorization p_authorization, |
+ template ProxyRequire p_proxyRequire, template Require p_require, |
+ template SecurityClient p_securityClient, template SecurityVerify p_securityVerify, template Supported p_supported) |
+ modifies m_REGISTER_Request_Base := |
+ { |
+ requestLine := |
+ { |
+ method := REGISTER_E, |
+ requestUri := p_requestUri |
+ }, |
+ msgHeader := |
+ { |
+ authorization := p_authorization, |
+ callId := p_callId, |
+ contact := p_contact, |
+ cSeq := p_cSeq, |
+ fromField := p_from, |
+ proxyRequire := p_proxyRequire, |
+ require := p_require, |
+ securityClient := p_securityClient, |
+ securityVerify := p_securityVerify, |
+ supported := p_supported, |
+ toField := p_to, |
+ via := p_via |
+ |
+ } |
+ } |
+ |
+ |
+ template REGISTER_Request m_REGISTER_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template Authorization p_authorization) |
+ modifies m_REGISTER_Request_Base := |
+ { |
+ requestLine := |
+ { |
+ method := REGISTER_E, |
+ requestUri := p_requestUri |
+ }, |
+ msgHeader := |
+ { |
+ authorization := p_authorization, |
+ callId := p_callId, |
+ contact := p_contact, |
+ cSeq := p_cSeq, |
+ fromField := p_from, |
+ toField := p_to, |
+ via := p_via |
+ |
+ } |
+ } |
+ template REGISTER_Request m_REGISTER_Request_expires_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template Authorization p_authorization, template DeltaSec p_deltaSec) |
+ modifies m_REGISTER_Request_IMS := |
+ { |
+ msgHeader := |
+ { |
+ expires := {fieldName := EXPIRES_E, deltaSec := p_deltaSec} |
+ } |
+ } |
+ |
+ template SUBSCRIBE_Request m_SUBSCRIBE_Request_UE (SipUrl p_requestUri, CallId p_callId, |
+ CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact) modifies m_SUBSCRIBE_Request_Base := |
+ { |
+ requestLine := |
+ { |
+ method := SUBSCRIBE_E, |
+ requestUri := p_requestUri |
+ }, |
+ msgHeader := |
+ { |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ contact := p_contact, |
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"}, |
+ event := m_Event_reg, |
+ expires := m_Expires_600000 |
+ } |
+ } |
+ |
+ template SUBSCRIBE_Request m_SUBSCRIBE_Request_mb_UE (SipUrl p_requestUri, CallId p_callId, |
+ CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template MessageBody p_mb) modifies m_SUBSCRIBE_Request_Base := |
+ { |
+ requestLine := |
+ { |
+ method := SUBSCRIBE_E, |
+ requestUri := p_requestUri |
+ }, |
+ msgHeader := |
+ { |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ contact := p_contact, |
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"}, |
+ event := m_Event_reg, |
+ expires := m_Expires_600000 |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template SUBSCRIBE_Request m_SUBSCRIBE_Request_IMS (SipUrl p_requestUri, CallId p_callId, |
+ CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact) modifies m_SUBSCRIBE_Request_Base := |
+ { |
+ requestLine := |
+ { |
+ method := SUBSCRIBE_E, |
+ requestUri := p_requestUri |
+ }, |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"}, |
+ event := m_Event_reg, |
+ expires := m_Expires_600000 |
+ } |
+ } |
+ |
+ template SUBSCRIBE_Request m_SUBSCRIBE_Request_Event (SipUrl p_requestUri, CallId p_callId, |
+ CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Event p_event) modifies m_SUBSCRIBE_Request_Base := |
+ { |
+ requestLine := |
+ { |
+ method := SUBSCRIBE_E, |
+ requestUri := p_requestUri |
+ }, |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"}, |
+ event := p_event, |
+ expires := m_Expires_600000 |
+ } |
+ } |
+ template UPDATE_Request m_UPDATE_Request_fromChange (template CallId p_callId, template From p_from) modifies mw_UPDATE_Request_Base := |
+ { |
+ msgHeader := |
+ { |
+ fromField := p_from |
+ } |
+ } |
+ |
+}//end group request_send |
+ |
+group request_receive { |
+ |
+ template ACK_Request mw_ACK_Request_noPaccessNetworkInfo (template CallId p_callId) |
+ modifies mw_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := { pAccessNetworkInfo := omit} |
+ } |
+ |
+ template ACK_Request mw_ACK_Request_PchargingVector (template CallId p_callId, template PChargingVector p_pChargingVector) |
+ modifies mw_ACK_Request_Base |
+ := |
+ { |
+ msgHeader := { pChargingVector := p_pChargingVector} |
+ } |
+ |
+ template BYE_Request mw_BYE_Request_noPChargingFunction_UE(template CallId p_callId) modifies mw_BYE_Request_Base |
+ := |
+ { |
+ msgHeader := {pChargingFunctionAddresses := omit, |
+ pChargingVector := omit} |
+ } |
+ |
+ template BYE_Request mw_BYE_Request_via_PChargingVector_UE(template CallId p_callId, template PChargingVector p_pChargingVector, template Via p_via) modifies mw_BYE_Request_Base |
+ := |
+ { |
+ msgHeader := {pChargingVector := p_pChargingVector, |
+ via := p_via} |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_noPChargingFunction modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := {pChargingFunctionAddresses := omit} |
+ } |
+ template INVITE_Request mw_INVITE_Request_PChargingFunction modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := {pChargingFunctionAddresses := ?} |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_PAsserted_noPPreferred (template PAssertedID p_pAssertedID)modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := {pAssertedID := p_pAssertedID, |
+ pPreferredID := omit |
+ } |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_PAsserted_AcceptContact (template PAssertedID p_pAssertedID, template AcceptContact p_acceptContact) modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := {pAssertedID := p_pAssertedID, |
+ acceptContact := p_acceptContact |
+ } |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_RecordRoute_Via (template RecordRoute p_recordRoute, template Via p_via) modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := {recordRoute := p_recordRoute, |
+ via := p_via} |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_route (template Route p_route) modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := {route := p_route} |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_require ( |
+ template Require p_require |
+ ) modifies mw_INVITE_Request_Base := { |
+ msgHeader := { require := p_require } |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_supported ( |
+ template Supported p_supported |
+ ) modifies mw_INVITE_Request_Base := { |
+ msgHeader := { supported := p_supported } |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_SessionExpires (template SessionExpires p_sessionExpires) modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := {sessionExpires := p_sessionExpires} |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_IMS (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via) modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := { |
+ pChargingVector := p_pChargingVector, |
+ recordRoute := p_recordRoute, |
+ route := p_route, |
+ via := p_via |
+ } |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_IMS_mb (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via) modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := { |
+ pChargingVector := p_pChargingVector, |
+ recordRoute := p_recordRoute, |
+ route := p_route, |
+ via := p_via |
+ }, |
+ messageBody := ? |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_IMS_cug (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via, template Cug p_cug ) modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := { |
+ pChargingVector := p_pChargingVector, |
+ recordRoute := p_recordRoute, |
+ route := p_route, |
+ via := p_via |
+ }, |
+ messageBody := (mw_MBody_XML(mw_XmlBody_CUG(p_cug)), |
+ mw_MBody_MIMESdpXml(?, mw_XmlBody_CUG(p_cug))) |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_IMS_pstn (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via, template PSTN_transit p_pstn ) modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := { |
+ pChargingVector := p_pChargingVector, |
+ recordRoute := p_recordRoute, |
+ route := p_route, |
+ via := p_via |
+ }, |
+ messageBody := (mw_MBody_XML(mw_XmlBody_PSTNTransit(p_pstn)), |
+ mw_MBody_MIMESdpXml(?, mw_XmlBody_PSTNTransit(p_pstn)))//m_MBody_PSTN(p_pstn)//PSTN_transit |
+ } |
+ |
+ /* |
+ * |
+ * @desc Await INVITE using topology hiding |
+ */ |
+ template INVITE_Request mw_INVITE_Request_TH modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := { pChargingFunctionAddresses := omit, |
+ pChargingVector := omit} |
+ } |
+ |
+ /* |
+ * |
+ * @desc Await INVITE without PAsserted and Privacy |
+ */ |
+ template INVITE_Request mw_INVITE_Request_noPasserted_noPrivacy (template From p_from) |
+ modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := { fromField := p_from, |
+ pAssertedID := omit, |
+ pPreferredID := omit} |
+ } |
+ |
+ |
+ /* |
+ * |
+ * @desc Await INVITE with PAsserted and Privacy |
+ */ |
+ template INVITE_Request mw_INVITE_Request_PassertedPrivacy (template From p_from, template PAssertedID p_pAssertedID, template Privacy p_privacy) |
+ modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := { |
+ fromField := p_from, |
+ pAssertedID := p_pAssertedID, |
+ privacy := p_privacy} |
+ } |
+ |
+ /* |
+ * |
+ * @desc Await INVITE with PAsserted and Privacy |
+ */ |
+ template INVITE_Request mw_INVITE_Request_Passerted_ifPrivacy (template From p_from, template PAssertedID p_pAssertedID, template Privacy p_privacy) |
+ modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := { |
+ fromField := p_from, |
+ pAssertedID := p_pAssertedID, |
+ privacy := p_privacy ifpresent} |
+ } |
+ |
+ /* |
+ * |
+ * @desc Await INVITE with PAsserted and Privacy |
+ */ |
+ template INVITE_Request mw_INVITE_Request_HistoryInfo (template HistoryInfo p_historyInfo) |
+ modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := { |
+ historyInfo := p_historyInfo} |
+ } |
+ |
+ template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunction_UE (template CallId p_callId) |
+ modifies mw_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := { pChargingFunctionAddresses := omit, |
+ pChargingVector := omit} |
+ } |
+ |
+ template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunction_IMS (template CallId p_callId) |
+ modifies mw_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := { pChargingFunctionAddresses := omit, |
+ pChargingVector := omit} |
+ } |
+ |
+ template MESSAGE_Request mw_MESSAGE_Request_PAsserted_noPPreferred (template CallId p_callId, template PAssertedID p_pAssertedID)modifies mw_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := {pAssertedID := p_pAssertedID, |
+ pPreferredID := omit |
+ } |
+ } |
+ |
+ template MESSAGE_Request mw_MESSAGE_Request_PchargingVector (template CallId p_callId,template charstring p_id, template charstring p_paramValue) |
+ modifies mw_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := { pChargingVector := mw_pChargingVector(p_id,p_paramValue)} |
+ } |
+ |
+ template MESSAGE_Request mw_MESSAGE_Request_noPaccessNetworkInfo (template CallId p_callId) |
+ modifies mw_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := { pAccessNetworkInfo := omit} |
+ } |
+ |
+ template MESSAGE_Request mw_MESSAGE_Request_noPMediaAuthorization (template CallId p_callId) |
+ modifies mw_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := { pMediaAuthorization := omit} |
+ } |
+ |
+ template PUBLISH_Request mw_PUBLISH_Request_PchargingVector(template CallId p_callId, template PChargingVector p_pChargingVector) modifies mw_PUBLISH_Request_Base := |
+ { |
+ msgHeader := { pChargingVector := p_pChargingVector} |
+ } |
+ |
+ template REGISTER_Request mw_REGISTER_Request_IMS (template Path p_Path, template PChargingVector p_pChargingVector, template PVisitedNetworkID p_pVisitedNetworkID) |
+ modifies mw_REGISTER_Request_Base |
+ := |
+ { |
+ msgHeader := { authorization := ?, |
+ path := p_Path, |
+ pChargingVector := p_pChargingVector, //mw_pChargingVector(p_id,p_paramValue) |
+ pVisitedNetworkID := p_pVisitedNetworkID, |
+ require := mw_require_path, |
+ securityClient := omit, |
+ securityVerify := omit |
+ } |
+ } |
+ |
+ |
+ |
+ template REGISTER_Request mw_REGISTER_authorizedRequest_IMS (template Authorization p_authorization) |
+ modifies mw_REGISTER_Request_Base |
+ := |
+ { |
+ msgHeader := { authorization := p_authorization |
+ } |
+ } |
+ |
+ template REGISTER_Request mw_REGISTER_authorizedRequest_wo_securityclient_IMS (template Authorization p_authorization) |
+ modifies mw_REGISTER_Request_Base |
+ := |
+ { |
+ msgHeader := { authorization := p_authorization, |
+ securityClient := omit |
+ } |
+ } |
+ template REGISTER_Request mw_REGISTER_authorizedRequest_wo_securityheaders_IMS |
+ modifies mw_REGISTER_Request_Base |
+ := |
+ { |
+ msgHeader := { securityVerify := omit, |
+ securityClient := omit |
+ } |
+ } |
+ |
+ template REGISTER_Request mw_REGISTER_unauthorizedRequest_IMS |
+ modifies mw_REGISTER_Request_Base |
+ := |
+ { |
+ msgHeader := { authorization := omit |
+ } |
+ } |
+ |
+ template SUBSCRIBE_Request mw_SUBSCRIBE_Request_IMS (template From p_from, To p_to, template PAssertedID p_pAssertedID, template PChargingVector p_pChargingVector) modifies mw_SUBSCRIBE_Request_Base := |
+ { |
+ requestLine := |
+ { |
+ method := SUBSCRIBE_E |
+ }, |
+ msgHeader := |
+ { fromField := p_from, |
+ toField := p_to, |
+ event := m_Event_reg, |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ pChargingVector := p_pChargingVector |
+ } |
+ } |
+ |
+ template UPDATE_Request mw_UPDATE_Request_fromChange (template CallId p_callId, template From p_from) modifies mw_UPDATE_Request_Base := |
+ { |
+ msgHeader := |
+ { |
+ fromField := p_from |
+ } |
+ } |
+ |
+ template NOTIFY_Request mw_NOTIFY_Request( |
+ CallId p_callId, |
+ charstring p_state, |
+ charstring p_contentType, |
+ Event p_event, |
+ template MessageBody p_mb |
+ ) modifies mw_NOTIFY_Request_Base := { |
+ msgHeader := |
+ { |
+ subscriptionState := mw_subscriptionState(p_state), |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := p_contentType}, |
+ event := p_event |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+}//end group request_receive |
+group response_send |
+{ |
+ template Response m_Response_2xxonBYE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit |
+ } |
+ } |
+ |
+ template Response m_Response_onCANCEL (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute) |
+ modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ //contact := p_contact, |
+ maxForwards := omit//, |
+ //recordRoute := p_recordRoute |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ //contact := p_contact, |
+ //maxForwards := omit, |
+ //rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE_sdp_require (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact,template MessageBody p_mb,template Require p_require ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ require := p_require, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_18XonINVITE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ } |
+ } |
+ |
+ |
+ template Response m_Response_18XonINVITE_PchargingVector (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue, |
+ pChargingVector := m_pChargingFunctionAddresses_fixedValue |
+ |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE_pEearlyMedia (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, template PEarlyMedia p_pEarlyMedia ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ pEarlyMedia := p_pEarlyMedia |
+ } |
+ } |
+ |
+ |
+ template Response m_Response_18XonINVITE_pPreferred_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template PPreferredID p_pPreferredID ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit, |
+ pPreferredID := p_pPreferredID, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ } |
+ } |
+ |
+ |
+ template Response m_Response_18XonINVITE_pAsserted_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit, |
+ pAssertedID := p_pAssertedID, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template Privacy p_privacy) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit, |
+ privacy := p_privacy, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE_recordRoute_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999},//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ recordRoute := p_recordRoute//for INVITE response |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE_Require ( |
+ StatusLine p_statusLine, |
+ CallId p_callId, |
+ CSeq p_cSeq, |
+ From p_from, |
+ To p_to, |
+ Via p_via, |
+ Contact p_contact, |
+ Require p_require |
+ ) modifies m_Response_Base:= { |
+ msgHeader := |
+ { |
+ require := p_require |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE_Require_ifpresent ( |
+ StatusLine p_statusLine, |
+ CallId p_callId, |
+ CSeq p_cSeq, |
+ From p_from, |
+ To p_to, |
+ Via p_via, |
+ Contact p_contact, |
+ Require p_require |
+ ) modifies m_Response_Base:= { |
+ msgHeader := |
+ { |
+ require := p_require |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE_Xml (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact,template MessageBody p_mb ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_xmlAplication}, |
+ maxForwards := omit, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_18XonINVITE_sdp_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact,template MessageBody p_mb ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_18XonINVITE_require_sdp_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, Require p_require, template MessageBody p_mb ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ require := p_require, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_2xxonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb) |
+ modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ recordRoute := p_recordRoute//for INVITE response |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_2xxonINVITE_Mime (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb) |
+ modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart}, |
+ maxForwards := omit, |
+ recordRoute := p_recordRoute//for INVITE response |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_2xxonINVITE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb) |
+ modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ recordRoute := p_recordRoute//for INVITE response |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_2xxonINVITE_PchargingVector (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via,MessageBody p_mb ) modifies m_Response_mbody := |
+ { |
+ msgHeader := |
+ { |
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue, |
+ pChargingVector := m_pChargingFunctionAddresses_fixedValue |
+ |
+ } |
+ } |
+ |
+ template Response m_Response_2XXonINVITE_pPreferred_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template PPreferredID p_pPreferredID, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ pPreferredID := p_pPreferredID, |
+ recordRoute := p_recordRoute//for INVITE response |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ |
+ template Response m_Response_2XXonINVITE_pAsserted_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ pAssertedID := p_pAssertedID, |
+ recordRoute := p_recordRoute//for INVITE response |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_2XXonINVITE_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template Privacy p_privacy, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ privacy := p_privacy, |
+ recordRoute := p_recordRoute//for INVITE response |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_2xxonREGISTER_IMS (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, SipUrl p_serviceroute_sip_url) |
+ modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ serviceRoute := {fieldName:=SERVICE_ROUTE_E, |
+ routeBody:={{ nameAddr:= {displayName:=omit,addrSpec:=p_serviceroute_sip_url},rrParam:=omit}}} |
+ } |
+ } |
+ |
+ |
+ template Response m_Response_2xxonSUBSCRIBE_IMS (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact) |
+ modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact |
+ } |
+ } |
+ |
+ |
+ template Response m_Response_2xxonSUBSCRIBE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact) |
+ modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact |
+ } |
+ } |
+ |
+ template Response m_Response_onMESSAGE_IMS(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact) modifies m_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ contact := p_contact |
+ } |
+ } |
+ |
+ template Response m_Response_2xxonMESSAGE_PAccessNetwInfo_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via) modifies m_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a |
+ } |
+ } |
+ |
+ template Response m_Response_2xxonMESSAGE_PCharging_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, template PChargingVector p_pChargingVector) modifies m_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue, |
+ pChargingVector := m_pChargingFunctionAddresses_fixedValue |
+ } |
+ } |
+ |
+ |
+ template Response m_Response_2xxonMESSAGE_PCharging_IMS(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, template PChargingVector p_pChargingVector) modifies m_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue, |
+ pChargingVector := p_pChargingVector |
+ } |
+ } |
+ |
+ template Response m_Response_2xxonMESSAGE_PMediaAuth_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via) modifies m_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pMediaAuthorization := m_pMediaAuthorization_fixedValue |
+ } |
+ } |
+ |
+ template Response m_Response_2xxonMESSAGE_pPreferredID_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, template PPreferredID p_pPreferredID) modifies m_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pPreferredID := p_pPreferredID |
+ } |
+ } |
+ |
+ template Response m_Response_2xxonUPDATE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb) |
+ modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ recordRoute := p_recordRoute |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_4XXonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit |
+ } |
+ } |
+ |
+ template Response m_Response_4XXonINVITE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit |
+ } |
+ } |
+ |
+ template Response m_Response_onINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit |
+ } |
+ } |
+ |
+ template Response m_Response_onINVITE_Reason (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, integer p_cause) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit, |
+ reason := mw_Reason(p_cause) |
+ } |
+ } |
+ |
+ template Response m_Response_WWWauthenticate_IMS(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, template WwwAuthenticate p_wwwAuthenticate) modifies m_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ wwwAuthenticate := p_wwwAuthenticate |
+ } |
+ } |
+ |
+}//end group response_send |
+ |
+group response_receive |
+{ |
+ |
+ template Response mw_Response_200onINVITE_noPChargingVector_UE(template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pChargingVector := omit |
+ } |
+ } |
+ |
+ template Response mw_Response_200onINVITE_SDP_UE(template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ messageBody := { |
+ sdpMessageBody := ? |
+ } |
+ } |
+ |
+ template Response mw_Response_2xxonMESSAGE_noPCharging_UE(template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pChargingFunctionAddresses := omit, |
+ pChargingVector := omit |
+ } |
+ } |
+ |
+ template Response mw_Response_2xxonMESSAGE_noPCharging_IMS(template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pChargingFunctionAddresses := omit, |
+ pChargingVector := omit |
+ } |
+ } |
+ |
+ |
+ template Response mw_Response_2xxonMESSAGE_noPAccessNetworkInfo_IMS(template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pAccessNetworkInfo := omit |
+ } |
+ } |
+ |
+ template Response mw_Response_2xxonMESSAGE_noPMediaAuthorization_IMS(template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pMediaAuthorization := omit |
+ } |
+ } |
+ |
+ template Response mw_Response_401onREGISTER_securityServer_UE(template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ securityServer := ?, |
+ wwwAuthenticate := ? |
+ } |
+ } |
+ |
+ template Response mw_Response_401onREGISTER_WWWauthenticate_IMS(template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq, template WwwAuthenticate p_wwwAuthenticate) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ wwwAuthenticate := p_wwwAuthenticate |
+ } |
+ } |
+ |
+ template Response mw_Response_200onREGISTER_IMS(template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq, template SipUrl p_ue_uri, template Contact p_contact, template SipUrl p_sut_scscf_uri) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pAssociatedURI := {fieldName := P_ASSOCIATED_URI_E, nameAddrList:={*,{nameAddr:={displayName:=*,addrSpec:=p_ue_uri},genericParams:=*},*}}, |
+ path := ?, |
+ serviceRoute := {fieldName := SERVICE_ROUTE_E, routeBody := {{nameAddr:={displayName:=*,addrSpec:=p_sut_scscf_uri},rrParam:=*}}}, |
+ pChargingFunctionAddresses := ?, |
+ pChargingVector := ?, |
+ contact := p_contact |
+ } |
+ } |
+ |
+ template Response mw_Response_PpreferredID_PassertedID(template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq, template PPreferredID p_pPreferredID, template PAssertedID p_pAssertedID) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pAssertedID := p_pAssertedID, |
+ pPreferredID := p_pPreferredID |
+ } |
+ } |
+ |
+ template Response mw_Response_PAsserted_Privacy_History (template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq, template PAssertedID p_pAssertedID, template Privacy p_privacy, template HistoryInfo p_historyInfo) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pAssertedID := p_pAssertedID, |
+ privacy := p_privacy, |
+ historyInfo := p_historyInfo |
+ } |
+ } |
+ |
+ template Response mw_Response_PchargingVector(template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq, template PChargingVector p_chargingVector) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pChargingVector := p_chargingVector // mw_pChargingVector(p_id,p_paramValue) |
+ } |
+ } |
+ |
+} // end response_receive |
+ |
+}//end modified_templates |
+ |
+}//end Message_templates |
+ |
+} // end module LibIms_Templates |