Compare Revisions

The credentials to download the source code are:
 Username: svnusers
 Password: svnusers

Ignore whitespace Rev 97 → Rev 98

/tags/v1.1.0/ttcn/LibIms_Steps.ttcn
0,0 → 1,1073
/*
* @author STF 346, STF366, STF368, STF369
* @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 sets 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 sets 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 sets header fields 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 sets 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 sets 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
 
/*
*
* @desc sets Notify 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_setHeadersNOTIFY(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_setHeadersNOTIFY(p_cSeq_s);
}// end f_setHeadersNOTIFY
/**
**
* @desc sets Subscribe 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_setHeadersSUBSCRIBE(inout CSeq p_cSeq_s, in SipUrl p_to_user) runs on ImsComponent
{
vc_to := { fieldName := TO_E,
addressField :=
{
nameAddr := {
displayName := omit, // optional charstring
addrSpec := p_to_user // SipUrl
}
},//end addressField
toParams := omit
};
vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier
vc_requestUri :=p_to_user; // Request URI of Invite is identical with To header
LibSip_Steps.f_setHeadersSUBSCRIBE(p_cSeq_s);
}// end f_setHeadersSUBSCRIBE
/**
* @desc sets headers for ReINVITE method on terminating side
* @param p_cSeq_s current cSeq
*/
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 sets headers for ReINVITE method on terminating side
* @param p_cSeq_s current cSeq
*/
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 sets 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 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 sets 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
/*
* @desc sets REFER header fields (IMS addresses)
* extension of general settings from LibSip basic function
* @param p_cSeq_s current cSeq
* @param p_uri SipUrl for request URI and To header
*/
function f_setHeadersREFER_conf(inout CSeq p_cSeq_s, in SipUrl p_uri) runs on ImsComponent
{
vc_to := {
fieldName := TO_E,
addressField := {
nameAddr := {
displayName := omit, // optional charstring
addrSpec := p_uri // SipUrl
}
},//end addressField
toParams := omit
};
 
vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier
vc_requestUri := p_uri; // 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_conf
 
} // end group fieldOperations
group awaitingMessage {
}
group sendMessage {
}
group globalSteps {
/*
*
* @desc sets 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_UE3atSUThome) { //variant c_userProfile_UE3atSUThome
vc_userprofile.currPort := PX_IMS_TS_UE3_PORT;
vc_userprofile.currIpaddr := PX_IMS_TS_UE3_IPADDR;
vc_userprofile.contactPort := PX_IMS_TS_UE3_PORT;
vc_userprofile.contactIpaddr := PX_IMS_TS_UE3_IPADDR;
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE3_BEARER_IPADDR;
vc_userprofile.homeDomain := PX_IMS_SUT_UE3_HOME_DOMAIN;
vc_userprofile.publUsername := PX_IMS_SUT_UE3_PUBLIC_USER;
vc_userprofile.qop := PX_IMS_SUT_UE3_QOP;
vc_userprofile.privUsername := PX_IMS_SUT_UE3_PRIVAT_USERNAME;
vc_userprofile.passwd := PX_IMS_SUT_UE3_PRIVAT_PASSWD;
vc_userprofile.registrarDomain := PX_IMS_SUT_UE3_REGISTRAR;
}
 
case (c_userProfile_UE4atSUThome) { //variant c_userProfile_UE4atSUThome
vc_userprofile.currPort := PX_IMS_TS_UE4_PORT;
vc_userprofile.currIpaddr := PX_IMS_TS_UE4_IPADDR;
vc_userprofile.contactPort := PX_IMS_TS_UE4_PORT;
vc_userprofile.contactIpaddr := PX_IMS_TS_UE4_IPADDR;
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE4_BEARER_IPADDR;
vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN;
vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER;
vc_userprofile.qop := PX_IMS_SUT_UE4_QOP;
vc_userprofile.privUsername := PX_IMS_SUT_UE4_PRIVAT_USERNAME;
vc_userprofile.passwd := PX_IMS_SUT_UE4_PRIVAT_PASSWD;
vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_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
}
}
}
 
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_UE4atSUThome) {
p_sipUrl.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE4_PUBLIC_USER, password:=omit};
p_sipUrl.hostPort := {host := PX_IMS_SUT_UE4_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 sets 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;
}
case (c_interfaceProfile_IMS_SUT_AS) { //variant c_interfaceProfile_IMS_SUT_AS
vc_interfaceprofile.SUTPort := PX_IMS_SUT_AS_PORT;
vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_AS_IPADDR;
vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_AS_HOME_DOMAIN;
}
}
}
/*
*
* @desc retrieves 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 retrieves 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 retrieves 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 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)));
 
}//end function f_awaitingRegistration_IMS
 
} // end group registration
group preambles {
/*
*
* @desc Sets 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 Sets 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 Sets 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 Sets 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 {
/*
*
* @desc Sets variables and default initialization for user profile and handle deregistration
* @param p_cSeq_s cseq parameter
*/
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(0)}};
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(0)}};
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 sends BYE and awaits response
* @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 sends BYE and awaits response
* @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: ttcn/LibIms_Templates.ttcn
===================================================================
--- ttcn/LibIms_Templates.ttcn (nonexistent)
+++ ttcn/LibIms_Templates.ttcn (revision 98)
@@ -0,0 +1,2868 @@
+/*
+ * @author STF 346, STF366, STF368, STF369
+ * @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;
+ import from XSDAUX 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}}
+
+ template SemicolonParam_List m_semicolonParams_isub (template charstring p_address):=
+ {{"isub",p_address}}
+}
+
+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(template 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
+ };
+
+ template XmlBody mw_XmlBody_ResourceLists(template Resource_lists p_resourceLists) :=
+ {
+ resourceLists := p_resourceLists
+ };
+
+}// 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_request_mcidIndicatorTrue_holdIndTrue :=
+ {
+ choice := {
+ request := {McidRequestIndicator := bit2str('1'B),
+ HoldingIndicator := bit2str('1'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 := ?}
+ }
+ }
+
+ template Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndFalse :=
+ {
+ choice := {
+ response := {McidResponseIndicator := bit2str('1'B),
+ HoldingProvidedIndicator := bit2str('0'B)}
+ }
+ }
+
+ template Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndTrue :=
+ {
+ choice := {
+ response := {McidResponseIndicator := bit2str('1'B),
+ HoldingProvidedIndicator := bit2str('1'B)}
+ }
+ }
+
+} //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 (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 (Bit7 p_progDesc) := {
+ ProgressOctet3 := {CodingStandard := bit2str('00'B),
+ Location := bit2str('0000'B)
+ },
+ ProgressOctet4 := {ProgressDescription := bit2str(p_progDesc)}
+ }
+
+ template LowLayerCompatibilityType m_LowLayerCompatibilityType (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
+ (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 (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
+
+group ResourceListsTemplates {
+ template Resource_lists m_ResourceList_2Users(
+ EntryType p_user1,
+ EntryType p_user2
+ ) := {
+ list := {
+ {
+ name := omit,
+ anyAttributes := omit,
+ display_name := omit,
+ seq_1 := {
+ {
+ list := omit,
+ external_ := omit,
+ entry := p_user1,
+ entry_Ref := omit
+ },
+ {
+ list := omit,
+ external_ := omit,
+ entry := p_user2,
+ entry_Ref := omit
+ }
+ },
+ any_1 := omit
+ }
+ }
+ }
+
+ template EntryType m_EntryUser(SipUrl p_user) := {
+ display_name := omit,
+ uri :=
+ p_user.userInfo.userOrTelephoneSubscriber & "@" &
+ p_user.hostPort.host,
+ any_1 := omit,
+ anyAttributes := omit
+ }
+}// end grouup ResourceListsTemplates
+
+group Ims3gppTemplates {
+ template Ims_3gpp mw_Ims_3gpp_CW := {
+ version := 1.0,
+ anyAttributes := ?,
+ choice_1 := {
+ alternative_service := {
+ anyAttributes := ?,
+ type_ := ?,
+ reason := ?,
+ action_ := {
+ anyAttributes := ?,
+ emergency_registration := *,
+ call_waiting_indication := {},
+ any_1 := *
+ },
+ any_1 := *
+ }
+ },
+ any_1 := *
+ }
+} // end group Ims3gpp
+
+group CONFTemplates {
+ template booleanXSD boolXSD_true:={bool:=true}
+ template booleanXSD boolXSD_false:={bool:=false}
+
+ template anyAttributes m_emptyAnyAttributes:={}
+
+ template Media_type m_mediatype_status(template Media_status_type p_status):= {
+ id:="1",
+ anyAttributes:=omit,//m_emptyAnyAttributes,
+ display_text :=omit,
+ type_ :=omit,
+ label_ :=omit,
+ src_id:=omit,
+ status:= p_status,
+ any_1:=omit
+ }
+
+ template Endpoint_type m_endpoint(template charstring p_Uri,template Endpoint_status_type p_epStatus,template Joining_type p_joinMethod, template Disconnection_type p_discMethod, template Media_type p_mediastatus):= {
+ entity:=p_Uri,
+ state:=full,
+ anyAttributes:=omit,//m_emptyAnyAttributes,
+ display_text:=omit,
+ referred:=omit,
+ status:=p_epStatus,
+ joining_method:=p_joinMethod,
+ joining_info:=omit,
+ disconnection_method:=omit,
+ disconnection_info:=omit,
+ media:={p_mediastatus},// optional,
+ call_info:=omit,
+ any_1:=omit
+ }
+
+ template User_type m_1user (template charstring p_Uri,template Endpoint_type p_endpoint) := {
+ entity:=p_Uri,
+ state:=full,
+ anyAttributes:=omit,//m_emptyAnyAttributes,
+ display_text:=omit,
+ associated_aors:=omit,
+ roles:=omit,
+ languages :=omit,
+ cascaded_focus :=omit,
+ endpoint:={p_endpoint},// optional,
+ any_1:=omit
+ }
+
+ template Users_type m_users_1user_full(template User_type p_user):={
+ state:=full,
+ anyAttributes := omit,//m_emptyAnyAttributes,
+ user:={p_user},
+ any_1:=omit
+ }
+
+ template Users_type m_users_2user_full(template User_type p_user1,template User_type p_user2):={
+ state:=full,
+ anyAttributes := omit,//m_emptyAnyAttributes,
+ user:={p_user1,p_user2},
+ any_1:=omit
+ }
+
+ template Conference_state_type m_conference_state(template unsignedInt p_nUsers, template booleanXSD p_active, template booleanXSD p_locked) := {
+ anyAttributes:=omit,//m_emptyAnyAttributes,
+ user_count:=p_nUsers,
+ active:=p_active,
+ locked:=p_locked,
+ any_1 := omit
+ }
+
+ template Conference_info m_ci_cUri_cState_userEntity(template charstring p_cUri, template Conference_state_type p_cState, template Users_type p_users ) := {
+ entity := p_cUri,
+ state := full,
+ version := 1,
+ anyAttributes := omit,//m_emptyAnyAttributes,//*,// {{name:="",val:=""}},
+ conference_description := omit,
+ host_info := omit,
+ conference_state := p_cState,
+ users := p_users,
+ sidebars_by_ref := omit,
+ sidebars_by_val := omit,
+ any_1 := omit
+ }
+
+ template Conference_info mw_conferenceInfo_active := {
+ entity := ?,
+ state := *,
+ version := *,
+ anyAttributes := ?,
+ conference_description := *,
+ host_info := *,
+ conference_state := ?,
+ users := {
+ state := ?,
+ anyAttributes := ?,
+ user := {
+ {
+ entity := *,
+ state := *,
+ anyAttributes := *,
+ display_text := *,
+ associated_aors := *,
+ roles := *,
+ languages := *,
+ cascaded_focus := *,
+ endpoint := {
+ {
+ entity := *,
+ state := *,
+ anyAttributes := ?,
+ display_text := *,
+ referred := *,
+ status := connected,
+ joining_method := dialed_in,
+ joining_info := *,
+ disconnection_method := *,
+ disconnection_info := *,
+ media := *,
+ call_info := *,
+ any_1 := *
+ }
+ },
+ any_1 := *
+ }
+ },
+ any_1 := omit
+ },
+ sidebars_by_ref := *,
+ sidebars_by_val := *,
+ any_1 := *
+ }
+}
+
+} // 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_UserToUser_IMS
+ ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Route p_route, template charstring p_U2UData)
+ modifies m_BYE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ route := p_route,
+ userToUser := m_UserToUserData(p_U2UData)
+ }
+ }
+
+ 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 INFO_Request m_INFO_Request_Xml_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_xmlAplication}
+ },
+ 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_HistoryInfo_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 HistoryInfo p_historyInfo)
+ modifies m_INVITE_Request_IMS
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ historyInfo := p_historyInfo
+ }
+ }
+
+ /*
+ *
+ * @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 INVITE_Request m_INVITE_Request_User2UserData_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 charstring p_U2UData)
+ modifies m_INVITE_Request_IMS
+ :=
+ {
+ msgHeader :=
+ {
+ userToUser := m_UserToUserData(valueof(p_U2UData))
+ }
+ }
+
+ 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 NOTIFY_Request m_NOTIFY_Request_Xml_IMS_Conference
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template MessageBody p_mb )
+ modifies m_NOTIFY_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_xmlAplication},
+ event := {fieldName:=EVENT_E, eventType:="conference",eventParams:=omit},
+ subscriptionState:={fieldName:=SUBSCRIPTION_STATE_E, subState:="active",substateParams:=omit},
+ expires:={fieldName:=EXPIRES_E, deltaSec:="3600"}
+
+ },
+ messageBody := p_mb
+ }
+
+ /*
+ *
+ * @desc REFER message exchanged at Mw
+ *
+ */
+ template REFER_Request m_REFER_Request_IMS(
+ SipUrl p_requestUri,
+ CallId p_callId,
+ CSeq p_cSeq,
+ Contact p_contact,
+ From p_from,
+ template To p_to,
+ Via p_via,
+ template ReferTo p_referTo,
+ template ReferredBy p_referredBy,
+ 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_REFER_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
+ }
+
+ 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_ACK_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_User2UserData (template charstring p_U2UData) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {userToUser := mw_UserToUserData(p_U2UData)}
+ }
+
+ 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(
+ template CallId p_callId,
+ template charstring p_state,
+ template charstring p_contentType,
+ template 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_AlertInfo (
+ StatusLine p_statusLine,
+ CallId p_callId,
+ CSeq p_cSeq,
+ From p_from,
+ To p_to,
+ Via p_via,
+ AlertInfo p_alertInfo
+ ) modifies m_Response_Base:= {
+ msgHeader :=
+ {
+ alertInfo := p_alertInfo
+ }
+ }
+
+ 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_HistoryInfo_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template HistoryInfo p_historyInfo) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ historyInfo := p_historyInfo,
+ 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_pAsserted_privacy_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 Privacy p_privacy) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit,
+ pAssertedID := p_pAssertedID,
+ 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_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_supported_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template Supported p_supported, template Privacy p_privacy) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit,
+ supported := p_supported,
+ 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_UserToUser (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template charstring p_U2UData) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ userToUser := m_UserToUserData(valueof(p_U2UData))
+ }
+ }
+
+ 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_HistoryInfo (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 HistoryInfo p_historyInfo, 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},
+ historyInfo := p_historyInfo,
+ 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,template Route p_route, template RecordRoute p_recordroute, 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_pAsserted_privacy_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 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,
+ pAssertedID := p_pAssertedID,
+ privacy := p_privacy,
+ recordRoute := p_recordRoute//for INVITE response
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2XXonINVITE_supported_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template Supported p_supported, 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,
+ supported := p_supported,
+ privacy := p_privacy,
+ 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_2xxonINVITE_UserToUser (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, template charstring p_U2UData)
+ 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
+ userToUser := m_UserToUserData(valueof(p_U2UData))
+ },
+ 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_3XXonINVITE (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 (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
/ttcn/LibIms_Templates.ttcn
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: ttcn/LibIms_Interface.ttcn
===================================================================
--- ttcn/LibIms_Interface.ttcn (nonexistent)
+++ ttcn/LibIms_Interface.ttcn (revision 98)
@@ -0,0 +1,42 @@
+/*
+ * @author STF 346, STF366, STF368, STF369
+ * @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_Interface
+{
+ //LibCommon
+ import from LibCommon_Sync all;
+ import from LibCommon_AbstractData all;
+ import from LibCommon_BasicTypesAndValues all;
+ import from LibCommon_DataStrings all;
+ //LibSip
+ import from LibSip_SIPTypesAndValues all;
+ import from LibSip_SDPTypes all;
+ import from LibSip_Templates all;
+ import from LibSip_PIXITS all;
+ import from LibSip_Interface all;
+ //LibIms
+ import from LibIms_SIPTypesAndValues all;
+
+ group AdressTypes
+ {
+
+ //Solution for building error problem. (Important for validation)
+ //type component ImsComponent extends SipComponent need to be located in LibIms_Interface and not in LibSip_Interface module
+ //With this solution TAU compiler error.
+ type component ImsComponent extends SipComponent
+ {
+ // general variables
+ var ImsInterfaceProfile vc_interfaceprofile
+ } // end ImsComponent
+
+// type address WorkaroundAddress; //Remove it later
+ }// end group AdressTypes
+
+
+
+
+} // end module LibIms_TestSystem
/ttcn/LibIms_Interface.ttcn
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: ttcn/LibIms_PIXITS.ttcn
===================================================================
--- ttcn/LibIms_PIXITS.ttcn (nonexistent)
+++ ttcn/LibIms_PIXITS.ttcn (revision 98)
@@ -0,0 +1,586 @@
+/*
+ * @author STF 346, STF366, STF368, STF369
+ * @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_PIXITS
+{
+ //LibCommon
+ import from LibCommon_BasicTypesAndValues all;
+ import from LibCommon_TextStrings all;
+ import from LibCommon_DataStrings all;
+
+group SUT {
+
+group SUT_UE {
+ modulepar {
+ /** @desc charstring for SUT - UE IP address to exchange SIP messages - connection point for PCSCF
+ */
+ charstring PX_IMS_SUT_UE_IPADDR := "172.31.10.99";
+
+ /** @desc integer for SUT - UE port number to exchange SIP messages - connection point for PCSCF
+ */
+ integer PX_IMS_SUT_UE_PORT := 5060;
+ }//end modulepar
+}//end group SUT_UE1
+group SUT_UE1 {
+ modulepar {
+ /** @desc charstring for SUT - PCSCF1 IP address to exchange SIP messages - connection point for UE1
+ */
+ charstring PX_IMS_SUT_PCSCF1_IPADDR := "172.31.10.2";
+
+ /** @desc integer for SUT - PCSCF1 port number to exchange SIP messages - connection point for UE1
+ */
+ integer PX_IMS_SUT_PCSCF1_PORT := 5060;
+
+ /** @desc charstring for SUT/PCSCF1 domain - connection point for UE1
+ */
+ charstring PX_IMS_SUT_PCSCF1_HOME_DOMAIN := "pcscf1.sut.net";
+
+ /** @desc charstring for IP address used by the TS to exchange media streams for UE1
+ */
+ charstring PX_IMS_SUT_UE1_BEARER_IPADDR := "172.31.10.2";
+
+ /** @desc charstring for identity of the tester UE1 local domain
+ */
+ charstring PX_IMS_SUT_UE1_HOME_DOMAIN := "sut.net";
+
+ /** @desc charstring for identity of the tester UE1 local user
+ */
+ charstring PX_IMS_SUT_UE1_PUBLIC_USER := "2910";
+
+ /** @desc charstring for RFC 2617 3-2-2 username of UE1
+ * The name of user in the specified realm
+ */
+ charstring PX_IMS_SUT_UE1_PRIVAT_USERNAME := "abcd";
+
+ /** @desc charstring for RFC 2617 3-2-2-2 passwd of UE1: A known shared secret, the password of user of the specified username
+ */
+ charstring PX_IMS_SUT_UE1_PRIVAT_PASSWD := "1234";
+
+ /** @desc charstring for RFC 2617 3-2-1 qop options of UE1:
+ * Quoted string of one or more tokens indicating the "quality of protection" values supported by the server; the
+ * value "auth" indicates authentication; the value "auth-int" indicates authentication with integrity protection.
+ */
+ charstring PX_IMS_SUT_UE1_QOP := "auth";
+
+ /** @desc charstring for home(SUT) REGISTRAR domain of UE1
+ */
+ charstring PX_IMS_SUT_UE1_REGISTRAR := "registrar.sut.net";
+
+ /** @desc charstring for UE1 display name
+ */
+ charstring PX_IMS_SUT_UE1_DISPLAY := "UE1@SUT";
+ }
+} // end group SUT_UE1
+
+group SUT_UE2 {
+ modulepar {
+ /** @desc charstring for SUT - PCSCF2 IP address to exchange SIP messages - connection point for UE2
+ */
+ charstring PX_IMS_SUT_PCSCF2_IPADDR := "172.31.10.2";
+
+ /** @desc integer for SUT - PCSCF2 port number to exchange SIP messages - connection point for UE2
+ */
+ integer PX_IMS_SUT_PCSCF2_PORT := 5060;
+
+ /** @desc charstring for SUT/PCSCF2 domain - connection point for UE2
+ */
+ charstring PX_IMS_SUT_PCSCF2_HOME_DOMAIN := "pcscf2.home.net";
+
+ /** @desc charstring for IP address used by the TS to exchange media streams for UE2
+ */
+ charstring PX_IMS_SUT_UE2_BEARER_IPADDR := "172.31.10.2";
+
+ /** @desc charstring for identity of the tester UE2 local domain
+ */
+ charstring PX_IMS_SUT_UE2_HOME_DOMAIN := "sut.net";
+
+ /** @desc charstring for identity of the tester UE2 local user
+ */
+ charstring PX_IMS_SUT_UE2_PUBLIC_USER := "2910";
+
+ /** @desc charstring for RFC 2617 3.2.2 username of UE2
+ * The name of user in the specified realm
+ */
+ charstring PX_IMS_SUT_UE2_PRIVAT_USERNAME := "abcd";
+
+ /** @desc charstring for RFC 2617 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE2
+ */
+ charstring PX_IMS_SUT_UE2_PRIVAT_PASSWD := "1234";
+
+ /** @desc charstring for RFC 2617 3-2-1 qop options UE2:
+ * Quoted string of one or more tokens indicating the "quality of protection" values supported by the server, the
+ * value "auth" indicates authentication; the value "auth-int" indicates authentication with integrity protection.
+ */
+ charstring PX_IMS_SUT_UE2_QOP := "auth";
+
+ /** @desc charstring for home(SUT) REGISTRAR domain of UE2
+ */
+ charstring PX_IMS_SUT_UE2_REGISTRAR := "registrar.sut.net";
+ }
+} // end group SUT_UE2
+
+group SUT_UE3 {
+ modulepar {
+ /** @desc charstring for SUT - PCSCF3 IP address to exchange SIP messages - connection point for UE3
+ */
+ charstring PX_IMS_SUT_PCSCF3_IPADDR := "172.31.10.2";
+
+ /** @desc integer for SUT - PCSCF3 port number to exchange SIP messages - connection point for UE3
+ */
+ integer PX_IMS_SUT_PCSCF3_PORT := 5060;
+
+ /** @desc charstring for SUT/PCSCF3 domain - connection point for UE3
+ */
+ charstring PX_IMS_SUT_PCSCF3_HOME_DOMAIN := "pcscf3.home.net";
+
+ /** @desc charstring for IP address used by the TS to exchange media streams for UE3
+ */
+ charstring PX_IMS_SUT_UE3_BEARER_IPADDR := "172.31.10.2";
+
+ /** @desc charstring for identity of the tester UE2 local domain
+ */
+ charstring PX_IMS_SUT_UE3_HOME_DOMAIN := "sut.net";
+
+ /** @desc charstring for identity of the tester UE3 local user
+ */
+ charstring PX_IMS_SUT_UE3_PUBLIC_USER := "2910";
+
+ /** @desc charstring for RFC 2617 3.2.2 username of UE2
+ * The name of user in the specified realm
+ */
+ charstring PX_IMS_SUT_UE3_PRIVAT_USERNAME := "abcd";
+
+ /** @desc charstring for RFC 2617 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE2
+ */
+ charstring PX_IMS_SUT_UE3_PRIVAT_PASSWD := "1234";
+
+ /** @desc charstring for RFC 2617 3-2-1 qop options UE3:
+ * Quoted string of one or more tokens indicating the "quality of protection" values supported by the server, the
+ * value "auth" indicates authentication; the value "auth-int" indicates authentication with integrity protection.
+ */
+ charstring PX_IMS_SUT_UE3_QOP := "auth";
+
+ /** @desc charstring for home(SUT) REGISTRAR domain of UE3
+ */
+ charstring PX_IMS_SUT_UE3_REGISTRAR := "registrar.sut.net";
+ }
+} // end group SUT_UE3
+
+group SUT_UE4 {
+ modulepar {
+ /** @desc charstring for SUT - PCSCF4 IP address to exchange SIP messages - connection point for UE4
+ */
+ charstring PX_IMS_SUT_PCSCF4_IPADDR := "172.31.10.2";
+
+ /** @desc integer for SUT - PCSCF4 port number to exchange SIP messages - connection point for UE4
+ */
+ integer PX_IMS_SUT_PCSCF4_PORT := 5060;
+
+ /** @desc charstring for SUT/PCSCF4 domain - connection point for UE4
+ */
+ charstring PX_IMS_SUT_PCSCF4_HOME_DOMAIN := "pcscf4.home.net";
+
+ /** @desc charstring for IP address used by the TS to exchange media streams for UE4
+ */
+ charstring PX_IMS_SUT_UE4_BEARER_IPADDR := "172.31.10.2";
+
+ /** @desc charstring for identity of the tester UE2 local domain
+ */
+ charstring PX_IMS_SUT_UE4_HOME_DOMAIN := "sut.net";
+
+ /** @desc charstring for identity of the tester UE4 local user
+ */
+ charstring PX_IMS_SUT_UE4_PUBLIC_USER := "2910";
+
+ /** @desc charstring for RFC 2617 3.2.2 username of UE4
+ * The name of user in the specified realm
+ */
+ charstring PX_IMS_SUT_UE4_PRIVAT_USERNAME := "abcd";
+
+ /** @desc charstring for RFC 2617 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE2
+ */
+ charstring PX_IMS_SUT_UE4_PRIVAT_PASSWD := "1234";
+
+ /** @desc charstring for RFC 2617 3-2-1 qop options UE4:
+ * Quoted string of one or more tokens indicating the "quality of protection" values supported by the server, the
+ * value "auth" indicates authentication; the value "auth-int" indicates authentication with integrity protection.
+ */
+ charstring PX_IMS_SUT_UE4_QOP := "auth";
+
+ /** @desc charstring for home(SUT) REGISTRAR domain of UE4
+ */
+ charstring PX_IMS_SUT_UE4_REGISTRAR := "registrar.sut.net";
+ }
+} // end group SUT_UE4
+
+group SUT_unknown{
+ /** @desc charstring for identity of unknown UE public user
+ */
+ modulepar {
+ charstring PX_IMS_SUT_unknownUE_PUBLIC_USER := "0007";
+ }
+} // end group SUT_unknown
+
+group EMERGENCY{
+ modulepar {
+ /** @desc charstring for identity of emergency service local domain
+ */
+ charstring PX_IMS_SUT_EMERGENCY_HOME_DOMAIN := "home.net";
+
+ /** @desc charstring for identity of the emergency service
+ */
+ charstring PX_IMS_SUT_EMERGENCY_SERVICE := "service:sos";
+
+ /** @desc charstring for identity of the invalid emergency service
+ */
+ charstring PX_IMS_SUT_EMERGENCY_SERVICE_INVALID := "service:sos.invalid";
+ }
+}// end group EMERGENCY service
+
+group SUT_IBCF {
+ modulepar {
+ /** @desc charstring for SUT/IBCF1 IP address to exchange SIP messages
+ */
+ charstring PX_IMS_SUT_IBCF1_IPADDR := "172.31.10.5";
+
+ /** @desc integer for SUT/IBCF1 port number to exchange SIP messages
+ */
+ integer PX_IMS_SUT_IBCF1_PORT := 5060;
+
+ /** @desc charstring for SUT/IBCF1 domain
+ */
+ charstring PX_IMS_SUT_IBCF1_HOME_DOMAIN := "ibcf1.sut.net";
+
+ /** @desc charstring for SUT/IBCF2 IP address to exchange SIP messages
+ */
+ charstring PX_IMS_SUT_IBCF2_IPADDR := "172.31.10.6";
+
+ /** @desc integer for SUT/IBCF2 port number to exchange SIP messages
+ */
+ integer PX_IMS_SUT_IBCF2_PORT := 5060;
+
+ /** @desc charstring for SUT/IBCF2 domain
+ */
+ charstring PX_IMS_SUT_IBCF2_HOME_DOMAIN := "ibcf2.sut.net";
+ }
+} // end group SUT_IBCF
+group SUT_PCSCF {
+ modulepar {
+ /** @desc charstring for SUT/P-CSCF IP address to exchange SIP messages
+ */
+ charstring PX_IMS_SUT_PCSCF_IPADDR := "172.31.10.2";
+
+ /** @desc integer for SUT/P-CSCF port number to exchange SIP messages
+ */
+ integer PX_IMS_SUT_PCSCF_PORT := 5060;
+
+ /** @desc charstring for SUT/P-CSCFdomain
+ */
+ charstring PX_IMS_SUT_PCSCF_HOME_DOMAIN := "pcscf.sut.net";
+
+ /** @desc charstring for SUT/P-CSCF P_VisitedNetwork ID header (see RFC3455)
+ */
+ charstring PX_IMS_SUT_PCSCF_VisitedNetworkID := "sut token";
+
+ /** @desc charstring for SUT/P-CSCF Min-SE header lower bound for the session refresh interval (see RFC4028)
+ */
+ charstring PX_IMS_SUT_PCSCF_MinSE := "100";
+ }
+} // end group SUT_PCSCF
+group SUT_SCSCF {
+ modulepar {
+ /** @desc charstring for SUT/S-CSCF IP address to exchange SIP messages
+ */
+ charstring PX_IMS_SUT_SCSCF_IPADDR := "172.31.10.4";
+
+ /** @desc integer for SUT/S-CSCF port number to exchange SIP messages
+ */
+ integer PX_IMS_SUT_SCSCF_PORT := 5060;
+
+ /** @desc charstring for SUT/S-CSCFdomain
+ */
+ charstring PX_IMS_SUT_SCSCF_HOME_DOMAIN := "scscf.sut.net";
+
+ /** @desc charstring for SUT/S-CSCF globally used realm name of IUT S-CSCF
+ */
+ charstring PX_IMS_SUT_SCSCF_REALM := "realm.scscf";
+ }
+} // end group SUT_SCSCF
+
+group SUT_ICSCF {
+ modulepar {
+ /** @desc charstring for SUT/I-CSCF IP address to exchange SIP messages
+ */
+ charstring PX_IMS_SUT_ICSCF_IPADDR := "172.31.10.3";
+
+ /** @desc integer for SUT/I-CSCF port number to exchange SIP messages
+ */
+ integer PX_IMS_SUT_ICSCF_PORT := 5060;
+
+ /** @desc charstring for SUT/I-CSCFdomain
+ */
+ charstring PX_IMS_SUT_ICSCF_HOME_DOMAIN := "icscf.sut.net";
+ }
+} // end group SUT_ICSCF
+
+group SUT_AS {
+ modulepar {
+ /** @desc charstring for SUT - AS IP address to exchange SIP messages - connection point for SCSCF
+ */
+ charstring PX_IMS_SUT_AS_IPADDR := "172.31.10.7";
+
+ /** @desc integer for SUT - AS port number to exchange SIP messages - connection point for SCSCF
+ */
+ integer PX_IMS_SUT_AS_PORT := 5060;
+
+ /** @desc charstring for SUT/AS domain
+ */
+ charstring PX_IMS_SUT_AS_HOME_DOMAIN := "as.sut.net";
+
+ }//end modulepar
+}//end group SUT_UE1
+
+group SUT_IMGCF {
+ modulepar {
+ /** @desc charstring for SUT/I-MGCF IP address to exchange SIP messages
+ */
+ charstring PX_IMS_SUT_IMGCF_IPADDR := "172.31.10.10";
+
+ /** @desc integer for SUT/I-MGCF port number to exchange SIP messages
+ */
+ integer PX_IMS_SUT_IMGCF_PORT := 5060;
+
+ /** @desc charstring for SUT/I-MGCFdomain
+ */
+ charstring PX_IMS_SUT_IMGCF_HOME_DOMAIN := "imgcf.sut.net";
+ }
+} // end group SUT_IMGCF
+
+group SUT_CONF {
+ modulepar {
+ /**
+ * @desc
+ * charstring for SUT/conference IP address to exchange SIP messages
+ */
+ charstring PX_IMS_SUT_CONF_IPADDR := "172.31.10.10";
+ /**
+ * @desc integer for SUT/conference port number to exchange SIP messages
+ */
+ integer PX_IMS_SUT_CONF_PORT := 5060;
+ /**
+ * @desc charstring for SUT/conference domain
+ */
+ charstring PX_IMS_SUT_CONF_HOME_DOMAIN := "conf.sut.net";
+ /**
+ * @desc charstring for conference factory URI name
+ */
+ charstring PX_IMS_SUT_CONF_FACTORY_NAME := "factory.uri.name";
+ };
+
+} // end group SUT_CONF
+
+} // end group SUT
+group TS {
+group TS_UE1 {
+ modulepar {
+ /** @desc charstring for IP address used by the UE1 to exchange SIP messages
+ */
+ charstring PX_IMS_TS_UE1_IPADDR := "172.31.1.240";
+
+ /** @desc integer for port number used by the UE1 to exchange SIP messages
+ */
+ integer PX_IMS_TS_UE1_PORT := 5060;
+
+ /** @desc charstring for visited(TS) REGISTRAR domain
+ */
+ charstring PX_IMS_TS_UE1_REGISTRAR := "registrar.ts.net";
+ }
+} // end group TS_UE1
+
+group TS_UE2 {
+ modulepar {
+ /** @desc charstring for IP address used by the UE2 to exchange SIP messages
+ */
+ charstring PX_IMS_TS_UE2_IPADDR := "172.31.1.241";
+
+ /** @desc integer for port number used by the UE2 to exchange SIP messages
+ */
+ integer PX_IMS_TS_UE2_PORT := 5060;
+
+ /** @desc charstring for visited(TS) REGISTRAR domain
+ */
+ charstring PX_IMS_TS_UE2_REGISTRAR := "registrar.ts.net";
+ }
+} // end group TS_UE2
+
+group TS_UE3 {
+ modulepar {
+ /** @desc charstring for IP address used by the UE3 to exchange SIP messages
+ */
+ charstring PX_IMS_TS_UE3_IPADDR := "172.31.1.242";
+
+ /** @desc integer for port number used by the UE3 to exchange SIP messages
+ */
+ integer PX_IMS_TS_UE3_PORT := 5060;
+
+ /** @desc charstring for visited(TS) REGISTRAR domain
+ */
+ charstring PX_IMS_TS_UE3_REGISTRAR := "registrar.ts.net";
+ }
+} // end group TS_UE3
+
+group TS_UE4 {
+ modulepar {
+ /** @desc charstring for IP address used by the UE3 to exchange SIP messages
+ */
+ charstring PX_IMS_TS_UE4_IPADDR := "172.31.1.243";
+
+ /** @desc integer for port number used by the UE3 to exchange SIP messages
+ */
+ integer PX_IMS_TS_UE4_PORT := 5060;
+
+ /** @desc charstring for visited(TS) REGISTRAR domain
+ */
+ charstring PX_IMS_TS_UE4_REGISTRAR := "registrar.ts.net";
+ }
+} // end group TS_UE4
+
+group TS_IBCF {
+ modulepar {
+ /** @desc charstring for TS/IBCF IP address to exchange SIP messages
+ */
+ charstring PX_IMS_TS_IBCF_IPADDR := "172.31.1.15";
+
+ /** @desc integer for TS/IBCF port number to exchange SIP messages
+ */
+ integer PX_IMS_TS_IBCF_PORT := 5060;
+
+ /** @desc charstring for TS/IBCF domain
+ */
+ charstring PX_IMS_TS_IBCF_HOME_DOMAIN := "ibcf.ts.net";
+ }
+} // end group TS_IBCF
+
+group TS_ICSCF {
+ modulepar {
+ /** @desc charstring for TS/I-CSCF IP address to exchange SIP messages
+ */
+ charstring PX_IMS_TS_ICSCF_IPADDR := "172.31.1.13";
+
+ /** @desc integer for IUT/I-CSCF port number to exchange SIP messages
+ */
+ integer PX_IMS_TS_ICSCF_PORT := 5060;
+
+ /** @desc charstring for TS/I-CSCF domain
+ */
+ charstring PX_IMS_TS_ICSCF_HOME_DOMAIN := "icscf.ts.net";
+ }
+} // end group TS_ICSCF
+
+group TS_PCSCF {
+ modulepar {
+ /** @desc charstring for TS/P-CSCF IP address to exchange SIP messages
+ */
+ charstring PX_IMS_TS_PCSCF_IPADDR := "172.31.1.12";
+
+ /** @desc integer for IUT/P-CSCF port number to exchange SIP messages
+ */
+ integer PX_IMS_TS_PCSCF_PORT := 5060;
+
+ /** @desc charstring for TS/P-CSCFdomain
+ */
+ charstring PX_IMS_TS_PCSCF_HOME_DOMAIN := "pcscf.ts.net";
+ }
+} // end group TS_PCSCF
+
+group TS_SCSCF {
+ modulepar {
+ /** @desc charstring for TS/S-CSCF IP address to exchange SIP messages
+ */
+ charstring PX_IMS_TS_SCSCF_IPADDR := "172.31.1.14";
+
+ /** @desc integer for TS/S-CSCF port number to exchange SIP messages
+ */
+ integer PX_IMS_TS_SCSCF_PORT := 5060;
+
+ /** @desc charstring for TS/S-CSCFdomain
+ */
+ charstring PX_IMS_TS_SCSCF_HOME_DOMAIN := "scscf.ts.net";
+
+ /** @desc charstring public user identity for Request-URI to be rejected by IUT S-CSCF as it is barred for incoming calls
+ */
+ charstring PX_IMS_SUT_BARRED_PUBLIC_USER;
+
+ /** @desc charstring invalid GRUU for Request-URI to be rejected by IUT S-CSCF
+ */
+ charstring PX_IMS_SUT_INVALID_GRUU;
+
+ /** @desc charstring Service value in P-Asserted-Service header to be rejected by IUT S-CSCF, as service is not subscribed-to
+ */
+ charstring PX_IMS_SUT_UNSUBSCRIBED_SERVICE;
+
+ /** @desc charstring Service value in SDP message body to be rejected by IUT S-CSCF, as service is not subscribed-to;
+ ** intentionally kept as charstring to allow maximum flexibility to construct unsubscribed service **
+ */
+ charstring PX_IMS_SUT_UNSUBSCRIBED_SDP_SERVICE;
+ }
+} // end group TS_SCSCF
+
+group TS_IMS1user {
+ modulepar {
+ /** @desc charstring for public userinfo/displayname addressing IMS1UE (simulated by the TS)
+ */
+ charstring PX_IMS_TS_IMS1UE_PUBLIC_USER := "IMS1UE";
+
+ /** @desc charstring for TS/domain
+ */
+ charstring PX_IMS_TS_IMS1UE_HOME_DOMAIN := "ts.net";
+ }
+} // end group TS_IMS1user
+
+group TS_ISUPuser {
+ modulepar {
+ /** @desc charstring for public userinfo addressing ISUPUE (simulated by the TS)
+ */
+ charstring PX_IMS_TS_ISUP_PUBLIC_USER := "070123456";
+
+ /** @desc charstring for ISUP TS/domain or IPAddres
+ */
+ charstring PX_IMS_TS_ISUP_HOME_DOMAIN := "172.27.11.80";
+ }
+} // end group TS_ISUPuser
+
+
+group TS_AS {
+ modulepar {
+ /** @desc charstring for TS/AS1 IP address to exchange SIP messages
+ */
+ charstring PX_IMS_TS_AS1_IPADDR := "172.31.1.18";
+
+ /** @desc integer for TS/AS1 port number to exchange SIP messages
+ */
+ integer PX_IMS_TS_AS1_PORT := 5060;
+
+ /** @desc charstring for TS/AS1 domain
+ */
+ charstring PX_IMS_TS_AS1_HOME_DOMAIN := "as1.ts.net";
+
+ /** @desc charstring for TS/AS2 IP address to exchange SIP messages
+ */
+ charstring PX_IMS_TS_AS2_IPADDR := "172.31.1.19";
+
+ /** @desc integer for TS/AS2 port number to exchange SIP messages
+ */
+ integer PX_IMS_TS_AS2_PORT := 5060;
+
+ /** @desc charstring for TS/AS2 domain
+ */
+ charstring PX_IMS_TS_AS2_HOME_DOMAIN := "as2.ts.net";
+ }
+} // end group TS_AS
+} // end group TS
+} // end module LibIms_PIXITS
/ttcn/LibIms_PIXITS.ttcn
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: ttcn/LibIms_SIPTypesAndValues.ttcn
===================================================================
--- ttcn/LibIms_SIPTypesAndValues.ttcn (nonexistent)
+++ ttcn/LibIms_SIPTypesAndValues.ttcn (revision 98)
@@ -0,0 +1,87 @@
+/*
+ * @author STF 346, STF366, STF368, STF369
+ * @version $Id$
+ * @desc This module provides the types and constants used by the test component
+ * for SIP tests.
+ */
+
+module LibIms_SIPTypesAndValues
+{
+ // SipAts
+ import from LibSip_SDPTypes all;
+ import from LibSip_XMLTypes all;
+
+group Constants
+{
+
+const integer c_ISUP_HOP_COUNT:=31; //TODO replace this value with appropriate PIXIT parameter
+
+group UserProfileConstants
+ {
+ // number of user profile (RESERVED: from 1-10 for SIP profile)
+ const integer c_userProfile_UE1atSUThome := 11; // location is SUT domain
+ const integer c_userProfile_UE2atSUThome := 12; // location is SUT domain
+ const integer c_userProfile_UE3atSUThome := 13; // location is SUT domain
+ const integer c_userProfile_UE4atSUThome := 14; // location is SUT domain
+ const integer c_userProfile_UE1atSUTvisiting := 21; // location is SUT domain
+ //const integer c_userProfile_UE2atSUTvisiting := 22; // location is SUT domain
+ const integer c_userProfile_IBCFwithUnknownUE := 28; // location is IMS1 domain
+ const integer c_userProfile_IBCFwithHomeUE := 29; // location is IMS1 domain
+ const integer c_userProfile_IBCFwithVisitingUE := 31; // location is IMS1 domain
+ const integer c_userProfile_PCSCFwithHomeUE := 41; // location is IMS1 domain
+ const integer c_userProfile_PCSCFwithVisitingUE := 42; // location is IMS1 domain
+ const integer c_userProfile_PCSCFwithVisitingUE2 := 43; // location is IMS1 domain
+ const integer c_userProfile_PCSCFwithUnknownVisitingUE := 44; // location is IMS1 domain
+ const integer c_userProfile_ICSCFwithHomeUE := 45; // location is IMS1 domain
+ const integer c_userProfile_SCSCFwithHomeUE := 46; // location is IMS1 domain
+ const integer c_userProfile_ISUP := 49; //
+ const integer c_userProfile_AS1 := 51; // Isc userProfile at AS1
+ const integer c_userProfile_AS2 := 52; // Isc userProfile at AS2
+
+
+ // number of interface profile
+ const integer c_interfaceProfile_IMS_SUT_IBCF1 := 100; // Ic interface at IBCF1 located in SUT
+ const integer c_interfaceProfile_IMS_SUT_IBCF2 := 101; // Ic interface at IBCF2 located in SUT
+ const integer c_interfaceProfile_IMS_SUT_PCSCF1 := 110; // Gm interface towards UE1 located in SUT
+ const integer c_interfaceProfile_IMS_SUT_PCSCF2 := 111; // Gm interface towards UE2 located in SUT
+ const integer c_interfaceProfile_IMS_SUT_PCSCF := 112; // Mw interface at P-CSCF located in SUT
+ const integer c_interfaceProfile_IMS_SUT_SCSCF := 113; // Mw interface at S-CSCF located in SUT
+ const integer c_interfaceProfile_IMS_SUT_ICSCF := 114; // Mw interface at I-CSCF located in SUT
+ const integer c_interfaceProfile_IMS_SUT_MGCF := 115; // Mw interface at MGCF located in SUT
+ const integer c_interfaceProfile_IMS_SUT_AS := 116; // Isc interface at AS located in SUT
+
+
+ // number of conference profile
+ const integer c_conferenceProfile_factoryURI := 800; // confernece factory URI
+
+ // number of service profile
+ const integer c_serviceProfile_EMERGENCY := 911;
+ const integer c_serviceProfile_EMERGENCY_INVALID := 912;
+
+ // number of SIPURL identifiers
+ const integer c_interfaceSIPURL_IMS_SUT_PCSCF1_domain := 1101; // c_interfaceProfile_IMS_SUT_PCSCF1
+ const integer c_interfaceSIPURL_IMS_SUT_PCSCF1_ip := 1102; // c_interfaceProfile_IMS_SUT_PCSCF1
+
+} //end group UserProfileConstants
+
+
+} //end group Constants
+
+
+ group otherTypes{
+ type record ImsInterfaceProfile
+ { /** @desc integer for Port number to exchange SIP messages
+ */
+ integer SUTPort,
+
+ /** @desc charstring for IP address to exchange SIP messages
+ */
+ charstring SUTIpaddr,
+
+ /** @desc charstring for home domain to exchange SIP messages
+ */
+ charstring SUTHomeDomain
+ }
+ }
+
+} // end module LibIms_SIPTypesAndValues
/ttcn/LibIms_SIPTypesAndValues.ttcn
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property