Compare Revisions

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

Ignore whitespace Rev 186 → Rev 187

/branches/v3/ttcn/LibIms_Interface.ttcn
1,39 → 1,30
/**
* @author STF 346, STF366, STF368, STF369, STF450, STF471
* @version $Id$
* @desc This module provides the types used by the test component
* for SIP-IMS tests. Module become from STF306 and STF334-336
* This module is part of LibImsV2.
* @author STF 346, STF366, STF368, STF369, STF450, STF471
* @version $Id$
* @desc This module provides the types used by the test component for SIP-IMS tests. Module become from STF306 and STF334-336 This module is part of LibImsV2.
*/
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;
 
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 {
 
group AdressTypes
{
type component ImsComponent extends SipComponent {
// general variables
var ImsInterfaceProfile vc_interfaceprofile;
} // end ImsComponent
 
type component ImsComponent extends SipComponent
{
// general variables
var ImsInterfaceProfile vc_interfaceprofile
} // end ImsComponent
 
}// end group AdressTypes
 
 
 
} // end group AdressTypes
} // end module LibIms_TestSystem
/branches/v3/ttcn/LibIms_PIXITS.ttcn
1,563 → 1,689
/**
* @author STF 346, STF366, STF368, STF369, STF450, STF471
* @version $Id$
* @desc This module provides the types used by the test component
* for SIP-IMS tests. Module become from STF306 and STF334-336
* This module is part of LibImsV3.
* @author STF 346, STF366, STF368, STF369, STF450, STF471
* @version $Id$
* @desc This module provides the types used by the test component for SIP-IMS tests. Module become from STF306 and STF334-336 This module is part of LibImsV3.
*/
module LibIms_PIXITS {
// LibCommon
import from LibCommon_BasicTypesAndValues all;
import from LibCommon_TextStrings all;
import from LibCommon_DataStrings all;
 
module LibIms_PIXITS
{
//LibCommon
import from LibCommon_BasicTypesAndValues all;
import from LibCommon_TextStrings all;
import from LibCommon_DataStrings all;
group SUT {
group SUT_UE {
/** @desc charstring for SUT - UE IP address to exchange SIP messages - connection point for PCSCF
*/
modulepar charstring PX_IMS_SUT_UE_IPADDR := "172.31.10.99";
group SUT {
 
/** @desc integer for SUT - UE port number to exchange SIP messages - connection point for PCSCF
*/
modulepar integer PX_IMS_SUT_UE_PORT := 5060;
}//end group SUT_UE1
group SUT_UE1 {
/** @desc charstring for SUT - PCSCF1 IP address to exchange SIP messages - connection point for UE1
*/
modulepar 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
*/
modulepar integer PX_IMS_SUT_PCSCF1_PORT := 5060;
/** @desc charstring for SUT/PCSCF1 domain - connection point for UE1
*/
modulepar 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
*/
modulepar charstring PX_IMS_SUT_UE1_BEARER_IPADDR := "172.31.10.2";
/** @desc charstring for identity of the tester UE1 local domain
*/
modulepar charstring PX_IMS_SUT_UE1_HOME_DOMAIN := "sut.net";
group SUT_UE {
/**
* @desc charstring for SUT - UE IP address to exchange SIP messages - connection point for PCSCF
*/
modulepar charstring PX_IMS_SUT_UE_IPADDR := "172.31.10.99";
 
/** @desc charstring for identity of the tester UE1 local user
*/
modulepar charstring PX_IMS_SUT_UE1_PUBLIC_USER := "2910";
/**
* @desc integer for SUT - UE port number to exchange SIP messages - connection point for PCSCF
*/
modulepar integer PX_IMS_SUT_UE_PORT := 5060;
 
/** @desc charstring for RFC 2617 clause 3-2-2 username of UE1:
* The name of user in the specified realm
*/
modulepar charstring PX_IMS_SUT_UE1_PRIVAT_USERNAME := "abcd";
} // end group SUT_UE1
group SUT_UE1 {
/**
* @desc charstring for SUT - PCSCF1 IP address to exchange SIP messages - connection point for UE1
*/
modulepar charstring PX_IMS_SUT_PCSCF1_IPADDR := "172.31.10.2";
 
/** @desc charstring for RFC 2617 clause 3-2-2-2 passwd of UE1: A known shared secret, the password of user of the specified username
*/
modulepar charstring PX_IMS_SUT_UE1_PRIVAT_PASSWD := "1234";
/** @desc charstring for RFC 2617 clause 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.
*/
modulepar charstring PX_IMS_SUT_UE1_QOP := "auth";
/** @desc charstring for home(SUT) REGISTRAR domain of UE1
*/
modulepar charstring PX_IMS_SUT_UE1_REGISTRAR := "registrar.sut.net";
/**
* @desc integer for SUT - PCSCF1 port number to exchange SIP messages - connection point for UE1
*/
modulepar integer PX_IMS_SUT_PCSCF1_PORT := 5060;
 
/** @desc charstring for UE1 display name
*/
modulepar charstring PX_IMS_SUT_UE1_DISPLAY := "[email protected]";
} // end group SUT_UE1
/**
* @desc charstring for SUT/PCSCF1 domain - connection point for UE1
*/
modulepar charstring PX_IMS_SUT_PCSCF1_HOME_DOMAIN := "pcscf1.sut.net";
 
group SUT_UE2 {
/** @desc charstring for SUT - PCSCF2 IP address to exchange SIP messages - connection point for UE2
*/
modulepar charstring PX_IMS_SUT_PCSCF2_IPADDR := "172.31.10.2";
/**
* @desc charstring for IP address used by the TS to exchange media streams for UE1
*/
modulepar charstring PX_IMS_SUT_UE1_BEARER_IPADDR := "172.31.10.2";
 
/** @desc integer for SUT - PCSCF2 port number to exchange SIP messages - connection point for UE2
*/
modulepar integer PX_IMS_SUT_PCSCF2_PORT := 5060;
/**
* @desc charstring for identity of the tester UE1 local domain
*/
modulepar charstring PX_IMS_SUT_UE1_HOME_DOMAIN := "sut.net";
 
/** @desc charstring for SUT/PCSCF2 domain - connection point for UE2
*/
modulepar 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
*/
modulepar charstring PX_IMS_SUT_UE2_BEARER_IPADDR := "172.31.10.2";
/** @desc charstring for identity of the tester UE2 local domain
*/
modulepar charstring PX_IMS_SUT_UE2_HOME_DOMAIN := "sut.net";
/**
* @desc charstring for identity of the tester UE1 local user
*/
modulepar charstring PX_IMS_SUT_UE1_PUBLIC_USER := "2910";
 
/** @desc charstring for identity of the tester UE2 local user
*/
modulepar charstring PX_IMS_SUT_UE2_PUBLIC_USER := "2910";
/**
* @desc charstring for RFC 2617 clause 3-2-2 username of UE1: The name of user in the specified realm
*/
modulepar charstring PX_IMS_SUT_UE1_PRIVAT_USERNAME := "abcd";
 
/** @desc charstring for RFC 2617 clause 3-2-2 username of UE2:
* The name of user in the specified realm
*/
modulepar charstring PX_IMS_SUT_UE2_PRIVAT_USERNAME := "abcd";
/**
* @desc charstring for RFC 2617 clause 3-2-2-2 passwd of UE1: A known shared secret, the password of user of the specified username
*/
modulepar charstring PX_IMS_SUT_UE1_PRIVAT_PASSWD := "1234";
 
/** @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE2
*/
modulepar charstring PX_IMS_SUT_UE2_PRIVAT_PASSWD := "1234";
/** @desc charstring for RFC 2617 clause 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.
*/
modulepar charstring PX_IMS_SUT_UE2_QOP := "auth";
/** @desc charstring for home(SUT) REGISTRAR domain of UE2
*/
modulepar charstring PX_IMS_SUT_UE2_REGISTRAR := "registrar.sut.net";
/** @desc charstring for UE2 display name
*/
modulepar charstring PX_IMS_SUT_UE2_DISPLAY := "[email protected]";
} // end group SUT_UE2
/**
* @desc charstring for RFC 2617 clause 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.
*/
modulepar charstring PX_IMS_SUT_UE1_QOP := "auth";
 
group SUT_UE3 {
/** @desc charstring for SUT - PCSCF3 IP address to exchange SIP messages - connection point for UE3
*/
modulepar charstring PX_IMS_SUT_PCSCF3_IPADDR := "172.31.10.2";
/**
* @desc charstring for home(SUT) REGISTRAR domain of UE1
*/
modulepar charstring PX_IMS_SUT_UE1_REGISTRAR := "registrar.sut.net";
 
/** @desc integer for SUT - PCSCF3 port number to exchange SIP messages - connection point for UE3
*/
modulepar integer PX_IMS_SUT_PCSCF3_PORT := 5060;
/**
* @desc charstring for UE1 display name
*/
modulepar charstring PX_IMS_SUT_UE1_DISPLAY := "[email protected]";
 
/** @desc charstring for SUT/PCSCF3 domain - connection point for UE3
*/
modulepar 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
*/
modulepar charstring PX_IMS_SUT_UE3_BEARER_IPADDR := "172.31.10.2";
/** @desc charstring for identity of the tester UE2 local domain
*/
modulepar charstring PX_IMS_SUT_UE3_HOME_DOMAIN := "sut.net";
} // end group SUT_UE1
 
/** @desc charstring for identity of the tester UE3 local user
*/
modulepar charstring PX_IMS_SUT_UE3_PUBLIC_USER := "2910";
group SUT_UE2 {
/**
* @desc charstring for SUT - PCSCF2 IP address to exchange SIP messages - connection point for UE2
*/
modulepar charstring PX_IMS_SUT_PCSCF2_IPADDR := "172.31.10.2";
 
/** @desc charstring for RFC 2617 clause 3-2-2 username of UE3:
* The name of user in the specified realm
*/
modulepar charstring PX_IMS_SUT_UE3_PRIVAT_USERNAME := "abcd";
/**
* @desc integer for SUT - PCSCF2 port number to exchange SIP messages - connection point for UE2
*/
modulepar integer PX_IMS_SUT_PCSCF2_PORT := 5060;
 
/** @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE3
*/
modulepar charstring PX_IMS_SUT_UE3_PRIVAT_PASSWD := "1234";
/** @desc charstring for RFC 2617 clause 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.
*/
modulepar charstring PX_IMS_SUT_UE3_QOP := "auth";
/** @desc charstring for home(SUT) REGISTRAR domain of UE3
*/
modulepar charstring PX_IMS_SUT_UE3_REGISTRAR := "registrar.sut.net";
} // end group SUT_UE3
/**
* @desc charstring for SUT/PCSCF2 domain - connection point for UE2
*/
modulepar charstring PX_IMS_SUT_PCSCF2_HOME_DOMAIN := "pcscf2.home.net";
 
group SUT_UE4 {//UE4 can be used as UE1Visited
/** @desc charstring for SUT - PCSCF4 IP address to exchange SIP messages - connection point for UE4
*/
modulepar charstring PX_IMS_SUT_PCSCF4_IPADDR := "172.31.10.2";
/**
* @desc charstring for IP address used by the TS to exchange media streams for UE2
*/
modulepar charstring PX_IMS_SUT_UE2_BEARER_IPADDR := "172.31.10.2";
 
/** @desc integer for SUT - PCSCF4 port number to exchange SIP messages - connection point for UE4
*/
modulepar integer PX_IMS_SUT_PCSCF4_PORT := 5060;
/**
* @desc charstring for identity of the tester UE2 local domain
*/
modulepar charstring PX_IMS_SUT_UE2_HOME_DOMAIN := "sut.net";
 
/** @desc charstring for SUT/PCSCF4 domain - connection point for UE4
*/
modulepar 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
*/
modulepar charstring PX_IMS_SUT_UE4_BEARER_IPADDR := "172.31.10.2";
/** @desc charstring for identity of the tester UE2 local domain
*/
modulepar charstring PX_IMS_SUT_UE4_HOME_DOMAIN := "sut.net";
/**
* @desc charstring for identity of the tester UE2 local user
*/
modulepar charstring PX_IMS_SUT_UE2_PUBLIC_USER := "2910";
 
/** @desc charstring for identity of the tester UE4 local user
*/
modulepar charstring PX_IMS_SUT_UE4_PUBLIC_USER := "2910";
/**
* @desc charstring for RFC 2617 clause 3-2-2 username of UE2: The name of user in the specified realm
*/
modulepar charstring PX_IMS_SUT_UE2_PRIVAT_USERNAME := "abcd";
 
/** @desc charstring for RFC 2617 clause 3-2-2 username of UE4:
* The name of user in the specified realm
*/
modulepar charstring PX_IMS_SUT_UE4_PRIVAT_USERNAME := "abcd";
/**
* @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE2
*/
modulepar charstring PX_IMS_SUT_UE2_PRIVAT_PASSWD := "1234";
 
/** @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE2
*/
modulepar charstring PX_IMS_SUT_UE4_PRIVAT_PASSWD := "1234";
/** @desc charstring for RFC 2617 clause 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.
*/
modulepar charstring PX_IMS_SUT_UE4_QOP := "auth";
/** @desc charstring for home(SUT) REGISTRAR domain of UE4
*/
modulepar charstring PX_IMS_SUT_UE4_REGISTRAR := "registrar.sut.net";
} // end group SUT_UE4
/**
* @desc charstring for RFC 2617 clause 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.
*/
modulepar charstring PX_IMS_SUT_UE2_QOP := "auth";
 
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
/**
* @desc charstring for home(SUT) REGISTRAR domain of UE2
*/
modulepar charstring PX_IMS_SUT_UE2_REGISTRAR := "registrar.sut.net";
 
group EMERGENCY{
/** @desc charstring for identity of emergency service local domain
*/
modulepar charstring PX_IMS_SUT_EMERGENCY_HOME_DOMAIN := "home.net";
/**
* @desc charstring for UE2 display name
*/
modulepar charstring PX_IMS_SUT_UE2_DISPLAY := "[email protected]";
 
/** @desc charstring for identity of the emergency service
*/
modulepar charstring PX_IMS_SUT_EMERGENCY_SERVICE := "service:sos";
modulepar charstring PX_IMS_SUT_EMERGENCY_SERVICE_namespaceId := "service";
modulepar charstring PX_IMS_SUT_EMERGENCY_SERVICE_namespaceSpecificString := "sos";
/** @desc charstring for identity of the invalid emergency service
*/
modulepar charstring PX_IMS_SUT_EMERGENCY_SERVICE_INVALID := "service:sos.invalid";
modulepar charstring PX_IMS_SUT_EMERGENCY_SERVICE_INVALID_namespaceId := "service";
modulepar charstring PX_IMS_SUT_EMERGENCY_SERVICE_INVALID_namespaceSpecificString := "sos.invalid";
}// end group EMERGENCY service
} // end group SUT_UE2
 
group SUT_IBCF {
/** @desc charstring for SUT/IBCF1 IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_SUT_IBCF1_IPADDR := "172.31.10.5";
/** @desc integer for SUT/IBCF1 port number to exchange SIP messages
*/
modulepar integer PX_IMS_SUT_IBCF1_PORT := 5060;
group SUT_UE3 {
/**
* @desc charstring for SUT - PCSCF3 IP address to exchange SIP messages - connection point for UE3
*/
modulepar charstring PX_IMS_SUT_PCSCF3_IPADDR := "172.31.10.2";
 
/** @desc charstring for SUT/IBCF1 domain
*/
modulepar charstring PX_IMS_SUT_IBCF1_HOME_DOMAIN := "ibcf1.sut.net";
/**
* @desc integer for SUT - PCSCF3 port number to exchange SIP messages - connection point for UE3
*/
modulepar integer PX_IMS_SUT_PCSCF3_PORT := 5060;
 
/** @desc charstring for SUT/IBCF2 IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_SUT_IBCF2_IPADDR := "172.31.10.6";
/**
* @desc charstring for SUT/PCSCF3 domain - connection point for UE3
*/
modulepar charstring PX_IMS_SUT_PCSCF3_HOME_DOMAIN := "pcscf3.home.net";
 
/** @desc integer for SUT/IBCF2 port number to exchange SIP messages
*/
modulepar integer PX_IMS_SUT_IBCF2_PORT := 5060;
/**
* @desc charstring for IP address used by the TS to exchange media streams for UE3
*/
modulepar charstring PX_IMS_SUT_UE3_BEARER_IPADDR := "172.31.10.2";
 
/** @desc charstring for SUT/IBCF2 domain
*/
modulepar charstring PX_IMS_SUT_IBCF2_HOME_DOMAIN := "ibcf2.sut.net";
} // end group SUT_IBCF
group SUT_PCSCF {
/** @desc charstring for SUT/P-CSCF IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_SUT_PCSCF_IPADDR := "172.31.10.2";
/**
* @desc charstring for identity of the tester UE2 local domain
*/
modulepar charstring PX_IMS_SUT_UE3_HOME_DOMAIN := "sut.net";
 
/** @desc integer for SUT/P-CSCF port number to exchange SIP messages
*/
modulepar integer PX_IMS_SUT_PCSCF_PORT := 5060;
/**
* @desc charstring for identity of the tester UE3 local user
*/
modulepar charstring PX_IMS_SUT_UE3_PUBLIC_USER := "2910";
 
/** @desc charstring for SUT/P-CSCFdomain
*/
modulepar charstring PX_IMS_SUT_PCSCF_HOME_DOMAIN := "pcscf.sut.net";
/** @desc charstring for SUT/P-CSCF P_VisitedNetwork ID header (see RFC3455)
*/
modulepar 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)
*/
modulepar charstring PX_IMS_SUT_PCSCF_MinSE := "100";
} // end group SUT_PCSCF
group SUT_SCSCF {
/** @desc charstring for SUT/S-CSCF IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_SUT_SCSCF_IPADDR := "172.31.10.4";
/**
* @desc charstring for RFC 2617 clause 3-2-2 username of UE3: The name of user in the specified realm
*/
modulepar charstring PX_IMS_SUT_UE3_PRIVAT_USERNAME := "abcd";
 
/** @desc integer for SUT/S-CSCF port number to exchange SIP messages
*/
modulepar integer PX_IMS_SUT_SCSCF_PORT := 5060;
/**
* @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE3
*/
modulepar charstring PX_IMS_SUT_UE3_PRIVAT_PASSWD := "1234";
 
/** @desc charstring for SUT/S-CSCFdomain
*/
modulepar charstring PX_IMS_SUT_SCSCF_HOME_DOMAIN := "scscf.sut.net";
/** @desc charstring for SUT/S-CSCF globally used realm name of IUT S-CSCF
*/
modulepar charstring PX_IMS_SUT_SCSCF_REALM := "realm.scscf";
} // end group SUT_SCSCF
/**
* @desc charstring for RFC 2617 clause 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.
*/
modulepar charstring PX_IMS_SUT_UE3_QOP := "auth";
 
group SUT_ICSCF {
/** @desc charstring for SUT/I-CSCF IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_SUT_ICSCF_IPADDR := "172.31.10.3";
/**
* @desc charstring for home(SUT) REGISTRAR domain of UE3
*/
modulepar charstring PX_IMS_SUT_UE3_REGISTRAR := "registrar.sut.net";
 
/** @desc integer for SUT/I-CSCF port number to exchange SIP messages
*/
modulepar integer PX_IMS_SUT_ICSCF_PORT := 5060;
} // end group SUT_UE3
 
/** @desc charstring for SUT/I-CSCFdomain
*/
modulepar charstring PX_IMS_SUT_ICSCF_HOME_DOMAIN := "icscf.sut.net";
} // end group SUT_ICSCF
group SUT_AS {
/** @desc charstring for SUT - AS IP address to exchange SIP messages - connection point for SCSCF
*/
modulepar charstring PX_IMS_SUT_AS_IPADDR := "172.31.10.7";
group SUT_UE4 {
// UE4 can be used as UE1Visited
/**
* @desc charstring for SUT - PCSCF4 IP address to exchange SIP messages - connection point for UE4
*/
modulepar charstring PX_IMS_SUT_PCSCF4_IPADDR := "172.31.10.2";
 
/** @desc integer for SUT - AS port number to exchange SIP messages - connection point for SCSCF
*/
modulepar integer PX_IMS_SUT_AS_PORT := 5060;
/** @desc charstring for SUT/AS domain
*/
modulepar charstring PX_IMS_SUT_AS_HOME_DOMAIN := "as.sut.net";
/**
* @desc integer for SUT - PCSCF4 port number to exchange SIP messages - connection point for UE4
*/
modulepar integer PX_IMS_SUT_PCSCF4_PORT := 5060;
 
}//end group SUT_UE1
/**
* @desc charstring for SUT/PCSCF4 domain - connection point for UE4
*/
modulepar charstring PX_IMS_SUT_PCSCF4_HOME_DOMAIN := "pcscf4.home.net";
 
group SUT_IMGCF {
/** @desc charstring for SUT/I-MGCF IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_SUT_IMGCF_IPADDR := "172.31.10.10";
/**
* @desc charstring for IP address used by the TS to exchange media streams for UE4
*/
modulepar charstring PX_IMS_SUT_UE4_BEARER_IPADDR := "172.31.10.2";
 
/** @desc integer for SUT/I-MGCF port number to exchange SIP messages
*/
modulepar integer PX_IMS_SUT_IMGCF_PORT := 5060;
/**
* @desc charstring for identity of the tester UE2 local domain
*/
modulepar charstring PX_IMS_SUT_UE4_HOME_DOMAIN := "sut.net";
 
/** @desc charstring for SUT/I-MGCFdomain
*/
modulepar charstring PX_IMS_SUT_IMGCF_HOME_DOMAIN := "imgcf.sut.net";
} // end group SUT_IMGCF
/**
* @desc charstring for identity of the tester UE4 local user
*/
modulepar charstring PX_IMS_SUT_UE4_PUBLIC_USER := "2910";
 
group SUT_CONF {
/**
* @desc
* charstring for SUT/conference IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_SUT_CONF_IPADDR := "172.31.10.10";
/**
* @desc integer for SUT/conference port number to exchange SIP messages
*/
modulepar integer PX_IMS_SUT_CONF_PORT := 5060;
/**
* @desc charstring for SUT/conference domain
*/
modulepar charstring PX_IMS_SUT_CONF_HOME_DOMAIN := "conf.sut.net";
/**
* @desc charstring for conference factory URI name
*/
modulepar charstring PX_IMS_SUT_CONF_FACTORY_NAME := "factory.uri.name";
//TODO STF471 added
/** @desc charstring for conference URI name */
modulepar charstring PX_IMS_SUT_CONF_NAME := "conf.uri.name";
} // end group SUT_CONF
/**
* @desc charstring for RFC 2617 clause 3-2-2 username of UE4: The name of user in the specified realm
*/
modulepar charstring PX_IMS_SUT_UE4_PRIVAT_USERNAME := "abcd";
 
} // end group SUT
group TS {
group TS_UE1 {
/** @desc charstring for IP address used by the UE1 to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_UE1_IPADDR := "172.31.1.240";
/** @desc integer for port number used by the UE1 to exchange SIP messages
*/
modulepar integer PX_IMS_TS_UE1_PORT := 5060;
/**
* @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE2
*/
modulepar charstring PX_IMS_SUT_UE4_PRIVAT_PASSWD := "1234";
 
/** @desc charstring for visited(TS) REGISTRAR domain
*/
modulepar charstring PX_IMS_TS_UE1_REGISTRAR := "registrar.ts.net";
} // end group TS_UE1
/**
* @desc charstring for RFC 2617 clause 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.
*/
modulepar charstring PX_IMS_SUT_UE4_QOP := "auth";
 
group TS_UE2 {
/** @desc charstring for IP address used by the UE2 to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_UE2_IPADDR := "172.31.1.241";
/**
* @desc charstring for home(SUT) REGISTRAR domain of UE4
*/
modulepar charstring PX_IMS_SUT_UE4_REGISTRAR := "registrar.sut.net";
 
/** @desc integer for port number used by the UE2 to exchange SIP messages
*/
modulepar integer PX_IMS_TS_UE2_PORT := 5060;
} // end group SUT_UE4
 
/** @desc charstring for visited(TS) REGISTRAR domain
*/
modulepar charstring PX_IMS_TS_UE2_REGISTRAR := "registrar.ts.net";
} // end group TS_UE2
group SUT_unknown {
/**
* @desc charstring for identity of unknown UE public user
*/
modulepar charstring PX_IMS_SUT_unknownUE_PUBLIC_USER := "0007";
 
group TS_UE3 {
/** @desc charstring for IP address used by the UE3 to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_UE3_IPADDR := "172.31.1.242";
} // end group SUT_unknown
 
/** @desc integer for port number used by the UE3 to exchange SIP messages
*/
modulepar integer PX_IMS_TS_UE3_PORT := 5060;
group EMERGENCY {
/**
* @desc charstring for identity of emergency service local domain
*/
modulepar charstring PX_IMS_SUT_EMERGENCY_HOME_DOMAIN := "home.net";
 
/** @desc charstring for visited(TS) REGISTRAR domain
*/
modulepar charstring PX_IMS_TS_UE3_REGISTRAR := "registrar.ts.net";
} // end group TS_UE3
/**
* @desc charstring for identity of the emergency service
*/
modulepar charstring PX_IMS_SUT_EMERGENCY_SERVICE := "service:sos";
modulepar charstring PX_IMS_SUT_EMERGENCY_SERVICE_namespaceId := "service";
modulepar charstring PX_IMS_SUT_EMERGENCY_SERVICE_namespaceSpecificString := "sos";
 
group TS_UE4 {
/** @desc charstring for IP address used by the UE3 to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_UE4_IPADDR := "172.31.1.243";
/**
* @desc charstring for identity of the invalid emergency service
*/
modulepar charstring PX_IMS_SUT_EMERGENCY_SERVICE_INVALID := "service:sos.invalid";
modulepar charstring PX_IMS_SUT_EMERGENCY_SERVICE_INVALID_namespaceId := "service";
modulepar charstring PX_IMS_SUT_EMERGENCY_SERVICE_INVALID_namespaceSpecificString := "sos.invalid";
 
/** @desc integer for port number used by the UE3 to exchange SIP messages
*/
modulepar integer PX_IMS_TS_UE4_PORT := 5060;
} // end group EMERGENCY service
 
/** @desc charstring for visited(TS) REGISTRAR domain
*/
modulepar charstring PX_IMS_TS_UE4_REGISTRAR := "registrar.ts.net";
} // end group TS_UE4
group SUT_IBCF {
/**
* @desc charstring for SUT/IBCF1 IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_SUT_IBCF1_IPADDR := "172.31.10.5";
 
group TS_IBCF {
/** @desc charstring for TS/IBCF IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_IBCF_IPADDR := "172.31.1.15";
/** @desc integer for TS/IBCF port number to exchange SIP messages
*/
modulepar integer PX_IMS_TS_IBCF_PORT := 5060;
/**
* @desc integer for SUT/IBCF1 port number to exchange SIP messages
*/
modulepar integer PX_IMS_SUT_IBCF1_PORT := 5060;
 
/** @desc charstring for TS/IBCF domain
*/
modulepar charstring PX_IMS_TS_IBCF_HOME_DOMAIN := "ibcf.ts.net";
} // end group TS_IBCF
/**
* @desc charstring for SUT/IBCF1 domain
*/
modulepar charstring PX_IMS_SUT_IBCF1_HOME_DOMAIN := "ibcf1.sut.net";
 
group TS_ICSCF {
/** @desc charstring for TS/I-CSCF IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_ICSCF_IPADDR := "172.31.1.13";
/** @desc integer for IUT/I-CSCF port number to exchange SIP messages
*/
modulepar integer PX_IMS_TS_ICSCF_PORT := 5060;
/**
* @desc charstring for SUT/IBCF2 IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_SUT_IBCF2_IPADDR := "172.31.10.6";
 
/** @desc charstring for TS/I-CSCF domain
*/
modulepar charstring PX_IMS_TS_ICSCF_HOME_DOMAIN := "icscf.ts.net";
} // end group TS_ICSCF
/**
* @desc integer for SUT/IBCF2 port number to exchange SIP messages
*/
modulepar integer PX_IMS_SUT_IBCF2_PORT := 5060;
 
group TS_PCSCF {
/** @desc charstring for TS/P-CSCF IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_PCSCF_IPADDR := "172.31.1.12";
/**
* @desc charstring for SUT/IBCF2 domain
*/
modulepar charstring PX_IMS_SUT_IBCF2_HOME_DOMAIN := "ibcf2.sut.net";
 
/** @desc integer for IUT/P-CSCF port number to exchange SIP messages
*/
modulepar integer PX_IMS_TS_PCSCF_PORT := 5060;
} // end group SUT_IBCF
group SUT_PCSCF {
/**
* @desc charstring for SUT/P-CSCF IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_SUT_PCSCF_IPADDR := "172.31.10.2";
 
/** @desc charstring for TS/P-CSCFdomain
*/
modulepar charstring PX_IMS_TS_PCSCF_HOME_DOMAIN := "pcscf.ts.net";
} // end group TS_PCSCF
/**
* @desc integer for SUT/P-CSCF port number to exchange SIP messages
*/
modulepar integer PX_IMS_SUT_PCSCF_PORT := 5060;
 
group TS_SCSCF {
/** @desc charstring for TS/S-CSCF IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_SCSCF_IPADDR := "172.31.1.14";
/** @desc integer for TS/S-CSCF port number to exchange SIP messages
*/
modulepar integer PX_IMS_TS_SCSCF_PORT := 5060;
/**
* @desc charstring for SUT/P-CSCFdomain
*/
modulepar charstring PX_IMS_SUT_PCSCF_HOME_DOMAIN := "pcscf.sut.net";
 
/** @desc charstring for TS/S-CSCFdomain
*/
modulepar charstring PX_IMS_TS_SCSCF_HOME_DOMAIN := "scscf.ts.net";
/**
* @desc charstring for SUT/P-CSCF P_VisitedNetwork ID header (see RFC3455)
*/
modulepar charstring PX_IMS_SUT_PCSCF_VisitedNetworkID := "sut token";
 
/** @desc charstring public user identity for Request-URI to be rejected by IUT S-CSCF as it is barred for incoming calls
*/
modulepar charstring PX_IMS_SUT_BARRED_PUBLIC_USER := "2912";
/**
* @desc charstring for SUT/P-CSCF Min-SE header lower bound for the session refresh interval (see RFC4028)
*/
modulepar charstring PX_IMS_SUT_PCSCF_MinSE := "100";
 
/** @desc charstring invalid GRUU for Request-URI to be rejected by IUT S-CSCF
*/
modulepar charstring PX_IMS_SUT_INVALID_GRUU := "gruu";
} // end group SUT_PCSCF
group SUT_SCSCF {
/**
* @desc charstring for SUT/S-CSCF IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_SUT_SCSCF_IPADDR := "172.31.10.4";
 
/** @desc charstring Service value in P-Asserted-Service header to be rejected by IUT S-CSCF, as service is not subscribed-to
*/
modulepar charstring PX_IMS_SUT_UNSUBSCRIBED_SERVICE := "service";
/**
* @desc integer for SUT/S-CSCF port number to exchange SIP messages
*/
modulepar integer PX_IMS_SUT_SCSCF_PORT := 5060;
 
/** @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 **
*/
modulepar charstring PX_IMS_SUT_UNSUBSCRIBED_SDP_SERVICE := "sdp_service";
} // end group TS_SCSCF
/**
* @desc charstring for SUT/S-CSCFdomain
*/
modulepar charstring PX_IMS_SUT_SCSCF_HOME_DOMAIN := "scscf.sut.net";
 
group TS_ECSCF {
/** @desc charstring for TS/E-CSCF IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_ECSCF_IPADDR := "172.31.1.14";
/** @desc integer for TS/E-CSCF port number to exchange SIP messages
*/
modulepar integer PX_IMS_TS_ECSCF_PORT := 5060;
/**
* @desc charstring for SUT/S-CSCF globally used realm name of IUT S-CSCF
*/
modulepar charstring PX_IMS_SUT_SCSCF_REALM := "realm.scscf";
 
/** @desc charstring for TS/E-CSCFdomain
*/
modulepar charstring PX_IMS_TS_ECSCF_HOME_DOMAIN := "ECSCF.ts.net";
} // end group TS_ECSCF
} // end group SUT_SCSCF
 
group TS_IMS1user {
/** @desc charstring for public userinfo/displayname addressing IMS1UE (simulated by the TS)
*/
modulepar charstring PX_IMS_TS_IMS1UE_PUBLIC_USER := "IMS1UE";
group SUT_ICSCF {
/**
* @desc charstring for SUT/I-CSCF IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_SUT_ICSCF_IPADDR := "172.31.10.3";
 
/** @desc charstring for TS/domain
*/
modulepar charstring PX_IMS_TS_IMS1UE_HOME_DOMAIN := "ts.net";
} // end group TS_IMS1user
/**
* @desc integer for SUT/I-CSCF port number to exchange SIP messages
*/
modulepar integer PX_IMS_SUT_ICSCF_PORT := 5060;
 
group TS_ISUPuser {
/** @desc charstring for public userinfo addressing ISUPUE (simulated by the TS)
*/
modulepar charstring PX_IMS_TS_ISUP_PUBLIC_USER := "070123456";
/**
* @desc charstring for SUT/I-CSCFdomain
*/
modulepar charstring PX_IMS_SUT_ICSCF_HOME_DOMAIN := "icscf.sut.net";
 
/** @desc charstring for ISUP TS/domain or IPAddres
*/
modulepar charstring PX_IMS_TS_ISUP_HOME_DOMAIN := "172.27.11.80";
} // end group TS_ISUPuser
} // end group SUT_ICSCF
 
group SUT_AS {
/**
* @desc charstring for SUT - AS IP address to exchange SIP messages - connection point for SCSCF
*/
modulepar charstring PX_IMS_SUT_AS_IPADDR := "172.31.10.7";
 
group TS_AS {
/** @desc charstring for TS/AS1 IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_AS1_IPADDR := "172.31.1.18";
/**
* @desc integer for SUT - AS port number to exchange SIP messages - connection point for SCSCF
*/
modulepar integer PX_IMS_SUT_AS_PORT := 5060;
 
/** @desc integer for TS/AS1 port number to exchange SIP messages
*/
modulepar integer PX_IMS_TS_AS1_PORT := 5060;
/**
* @desc charstring for SUT/AS domain
*/
modulepar charstring PX_IMS_SUT_AS_HOME_DOMAIN := "as.sut.net";
 
/** @desc charstring for TS/AS1 domain
*/
modulepar charstring PX_IMS_TS_AS1_HOME_DOMAIN := "as1.ts.net";
 
/** @desc charstring for TS/AS2 IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_AS2_IPADDR := "172.31.1.19";
} // end group SUT_UE1
 
/** @desc integer for TS/AS2 port number to exchange SIP messages
*/
modulepar integer PX_IMS_TS_AS2_PORT := 5060;
group SUT_IMGCF {
/**
* @desc charstring for SUT/I-MGCF IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_SUT_IMGCF_IPADDR := "172.31.10.10";
 
/** @desc charstring for TS/AS2 domain
*/
modulepar charstring PX_IMS_TS_AS2_HOME_DOMAIN := "as2.ts.net";
} // end group TS_AS
} // end group TS
/**
* @desc integer for SUT/I-MGCF port number to exchange SIP messages
*/
modulepar integer PX_IMS_SUT_IMGCF_PORT := 5060;
 
/**
* @desc charstring for SUT/I-MGCFdomain
*/
modulepar charstring PX_IMS_SUT_IMGCF_HOME_DOMAIN := "imgcf.sut.net";
 
} // end group SUT_IMGCF
 
group SUT_CONF {
/**
* @desc charstring for SUT/conference IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_SUT_CONF_IPADDR := "172.31.10.10";
/**
* @desc integer for SUT/conference port number to exchange SIP messages
*/
modulepar integer PX_IMS_SUT_CONF_PORT := 5060;
/**
* @desc charstring for SUT/conference domain
*/
modulepar charstring PX_IMS_SUT_CONF_HOME_DOMAIN := "conf.sut.net";
/**
* @desc charstring for conference factory URI name
*/
modulepar charstring PX_IMS_SUT_CONF_FACTORY_NAME := "factory.uri.name";
 
// TODO STF471 added
/**
* @desc charstring for conference URI name
*/
modulepar charstring PX_IMS_SUT_CONF_NAME := "conf.uri.name";
 
 
} // end group SUT_CONF
 
 
} // end group SUT
group TS {
group TS_UE1 {
/**
* @desc charstring for IP address used by the UE1 to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_UE1_IPADDR := "172.31.1.240";
 
/**
* @desc integer for port number used by the UE1 to exchange SIP messages
*/
modulepar integer PX_IMS_TS_UE1_PORT := 5060;
 
/**
* @desc charstring for visited(TS) REGISTRAR domain
*/
modulepar charstring PX_IMS_TS_UE1_REGISTRAR := "registrar.ts.net";
 
} // end group TS_UE1
 
group TS_UE2 {
/**
* @desc charstring for IP address used by the UE2 to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_UE2_IPADDR := "172.31.1.241";
 
/**
* @desc integer for port number used by the UE2 to exchange SIP messages
*/
modulepar integer PX_IMS_TS_UE2_PORT := 5060;
 
/**
* @desc charstring for visited(TS) REGISTRAR domain
*/
modulepar charstring PX_IMS_TS_UE2_REGISTRAR := "registrar.ts.net";
 
} // end group TS_UE2
 
group TS_UE3 {
/**
* @desc charstring for IP address used by the UE3 to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_UE3_IPADDR := "172.31.1.242";
 
/**
* @desc integer for port number used by the UE3 to exchange SIP messages
*/
modulepar integer PX_IMS_TS_UE3_PORT := 5060;
 
/**
* @desc charstring for visited(TS) REGISTRAR domain
*/
modulepar charstring PX_IMS_TS_UE3_REGISTRAR := "registrar.ts.net";
 
} // end group TS_UE3
 
group TS_UE4 {
/**
* @desc charstring for IP address used by the UE3 to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_UE4_IPADDR := "172.31.1.243";
 
/**
* @desc integer for port number used by the UE3 to exchange SIP messages
*/
modulepar integer PX_IMS_TS_UE4_PORT := 5060;
 
/**
* @desc charstring for visited(TS) REGISTRAR domain
*/
modulepar charstring PX_IMS_TS_UE4_REGISTRAR := "registrar.ts.net";
 
} // end group TS_UE4
 
group TS_IBCF {
/**
* @desc charstring for TS/IBCF IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_IBCF_IPADDR := "172.31.1.15";
 
/**
* @desc integer for TS/IBCF port number to exchange SIP messages
*/
modulepar integer PX_IMS_TS_IBCF_PORT := 5060;
 
/**
* @desc charstring for TS/IBCF domain
*/
modulepar charstring PX_IMS_TS_IBCF_HOME_DOMAIN := "ibcf.ts.net";
 
} // end group TS_IBCF
 
group TS_ICSCF {
/**
* @desc charstring for TS/I-CSCF IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_ICSCF_IPADDR := "172.31.1.13";
 
/**
* @desc integer for IUT/I-CSCF port number to exchange SIP messages
*/
modulepar integer PX_IMS_TS_ICSCF_PORT := 5060;
 
/**
* @desc charstring for TS/I-CSCF domain
*/
modulepar charstring PX_IMS_TS_ICSCF_HOME_DOMAIN := "icscf.ts.net";
 
} // end group TS_ICSCF
 
group TS_PCSCF {
/**
* @desc charstring for TS/P-CSCF IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_PCSCF_IPADDR := "172.31.1.12";
 
/**
* @desc integer for IUT/P-CSCF port number to exchange SIP messages
*/
modulepar integer PX_IMS_TS_PCSCF_PORT := 5060;
 
/**
* @desc charstring for TS/P-CSCFdomain
*/
modulepar charstring PX_IMS_TS_PCSCF_HOME_DOMAIN := "pcscf.ts.net";
 
} // end group TS_PCSCF
 
group TS_SCSCF {
/**
* @desc charstring for TS/S-CSCF IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_SCSCF_IPADDR := "172.31.1.14";
 
/**
* @desc integer for TS/S-CSCF port number to exchange SIP messages
*/
modulepar integer PX_IMS_TS_SCSCF_PORT := 5060;
 
/**
* @desc charstring for TS/S-CSCFdomain
*/
modulepar 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
*/
modulepar charstring PX_IMS_SUT_BARRED_PUBLIC_USER := "2912";
 
/**
* @desc charstring invalid GRUU for Request-URI to be rejected by IUT S-CSCF
*/
modulepar charstring PX_IMS_SUT_INVALID_GRUU := "gruu";
 
/**
* @desc charstring Service value in P-Asserted-Service header to be rejected by IUT S-CSCF, as service is not subscribed-to
*/
modulepar charstring PX_IMS_SUT_UNSUBSCRIBED_SERVICE := "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
*/
modulepar charstring PX_IMS_SUT_UNSUBSCRIBED_SDP_SERVICE := "sdp_service";
 
} // end group TS_SCSCF
 
group TS_ECSCF {
/**
* @desc charstring for TS/E-CSCF IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_ECSCF_IPADDR := "172.31.1.14";
 
/**
* @desc integer for TS/E-CSCF port number to exchange SIP messages
*/
modulepar integer PX_IMS_TS_ECSCF_PORT := 5060;
 
/**
* @desc charstring for TS/E-CSCFdomain
*/
modulepar charstring PX_IMS_TS_ECSCF_HOME_DOMAIN := "ECSCF.ts.net";
 
} // end group TS_ECSCF
 
group TS_IMS1user {
/**
* @desc charstring for public userinfo/displayname addressing IMS1UE (simulated by the TS)
*/
modulepar charstring PX_IMS_TS_IMS1UE_PUBLIC_USER := "IMS1UE";
 
/**
* @desc charstring for TS/domain
*/
modulepar charstring PX_IMS_TS_IMS1UE_HOME_DOMAIN := "ts.net";
 
} // end group TS_IMS1user
 
group TS_ISUPuser {
/**
* @desc charstring for public userinfo addressing ISUPUE (simulated by the TS)
*/
modulepar charstring PX_IMS_TS_ISUP_PUBLIC_USER := "070123456";
 
/**
* @desc charstring for ISUP TS/domain or IPAddres
*/
modulepar charstring PX_IMS_TS_ISUP_HOME_DOMAIN := "172.27.11.80";
 
} // end group TS_ISUPuser
 
 
group TS_AS {
/**
* @desc charstring for TS/AS1 IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_AS1_IPADDR := "172.31.1.18";
 
/**
* @desc integer for TS/AS1 port number to exchange SIP messages
*/
modulepar integer PX_IMS_TS_AS1_PORT := 5060;
 
/**
* @desc charstring for TS/AS1 domain
*/
modulepar charstring PX_IMS_TS_AS1_HOME_DOMAIN := "as1.ts.net";
 
/**
* @desc charstring for TS/AS2 IP address to exchange SIP messages
*/
modulepar charstring PX_IMS_TS_AS2_IPADDR := "172.31.1.19";
 
/**
* @desc integer for TS/AS2 port number to exchange SIP messages
*/
modulepar integer PX_IMS_TS_AS2_PORT := 5060;
 
/**
* @desc charstring for TS/AS2 domain
*/
modulepar charstring PX_IMS_TS_AS2_HOME_DOMAIN := "as2.ts.net";
 
} // end group TS_AS
 
} // end group TS
} // end module LibIms_PIXITS
/branches/v3/ttcn/LibIms_SIPTypesAndValues.ttcn
1,98 → 1,82
/**
* @author STF 346, STF366, STF368, STF369, STF450, STF471
* @version $Id$
* @desc This module provides the types and constants used by the test component
* for SIP tests.
* This module is part of LibImsV3.
* @author STF 346, STF366, STF368, STF369, STF450, STF471
* @version $Id$
* @desc This module provides the types and constants used by the test component for SIP tests. This module is part of LibImsV3.
*/
module LibIms_SIPTypesAndValues {
// SipAts
import from LibSip_SDPTypes all;
import from LibSip_XMLTypes all;
 
module LibIms_SIPTypesAndValues
{
// SipAts
import from LibSip_SDPTypes all;
import from LibSip_XMLTypes all;
group Constants {
 
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_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_SCSCFwithHomeUE_domain := 55;
const integer c_userProfile_ECSCFwithHomeUE := 47; // 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
const integer c_interfaceProfile_IMS_SUT_ECSCF := 117; // Mw interface at E-CSCF located in SUT
// number of conference profile
const integer c_conferenceProfile_factoryURI := 800; // confernece factory URI
//NOTE STF471 added
const integer c_conferenceProfile_predefinedURI := 801; // confernece factory URI
// number of service profile
const integer c_serviceProfile_EMERGENCY := 911;
const integer c_serviceProfile_EMERGENCY_INVALID := 912;
 
const integer c_ISUP_HOP_COUNT:=31; //TODO replace this value with appropriate PIXIT parameter
// number of SIPURL identifiers
const integer c_interfaceSIPURL_IMS_SUT_PCSCF1_domain := 1101;
const integer c_interfaceSIPURL_IMS_SUT_PCSCF1_ip := 1102;
} // end group UserProfileConstants
 
// URN scheme (RFC 5031)
// TODO NOTE: this definition is for temporary use
// const charstring c_urnScheme := "urn"; // defined in LibSIPTyypesAndValues
 
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_SCSCFwithHomeUE_domain :=55;
const integer c_userProfile_ECSCFwithHomeUE := 47; // 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
const integer c_interfaceProfile_IMS_SUT_ECSCF := 117; // Mw interface at E-CSCF located in SUT
// number of conference profile
const integer c_conferenceProfile_factoryURI := 800; // confernece factory URI
// TODO STF471 added
const integer c_conferenceProfile_predefinedURI := 801; // 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 Constants
 
} //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
}
}
 
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
/branches/v3/ttcn/LibIms_Steps.ttcn
1,1649 → 1,1730
/**
* @author STF 346, STF366, STF368, STF369, STF450, STF471
* @version $Id$
* @desc This module provides the types used by the test component
* for SIP-IMS tests.
* This module is part of LibImsV3.
* @author STF 346, STF366, STF368, STF369, STF450, STF471
* @version $Id$
* @desc This module provides the types used by the test component for SIP-IMS tests. This module is part of LibImsV3.
*/
 
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;
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;
import from LibSip_MessageBodyTypes all;
//LibIms
import from LibIms_Templates all;
import from LibIms_Interface all;
import from LibIms_PIXITS all;
import from LibIms_SIPTypesAndValues all;
group externalfunctions {
}//end group externalfunctions
group parameterOperations {
// LibIms
import from LibIms_Templates all;
import from LibIms_Interface all;
import from LibIms_PIXITS all;
import from LibIms_SIPTypesAndValues all;
 
group externalfunctions {
} // end group externalfunctions
group parameterOperations {
 
/**
* @desc functions add new via parameter
* @param p_message (request) SIP message to be used to prepair via header
* @param p_userprofile user profile
*/
function f_addNewViaParameter(in Request p_message, in integer p_userprofile) runs on ImsComponent
{
var integer v_intVia;
var integer i := 0;
if (isvalue(p_message.msgHeader.via)) {
function f_addNewViaParameter(
in Request p_message,
in integer p_userprofile
) runs on ImsComponent {
var integer v_intVia;
var integer i := 0;
if (isvalue(p_message.msgHeader.via)) {
 
v_intVia := lengthof(p_message.msgHeader.via.viaBody);
while (i < v_intVia) {
p_message.msgHeader.via.viaBody[v_intVia] := p_message.msgHeader.via.viaBody[v_intVia-1];
v_intVia := v_intVia - 1;
v_intVia := lengthof(p_message.msgHeader.via.viaBody);
while (i < v_intVia) {
p_message.msgHeader.via.viaBody[v_intVia] := p_message.msgHeader.via.viaBody[v_intVia - 1];
v_intVia := v_intVia - 1;
}
vc_branch := c_branchCookie & f_getRndTag();
p_message.msgHeader.via.viaBody[0] := valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile));
vc_via := p_message.msgHeader.via;
}
vc_branch := c_branchCookie & f_getRndTag();
p_message.msgHeader.via.viaBody[0] := valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile));
vc_via := p_message.msgHeader.via;
}
}
 
/**
** @desc functions remove own via parameter
* @desc functions remove own via parameter
* @param p_message (request) SIP message to be used to prepair via header
* @param p_userprofile user profile
*/
function f_removeOwnViaParameter(in Response p_message) runs on ImsComponent {
function f_removeOwnViaParameter(
in Response p_message
) runs on ImsComponent {
var integer v_intVia;
var Via v_via := c_empty_Via;
if (ispresent(p_message.msgHeader.via)) {
 
v_intVia := sizeof(p_message.msgHeader.via.viaBody)-1;
if (ispresent(p_message.msgHeader.via)) {
 
v_intVia := sizeof(p_message.msgHeader.via.viaBody) - 1;
 
for (var integer i := 0; i < v_intVia; i := i + 1) {
v_via.viaBody[i] := p_message.msgHeader.via.viaBody[i+1];
v_via.viaBody[i] := p_message.msgHeader.via.viaBody[i + 1];
}
vc_via := v_via;
}
}
/**
*
* @desc functions add new via parameter
* @param p_message (request) SIP message to be used to prepair via header
* @param p_userprofile user profile
*/
function f_addNewRecordRouteAndRemoveRoutParameter(in Request p_message) runs on ImsComponent
{
var integer v_intRoute,v_intRecordRoute;
var integer i := 1;
var integer j := 0;
var RouteBody v_route1;
var Route v_newRoute;
v_newRoute.fieldName := ROUTE_E;
if (isvalue(p_message.msgHeader.route)) {
v_intRoute := lengthof(p_message.msgHeader.route.routeBody);
v_route1 := p_message.msgHeader.route.routeBody[0];
while (i < v_intRoute) {
v_newRoute.routeBody[i-1] := p_message.msgHeader.route.routeBody[i];
i := i + 1;
}
vc_route := v_newRoute;
}
if (isvalue(p_message.msgHeader.recordRoute)) {
 
v_intRecordRoute := lengthof(p_message.msgHeader.recordRoute.routeBody);
while (j < v_intRecordRoute) {
p_message.msgHeader.recordRoute.routeBody[v_intRecordRoute] := p_message.msgHeader.recordRoute.routeBody[v_intRecordRoute-1];
v_intRecordRoute := v_intRecordRoute - 1;
}
p_message.msgHeader.recordRoute.routeBody[0] := v_route1;
vc_recordRoute := valueof(p_message.msgHeader.recordRoute);
}
}
/**
* @desc functions add new via parameter
* @param p_message (request) SIP message to be used to prepair via header
* @param p_userprofile user profile
*/
function f_addNewRecordRouteAndRemoveRoutParameter(
in Request p_message
) runs on ImsComponent {
var integer v_intRoute, v_intRecordRoute;
var integer i := 1;
var integer j := 0;
var RouteBody v_route1;
var Route v_newRoute;
v_newRoute.fieldName := ROUTE_E;
if (isvalue(p_message.msgHeader.route)) {
v_intRoute := lengthof(p_message.msgHeader.route.routeBody);
v_route1 := p_message.msgHeader.route.routeBody[0];
while (i < v_intRoute) {
v_newRoute.routeBody[i - 1] := p_message.msgHeader.route.routeBody[i];
i := i + 1;
}
vc_route := v_newRoute;
}
 
/**
* @desc functions add new recordRoute parameter
* @param p_message (request) SIP message to be used to prepair via header
* @param p_userprofile user profile
*/
function f_addNewRecordRouteIMS(in RecordRoute p_rr) runs on ImsComponent return template RecordRoute
{
template RecordRoute v_recordRoute := omit;
var integer v_intRecordRoute;
var integer i := 1;
var integer j := 0;
if (isvalue(p_message.msgHeader.recordRoute)) {
 
v_intRecordRoute := lengthof(p_rr.routeBody);
if (v_intRecordRoute>0){
while (j < v_intRecordRoute) {
p_rr.routeBody[v_intRecordRoute] := p_rr.routeBody[v_intRecordRoute-1];
v_intRecordRoute := v_intRecordRoute - 1;
}
p_rr.routeBody[0] := valueof(m_routeBody_currIpAddr(vc_userprofile));
vc_recordRoute := p_rr;
return vc_recordRoute;
}
else {return(v_recordRoute)}
}
v_intRecordRoute := lengthof(p_message.msgHeader.recordRoute.routeBody);
while (j < v_intRecordRoute) {
p_message.msgHeader.recordRoute.routeBody[v_intRecordRoute] := p_message.msgHeader.recordRoute.routeBody[v_intRecordRoute - 1];
v_intRecordRoute := v_intRecordRoute - 1;
}
p_message.msgHeader.recordRoute.routeBody[0] := v_route1;
vc_recordRoute := valueof(p_message.msgHeader.recordRoute);
}
}
 
}//end group parameterOperations
group fieldOperations {
/**
* @desc functions add new recordRoute parameter
* @param p_message (request) SIP message to be used to prepair via header
* @param p_userprofile user profile
*/
function f_addNewRecordRouteIMS(
in RecordRoute p_rr
) runs on ImsComponent
return template RecordRoute {
template RecordRoute v_recordRoute := omit;
var integer v_intRecordRoute;
var integer i := 1;
var integer j := 0;
 
/**
* @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
vc_route := f_route(); // update the route header field depending on vc_boo_route
vc_recordRoute := f_recordroute(); // update the route header field depending on vc_boo_route
LibSip_Steps.f_setHeadersBYE(p_cSeq_s);
}// end f_setHeadersBYE
/**
* @desc sets CANCEL 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 Cancel
* @verdict
*/
function f_setHeadersCANCEL(inout CSeq p_cSeq_s, in integer p_to_user) runs on ImsComponent
{
vc_route := f_route(); // update the route header field depending on vc_boo_route
vc_recordRoute := f_recordroute(); // update the route header field depending on vc_boo_route
LibSip_Steps.f_setHeadersCANCEL(p_cSeq_s);
}// end f_setHeadersCANCEL
v_intRecordRoute := lengthof(p_rr.routeBody);
if (v_intRecordRoute > 0) {
while (j < v_intRecordRoute) {
p_rr.routeBody[v_intRecordRoute] := p_rr.routeBody[v_intRecordRoute - 1];
v_intRecordRoute := v_intRecordRoute - 1;
}
p_rr.routeBody[0] := valueof(m_routeBody_currIpAddr(vc_userprofile));
vc_recordRoute := p_rr;
return vc_recordRoute;
}
else {
return (v_recordRoute);
}
}
 
/**
* @desc sets headers for forward request from AS in case if AS acts as Proxy
* @param p_proxyMode true = proxyMode, false = B2BMode
*/
function f_setHeadersForwardRequestFromAS (inout CSeq p_cSeq_s, boolean p_proxyMode) runs on ImsComponent
{
var Request v_request;
v_request := vc_request;
if (p_proxyMode)
{
 
} // end 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
vc_route := f_route(); // update the route header field depending on vc_boo_route
vc_recordRoute := f_recordroute(); // update the route header field depending on vc_boo_route
LibSip_Steps.f_setHeadersBYE(p_cSeq_s);
} // end f_setHeadersBYE
 
/**
* @desc sets CANCEL 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 Cancel
* @verdict
*/
function f_setHeadersCANCEL(
inout CSeq p_cSeq_s,
in integer p_to_user
) runs on ImsComponent {
vc_route := f_route(); // update the route header field depending on vc_boo_route
vc_recordRoute := f_recordroute(); // update the route header field depending on vc_boo_route
LibSip_Steps.f_setHeadersCANCEL(p_cSeq_s);
} // end f_setHeadersCANCEL
 
/**
* @desc sets headers for forward request from AS in case if AS acts as Proxy
* @param p_proxyMode true = proxyMode, false = B2BMode
*/
function f_setHeadersForwardRequestFromAS(
inout CSeq p_cSeq_s,
boolean p_proxyMode
) runs on ImsComponent {
var Request v_request;
v_request := vc_request;
 
if (p_proxyMode) {
vc_requestUri2 := v_request.requestLine.requestUri;
vc_to := v_request.msgHeader.toField;
vc_contact := v_request.msgHeader.contact;
f_addNewViaParameter(v_request, c_userProfile_AS1);
f_addNewRecordRouteAndRemoveRoutParameter(v_request);
}
else
{ //B2Bmode
vc_contact := m_Contact(m_SipUrl_contactIpaddr(vc_userprofile));
vc_callId := { fieldName:=CALL_ID_E, callid:=f_getRndCallId(p_cSeq_s) & c_AT & vc_userprofile.currIpaddr };
}
}// 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_caller_To := v_response.msgHeader.toField;
}
else {
// B2Bmode
vc_contact := m_Contact(m_SipUrl_contactIpaddr(vc_userprofile));
vc_callId := {
fieldName := CALL_ID_E,
callid := f_getRndCallId(p_cSeq_s) & c_AT & vc_userprofile.currIpaddr
};
}
} // 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_caller_To := v_response.msgHeader.toField;
vc_to := v_response.msgHeader.toField;
vc_contact := v_response.msgHeader.contact;
if (ispresent(v_response.msgHeader.recordRoute)) {
vc_recordRoute:= v_response.msgHeader.recordRoute;
}
 
if (ispresent(v_response.msgHeader.recordRoute)) {
vc_recordRoute := v_response.msgHeader.recordRoute;
}
f_removeOwnViaParameter(v_response);
}// end function f_setHeadersForwardResponse
} // 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 := m_route_interface(vc_interfaceprofile)};
if (vc_boo_recordRoute)
{ vc_recordRoute := m_recordRoute_currIpAddr(vc_userprofile)};
LibSip_Steps.f_setHeadersINVITE(p_cSeq_s);
}// end f_setHeadersINVITE
/**
* @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 := m_route_interface(vc_interfaceprofile);
}
if (vc_boo_recordRoute) {
vc_recordRoute := m_recordRoute_currIpAddr(vc_userprofile);
}
 
/**
* @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_setHeadersUPDATE(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
LibSip_Steps.f_setHeadersINVITE(p_cSeq_s);
} // end f_setHeadersINVITE
 
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 := m_route_interface(vc_interfaceprofile)};
if (vc_boo_recordRoute)
{ vc_recordRoute := m_recordRoute_currIpAddr(vc_userprofile)};
LibSip_Steps.f_setHeadersUPDATE(p_cSeq_s);
}// end f_setHeadersUPDATE
/**
* @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
/**
* @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_setHeadersUPDATE(
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 := m_route_interface(vc_interfaceprofile);
}
if (vc_boo_recordRoute) {
vc_recordRoute := m_recordRoute_currIpAddr(vc_userprofile);
}
 
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
LibSip_Steps.f_setHeadersUPDATE(p_cSeq_s);
} // end f_setHeadersUPDATE
 
/**
* @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
{
LibSip_Steps.f_setHeadersNOTIFY(p_cSeq_s);
vc_branch := c_branchCookie & f_getRndTag();
vc_via:={
fieldName := VIA_E,
viaBody := {valueof(m_ViaBody_virtual_XCSCF(vc_branch, vc_userprofile))}
};
vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier
/**
* @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
 
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
//contact header initialization for sending of NOTIFY from CSCF component
vc_contact := m_Contact(m_SipUrl_currIpaddr_CSCF(vc_userprofile));
}// end f_setHeadersNOTIFY
/**
* @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 {
LibSip_Steps.f_setHeadersNOTIFY(p_cSeq_s);
 
/**
* @desc sets Publish 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_setHeadersPUBLISH(inout CSeq p_cSeq_s, in integer p_to_user) runs on ImsComponent
{
LibSip_Steps.f_setHeadersPUBLISH(p_cSeq_s);
vc_branch := c_branchCookie & f_getRndTag();
vc_via:={
fieldName := VIA_E,
viaBody := {valueof(m_ViaBody_virtual_XCSCF(vc_branch, vc_userprofile))}
};
vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier
vc_branch := c_branchCookie & f_getRndTag();
vc_via := {
fieldName := VIA_E,
viaBody := {valueof(m_ViaBody_virtual_XCSCF(vc_branch, vc_userprofile))}
};
 
vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier
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
// contact header initialization for sending of NOTIFY from CSCF component
vc_contact := m_Contact(m_SipUrl_currIpaddr_CSCF(vc_userprofile));
} // end f_setHeadersNOTIFY
 
vc_requestUri := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header
if (vc_boo_route)
{ vc_route := m_route_interface(vc_interfaceprofile)};
if (vc_boo_recordRoute)
{ vc_recordRoute := m_recordRoute_currIpAddr(vc_userprofile)};
//contact header initialization for sending of PUBLISH from CSCF component
vc_contact := m_Contact(m_SipUrl_currIpaddr_CSCF(vc_userprofile));
}// end f_setHeadersPUBLISH
/**
* @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
* @param p_cSeq_s current cSeq
* @param p_orginatingSide true in case of Re-INVITE is send from the orgination endpoint otherwise false.
*/
function f_setHeadersReINVITE (inout CSeq p_cSeq_s, in boolean p_orginatingSide, in integer p_to_user) runs on ImsComponent
{
var integer v_tmp, v_i, v_j, v_nbroute;
var Request v_request;
v_request := vc_request;
f_setHeadersGeneral(p_cSeq_s, "INVITE"); // cseq, contact, branch, via
vc_reqHostPort := vc_requestUri.components.sip.hostPort;
/**
* @desc sets Publish 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_setHeadersPUBLISH(
inout CSeq p_cSeq_s,
in integer p_to_user
) runs on ImsComponent {
LibSip_Steps.f_setHeadersPUBLISH(p_cSeq_s);
 
vc_requestUri := f_initSipUrl(p_to_user);
if(p_orginatingSide) {
vc_to := vc_caller_To;
vc_from := vc_caller_From;
}
else {
vc_to := vc_callee_To;
vc_from := vc_callee_From;
//get route from previous ACK request
// Route Management
if (isvalue(v_request.msgHeader.recordRoute))
{
vc_recordRoute := valueof(v_request.msgHeader.recordRoute);
v_nbroute := lengthof(vc_recordRoute.routeBody);
// copy and reverse the order of the routes in route header
for (v_i:=0; v_i<=(v_nbroute - 1); v_i:=v_i+1)
{
v_j:= v_nbroute - 1 - v_i;
vc_route.routeBody[v_j]:=vc_recordRoute.routeBody[v_i];
vc_branch := c_branchCookie & f_getRndTag();
vc_via := {
fieldName := VIA_E,
viaBody := {valueof(m_ViaBody_virtual_XCSCF(vc_branch, vc_userprofile))}
};
 
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 := m_route_interface(vc_interfaceprofile);
}
if (vc_boo_recordRoute) {
vc_recordRoute := m_recordRoute_currIpAddr(vc_userprofile);
}
 
// contact header initialization for sending of PUBLISH from CSCF component
vc_contact := m_Contact(m_SipUrl_currIpaddr_CSCF(vc_userprofile));
} // end f_setHeadersPUBLISH
 
/**
* @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
* @param p_cSeq_s current cSeq
* @param p_orginatingSide true in case of Re-INVITE is send from the orgination endpoint otherwise false.
*/
function f_setHeadersReINVITE(
inout CSeq p_cSeq_s,
in boolean p_orginatingSide,
in integer p_to_user
) runs on ImsComponent {
var integer v_tmp, v_i, v_j, v_nbroute;
var Request v_request;
v_request := vc_request;
 
f_setHeadersGeneral(p_cSeq_s, "INVITE"); // cseq, contact, branch, via
vc_reqHostPort := vc_requestUri.components.sip.hostPort;
 
vc_requestUri := f_initSipUrl(p_to_user);
 
if (p_orginatingSide) {
vc_to := vc_caller_To;
vc_from := vc_caller_From;
}
else {
vc_to := vc_callee_To;
vc_from := vc_callee_From;
 
// get route from previous ACK request
// Route Management
if (isvalue(v_request.msgHeader.recordRoute)) {
vc_recordRoute := valueof(v_request.msgHeader.recordRoute);
v_nbroute := lengthof(vc_recordRoute.routeBody);
// copy and reverse the order of the routes in route header
for (v_i := 0; v_i <= (v_nbroute - 1); v_i := v_i + 1) {
v_j := v_nbroute - 1 - v_i;
vc_route.routeBody[v_j] := vc_recordRoute.routeBody[v_i];
}
vc_route.fieldName := ROUTE_E;
vc_boo_recordRoute := true;
vc_boo_route := true;
}
vc_route.fieldName := ROUTE_E;
vc_boo_recordRoute := true;
vc_boo_route := true;
}
else
{
vc_boo_recordRoute := false;
vc_boo_route := false;
}
}
v_tmp := str2int(vc_sdp_local.origin.session_id);
vc_sdp_local.origin.session_id := int2str(v_tmp + 1);
v_tmp := str2int(vc_sdp_local.origin.session_version);
vc_sdp_local.origin.session_version := int2str(v_tmp + 1);
}// 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;
else {
vc_boo_recordRoute := false;
vc_boo_route := false;
}
}
 
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 := m_Contact(m_SipUrl_contactIpaddr(vc_userprofile));
v_tmp := str2int(vc_sdp_local.origin.session_id);
vc_sdp_local.origin.session_id := int2str(v_tmp + 1);
v_tmp := str2int(vc_sdp_local.origin.session_version);
vc_sdp_local.origin.session_version := int2str(v_tmp + 1);
} // end function f_setHeadersReINVITE
 
vc_branch := c_branchCookie & f_getRndTag();
vc_branch_ICSCF := c_branchCookie & f_getRndTag();
/**
* @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;
 
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;
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;
 
f_setHeadersGeneral(p_cSeq_s, "REGISTER"); // cseq, contact, branch, via
vc_contact := m_Contact(m_SipUrl_contactIpaddr(vc_userprofile));
 
vc_requestUri:=
{
scheme := c_sipScheme,
components := { sip:= {
userInfo := omit,
hostPort := {host:=vc_userprofile.registrarDomain, portField:=omit}}},
urlParameters := omit,
headers := omit
};
vc_reqHostPort := vc_requestUri.components.sip.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_branch := c_branchCookie & f_getRndTag();
vc_branch_ICSCF := c_branchCookie & f_getRndTag();
 
//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 := m_route_interface(vc_interfaceprofile)};
if (vc_boo_recordRoute)
{ vc_recordRoute := 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_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
 
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 := m_route_interface(vc_interfaceprofile)
};
if (vc_boo_recordRoute) {
vc_recordRoute := m_recordRoute_currIpAddr(vc_userprofile)
};
LibSip_Steps.f_setHeadersREFER(p_cSeq_s);
}// end f_setHeadersREFER_conf
/**
* @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;
 
} // end group fieldOperations
group awaitingMessage {
}
group sendMessage {
/**
* @desc send PRACK message
* @param p_request template of the message to be sent
*/
function f_SendPRACK_sdp(template(value) MessageBody p_mb, CSeq p_rack_cseq) runs on SipComponent
{
var integer responseNum := 1;
var template(value) PRACK_Request prackReq;
f_setHeadersGeneral(vc_cSeq, "PRACK"); // cseq, contact, branch, via
if (isvalue(vc_response.msgHeader.rSeq.responseNum)){
responseNum := vc_response.msgHeader.rSeq.responseNum;
}
vc_rAck := m_RAck(responseNum, p_rack_cseq.seqNumber, p_rack_cseq.method);
prackReq := m_PRACK_Request_sdp(
vc_requestUri,
vc_callId,
vc_cSeq,
vc_from,
vc_to,
vc_via,
vc_rAck,
p_mb
);
// added route header if required
if (isvalue(vc_response.msgHeader.recordRoute)){
prackReq.msgHeader.route := f_route();
}
SIPP.send(prackReq) to vc_sent_label;
}
f_setHeadersGeneral(p_cSeq_s, "REGISTER"); // cseq, contact, branch, via
vc_requestUri := {
scheme := c_sipScheme,
components := {
sip := {
userInfo := omit,
hostPort := {
host := vc_userprofile.registrarDomain,
portField := omit
}
}
},
urlParameters := omit,
headers := omit
};
 
}
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;
}
vc_reqHostPort := vc_requestUri.components.sip.hostPort;
 
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;
}
vc_callId := {
fieldName := CALL_ID_E,
callid := f_getRndCallId(p_cSeq_s) & c_AT & vc_userprofile.currIpaddr
};
vc_callIdReg := vc_callId;
 
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 - UE3 parameters
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_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;
}
// //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;
// }
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
};
 
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.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
}
if (not vc_firstREGISTER_sent) {
v_params := {
{
id := c_expiresId,
paramValue := c_shortRegistration
}
};
vc_contact.contactBody.contactAddresses[0].contactParams := v_params;
}
 
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 - UE4 parameters
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_UE4_PORT; // contact (simulated UE)
vc_userprofile.contactIpaddr := PX_IMS_TS_UE4_IPADDR; // contact
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE4_BEARER_IPADDR;
vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN; // From, To (register)
vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; // From, To (register)
vc_userprofile.qop := PX_IMS_SUT_UE4_QOP; // Authorization
vc_userprofile.privUsername := PX_IMS_SUT_UE4_PRIVAT_USERNAME; // Authorization
vc_userprofile.passwd := PX_IMS_SUT_UE4_PRIVAT_PASSWD; // Authorization
vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_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.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_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
}
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
 
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.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_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.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR;
vc_userprofile.homeDomain := PX_IMS_SUT_UE1_REGISTRAR; // 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.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR;
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.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR;
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
}
/**
* @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 := m_route_interface(vc_interfaceprofile);
}
if (vc_boo_recordRoute) {
vc_recordRoute := m_recordRoute_currIpAddr(vc_userprofile);
}
 
case (c_userProfile_SCSCFwithHomeUE) { //variant c_userProfile_SCSCFwithHomeUE - UE4 parameters
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_UE4_PORT; // contact (simulated UE)
vc_userprofile.contactIpaddr := PX_IMS_TS_UE4_IPADDR; // contact
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE4_BEARER_IPADDR;
vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN; // From, To (register)
vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; // From, To (register)
vc_userprofile.qop := PX_IMS_SUT_UE4_QOP; // Authorization
vc_userprofile.privUsername := PX_IMS_SUT_UE4_PRIVAT_USERNAME; // Authorization
vc_userprofile.passwd := PX_IMS_SUT_UE4_PRIVAT_PASSWD; // Authorization
vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_REGISTRAR; // Authorization
}
LibSip_Steps.f_setHeadersREFER(p_cSeq_s);
} // end f_setHeadersREFER
 
case (c_userProfile_SCSCFwithHomeUE_domain) { //variant c_userProfile_SCSCFwithHomeUE - UE4 parameters
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_UE4_PORT; // contact (simulated UE)
vc_userprofile.contactIpaddr := PX_IMS_TS_UE4_IPADDR; // contact
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE4_BEARER_IPADDR;
vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN; // From, To (register)
vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; // From, To (register)
vc_userprofile.qop := PX_IMS_SUT_UE4_QOP; // Authorization
vc_userprofile.privUsername := PX_IMS_SUT_UE4_PRIVAT_USERNAME; // Authorization
vc_userprofile.passwd := PX_IMS_SUT_UE4_PRIVAT_PASSWD; // Authorization
vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_REGISTRAR; // Authorization
/**
* @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 := m_route_interface(vc_interfaceprofile);
}
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.contactPort := PX_IMS_TS_AS1_PORT; // contact (simulated UE)
vc_userprofile.contactIpaddr := PX_IMS_TS_AS1_IPADDR; // contact
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR;
vc_userprofile.homeDomain := PX_IMS_TS_AS1_HOME_DOMAIN; // via, routevc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; // From, To (register)
vc_userprofile.publUsername := "as1";
vc_userprofile.qop := ""; // Authorization
vc_userprofile.privUsername := ""; // Authorization
vc_userprofile.passwd := ""; // Authorization
vc_userprofile.registrarDomain := ""; // Authorization
if (vc_boo_recordRoute) {
vc_recordRoute := m_recordRoute_currIpAddr(vc_userprofile);
}
case (c_userProfile_AS2) { //variant c_userProfile_AS2
vc_userprofile.currPort := PX_IMS_TS_AS2_PORT; // via, route(Isc interface of TS)
vc_userprofile.currIpaddr := PX_IMS_TS_AS2_IPADDR; // via, route
vc_userprofile.homeDomain := PX_IMS_TS_AS2_HOME_DOMAIN; // via, route
}
case (c_userProfile_ECSCFwithHomeUE) { //variant c_userProfile_PCSCFwithHomeUE
vc_userprofile.currPort := PX_IMS_TS_ECSCF_PORT; // via (Mw interface of TS)
vc_userprofile.currIpaddr := PX_IMS_TS_ECSCF_IPADDR; // via
vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE)
vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_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
}
}
}
 
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);
}
LibSip_Steps.f_setHeadersREFER(p_cSeq_s);
} // end f_setHeadersREFER_conf
 
 
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)
}
} // end group fieldOperations
 
function f_initSipUrl(in integer p_user) runs on ImsComponent return SipUrl
{
var SipUrl v_sipUrl := {
scheme := c_sipScheme, // contains "sip"
components := { sip:= {
userInfo := omit,
hostPort := {omit,omit}}},
urlParameters := omit,
headers := omit};
var SipUrl v_urnUrl := {
scheme := c_urnScheme, // contains "urn"
components := { urn:= {
namespaceId := "service",
namespaceSpecificString := PX_IMS_SUT_EMERGENCY_SERVICE_namespaceSpecificString}},
urlParameters := omit,
headers := omit};
select(p_user){
case (c_userProfile_UE1atSUThome) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE1_PUBLIC_USER, password:=omit};
v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_UE1_HOME_DOMAIN, portField :=omit}
}
case (c_userProfile_UE2atSUThome) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE2_PUBLIC_USER, password:=omit};
v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_UE2_HOME_DOMAIN, portField :=omit}
}
case (c_userProfile_UE3atSUThome) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE3_PUBLIC_USER, password:=omit};
v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_UE3_HOME_DOMAIN, portField :=omit}
}
case (c_userProfile_UE4atSUThome) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE4_PUBLIC_USER, password:=omit};
v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_UE4_HOME_DOMAIN, portField :=omit}
}
case (c_userProfile_IBCFwithHomeUE) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_IMS1UE_PUBLIC_USER, password:=omit};
v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_IMS1UE_HOME_DOMAIN, portField :=omit}
}
case (c_userProfile_ICSCFwithHomeUE) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_IMS1UE_PUBLIC_USER, password:=omit};
v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_IMS1UE_HOME_DOMAIN, portField :=omit}
}
case (c_userProfile_PCSCFwithHomeUE) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_IMS1UE_PUBLIC_USER, password:=omit};
v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_PCSCF_IPADDR, portField :=omit}
}
group awaitingMessage {
}
group sendMessage {
 
/**
* @desc send PRACK message
* @param p_request template of the message to be sent
*/
function f_SendPRACK_sdp(
template(value) MessageBody p_mb,
CSeq p_rack_cseq
) runs on SipComponent {
var integer responseNum := 1;
var template(value) PRACK_Request prackReq;
 
f_setHeadersGeneral(vc_cSeq, "PRACK"); // cseq, contact, branch, via
if (isvalue(vc_response.msgHeader.rSeq.responseNum)) {
responseNum := vc_response.msgHeader.rSeq.responseNum;
}
vc_rAck := m_RAck(responseNum, p_rack_cseq.seqNumber, p_rack_cseq.method);
 
prackReq := m_PRACK_Request_sdp(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_rAck, p_mb);
 
// added route header if required
if (isvalue(vc_response.msgHeader.recordRoute)) {
prackReq.msgHeader.route := f_route();
}
 
SIPP.send(prackReq) to vc_sent_label;
}
 
}
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 - UE3 parameters
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_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_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.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_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 - UE4 parameters
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_UE4_PORT; // contact (simulated UE)
vc_userprofile.contactIpaddr := PX_IMS_TS_UE4_IPADDR; // contact
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE4_BEARER_IPADDR;
vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN; // From, To (register)
vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; // From, To (register)
vc_userprofile.qop := PX_IMS_SUT_UE4_QOP; // Authorization
vc_userprofile.privUsername := PX_IMS_SUT_UE4_PRIVAT_USERNAME; // Authorization
vc_userprofile.passwd := PX_IMS_SUT_UE4_PRIVAT_PASSWD; // Authorization
vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_REGISTRAR; // Authorization
}
case (c_userProfile_IBCFwithUnknownUE) { // variant c_userProfile_IBCFwithUnknownUE
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.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_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.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_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.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR;
vc_userprofile.homeDomain := PX_IMS_SUT_UE1_REGISTRAR; // 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_PCSCFwithVisitingUE2) { // variant c_userProfile_PCSCFwithVisitingUE2
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.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR;
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
}
case (c_userProfile_PCSCFwithUnknownVisitingUE) { // variant c_userProfile_PCSCFwithUnknownVisitingUE
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.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR;
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 - UE4 parameters
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_UE4_PORT; // contact (simulated UE)
vc_userprofile.contactIpaddr := PX_IMS_TS_UE4_IPADDR; // contact
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE4_BEARER_IPADDR;
vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN; // From, To (register)
vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; // From, To (register)
vc_userprofile.qop := PX_IMS_SUT_UE4_QOP; // Authorization
vc_userprofile.privUsername := PX_IMS_SUT_UE4_PRIVAT_USERNAME; // Authorization
vc_userprofile.passwd := PX_IMS_SUT_UE4_PRIVAT_PASSWD; // Authorization
vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_REGISTRAR; // Authorization
}
case (c_userProfile_SCSCFwithHomeUE_domain) { // variant c_userProfile_SCSCFwithHomeUE - UE4 parameters
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_UE4_PORT; // contact (simulated UE)
vc_userprofile.contactIpaddr := PX_IMS_TS_UE4_IPADDR; // contact
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE4_BEARER_IPADDR;
vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN; // From, To (register)
vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; // From, To (register)
vc_userprofile.qop := PX_IMS_SUT_UE4_QOP; // Authorization
vc_userprofile.privUsername := PX_IMS_SUT_UE4_PRIVAT_USERNAME; // Authorization
vc_userprofile.passwd := PX_IMS_SUT_UE4_PRIVAT_PASSWD; // Authorization
vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_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.contactPort := PX_IMS_TS_AS1_PORT; // contact (simulated UE)
vc_userprofile.contactIpaddr := PX_IMS_TS_AS1_IPADDR; // contact
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR;
vc_userprofile.homeDomain := PX_IMS_TS_AS1_HOME_DOMAIN; // via, routevc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; // From, To (register)
vc_userprofile.publUsername := "as1";
vc_userprofile.qop := ""; // Authorization
vc_userprofile.privUsername := ""; // Authorization
vc_userprofile.passwd := ""; // Authorization
vc_userprofile.registrarDomain := ""; // Authorization
}
case (c_userProfile_AS2) { // variant c_userProfile_AS2
vc_userprofile.currPort := PX_IMS_TS_AS2_PORT; // via, route(Isc interface of TS)
vc_userprofile.currIpaddr := PX_IMS_TS_AS2_IPADDR; // via, route
vc_userprofile.homeDomain := PX_IMS_TS_AS2_HOME_DOMAIN; // via, route
}
case (c_userProfile_ECSCFwithHomeUE) { // variant c_userProfile_PCSCFwithHomeUE
vc_userprofile.currPort := PX_IMS_TS_ECSCF_PORT; // via (Mw interface of TS)
vc_userprofile.currIpaddr := PX_IMS_TS_ECSCF_IPADDR; // via
vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE)
vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_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
}
}
}
 
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 v_from := c_empty_From;
v_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 v_from;
}
 
function f_initSipUrl(
in integer p_user
) runs on ImsComponent
return SipUrl {
var SipUrl v_sipUrl := {
scheme := c_sipScheme, // contains "sip"
components := {
sip := {
userInfo := omit,
hostPort := {omit, omit}
}
},
urlParameters := omit,
headers := omit
};
 
var SipUrl v_urnUrl := {
scheme := c_urnScheme, // contains "urn"
components := {
urn := {
namespaceId := "service",
namespaceSpecificString := PX_IMS_SUT_EMERGENCY_SERVICE_namespaceSpecificString
}
},
urlParameters := omit,
headers := omit
};
 
select (p_user) {
case (c_userProfile_UE1atSUThome) {
v_sipUrl.components.sip.userInfo := {
userOrTelephoneSubscriber := PX_IMS_SUT_UE1_PUBLIC_USER,
password := omit
};
v_sipUrl.components.sip.hostPort := {
host := PX_IMS_SUT_UE1_HOME_DOMAIN,
portField := omit
};
}
case (c_userProfile_UE2atSUThome) {
v_sipUrl.components.sip.userInfo := {
userOrTelephoneSubscriber := PX_IMS_SUT_UE2_PUBLIC_USER,
password := omit
};
v_sipUrl.components.sip.hostPort := {
host := PX_IMS_SUT_UE2_HOME_DOMAIN,
portField := omit
};
}
case (c_userProfile_UE3atSUThome) {
v_sipUrl.components.sip.userInfo := {
userOrTelephoneSubscriber := PX_IMS_SUT_UE3_PUBLIC_USER,
password := omit
};
v_sipUrl.components.sip.hostPort := {
host := PX_IMS_SUT_UE3_HOME_DOMAIN,
portField := omit
};
}
case (c_userProfile_UE4atSUThome) {
v_sipUrl.components.sip.userInfo := {
userOrTelephoneSubscriber := PX_IMS_SUT_UE4_PUBLIC_USER,
password := omit
};
v_sipUrl.components.sip.hostPort := {
host := PX_IMS_SUT_UE4_HOME_DOMAIN,
portField := omit
};
}
case (c_userProfile_IBCFwithHomeUE) {
v_sipUrl.components.sip.userInfo := {
userOrTelephoneSubscriber := PX_IMS_TS_IMS1UE_PUBLIC_USER,
password := omit
};
v_sipUrl.components.sip.hostPort := {
host := PX_IMS_TS_IMS1UE_HOME_DOMAIN,
portField := omit
};
}
case (c_userProfile_ICSCFwithHomeUE) {
v_sipUrl.components.sip.userInfo := {
userOrTelephoneSubscriber := PX_IMS_TS_IMS1UE_PUBLIC_USER,
password := omit
};
v_sipUrl.components.sip.hostPort := {
host := PX_IMS_TS_IMS1UE_HOME_DOMAIN,
portField := omit
};
}
case (c_userProfile_PCSCFwithHomeUE) {
v_sipUrl.components.sip.userInfo := {
userOrTelephoneSubscriber := PX_IMS_TS_IMS1UE_PUBLIC_USER,
password := omit
};
v_sipUrl.components.sip.hostPort := {
host := PX_IMS_TS_PCSCF_IPADDR,
portField := omit
};
}
case (c_userProfile_PCSCFwithVisitingUE) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_IMS1UE_PUBLIC_USER, password:=omit};
v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_PCSCF_IPADDR, portField :=omit}
v_sipUrl.components.sip.userInfo := {
userOrTelephoneSubscriber := PX_IMS_TS_IMS1UE_PUBLIC_USER,
password := omit
};
v_sipUrl.components.sip.hostPort := {
host := PX_IMS_TS_PCSCF_IPADDR,
portField := omit
};
}
case (c_userProfile_SCSCFwithHomeUE) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE4_PUBLIC_USER, password:=omit};
v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_SCSCF_HOME_DOMAIN, portField :=PX_IMS_TS_SCSCF_PORT}
}
case (c_userProfile_SCSCFwithHomeUE_domain) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE4_PUBLIC_USER, password:=omit};
v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_SCSCF_HOME_DOMAIN, portField :=omit}
}
case (c_userProfile_SCSCFwithHomeUE) {
v_sipUrl.components.sip.userInfo := {
userOrTelephoneSubscriber := PX_IMS_SUT_UE4_PUBLIC_USER,
password := omit
};
v_sipUrl.components.sip.hostPort := {
host := PX_IMS_TS_SCSCF_HOME_DOMAIN,
portField := PX_IMS_TS_SCSCF_PORT
};
}
case (c_userProfile_SCSCFwithHomeUE_domain) {
v_sipUrl.components.sip.userInfo := {
userOrTelephoneSubscriber := PX_IMS_SUT_UE4_PUBLIC_USER,
password := omit
};
v_sipUrl.components.sip.hostPort := {
host := PX_IMS_TS_SCSCF_HOME_DOMAIN,
portField := omit
};
}
case (c_userProfile_AS1) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_IMS1UE_PUBLIC_USER, password:=omit};
v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_AS1_IPADDR, portField :=omit}
}
case (c_userProfile_ECSCFwithHomeUE) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_IMS1UE_PUBLIC_USER, password:=omit};
v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_ECSCF_IPADDR, portField :=omit}
}
case (c_userProfile_ISUP) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_ISUP_PUBLIC_USER, password:=omit};
v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_ISUP_HOME_DOMAIN, portField :=omit}
}
case (c_serviceProfile_EMERGENCY) {
v_urnUrl.components.urn.namespaceId := PX_IMS_SUT_EMERGENCY_SERVICE_namespaceId;
v_urnUrl.components.urn.namespaceSpecificString := PX_IMS_SUT_EMERGENCY_SERVICE_namespaceSpecificString;
}
case (c_serviceProfile_EMERGENCY_INVALID) {
v_urnUrl.components.urn.namespaceId := PX_IMS_SUT_EMERGENCY_SERVICE_INVALID_namespaceId;
v_urnUrl.components.urn.namespaceSpecificString := PX_IMS_SUT_EMERGENCY_SERVICE_INVALID_namespaceSpecificString;
}
// following setting is used for the assignment of the Path header field
case (c_interfaceProfile_IMS_SUT_PCSCF1) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:="", password:=omit};
v_sipUrl.components.sip.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) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:="", password:=omit};
v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_PCSCF1_HOME_DOMAIN, portField :=PX_IMS_SUT_PCSCF1_PORT}
}
case (c_interfaceSIPURL_IMS_SUT_PCSCF1_ip) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:="", password:=omit};
v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_PCSCF1_IPADDR, portField :=PX_IMS_TS_SCSCF_PORT}
}
v_sipUrl.components.sip.userInfo := {
userOrTelephoneSubscriber := PX_IMS_TS_IMS1UE_PUBLIC_USER,
password := omit
};
v_sipUrl.components.sip.hostPort := {
host := PX_IMS_TS_AS1_IPADDR,
portField := omit
};
}
case (c_userProfile_ECSCFwithHomeUE) {
v_sipUrl.components.sip.userInfo := {
userOrTelephoneSubscriber := PX_IMS_TS_IMS1UE_PUBLIC_USER,
password := omit
};
v_sipUrl.components.sip.hostPort := {
host := PX_IMS_TS_ECSCF_IPADDR,
portField := omit
};
}
case (c_userProfile_ISUP) {
v_sipUrl.components.sip.userInfo := {
userOrTelephoneSubscriber := PX_IMS_TS_ISUP_PUBLIC_USER,
password := omit
};
v_sipUrl.components.sip.hostPort := {
host := PX_IMS_TS_ISUP_HOME_DOMAIN,
portField := omit
};
}
case (c_serviceProfile_EMERGENCY) {
v_urnUrl.components.urn.namespaceId := PX_IMS_SUT_EMERGENCY_SERVICE_namespaceId;
v_urnUrl.components.urn.namespaceSpecificString := PX_IMS_SUT_EMERGENCY_SERVICE_namespaceSpecificString;
}
case (c_serviceProfile_EMERGENCY_INVALID) {
v_urnUrl.components.urn.namespaceId := PX_IMS_SUT_EMERGENCY_SERVICE_INVALID_namespaceId;
v_urnUrl.components.urn.namespaceSpecificString := PX_IMS_SUT_EMERGENCY_SERVICE_INVALID_namespaceSpecificString;
}
case (c_interfaceProfile_IMS_SUT_PCSCF1) {
v_sipUrl.components.sip.userInfo := {
userOrTelephoneSubscriber := "",
password := omit
};
v_sipUrl.components.sip.hostPort := {
host := PX_IMS_SUT_PCSCF1_HOME_DOMAIN,
portField := PX_IMS_SUT_PCSCF1_PORT
};
}
case (c_interfaceSIPURL_IMS_SUT_PCSCF1_domain) {
v_sipUrl.components.sip.userInfo := {
userOrTelephoneSubscriber := "",
password := omit
};
v_sipUrl.components.sip.hostPort := {
host := PX_IMS_SUT_PCSCF1_HOME_DOMAIN,
portField := PX_IMS_SUT_PCSCF1_PORT
};
}
case (c_interfaceSIPURL_IMS_SUT_PCSCF1_ip) {
v_sipUrl.components.sip.userInfo := {
userOrTelephoneSubscriber := "",
password := omit
};
v_sipUrl.components.sip.hostPort := {
host := PX_IMS_SUT_PCSCF1_IPADDR,
portField := PX_IMS_TS_SCSCF_PORT
};
}
case (c_interfaceProfile_IMS_SUT_SCSCF) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:="", password:=omit};
v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_SCSCF_HOME_DOMAIN, portField :=PX_IMS_SUT_PCSCF1_PORT}
}
case (c_conferenceProfile_factoryURI) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_CONF_FACTORY_NAME, password:=omit};
v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_CONF_HOME_DOMAIN, portField := omit}
}
};
if(p_user == c_serviceProfile_EMERGENCY or p_user == c_serviceProfile_EMERGENCY_INVALID)
{return(v_urnUrl)}
else
{return(v_sipUrl)}
}
v_sipUrl.components.sip.userInfo := {
userOrTelephoneSubscriber := "",
password := omit
};
v_sipUrl.components.sip.hostPort := {
host := PX_IMS_TS_SCSCF_HOME_DOMAIN,
portField := PX_IMS_SUT_PCSCF1_PORT
};
}
case (c_conferenceProfile_factoryURI) {
v_sipUrl.components.sip.userInfo := {
userOrTelephoneSubscriber := PX_IMS_SUT_CONF_FACTORY_NAME,
password := omit
};
v_sipUrl.components.sip.hostPort := {
host := PX_IMS_SUT_CONF_HOME_DOMAIN,
portField := omit
};
}
}
if (p_user == c_serviceProfile_EMERGENCY or p_user == c_serviceProfile_EMERGENCY_INVALID) {
return v_urnUrl;
}
else {
return v_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 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 user DomainPort value of the interface profile
* @param p_interface identifies the selected interface
* @return DomainPort template
* @return DomainPort template
*/
function f_get_userDomainPort (in SipUserProfile p_userProfile) runs on ImsComponent return /*template*/ HostPort
{
return {p_userProfile.homeDomain, p_userProfile.currPort}
function f_get_userDomainPort(
in SipUserProfile p_userProfile
) runs on ImsComponent
return HostPort {
return
{
p_userProfile.homeDomain,
p_userProfile.currPort
};
}
/**
* @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(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_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 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 HostPort {
return
{
p_interface.SUTIpaddr,
p_interface.SUTPort
};
}
 
/**
* @desc awaiting UE1 registration (with authentication)
* @param p_cSeq_s cseq parameter
*/
function f_awaitingRegistration_IMS(inout CSeq p_cSeq_s) runs on ImsComponent
{
var SipUrl v_passociated_url;
var Authorization p_authorization;
//Awaiting 1st REGISTER
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS);
/**
* @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 HostPort {
return
{
p_interface.SUTHomeDomain,
p_interface.SUTPort
};
}
 
// 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,valueof(vc_authorization.body[0].digestResponse))))
);
/**
* @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);
}
 
//Awaiting 2nd REGISTER with authorization header
f_awaitingREGISTER(
mw_REGISTER_authorizedRequest_IMS(
mw_Authorization_digest(
mw_digestResponse(
(c_Integrity_protected_yes, c_Integrity_protected_ip_assoc_pending)
)
)
)
);
 
// 200OK to complete the request
if (isvalue(vc_request.msgHeader.contact)) {
vc_contact := valueof(vc_request.msgHeader.contact);
vc_contact.contactBody.contactAddresses[0].contactParams := {{"expires",int2str(3600)}};
}
v_passociated_url := vc_caller_From.addressField.nameAddr.addrSpec;
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),v_passociated_url));
}
group registration {
 
}//end function f_awaitingRegistration_IMS
/**
* @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(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_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_gm(inout CSeq p_cSeq_s) runs on ImsComponent
{
/**
* @desc awaiting UE1 registration (with authentication)
* @param p_cSeq_s cseq parameter
*/
function f_awaitingRegistration_IMS(
inout CSeq p_cSeq_s
) runs on ImsComponent {
var SipUrl v_passociated_url;
var Authorization p_authorization;
vc_ignore_subscribe := true;//handle SUBSCRIBE during the call
//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,valueof(vc_authorization.body[0].digestResponse))))
);
//Awaiting 2nd REGISTER with authorization header
// 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,
valueof(vc_authorization.body[0].digestResponse)
)
)
)
);
 
// Awaiting 2nd REGISTER with authorization header
f_awaitingREGISTER(
mw_REGISTER_authorizedRequest_IMS(
mw_Authorization_digest(
mw_digestResponse(
(c_Integrity_protected_yes, c_Integrity_protected_ip_assoc_pending)
)
)
)
);
 
// 200OK to complete the request
if (isvalue(vc_request.msgHeader.contact)) {
vc_contact := valueof(vc_request.msgHeader.contact);
vc_contact.contactBody.contactAddresses[0].contactParams := {
{
"expires",
int2str(3600)
}
};
}
v_passociated_url := vc_caller_From.addressField.nameAddr.addrSpec;
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), v_passociated_url));
} // end function f_awaitingRegistration_IMS
 
/**
* @desc awaiting UE1 registration (with authentication)
* @param p_cSeq_s cseq parameter
*/
function f_awaitingRegistration_IMS_gm(
inout CSeq p_cSeq_s
) runs on ImsComponent {
var SipUrl v_passociated_url;
var Authorization p_authorization;
vc_ignore_subscribe := true; // handle SUBSCRIBE during the call
// 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,
valueof(vc_authorization.body[0].digestResponse)
)
)
)
);
 
// Awaiting 2nd REGISTER with authorization header
f_awaitingREGISTER(mw_REGISTER_authorizedRequest_wo_securityheaders_IMS);
//f_awaitingREGISTER(mw_REGISTER_authorizedRequest_IMS(m_Authorization_digest(mw_digestResponse((c_Integrity_protected_yes,c_Integrity_protected_ip_assoc_pending)))));
// 200OK to complete the request
if (isvalue(vc_request.msgHeader.contact)) {
vc_contact := valueof(vc_request.msgHeader.contact);
vc_contact.contactBody.contactAddresses[0].contactParams := {{"expires",int2str(3600)}};
}
v_passociated_url := vc_caller_From.addressField.nameAddr.addrSpec;
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),v_passociated_url));
vc_DeregDone := false;
}//end function f_awaitingRegistration_IMS_gm
// f_awaitingREGISTER(mw_REGISTER_authorizedRequest_IMS(m_Authorization_digest(mw_digestResponse((c_Integrity_protected_yes,c_Integrity_protected_ip_assoc_pending)))));
// 200OK to complete the request
if (isvalue(vc_request.msgHeader.contact)) {
vc_contact := valueof(vc_request.msgHeader.contact);
vc_contact.contactBody.contactAddresses[0].contactParams := {
{
"expires",
int2str(3600)
}
};
}
v_passociated_url := vc_caller_From.addressField.nameAddr.addrSpec;
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), v_passociated_url));
vc_DeregDone := false;
} // end function f_awaitingRegistration_IMS_gm
 
 
/**
* @desc remove registration
* @param p_cSeq_s cseq parameter
*/
function f_RemoveRegistration_IMS(inout CSeq p_cSeq) runs on SipComponent
{
var CommaParam_List v_challenge;
var Credentials v_credentials;
var template(value) REGISTER_Request v_request;
if (PX_SIP_REGISTRATION)
{
f_setHeaders_deREGISTER(p_cSeq);
v_request := m_REGISTER_Request_expires_IMS(vc_requestUri, vc_callIdReg,
p_cSeq, vc_from, vc_to, vc_via, vc_contact, vc_authorization, "0");
v_request.msgHeader.route := f_route();
f_SendREGISTER(v_request);
if (PX_SIP_REGISTER_AUTHENTICATION_ENABLED)
{
// 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_callIdReg, p_cSeq)) -> value vc_response
{
tc_ack.stop;
// set headers via, cseq and authorization
f_setHeaders_2ndREGISTER(p_cSeq);
v_request := m_REGISTER_Request_expires_IMS(vc_requestUri, vc_callIdReg,
p_cSeq, vc_from, vc_to, vc_via, vc_contact, vc_authorization, "0");
v_request.msgHeader.route := f_route();
// Re-send protected REGISTER
f_SendREGISTER(v_request);//LibSip
// awaiting 200 OK REGISTER
f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq));
}
[] SIPP.receive (mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq))-> value vc_response
{
tc_ack.stop;
f_setHeadersOnReceiptOfResponse(vc_cSeq, vc_response);
log ("Authorization was not requested as expected");
}
}
}
else
{
f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq));
}
}
} // end f_RemoveRegistration_IMS
/**
* @desc remove registration
* @param p_cSeq_s cseq parameter
*/
function f_RemoveRegistration_IMS(
inout CSeq p_cSeq
) runs on SipComponent {
var CommaParam_List v_challenge;
var Credentials v_credentials;
var template(value) REGISTER_Request v_request;
 
} // 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
{
// avoid deregistration in default behavior
vc_DeregDone := true;
vc_boo_route := true;
vc_boo_recordRoute := true;
//Variables & defaults initialization
LibSip_Steps.f_init_component(p_cSeq_s);
if (PX_SIP_REGISTRATION) {
f_setHeaders_deREGISTER(p_cSeq);
v_request := m_REGISTER_Request_expires_IMS(vc_requestUri, vc_callIdReg, p_cSeq, vc_from, vc_to, vc_via, vc_contact, vc_authorization, "0");
v_request.msgHeader.route := f_route();
 
//Preamble
f_init_userprofile(p_userprofile); // assignment of PIXIT values to component variable
vc_sdp_local := valueof(m_SDP_bandwidth(m_media_dynPT(PX_SIP_SDP_dyn, PX_SIP_SDP_encoding), vc_userprofile));
vc_contact := m_Contact(m_SipUrl_contactIpaddr(vc_userprofile));
}
f_SendREGISTER(v_request);
if (PX_SIP_REGISTER_AUTHENTICATION_ENABLED) {
// 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_callIdReg, p_cSeq)) -> value vc_response {
tc_ack.stop;
// set headers via, cseq and authorization
f_setHeaders_2ndREGISTER(p_cSeq);
v_request := m_REGISTER_Request_expires_IMS(vc_requestUri, vc_callIdReg, p_cSeq, vc_from, vc_to, vc_via, vc_contact, vc_authorization, "0");
v_request.msgHeader.route := f_route();
// Re-send protected REGISTER
f_SendREGISTER(v_request); // LibSip
// awaiting 200 OK REGISTER
f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq));
}
[] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq)) -> value vc_response {
tc_ack.stop;
f_setHeadersOnReceiptOfResponse(vc_cSeq, vc_response);
log("Authorization was not requested as expected");
}
}
}
else {
f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq));
}
}
} // end f_RemoveRegistration_IMS
 
//TODO STF471 added
/**
* @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_as(in integer p_userprofile, inout CSeq p_cSeq_s) runs on ImsComponent
{
// avoid deregistration in default behavior
vc_DeregDone := true;
vc_boo_route := true;
vc_boo_recordRoute := true;
//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(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_withEmergencyRegistration (in integer p_userprofile, in integer p_interface, inout CSeq p_cSeq_s, template REGISTER_Request p_register) runs on ImsComponent
{
} // 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 {
// avoid deregistration in default behavior
vc_DeregDone := true;
vc_boo_route := true;
vc_boo_recordRoute := true;
 
// 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(m_media_dynPT(PX_SIP_SDP_dyn, PX_SIP_SDP_encoding), vc_userprofile));
vc_contact := m_Contact(m_SipUrl_contactIpaddr(vc_userprofile));
}
 
// TODO STF471 added
/**
* @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_as(
in integer p_userprofile,
inout CSeq p_cSeq_s
) runs on ImsComponent {
// avoid deregistration in default behavior
vc_DeregDone := true;
vc_boo_route := true;
vc_boo_recordRoute := true;
 
// 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(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_withEmergencyRegistration(
in integer p_userprofile,
in integer p_interface,
inout CSeq p_cSeq_s,
template REGISTER_Request p_register
) runs on ImsComponent {
 
f_init_interfaceprofile(p_interface);
//Variables & defaults initialization
// Variables & defaults initialization
f_IMS_preamble_woRegistration(p_userprofile, p_cSeq_s);
//Preamble
// Preamble
f_Registration(p_cSeq_s, p_register, PX_SIP_REGISTER_AUTHENTICATION_ENABLED, true);
 
// deregistration in case of successful registration
// deregistration in case of successful registration
vc_DeregDone := false;
}
 
/**
* @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, in integer p_interface, inout CSeq p_cSeq_s, out template REGISTER_Request p_register) runs on ImsComponent
{
* @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,
in integer p_interface,
inout CSeq p_cSeq_s,
out template REGISTER_Request p_register
) runs on ImsComponent {
 
f_init_interfaceprofile(p_interface);
//Variables & defaults initialization
// Variables & defaults initialization
f_IMS_preamble_woRegistration(p_userprofile, p_cSeq_s);
//Preamble
 
// Preamble
f_Registration(p_cSeq_s, p_register, PX_SIP_REGISTER_AUTHENTICATION_ENABLED);
 
// deregistration in case of successful registration
// deregistration in case of successful registration
vc_DeregDone := false;
 
f_setHeaders_SUBSCRIBE(p_cSeq_s);
f_Subscription(p_cSeq_s, m_SUBSCRIBE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, vc_route_REG));
}
 
// TODO STF471 added
/**
* @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_withRegistrationWoSubscription(
in integer p_userprofile,
inout CSeq p_cSeq_s,
out 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);
 
// deregistration in case of successful registration
vc_DeregDone := false;
}
 
//TODO STF471 added
/**
* @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_withRegistrationWoSubscription (in integer p_userprofile, inout CSeq p_cSeq_s, out 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);
// deregistration in case of successful registration
vc_DeregDone := false;
}
/**
* @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,
in integer p_interface,
inout CSeq p_cSeq_s
) runs on ImsComponent {
f_init_interfaceprofile(p_interface);
// Variables & defaults initialization
f_IMS_preamble_woRegistration(p_userprofile, p_cSeq_s);
 
/**
* @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,in integer p_interface, inout CSeq p_cSeq_s) runs on ImsComponent
{
f_init_interfaceprofile(p_interface);
//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_setHeaders_SUBSCRIBE(p_cSeq_s);
f_Subscription(p_cSeq_s, m_SUBSCRIBE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, vc_route_REG));
}
// Preamble
f_Registration_IMS(p_cSeq_s, PX_SIP_REGISTER_AUTHENTICATION_ENABLED);
f_setHeaders_SUBSCRIBE(p_cSeq_s);
f_Subscription(p_cSeq_s, m_SUBSCRIBE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, vc_route_REG));
}
 
/**
* @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
* @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_AS (in integer p_userprofile, in integer p_interface, inout CSeq p_cSeq_s) runs on ImsComponent
{
function f_IMS_preamble_AS(
in integer p_userprofile,
in integer p_interface,
inout CSeq p_cSeq_s
) runs on ImsComponent {
// avoid deregistration in default behavior
vc_DeregDone := true;
vc_DeregDone := true;
vc_boo_route := true;
vc_boo_recordRoute := true;
vc_cSeq := p_cSeq_s;
//Defaults
 
// Defaults
vc_def_catchSyncStop := activate(a_Sip_catchSyncStop());
vc_default := activate (a_altstep_AS());
vc_default := activate(a_altstep_AS());
 
//Preamble
// Preamble
f_init_interfaceprofile(p_interface);
f_init_userprofile(p_userprofile); // assignment of PIXIT values to component variable
vc_sdp_local := valueof(m_SDP_bandwidth(m_media_dynPT(PX_SIP_SDP_dyn, PX_SIP_SDP_encoding), vc_userprofile));
vc_contact := m_Contact(m_SipUrl_contactIpaddr(vc_userprofile));
}
} // 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();
}
}
 
 
} // end group preambles
 
group postambles {
 
/**
* @desc Sets variables and default initialization for user profile and handle deregistration on AS as TS
* @param p_cSeq_s cseq parameter
*/
function f_IMS_postamble_AS_withDeRegistration (boolean p_deRegistration) runs on ImsComponent {
if(p_deRegistration == true)
{f_awaitingREGISTER_sendReply(mw_REGISTER_Request_Base,true);}
* @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
{
var SipUrl v_passociated_url;
//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,valueof(vc_authorization.body[0].digestResponse))))
);
/**
* @desc Sets variables and default initialization for user profile and handle deregistration on AS as TS
* @param p_cSeq_s cseq parameter
*/
function f_IMS_postamble_AS_withDeRegistration(
boolean p_deRegistration
) runs on ImsComponent {
 
//Awaiting 2nd REGISTER with authorization header
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS);//mw_REGISTER_authorizedRequest_IMS(m_Authorization_digest(mw_digestResponse(c_Integrity_protected_yes))));
// f_awaitingREGISTER(mw_REGISTER_authorizedRequest_IMS(m_Authorization_digest(mw_digestResponse(c_Integrity_protected_yes))));
if (p_deRegistration == true) {
f_awaitingREGISTER_sendReply(mw_REGISTER_Request_Base, true);
}
f_terminate_component();
}
 
// 200OK to complete the request
// vc_contact := vc_request.msgHeader.contact;
// vc_contact.contactBody.contactAddresses[0].contactParams := {{"expires",int2str(0)}};
v_passociated_url := vc_caller_From.addressField.nameAddr.addrSpec;
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),v_passociated_url));
function f_SIP_postamble_IMS1_withoutRegistration(
) runs on ImsComponent {
f_terminate_component();
}
 
f_terminate_component()
};
function f_IMS_postamble_awaitDeRegistration () runs on ImsComponent
{
var SipUrl v_passociated_url;
//Awaiting 1st REGISTER
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS);
function f_IMS_postamble_withoutDeRegistration(
) runs on ImsComponent {
f_terminate_component();
}
 
// 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,valueof(vc_authorization.body[0].digestResponse))))
);
function f_SIP_postamble_IMS1_awaitDeRegistration(
) runs on ImsComponent {
var SipUrl v_passociated_url;
// Awaiting 1st REGISTER
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS);
 
//Awaiting 2nd REGISTER with authorization header
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS);//mw_REGISTER_authorizedRequest_IMS(m_Authorization_digest(mw_digestResponse(c_Integrity_protected_yes))));
// 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, valueof(vc_authorization.body[0].digestResponse)))));
 
// 200OK to complete the request
// vc_contact := vc_request.msgHeader.contact;
// vc_contact.contactBody.contactAddresses[0].contactParams := {{"expires",int2str(0)}};
v_passociated_url := vc_caller_From.addressField.nameAddr.addrSpec;
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),v_passociated_url));
// Awaiting 2nd REGISTER with authorization header
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS); // mw_REGISTER_authorizedRequest_IMS(m_Authorization_digest(mw_digestResponse(c_Integrity_protected_yes))));
// 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)}};
v_passociated_url := vc_caller_From.addressField.nameAddr.addrSpec;
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), v_passociated_url));
 
f_terminate_component()
};
f_terminate_component();
}
 
function f_IMS_awaitDeRegistration () runs on ImsComponent
{
function f_IMS_postamble_awaitDeRegistration(
) runs on ImsComponent {
var SipUrl v_passociated_url;
//Awaiting 1st REGISTER
// 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,valueof(vc_authorization.body[0].digestResponse))))
);
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, valueof(vc_authorization.body[0].digestResponse)))));
 
//Awaiting 2nd REGISTER with authorization header
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS);//mw_REGISTER_authorizedRequest_IMS(m_Authorization_digest(mw_digestResponse(c_Integrity_protected_yes))));
// Awaiting 2nd REGISTER with authorization header
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS); // 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)}};
v_passociated_url := vc_caller_From.addressField.nameAddr.addrSpec;
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), v_passociated_url));
 
f_terminate_component();
}
 
 
function f_IMS_awaitDeRegistration(
) runs on ImsComponent {
var SipUrl v_passociated_url;
// 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, valueof(vc_authorization.body[0].digestResponse)))));
 
// Awaiting 2nd REGISTER with authorization header
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS); // 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)}};
// vc_contact := vc_request.msgHeader.contact;
// vc_contact.contactBody.contactAddresses[0 ] .contactParams := {{"expires",int2str(0)}};
v_passociated_url := vc_caller_From.addressField.nameAddr.addrSpec;
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),v_passociated_url));
};
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), v_passociated_url));
}
 
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(value) To p_to) runs on ImsComponent
{
LibSip_Steps.f_setHeadersBYE(p_cSeq);
// 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, 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(value) To p_to, template RecordRoute p_recordRoute := omit) runs on ImsComponent
{
LibSip_Steps.f_setHeadersBYE(p_cSeq);
// Sending of a BYE request to release the call and expect a final response
if(ispresent(p_recordRoute)) {
var Route v_route := { ROUTE_E, valueof(p_recordRoute.routeBody)};
f_SendBYE(m_BYE_Request_UE(p_requestUri, p_CallId, p_cSeq, p_from, valueof(p_to), vc_via, v_route));
} else {
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
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 and De-registration
* @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
1650,201 → 1731,242
* @param p_to parameter for outgoing BYE
* @param p_reqHostPort parameter for outgoing BYE
*/
function f_terminateCall_UE_withDeReg(SipUrl p_requestUri, CallId p_CallId, inout CSeq p_cSeq, From p_from,
template(value) To p_to) runs on ImsComponent
{
LibSip_Steps.f_setHeadersBYE(p_cSeq);
// 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, 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;
}
function f_terminateCall_IMS(
SipUrl p_requestUri,
CallId p_CallId,
inout CSeq p_cSeq,
From p_from,
template(value) To p_to
) runs on ImsComponent {
LibSip_Steps.f_setHeadersBYE(p_cSeq);
// 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, 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
};
action("Please de-register");
f_IMS_awaitDeRegistration();
//f_terminate_component();
}
} // 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(value) To p_to,
template RecordRoute p_recordRoute := omit
) runs on ImsComponent {
LibSip_Steps.f_setHeadersBYE(p_cSeq);
// Sending of a BYE request to release the call and expect a final response
if (ispresent(p_recordRoute)) {
var Route v_route := {ROUTE_E, valueof(p_recordRoute.routeBody)};
f_SendBYE(m_BYE_Request_UE(p_requestUri, p_CallId, p_cSeq, p_from, valueof(p_to), vc_via, v_route));
}
else {
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
 
 
/**
* @desc sends BYE and awaits response and De-registration
* @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_withDeReg(
SipUrl p_requestUri,
CallId p_CallId,
inout CSeq p_cSeq,
From p_from,
template(value) To p_to
) runs on ImsComponent {
LibSip_Steps.f_setHeadersBYE(p_cSeq);
// 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, 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
}
action("Please de-register");
f_IMS_awaitDeRegistration();
// f_terminate_component();
} // end function f_terminateCall_UE_withDeReg
}
group defaults {
altstep a_clearRegistration_IMSuser() runs on ImsComponent
{
 
}
group defaults {
 
altstep a_clearRegistration_IMSuser(
) runs on ImsComponent {
var Response v_response;
var Request v_request;
var CSeq v_cSeq;
[] any timer.timeout
{
setverdict(fail);
all timer.stop;
//TODO check how to solve release of call
//f_SendCANCEL(m_CANCEL_Request(vc_callId, vc_cSeq, vc_from, vc_cancel_To, vc_reqHostPort, vc_via )); // difference between registration state or transaction state
[] any timer.timeout {
setverdict(fail);
all timer.stop;
// TODO check how to solve release of call
// f_SendCANCEL(m_CANCEL_Request(vc_callId, vc_cSeq, vc_from, vc_cancel_To, vc_reqHostPort, vc_via )); // difference between registration state or transaction state
vc_callId := vc_callIdReg;
action("Please de-register");
action("Please de-register");
f_IMS_awaitDeRegistration();
f_componentStop();
f_componentStop();
}
// allow repeated INVITEs
[vc_ignore_invite] SIPP.receive(mw_INVITE_Request_Base)
{
repeat
[vc_ignore_invite] SIPP.receive(mw_INVITE_Request_Base) {
repeat;
}
// allow repeated BYEs after ack of the first BYE
[vc_ignore_bye] SIPP.receive (mw_BYE_Request_Base(?))
{
repeat
[vc_ignore_bye] SIPP.receive(mw_BYE_Request_Base(?)) {
repeat;
}
[] SIPP.receive (mw_ACK_Request_Base(?))
{
repeat
[] SIPP.receive(mw_ACK_Request_Base(?)) {
repeat;
}
// allow 100 replies
[] SIPP.receive(mw_Response_Base(c_statusLine100,?, ?))
{
repeat
}
// ignore 181 if flag is set (following TS 183004 §4.5.2.1)
[vc_ignore181] SIPP.receive(mw_Response_Base(c_statusLine181,vc_callId, vc_cSeq))-> value v_response sender vc_sent_label
{
[] SIPP.receive(mw_Response_Base(c_statusLine100, ?, ?)) {
repeat;
}
// ignore 181 if flag is set (following TS 183004 §4.5.2.1)
[vc_ignore181] SIPP.receive(mw_Response_Base(c_statusLine181, vc_callId, vc_cSeq)) -> value v_response sender vc_sent_label {
v_cSeq := valueof(v_response.msgHeader.cSeq);
f_setHeadersOnReceiptOfResponse(v_cSeq, v_response);
f_setHeadersOnReceiptOfResponse(v_cSeq, v_response);
repeat;
}
}
// according to SIP chap.8.1.3.2
[] SIPP.receive(mw_Response_Base(c_statusLine183,vc_callId, vc_cSeq))
{
[] SIPP.receive(mw_Response_Base(c_statusLine183, vc_callId, vc_cSeq)) {
repeat;
}
 
}
// ignore 484 if flag is set
[vc_ignore484] SIPP.receive(mw_Response_Base(c_statusLine484,vc_callId, vc_cSeq))
{
repeat
}
[vc_ignore4xx] SIPP.receive(mw_Response_Base(mw_statusLine4xx,vc_callId, ?))-> value v_response sender vc_sent_label
{
[vc_ignore484] SIPP.receive(mw_Response_Base(c_statusLine484, vc_callId, vc_cSeq)) {
repeat;
}
[vc_ignore4xx] SIPP.receive(mw_Response_Base(mw_statusLine4xx, vc_callId, ?)) -> value v_response sender vc_sent_label {
v_cSeq := valueof(v_response.msgHeader.cSeq);
f_setHeadersOnReceiptOfResponse(v_cSeq, v_response);
f_setHeadersOnReceiptOfResponse(v_cSeq, v_response);
f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, v_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route));
repeat
}
[vc_ignore200OKinv] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, ?))
{
repeat
}
[] SIPP.receive(mw_INFO_Request_Base(vc_callId))->value v_request sender vc_sent_label
{
f_setHeadersOnReceiptOfRequest(v_request);
repeat;
}
[vc_ignore200OKinv] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, ?)) {
repeat;
}
[] SIPP.receive(mw_INFO_Request_Base(vc_callId)) -> value v_request sender vc_sent_label {
f_setHeadersOnReceiptOfRequest(v_request);
f_send200OK();
repeat
}
repeat;
}
// awaiting of Notify
[] SIPP.receive(mw_NOTIFY_Request_Base(vc_callId))->value v_request sender vc_sent_label
{
f_setHeadersOnReceiptOfRequest(v_request);
[] SIPP.receive(mw_NOTIFY_Request_Base(vc_callId)) -> value v_request sender vc_sent_label {
f_setHeadersOnReceiptOfRequest(v_request);
f_send200OK();
repeat
}
repeat;
}
// awaiting of subscribe from UE
[vc_ignore_subscribe] SIPP.receive(mw_SUBSCRIBE_Request_Base)-> value v_request sender vc_sent_label
{
[vc_ignore_subscribe] SIPP.receive(mw_SUBSCRIBE_Request_Base) -> value v_request sender vc_sent_label {
f_setHeadersOnReceiptOfSUBSCRIBE(v_request);
f_send200OK();
repeat;
}
//awaiting of subscribe on proxy
[] SIPP.receive(mw_SUBSCRIBE_Request_Base)->value v_request sender vc_sent_label
{
f_setHeadersOnReceiptOfRequest(v_request);
f_sendResponse(m_Response_Contact(c_statusLine200,vc_callId, vc_cSeq,vc_callee_From, vc_callee_To, vc_via,vc_contact));
//f_setHeadersGeneral(vc_cSeq, "NOTIFY"); // cseq, contact, branch, via
//f_SendNOTIFY(m_NOTIFY_Request_contact(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact));
}
// awaiting of subscribe on proxy
[] SIPP.receive(mw_SUBSCRIBE_Request_Base) -> value v_request sender vc_sent_label {
f_setHeadersOnReceiptOfRequest(v_request);
f_sendResponse(m_Response_Contact(c_statusLine200, vc_callId, vc_cSeq, vc_callee_From, vc_callee_To, vc_via, vc_contact));
// f_setHeadersGeneral(vc_cSeq, "NOTIFY"); // cseq, contact, branch, via
// f_SendNOTIFY(m_NOTIFY_Request_contact(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact));
log(v_request.msgHeader.contact.contactBody.contactAddresses[0].addressField.nameAddr.addrSpec);
f_SendNOTIFY(m_NOTIFY_Request_contact(v_request.msgHeader.contact.contactBody.contactAddresses[0].addressField.nameAddr.addrSpec, vc_callId, vc_cSeq, vc_callee_From, vc_callee_To, vc_via, vc_contact));
f_SendNOTIFY(m_NOTIFY_Request_contact(v_request.msgHeader.contact.contactBody.contactAddresses[0].addressField.nameAddr.addrSpec, vc_callId, vc_cSeq, vc_callee_From, vc_callee_To, vc_via, vc_contact));
f_awaitingOkResponse(vc_cSeq);
repeat
}
repeat;
}
// unexpected BYE is acknowledged to avoid retransmissions
[] SIPP.receive(mw_BYE_Request_Base(?))-> value v_request sender vc_sent_label
{
[] SIPP.receive(mw_BYE_Request_Base(?)) -> value v_request sender vc_sent_label {
setverdict(fail);
f_setHeadersOnReceiptOfRequest(v_request);
f_setHeadersOnReceiptOfRequest(v_request);
f_send200OK();
action("Please de-register");
action("Please de-register");
f_IMS_awaitDeRegistration();
f_componentStop();
}
f_componentStop();
}
// unexpected CANCEL is acknowledged to avoid retransmissions
[] SIPP.receive(mw_CANCEL_Request_Base(?))-> value v_request sender vc_sent_label
{
[] SIPP.receive(mw_CANCEL_Request_Base(?)) -> value v_request sender vc_sent_label {
setverdict(fail);
f_setHeadersOnReceiptOfRequest(v_request);
//Answer to the CANCEL
// Answer to the CANCEL
f_send200OK();
action("Please de-register");
action("Please de-register");
f_IMS_awaitDeRegistration();
f_componentStop();
}
f_componentStop();
}
// catch 4xx response
[] SIPP.receive(mw_Response_Base(mw_statusLine4xx, vc_callId, ?))-> value v_response sender vc_sent_label
{
[] SIPP.receive(mw_Response_Base(mw_statusLine4xx, vc_callId, ?)) -> value v_response sender vc_sent_label {
setverdict(fail);
v_cSeq := valueof(v_response.msgHeader.cSeq);
f_setHeadersOnReceiptOfResponse(v_cSeq, v_response);
f_setHeadersOnReceiptOfResponse(v_cSeq, v_response);
LibSip_Steps.f_setHeadersACK();
f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, v_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route));
action("Please de-register");
action("Please de-register");
f_IMS_awaitDeRegistration();
f_componentStop();
f_componentStop();
}
// catch 5xx response
[] SIPP.receive(mw_Response_Base(mw_statusLine5xx, vc_callId, ?))-> value v_response sender vc_sent_label
{
[] SIPP.receive(mw_Response_Base(mw_statusLine5xx, vc_callId, ?)) -> value v_response sender vc_sent_label {
setverdict(fail);
v_cSeq := valueof(v_response.msgHeader.cSeq);
f_setHeadersOnReceiptOfResponse(v_cSeq, v_response);
f_setHeadersOnReceiptOfResponse(v_cSeq, v_response);
LibSip_Steps.f_setHeadersACK();
f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, v_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route));
action("Please de-register");
action("Please de-register");
f_IMS_awaitDeRegistration();
f_componentStop();
}
// catch invalid REGISTER
[] SIPP.receive(mw_REGISTER_Request_Base)-> value v_request sender vc_sent_label
{
setverdict(fail);
f_componentStop();
f_componentStop();
}
// any
[] SIPP.receive
{
setverdict(fail);
all timer.stop;
// f_setHeadersCANCEL(vc_cSeq);
// f_SendCANCEL(m_CANCEL_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_cancel_To, vc_via )); // difference between registration state or transaction state
action("Please de-register");
// catch invalid REGISTER
[] SIPP.receive(mw_REGISTER_Request_Base) -> value v_request sender vc_sent_label {
setverdict(fail);
f_componentStop();
}
// any
[] SIPP.receive {
setverdict(fail);
all timer.stop;
// f_setHeadersCANCEL(vc_cSeq);
// f_SendCANCEL(m_CANCEL_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_cancel_To, vc_via )); // difference between registration state or transaction state
action("Please de-register");
f_IMS_awaitDeRegistration();
f_componentStop();
f_componentStop();
}
}
 
1851,65 → 1973,52
/**
* @desc main default altstep to handle unexpected messages and timeout
* @verdict fail for all unexpected branches
*/
altstep a_altstep_AS() runs on SipComponent
{
*/
altstep a_altstep_AS(
) runs on SipComponent {
var Response v_response;
var Request v_request;
[] any timer.timeout
{
setverdict(fail);
all timer.stop;
[] any timer.timeout {
setverdict(fail);
all timer.stop;
}
// allow repeated INVITEs
[vc_ignore_invite] SIPP.receive(mw_INVITE_Request_Base)
{
repeat
[vc_ignore_invite] SIPP.receive(mw_INVITE_Request_Base) {
repeat;
}
//handle REGISTER requests
[] SIPP.receive(mw_REGISTER_Request_Base)-> value v_request sender vc_sent_label
{
// handle REGISTER requests
[] SIPP.receive(mw_REGISTER_Request_Base) -> value v_request sender vc_sent_label {
f_setHeadersOnReceiptOfREGISTER(v_request);
//vc_contact := vc_request.msgHeader.contact;
f_sendResponse(m_Response_Contact(c_statusLine200,vc_callId, vc_cSeq,vc_caller_From, vc_caller_To, vc_via, vc_contact));
// vc_contact := vc_request.msgHeader.contact;
f_sendResponse(m_Response_Contact(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, vc_contact));
repeat;
}
// according to SIP chap.8.1.3.2
[] SIPP.receive(mw_Response_Base(c_statusLine183,vc_callId, vc_cSeq))
{
}
// according to SIP chap.8.1.3.2
[] SIPP.receive(mw_Response_Base(c_statusLine183, vc_callId, vc_cSeq)) {
repeat;
}
}
// unexpected CANCEL is acknowledged to avoid retransmissions
[] SIPP.receive(mw_CANCEL_Request_Base(?))-> value v_request sender vc_sent_label
{
[] SIPP.receive(mw_CANCEL_Request_Base(?)) -> value v_request sender vc_sent_label {
setverdict(fail);
f_setHeadersOnReceiptOfRequest(v_request);
f_send200OK();
}
 
f_send200OK();
}
// unexpected BYE is acknowledged to avoid retransmissions
[] SIPP.receive(mw_BYE_Request_Base(?))-> value v_request sender vc_sent_label
{
[] SIPP.receive(mw_BYE_Request_Base(?)) -> value v_request sender vc_sent_label {
setverdict(fail);
f_setHeadersOnReceiptOfRequest(v_request);
f_setHeadersOnReceiptOfRequest(v_request);
f_send200OK();
}
[] SIPP.receive(mw_Response_Base(? ,vc_callId, vc_cSeq))-> value vc_response
{
}
[] SIPP.receive(mw_Response_Base(?, vc_callId, vc_cSeq)) -> value vc_response {
log("Response matched in DEFAULT!!!");
setverdict(fail);
repeat;
}
// any
[] SIPP.receive
{
setverdict(fail);
all timer.stop;
}
// any
[] SIPP.receive {
setverdict(fail);
all timer.stop;
}
}
}
}
} // module LibIms_Steps
/branches/v3/ttcn/LibIms_Templates.ttcn
1,4552 → 1,4601
/**
* @author STF 346, STF366, STF368, STF369, STF450, STF471
* @version $Id$
* @desc This module provides the types used by the test component
* for SIP-IMS tests. Module become from STF306 and STF334-336
* This module is part of LibImsV3.
* @author STF 346, STF366, STF368, STF369, STF450, STF471
* @version $Id$
* @desc This module provides the types used by the test component for SIP-IMS tests. Module become from STF306 and STF334-336 This module is part of LibImsV3.
*/
module LibIms_Templates {
// LibCommon
import from LibCommon_DataStrings all;
 
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 LibSip_MessageBodyTypes all;
//LibIms
import from LibIms_SIPTypesAndValues all;
import from LibIms_PIXITS all;
//LibXMLTypes
import from XSD all;
import from urn_ietf_params_xml_ns_resource_lists language "XSD" all
with {
extension "File:../xsd/ResourceList.xsd"
}
// 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 LibSip_MessageBodyTypes all;
 
import from urn_ietf_params_xml_ns_reginfo language "XSD" all except{type Contact}
with {
extension "File:../xsd/regInfo.xsd"
}
import from http_uri_etsi_org_ngn_params_xml_simservs_xcap language "XSD" all
with {
extension "File:../xsd/SupplementaryServices.xsd"
}
import from http_uri_etsi_org_ngn_params_xml_simservs_mcid language "XSD" all
with {
extension "File:../xsd/MCID.xsd"
}
import from NoTargetNamespace language "XSD" all
with {
extension "File:../xsd/Ims3gpp.xsd"
}
import from urn_ietf_params_xml_ns_conference_info language "XSD" all
with {
extension "File:../xsd/CONF.xsd"
}
import from http_uri_etsi_org_ngn_params_xml_simservs_pstn language "XSD" all
with {
extension "File:../xsd/PSTN.xsd"
}
import from urn_ietf_params_xml_ns_common_policy language "XSD" all
with {
extension "File:../xsd/common-policy.xsd"
}
import from http_uri_etsi_org_ngn_params_xml_comm_div_info language "XSD" all
with {
extension "File:../xsd/CDIVN.xsd"
}
import from urn_3gpp_ns_cw_1_0 language "XSD" all
with {
extension "File:../xsd/cw.xsd"
}
template(present) charstring mw_international_number_format := pattern "\\+\d+";//pattern "\+\d+";
// LibIms
import from LibIms_SIPTypesAndValues all;
 
template(present) NameAddr mw_SipUrl_SUTinterface(template(present) charstring p_host, template(present) integer p_port) :=
{
displayName := *,
addrSpec := {
scheme := "sip:",
components := { sip:= {
userInfo := *,
hostPort := {p_host, p_port}}},
urlParameters := *,
headers := *
}
}
template(present) Addr_Union mw_UE1_Addr_display := {nameAddr:={displayName:=PX_IMS_SUT_UE1_DISPLAY,addrSpec:=?}};
group Subfields{
import from LibIms_PIXITS all;
 
// LibXMLTypes
import from XSD all;
 
template(value) SipUrl m_SipUrl_currIpaddr_CSCF(template(value) SipUserProfile p_userprofile) := //* SIP-URL of the test system on SIP side
{
scheme := c_sipScheme, //* contains "sip"
components := { sip:= {
userInfo := omit, //* optional
hostPort :=
{
host := p_userprofile.currIpaddr, //* hostname, IPv4 or IPv6 as a charstring
portField := p_userprofile.currPort //* optional integer
}}},
urlParameters := omit,
headers := omit
}
//TODO STF471 check this
template(present) SemicolonParam_List mw_semicolonParams_realm (template charstring p_realm) :=
/*?;*/
superset({"realm",p_realm},{"nonce",?},{"algorithm","AKAv1-MD5"},{"ik",?},{"ck",?}) ;//Working with TTWorkbench// ERROR HERE! Superset operation must contain value list - no templates!
template(value) SemicolonParam_List m_semicolonParams_language (template(omit) charstring p_language):=
{{"language",p_language}}
template(present) SemicolonParam_List mw_semicolonParams_language (template charstring p_language):=
{{"language",p_language}}
template(value) SemicolonParam_List m_semicolonParams_isub (template(omit) charstring p_address):=
{{"isub",p_address}}
}
import from urn_ietf_params_xml_ns_resource_lists language "XSD" all
with {
extension "File:../xsd/ResourceList.xsd";
}
 
group HeaderFieldTemplates{
template(value) MinSE m_minSE(template(value) DeltaSec p_ds):=
{
fieldName := MIN_SE_E,
deltaSec:=p_ds,
minSeParam:=omit
}
template(present) PathValue mw_pathvalue (template(present) SipUrl p_sipUrl):=
{
nameAddr := {
displayName := *, // optional charstring
addrSpec := p_sipUrl // SipUrl
},
rrParam := *
}
import from urn_ietf_params_xml_ns_reginfo language "XSD" all except {type Contact;}
with {
extension "File:../xsd/regInfo.xsd";
}
 
template(value) Path m_path (template(value) SipUrl p_sipUrl) modifies m_path_TS :=
{
pathValues := {
{
nameAddr := {
displayName := omit, // optional charstring
addrSpec := p_sipUrl // SipUrl
},
rrParam := omit
}
}
}
template(value) Path m_path_TS := {
fieldName := PATH_E,
pathValues := {
{
nameAddr := {
displayName := omit, // optional charstring
addrSpec := {
scheme := c_sipScheme,
components := { sip:= {
userInfo := {
userOrTelephoneSubscriber := "registrar",
password := omit
},
hostPort := {
PX_IMS_TS_PCSCF_HOME_DOMAIN, PX_IMS_TS_PCSCF_PORT
}}},
urlParameters := { { id := "lr", paramValue := omit}},
headers := omit
}
},
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(present) Path mw_path (template(present) SipUrl p_sipUrl):=
{
fieldName := PATH_E,
pathValues := {mw_pathvalue(p_sipUrl)} // any number of SipUrl may occur before p_sipUrl
}
template(value) 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(value) PAssertedService m_pAssertedService (template(value) PAssertedServiceValue p_pAssertedServiceValue):=
{
fieldName := P_ASSERTED_SERVICE_E,
pAssertedServiceValue := p_pAssertedServiceValue
}
template(value) 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
}
}
import from http_uri_etsi_org_ngn_params_xml_simservs_xcap language "XSD" all
with {
extension "File:../xsd/SupplementaryServices.xsd";
}
 
template(value) PChargingVector m_pChargingVector(template(value) charstring p_icidValue, template(omit) SemicolonParam_List p_chargeParams)
modifies m_pChargingVector_icid_TS :=
{
icidValue := p_icidValue,
chargeParams := p_chargeParams
};
import from http_uri_etsi_org_ngn_params_xml_simservs_mcid language "XSD" all
with {
extension "File:../xsd/MCID.xsd";
}
 
import from NoTargetNamespace language "XSD" all
with {
extension "File:../xsd/Ims3gpp.xsd";
}
 
import from urn_ietf_params_xml_ns_conference_info language "XSD" all
with {
extension "File:../xsd/CONF.xsd";
}
 
import from http_uri_etsi_org_ngn_params_xml_simservs_pstn language "XSD" all
with {
extension "File:../xsd/PSTN.xsd";
}
 
import from urn_ietf_params_xml_ns_common_policy language "XSD" all
with {
extension "File:../xsd/common-policy.xsd";
}
 
import from http_uri_etsi_org_ngn_params_xml_comm_div_info language "XSD" all
with {
extension "File:../xsd/CDIVN.xsd";
}
 
import from urn_3gpp_ns_cw_1_0 language "XSD" all
with {
extension "File:../xsd/cw.xsd";
}
 
template(present) charstring mw_international_number_format := pattern "\\+\d+";
//NOTE STF471 change: icidValue extracted from chargeParams, chargeParams removed
template(value) PChargingVector m_pChargingVector_icid_TS :=
{
fieldName := P_CHARGING_VECTOR_E,
icidValue := c_icid_value,
chargeParams := omit
};
template(value) PChargingVector m_pChargingVector_origIoi_fixedValue(template(value) charstring p_homeDomain)
modifies m_pChargingVector_icid_TS := {
chargeParams := {
{id := c_icid_generated_at, paramValue := "192.1.1.10"},
{id := c_orig_ioi, paramValue := p_homeDomain}
}
}
template(value) PChargingVector m_pChargingVector_termIoi_fixedValue(template(value) charstring p_homeDomain)
modifies m_pChargingVector_icid_TS :=
{
chargeParams := {
{id:=c_icid_generated_at, paramValue :="192.1.1.10"},
{id:=c_term_ioi, paramValue := p_homeDomain}
}
}
template(value) PChargingVector m_pChargingVector_accessNetwInfo(template(value) charstring p_homeDomain)
modifies m_pChargingVector_icid_TS :=
{
chargeParams := {
{id:=c_term_ioi, paramValue := p_homeDomain},
{id:=c_access_network_charging_info, paramValue := "192.1.1.10"}
}
}
//NOTE STF471 change: icidValue added
template(present) PChargingVector mw_pChargingVector(template(present) charstring p_id, template charstring p_paramValue) :=
{
fieldName := P_CHARGING_VECTOR_E,
icidValue := ?,
chargeParams := superset({id := p_id, paramValue := p_paramValue})
}
template(present) NameAddr mw_SipUrl_SUTinterface(
template(present) charstring p_host,
template(present) integer p_port
) := {
displayName := *,
addrSpec := {
scheme := "sip:",
components := {
sip := {
userInfo := *,
hostPort := {p_host, p_port}
}
},
urlParameters := *,
headers := *
}
}
 
template(value) PMediaAuthorization m_pMediaAuthorization_fixedValue :=
{
fieldName := P_MEDIA_AUTHORIZATION_E,
pMediaAuthorizations := {"A"} // example
};
template(present) Addr_Union mw_UE1_Addr_display := {
nameAddr := {
displayName := PX_IMS_SUT_UE1_DISPLAY,
addrSpec := ?
}
}
 
group Subfields {
 
template(value) PEarlyMedia m_pEarlyMedia_sup :=
{fieldName := P_EARLY_MEDIA_E, em_param := {"supported"}};
template(value) SipUrl m_SipUrl_currIpaddr_CSCF(
template(value) SipUserProfile p_userprofile
) := {
scheme := c_sipScheme, //* contains "sip"
components := {
sip := {
userInfo := omit, //* optional
hostPort := {
host := p_userprofile.currIpaddr, //* hostname, IPv4 or IPv6 as a charstring
portField :=
p_userprofile
.currPort //* optional integer
}
}
},
urlParameters := omit,
headers := omit
}
 
// TODO STF471 check this
template(present) SemicolonParam_List mw_semicolonParams_realm(
template charstring p_realm
) :=
superset(
{
"realm",
p_realm
},
{
"nonce",
?
},
{
"algorithm",
"AKAv1-MD5"
},
{
"ik",
?
},
{
"ck",
?
}
);
template(value) ProxyRequire m_proxyRequire_secAgree :=
{
fieldName := PROXY_REQUIRE_E,
optionsTags := {"sec-agree"}
}
template(value) PVisitedNetworkID m_pVisitedNetworkID_TS :=
{
fieldName := P_VISITED_NETWORK_E,
vNetWorkSpec := {
{vNetworkSpecToken := "Visited ETSI 1", genericParams := omit}
}
}
template(present) PVisitedNetworkID mw_pVisitedNetworkID
modifies m_pVisitedNetworkID_TS :=
{
vNetWorkSpec := {
{vNetworkSpecToken := PX_IMS_SUT_PCSCF_VisitedNetworkID, genericParams := *}
}
}
template(value) SemicolonParam_List m_semicolonParams_language(
template(omit) charstring p_language
) := {
{
"language",
p_language
}
}
 
template(value) RecordRoute m_recordRoute_notmatching:=
{
fieldName := RECORD_ROUTE_E,
routeBody :=
{{
nameAddr :=
{
displayName := omit,
addrSpec :=
{
scheme := c_sipScheme, // contains "sip"
components := { 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(value) Require m_require := {
fieldName := REQUIRE_E,
optionsTags := {}
}
template(value) Require m_require_secAgree
modifies m_require :=
{
optionsTags := {"sec-agree"}
}
template(present) Require mw_require_path
modifies m_require :=
{
optionsTags := superset("path")
}
template(value) Route m_route_interface(template(value) ImsInterfaceProfile p_interfaceprofile)
modifies m_route_notmatching := {
routeBody := {
{
nameAddr := {
displayName := omit,
addrSpec := {
scheme := c_sipScheme, // contains "sip"
components := {
sip := {
userInfo := omit,
hostPort := {
host := p_interfaceprofile.SUTHomeDomain,
portField := omit
}
}
},
urlParameters := omit,
headers := omit
}
},
rrParam := omit
}
}
}
template(present) SemicolonParam_List mw_semicolonParams_language(
template charstring p_language
) := {
{
"language",
p_language
}
}
 
template(value) Route m_route_notmatching:=
{
fieldName := ROUTE_E,
routeBody :=
{{
nameAddr :=
template(value) SemicolonParam_List m_semicolonParams_isub(
template(omit) charstring p_address
) := {
{
displayName := omit,
addrSpec :=
"isub",
p_address
}
}
}
 
group HeaderFieldTemplates {
 
template(value) MinSE m_minSE(
template(value) DeltaSec p_ds
) := {
fieldName := MIN_SE_E,
deltaSec := p_ds,
minSeParam := omit
}
 
template(present) PathValue mw_pathvalue(
template(present) SipUrl p_sipUrl
) := {
nameAddr := {
displayName := *, // optional charstring
addrSpec := p_sipUrl // SipUrl
},
rrParam := *
}
 
template(value) Path m_path(
template(value) SipUrl p_sipUrl
) modifies m_path_TS := {
pathValues := {
{
scheme := c_sipScheme, // contains "sip"
components := { sip:= {
userInfo := {userOrTelephoneSubscriber := "unknown", password := omit},
hostPort :=
{
host := "unknown.domain.name", // hostname, IPv4 or IPv6 as a charstring
portField := omit
}}},
urlParameters := omit,
headers := omit
nameAddr := {
displayName := omit, // optional charstring
addrSpec := p_sipUrl // SipUrl
},
rrParam := omit
}
}
}
 
template(value) Path m_path_TS := {
fieldName := PATH_E,
pathValues := {
{
nameAddr := {
displayName := omit, // optional charstring
addrSpec := {
scheme := c_sipScheme,
components := {
sip := {
userInfo := {
userOrTelephoneSubscriber := "registrar",
password := omit
},
hostPort := {PX_IMS_TS_PCSCF_HOME_DOMAIN, PX_IMS_TS_PCSCF_PORT}
}
},
urlParameters := {
{
id := "lr",
paramValue := omit
}
},
headers := omit
}
},
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(present) Path mw_path(
template(present) SipUrl p_sipUrl
) := {
fieldName := PATH_E,
pathValues := {mw_pathvalue(p_sipUrl)} // any number of SipUrl may occur before p_sipUrl
}
 
template(value) 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(value) PAssertedService m_pAssertedService(
template(value) PAssertedServiceValue p_pAssertedServiceValue
) := {
fieldName := P_ASSERTED_SERVICE_E,
pAssertedServiceValue := p_pAssertedServiceValue
}
 
template(value) 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(value) PChargingVector m_pChargingVector(
template(value) charstring p_icidValue,
template(omit) SemicolonParam_List p_chargeParams
) modifies m_pChargingVector_icid_TS := {
icidValue := p_icidValue,
chargeParams := p_chargeParams
}
 
// NOTE STF471 change: icidValue extracted from chargeParams, chargeParams removed
template(value) PChargingVector m_pChargingVector_icid_TS := {
fieldName := P_CHARGING_VECTOR_E,
icidValue := c_icid_value,
chargeParams := omit
}
 
template(value) PChargingVector m_pChargingVector_origIoi_fixedValue(
template(value) charstring p_homeDomain
) modifies m_pChargingVector_icid_TS := {
chargeParams := {
{
id := c_icid_generated_at,
paramValue := "192.1.1.10"
},
{
id := c_orig_ioi,
paramValue := p_homeDomain
}
}
}
 
template(value) PChargingVector m_pChargingVector_termIoi_fixedValue(
template(value) charstring p_homeDomain
) modifies m_pChargingVector_icid_TS := {
chargeParams := {
{
id := c_icid_generated_at,
paramValue := "192.1.1.10"
},
{
id := c_term_ioi,
paramValue := p_homeDomain
}
}
}
 
template(value) PChargingVector m_pChargingVector_accessNetwInfo(
template(value) charstring p_homeDomain
) modifies m_pChargingVector_icid_TS := {
chargeParams := {
{
id := c_term_ioi,
paramValue := p_homeDomain
},
{
id := c_access_network_charging_info,
paramValue := "192.1.1.10"
}
}
}
 
// NOTE STF471 change: icidValue added
template(present) PChargingVector mw_pChargingVector(
template(present) charstring p_id,
template charstring p_paramValue
) := {
fieldName := P_CHARGING_VECTOR_E,
icidValue := ?,
chargeParams :=
superset(
{
id := p_id,
paramValue := p_paramValue
}
)
}
 
template(value) PMediaAuthorization m_pMediaAuthorization_fixedValue := {
fieldName := P_MEDIA_AUTHORIZATION_E,
pMediaAuthorizations := {"A"} // example
}
 
 
template(value) PEarlyMedia m_pEarlyMedia_sup := {
fieldName := P_EARLY_MEDIA_E,
em_param := {"supported"}
}
 
 
template(value) ProxyRequire m_proxyRequire_secAgree := {
fieldName := PROXY_REQUIRE_E,
optionsTags := {"sec-agree"}
}
 
template(value) PVisitedNetworkID m_pVisitedNetworkID_TS := {
fieldName := P_VISITED_NETWORK_E,
vNetWorkSpec := {
{
vNetworkSpecToken := "Visited ETSI 1",
genericParams := omit
}
}
}
 
template(present) PVisitedNetworkID mw_pVisitedNetworkID
modifies m_pVisitedNetworkID_TS := {
vNetWorkSpec := {
{
vNetworkSpecToken := PX_IMS_SUT_PCSCF_VisitedNetworkID,
genericParams := *
}
}
}
 
template(value) RecordRoute m_recordRoute_notmatching := {
fieldName := RECORD_ROUTE_E,
routeBody := {
{
nameAddr := {
displayName := omit,
addrSpec := {
scheme := c_sipScheme, // contains "sip"
components := {
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(value) Require m_require := {
fieldName := REQUIRE_E,
optionsTags := {}
}
 
template(value) Require m_require_secAgree
modifies m_require := {
optionsTags := {"sec-agree"}
}
 
template(present) Require mw_require_path
modifies m_require := {
optionsTags := superset("path")
}
 
template(value) Route m_route_interface(
template(value) ImsInterfaceProfile p_interfaceprofile
) modifies m_route_notmatching := {
routeBody := {
{
nameAddr := {
displayName := omit,
addrSpec := {
scheme := c_sipScheme, // contains "sip"
components := {
sip := {
userInfo := omit,
hostPort := {
host := p_interfaceprofile.SUTHomeDomain,
portField := omit
}
}
},
urlParameters := omit,
headers := omit
}
},
rrParam := omit
}
}
}
 
template(value) Route m_route_notmatching := {
fieldName := ROUTE_E,
routeBody := {
{
nameAddr := {
displayName := omit,
addrSpec := {
scheme := c_sipScheme, // contains "sip"
components := {
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(value) SessionExpires m_se(
template(value) DeltaSec p_ds
) modifies mw_se := {
deltaSec := p_ds
}
 
template(present) SessionExpires mw_se := {
fieldName := SESSION_EXPIRES_E,
deltaSec := ?,
seParam := omit
}
 
template(value) Supported m_supported := {
fieldName := SUPPORTED_E,
optionsTags := {}
}
 
template(value) Supported m_supported_timer
modifies m_supported := {
optionsTags := {"timer"}
}
 
template(value) Supported m_supported_histinfo
modifies m_supported := {
optionsTags := {"histinfo"}
}
 
 
template(value) Supported m_supported_fromChange
modifies m_supported := {
optionsTags := {"from-change"}
}
 
template(value) To m_To_targetRefreshRequest(
template(value) 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(value) ViaBody m_ViaBody_virtualUEinPCSCF(
template(value) charstring p_branch_val,
template(value) SipUserProfile p_userprofile
) := {
sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT),
sentBy := {
host := p_userprofile.contactIpaddr,
portField := p_userprofile.contactPort
},
rrParam := omit
} }
};
viaParams := {
{
id := c_branchId,
paramValue := p_branch_val
}
}
}
 
template(value) ViaBody m_ViaBody_virtual_XCSCF(
template(value) charstring p_branch_val,
template(value) SipUserProfile p_userprofile
) modifies m_ViaBody_virtualUEinPCSCF := {
sentBy := {
host := p_userprofile.currIpaddr,
portField := p_userprofile.currPort
}
}
 
template(value) SessionExpires m_se(template(value) DeltaSec p_ds)
modifies mw_se :=
{
deltaSec := p_ds
}
template(present) SessionExpires mw_se :=
{
fieldName := SESSION_EXPIRES_E,
deltaSec:=?,
seParam := omit
}
template(value) Supported m_supported := {
fieldName := SUPPORTED_E,
optionsTags := {}
}
template(value) Supported m_supported_timer
modifies m_supported :=
{
optionsTags := {"timer"}
}
template(value) Supported m_supported_histinfo
modifies m_supported :=
{
optionsTags := {"histinfo"}
}
template(value) Supported m_supported_fromChange
modifies m_supported :=
{
optionsTags := {"from-change"}
}
template(value) To m_To_targetRefreshRequest(template(value) 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(value) ViaBody m_ViaBody_virtualUEinPCSCF(template(value) charstring p_branch_val,
template(value) SipUserProfile p_userprofile) := {
sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT),
sentBy := {
host := p_userprofile.contactIpaddr,
portField := p_userprofile.contactPort
},
viaParams := {
{id := c_branchId, paramValue := p_branch_val}
}
}
template(value) ViaBody m_ViaBody_virtual_XCSCF(template(value) charstring p_branch_val,
template(value) SipUserProfile p_userprofile)
modifies m_ViaBody_virtualUEinPCSCF := {
sentBy := {
host := p_userprofile.currIpaddr,
portField := p_userprofile.currPort
}
}
template(value) Via m_via_notmatching := {
fieldName := VIA_E,
viaBody := {
{
sentProtocol := m_SentProtocol("UDP"),
sentBy := {
host := "unknown.domain.name",
portField := 10000
},
viaParams := {
{
id := c_branchId,
paramValue := "abcd0000"
}
}
}
}
}
 
template(value) Via m_via_notmatching:= {
fieldName := VIA_E,
viaBody := {
{
sentProtocol := 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(value) WwwAuthenticate m_wwwAuthenticate (template(value) Challenge p_challenge) :=
{
fieldName := WWW_AUTHENTICATE_E,
challenge := p_challenge
}
/**
* @desc WWW-Authenticate header field
* @param p_challenge value
*/
template(value) WwwAuthenticate m_wwwAuthenticate(
template(value) Challenge p_challenge
) := {
fieldName := WWW_AUTHENTICATE_E,
challenge := p_challenge
}
 
/**
* @desc WWW-Authenticate header field
* @param p_challenge value
*/
template(present) WwwAuthenticate mw_wwwAuthenticate (template(present) SemicolonParam_List p_semicolonParam_List) :=
{
fieldName := WWW_AUTHENTICATE_E,
challenge := {
digestCln := p_semicolonParam_List // set of GenericParam
}
}
/**
* @desc WWW-Authenticate header field
* @param p_challenge value
*/
template(present) WwwAuthenticate mw_wwwAuthenticate(
template(present) SemicolonParam_List p_semicolonParam_List
) := {
fieldName := WWW_AUTHENTICATE_E,
challenge := {
digestCln := p_semicolonParam_List // set of GenericParam
}
}
 
template(present) SemicolonParam_List mw_challenge := superset(mw_ck, mw_ik);
 
template(present) GenericParam mw_ck := {
"ck", *
}
template(present) SemicolonParam_List mw_challenge := superset(mw_ck,mw_ik);
template(present) GenericParam mw_ck := {"ck",*};
template(present) GenericParam mw_ik := {"ik",*}
/**
template(present) GenericParam mw_ik := {
"ik", *
}
 
 
/**
* @desc AcceptContact header field
* @param p_semicolonParam_List value
*/
template(value) AcceptContact m_acceptContact(template(omit) SemicolonParam_List p_semicolonParam_List)
:= {
template(value) AcceptContact m_acceptContact(
template(omit) SemicolonParam_List p_semicolonParam_List
) := {
fieldName := ACCEPT_CONTACT_E,
acValues := {
{
wildcard := c_WILDCARD,
wildcard := c_WILDCARD,
acRcParams := p_semicolonParam_List // set of GenericParam
}
}
}
 
/**
* @desc Authenticate header field
* @param p_semicolonParam_List value
*/
template(present) 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(present) SubscriptionState mw_subscriptionState(template(present) charstring p_state) := {
fieldName := SUBSCRIPTION_STATE_E,
subState := p_state,
substateParams := omit
}
//[3455/5.1]
template(value) PAssociatedURI m_pAssociatedURI (template(value) NameAddr p_nameAddr) := {
fieldName := P_ASSOCIATED_URI_E,
nameAddrList := {
{nameAddr:=p_nameAddr, genericParams:=omit}
}
}
template(present) SecurityServer mw_securityServer (template(present) SecurityMechanism_List p_securityMechanism_List):= {
fieldName := SECURITY_SERVER_E,
securityMech := p_securityMechanism_List
}
/**
* @desc Authenticate header field
* @param p_semicolonParam_List value
*/
template(present) 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(value) SecurityClient m_securityClient (template(value) SecurityMechanism_List p_securityMechanism_List):= {
fieldName := SECURITY_CLIENT_E,
securityMech := p_securityMechanism_List
}
template(value) SecurityVerify m_securityVerify (template(value) SecurityMechanism_List p_securityMechanism_List):= {
fieldName := SECURITY_VERIFY_E,
securityMech := p_securityMechanism_List
}
template(value) RSeq m_rseq9999 := {
fieldName:=RSEQ_E,
responseNum:= 9999 //Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
}
template(value) Expires m_expires(template(value) integer p_deltaSec) := {
fieldName := EXPIRES_E,
deltaSec := int2str(valueof(p_deltaSec))
}
} // end group HeaderFieldTemplates
template(present) SubscriptionState mw_subscriptionState(
template(present) charstring p_state
) := {
fieldName := SUBSCRIPTION_STATE_E,
subState := p_state,
substateParams := omit
}
 
group MessageBodyTemplates {
group XMLTemplates {
template(value) XmlBody m_XmlBody_ConfInfo(template(value) Conference_type p_confInfo) :=
{
conference := p_confInfo
}
template(value) XmlBody m_XmlBody_CW(template(value) Ims_cw p_cw) :=
{
cw := p_cw
}
template(value) XmlBody m_XmlBody_CUG(template(value) Cug p_cug) :=
{
cug := p_cug
}
template(value) XmlBody m_XmlBody_MCID(template(value) Mcid p_mcid) :=
{
mcid := p_mcid
}
template(value) XmlBody m_XmlBody_PSTNTransit(template(value) PSTN_transit p_pstn) :=
{
pstnTransit := p_pstn
}
template(value) XmlBody m_XmlBody_simservs(template(value) Simservs p_simservs) :=
{
simservs := p_simservs
}
template(value) XmlBody m_XmlBody_ACR_ICB(template(value) Incoming_communication_barring p_icb) := {
simservs := {
attr := omit,//TODO:CR
absServiceGroup_list := {},
extensions := {
elem_list := valueof(p_icb.attr)
}
}
}
template(value) XmlBody m_XmlBody_ACR_OCB(template(value) Outgoing_communication_barring p_ocb) := {
simservs := {
attr := omit,//TODO:CR
absServiceGroup_list := {},
extensions := {
elem_list := valueof(p_ocb.attr)
}
}
}
template(value) XmlBody m_XmlBody_CDIVN(template(value) Comm_div_info_type p_cdivn) :=
{
cdivn := p_cdivn
}
template(value) XmlBody m_XmlBody_Reginfo(template(value) Reginfo p_regInfo) :=
{
regInfo := p_regInfo
}
template(value) MessageBody m_messageBodyXML(template(value) XmlBody p_xmlBody) :=
{
xmlBody := p_xmlBody
}
template(value) Reginfo m_reginfo (template(value) XSD.AnyURI p_user):= {
full,
0,
{m_registration(p_user)},
{}
}
template(value) Registration m_registration (template(value) XSD.AnyURI p_user):= {
p_user, // XSD.anyURI aor
"a7", // XSD.string id
init, //enumerated {active,init,terminated} state,
{}, // record of Contact contact_list optional,
{} // record of anytype elem_list optional
}
template(present) XmlBody mw_XmlBody_ConfInfo(template(present) Conference_type p_confInfo) :=
{
conference := p_confInfo
}
template(present) XmlBody mw_XmlBody_CUG(template(present) Cug p_cug) :=
{
cug := p_cug
}
template(present) XmlBody mw_XmlBody_MCID(template(present) Mcid p_mcid) :=
{
mcid := p_mcid
}
template(present) XmlBody mw_XmlBody_PSTNTransit(template(present) PSTN_transit p_pstn) :=
{
pstnTransit := p_pstn
}
template(present) XmlBody mw_XmlBody_CDIVN(template(present) Comm_div_info_type p_cdivn) :=
{
cdivn := p_cdivn
}
template(present) XmlBody mw_XmlBody_simservs(template(present) Simservs p_simservs) :=
{
simservs := p_simservs
}
template(present) XmlBody mw_XmlBody_ResourceLists(template(present) Resource_lists p_resourceLists) :=
{
resourceLists := p_resourceLists
}
template(present) XmlBody mw_XmlBody_Reginfo(template(present) Reginfo p_regInfo) :=
{
regInfo := p_regInfo
}
}// end group XMLTemplates
// [3455/5.1 ]
template(value) PAssociatedURI m_pAssociatedURI(
template(value) NameAddr p_nameAddr
) := {
fieldName := P_ASSOCIATED_URI_E,
nameAddrList := {
{
nameAddr := p_nameAddr,
genericParams := omit
}
}
}
 
group ACR_CBTemplates {
template(value) Incoming_communication_barring m_ICB(template(value) RuleType p_ruleType) :=
{
active := omit,
attr := omit,//TODO:CR
ruleset := {
{p_ruleType}
}
}
template(value) Outgoing_communication_barring m_OCB(template(value) RuleType p_ruleType) :=
{
active := omit,
attr := omit,//TODO:CR
ruleset := {
{p_ruleType}
}
}
template(value) RuleType m_ruleType_actionFalse(template(value) ConditionsType p_condition) :=
{
id := "rule66",
conditions := p_condition,
actions := {elem_list:={"<false/>"}},
transformations := omit
}
template(present) SecurityServer mw_securityServer(
template(present) SecurityMechanism_List p_securityMechanism_List
) := {
fieldName := SECURITY_SERVER_E,
securityMech := p_securityMechanism_List
}
 
template(value) ConditionsType m_conditionsType_identity(template(value) charstring p_id) := {
{
{
identity_list := {
{
{
{
one := {
id := p_id,
elem := omit
}
}
}
}
}
}
}
}
} //end group ACR_CBTemplates
template(value) SecurityClient m_securityClient(
template(value) SecurityMechanism_List p_securityMechanism_List
) := {
fieldName := SECURITY_CLIENT_E,
securityMech := p_securityMechanism_List
}
 
group CUGTemplates {
template(value) Cug m_CUG (
template(omit) CugRequestType p_crt,
template(omit) NetworkIdentityType p_nit,
template(omit) SixteenbitType p_cibc,
template(omit) TwobitType p_cci
):= {
active := omit,
attr := omit,//TODO:CR
cugCallOperation := p_crt,
networkIndicator := p_nit,
cugInterlockBinaryCode := p_cibc,
cugCommunicationIndicator :=p_cci
}
template(present) Cug mw_CUG (
template CugRequestType p_crt,
template NetworkIdentityType p_nit,
template SixteenbitType p_cibc,
template TwobitType p_cci
):= {
active := omit,
attr := ?,
cugCallOperation := p_crt,
networkIndicator := p_nit,
cugInterlockBinaryCode := p_cibc,
cugCommunicationIndicator := p_cci
}
template(value) CugRequestType m_cugReqType(template(value) boolean p_outAccessRequest,
template(value) CugIndexType p_cugIndex) := {
outgoingAccessRequest := p_outAccessRequest,
cugIndex := p_cugIndex
}
template(value) SecurityVerify m_securityVerify(
template(value) SecurityMechanism_List p_securityMechanism_List
) := {
fieldName := SECURITY_VERIFY_E,
securityMech := p_securityMechanism_List
}
 
template(present) CugRequestType mw_cugReqType(template(present) boolean p_outAccessRequest,
template(present) CugIndexType p_cugIndex) :=
{
outgoingAccessRequest := p_outAccessRequest,
cugIndex := p_cugIndex
}
}//end group CUGTemplates
template(value) RSeq m_rseq9999 := {
fieldName := RSEQ_E,
responseNum := 9999 // Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
}
 
group CWTemplates {
template(value) Expires m_expires(
template(value) integer p_deltaSec
) := {
fieldName := EXPIRES_E,
deltaSec := int2str(valueof(p_deltaSec))
}
 
template(value) Ims_cw m_CW(template(value) TEmptyType p_cwi) := {
attr := omit,//TODO:CR
communication_waiting_indication := p_cwi,
elem_list := {}
}
template(present) Ims_cw mw_ims_cw(template(present) TEmptyType p_cwi) := {
attr := ?,
communication_waiting_indication := p_cwi,
elem_list := ?
}
}//end group CWTemplates
 
group MCIDTemplates {
template(value) Mcid m_mcid_request_mcidIndicatorTrue :=
{
choice := {
request := {
mcidRequestIndicator := "1",
holdingIndicator := "0"
}
}
}
template(value) Mcid m_mcid_request_mcidIndicatorTrue_holdIndTrue
modifies m_mcid_request_mcidIndicatorTrue :=
{
choice := {
request := {
holdingIndicator := "1"
}
}
}
template(present) Mcid mw_mcid_request_mcidIndicatorTrue
modifies m_mcid_request_mcidIndicatorTrue:=
{
choice := {
request := {
holdingIndicator := ?
}
}
}
template(value) Mcid m_mcid_response_mcidIndicatorTrue :=
{
choice := {
response := {
mcidResponseIndicator := "1",
holdingProvidedIndicator := "0"
}
}
}
template(present) Mcid mw_mcid_response_mcidIndicatorTrue
modifies m_mcid_response_mcidIndicatorTrue :=
{
choice := {
response := {
holdingProvidedIndicator := ?
}
}
}
template(present) Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndFalse
modifies mw_mcid_response_mcidIndicatorTrue :=
{
choice := {
response := {
holdingProvidedIndicator := "0"
}
}
}
template(present) Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndTrue
modifies mw_mcid_response_mcidIndicatorTrue :=
{
choice := {
response := {
holdingProvidedIndicator := "1"
}
}
}
} // end group HeaderFieldTemplates
 
} //end group MCIDTemplates
group MessageBodyTemplates {
 
group PSTNTemplates {
template(value) PSTN_transit m_PSTN_transit_BC1(template(value) BearerCapabilityType p_bct) :=
{
bearerInfomationElement_list := {p_bct},
highLayerCompatibility_list := {},
lowLayerCompatibility := omit,
progressIndicator_list := {},
display_list := {}
}
group XMLTemplates {
 
template(value) PSTN_transit m_PSTN_transit_BC2(template(value) BearerCapabilityType p_bct,
template(value) BearerCapabilityType p_bct2)
modifies m_PSTN_transit_BC1 :=
{
bearerInfomationElement_list := {p_bct, p_bct2}
}
template(value) XmlBody m_XmlBody_ConfInfo(
template(value) Conference_type p_confInfo
) := {
conference := p_confInfo
}
 
template(present) PSTN_transit mw_PSTN_transit_bc(template(present) BearerCapabilityType p_bct,
template(present) BearerCapabilityType p_bct2) :=
{
bearerInfomationElement_list := {p_bct, p_bct2},
highLayerCompatibility_list := {*, *},
lowLayerCompatibility := *,
progressIndicator_list := {*},
display_list := {*}
}
template(value) PSTN_transit m_PSTN_transit_BC1_HLC1(template(value) BearerCapabilityType p_bct,
template(value) HighLayerCompatibilityType p_hlc)
modifies m_PSTN_transit_BC1 :=
{
highLayerCompatibility_list := {p_hlc}
}
template(value) XmlBody m_XmlBody_CW(
template(value) Ims_cw p_cw
) := {
cw := p_cw
}
 
template(value) PSTN_transit m_PSTN_transit_BC1_HLC2(template(value) BearerCapabilityType p_bct,
template(value) HighLayerCompatibilityType p_hlc,
template(value) HighLayerCompatibilityType p_hlc2)
modifies m_PSTN_transit_BC1_HLC1 := {
highLayerCompatibility_list := {p_hlc, p_hlc2}
}
template(value) PSTN_transit m_PSTN_transit_BC1_LLC(template(value) BearerCapabilityType p_bct,
template(value) LowLayerCompatibilityType p_llc)
modifies m_PSTN_transit_BC1 :=
{
lowLayerCompatibility := p_llc
}
template(value) XmlBody m_XmlBody_CUG(
template(value) Cug p_cug
) := {
cug := p_cug
}
 
template(value) PSTN_transit m_PSTN_transit_BC1_PI1(template(value) BearerCapabilityType p_bct,
template(value) ProgressIndicatorType p_pi1)
modifies m_PSTN_transit_BC1 :=
{
progressIndicator_list := {p_pi1}
}
template(value) XmlBody m_XmlBody_MCID(
template(value) Mcid p_mcid
) := {
mcid := p_mcid
}
 
template(value) PSTN_transit m_PSTN_transit_BC1_PI2(template(value) BearerCapabilityType p_bct,
template(value) ProgressIndicatorType p_pi1,
template(value) ProgressIndicatorType p_pi2)
modifies m_PSTN_transit_BC1_PI1 :=
{
progressIndicator_list := {p_pi1, p_pi2}
}
template(value) XmlBody m_XmlBody_PSTNTransit(
template(value) PSTN_transit p_pstn
) := {
pstnTransit := p_pstn
}
 
template(value) PSTN_transit m_PSTN_transit_BC1_PI3(template(value) BearerCapabilityType p_bct,
template(value) ProgressIndicatorType p_pi1,
template(value) ProgressIndicatorType p_pi2,
template(value) ProgressIndicatorType p_pi3)
modifies m_PSTN_transit_BC1_PI2 :=
{
progressIndicator_list := {p_pi1, p_pi2, p_pi3}
}
template(value) XmlBody m_XmlBody_simservs(
template(value) Simservs p_simservs
) := {
simservs := p_simservs
}
 
template(value) PSTN_transit m_PSTN_transit_BC1_HLC1_PI1(template(value) BearerCapabilityType p_bct,
template(value) HighLayerCompatibilityType p_hlc,
template(value) ProgressIndicatorType p_pi1)
modifies m_PSTN_transit_BC1_HLC1 := {
progressIndicator_list := {p_pi1}
}
template(value) BearerCapabilityType m_BearerCapabilityType (template(value) Bit5 p_InfoTrfCap):= {
bCoctet3 := {
codingStandard := "00", //Coding standard = CCITT standardized coding
informationTransferCabability := bit2str(valueof(p_InfoTrfCap))//Information transfer capability
},
bCoctet4 := {
transferMode := "00", //Coding standard = CCITT standardized coding
informationTransferRate := "10000" //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(present) BearerCapabilityType mw_BearerCapabilityType(template(present) BCOctet3Type p_BCOctet3Type,
template(present) BCOctet4Type p_BCOctet4Type) := {
bCoctet3 := p_BCOctet3Type,
bCoctet4 := p_BCOctet4Type,
bCoctet4_1 := * ,
bCoctet5 := * ,
bCoctet5a := * ,
bCoctet5bV110 := * ,
bCoctet5bV120 := * ,
bCoctet5c := * ,
bCoctet5d := * ,
bCoctet6 := * ,
bCoctet7 := * ,
bCoctet7a := * ,
bCoctet7b := *
}
template(value) XmlBody m_XmlBody_ACR_ICB(
template(value) Incoming_communication_barring p_icb
) := {
simservs := {
attr := omit, // TODO:CR
absServiceGroup_list := {},
extensions := {
elem_list := valueof(p_icb.attr)
}
}
}
 
template(present) BearerCapabilityType mw_BearerCapabilityType_TrfCap(template(value) Bit5 p_InfoTrfCap)
modifies m_BearerCapabilityType := {
bCoctet4_1 := * ,
bCoctet5 := * ,
bCoctet5a := * ,
bCoctet5bV110 := * ,
bCoctet5bV120 := * ,
bCoctet5c := * ,
bCoctet5d := * ,
bCoctet6 := * ,
bCoctet7 := * ,
bCoctet7a := * ,
bCoctet7b := *
}
template(value) XmlBody m_XmlBody_ACR_OCB(
template(value) Outgoing_communication_barring p_ocb
) := {
simservs := {
attr := omit, // TODO:CR
absServiceGroup_list := {},
extensions := {
elem_list := valueof(p_ocb.attr)
}
}
}
 
template(value) ProgressIndicatorType m_ProgressIndicatorType (template(value) Bit7 p_progDesc) := {
progressOctet3 := {
codingStandard := "00",
location := "0000"
},
progressOctet4 := {
progressDescription := bit2str(valueof(p_progDesc))
}
}
template(present) ProgressIndicatorType mw_ProgressIndicatorType (template(present) ProgressOctet3Type p_ProgressOctet3Type,
template(present) ProgressOctet4Type p_ProgressOctet4Type) := {
progressOctet3 := p_ProgressOctet3Type,
progressOctet4 := p_ProgressOctet4Type
}
template(value) LowLayerCompatibilityType m_LowLayerCompatibilityType (template(value) Bit5 p_InfoTrfCap) := {
lLOctet3 := {
codingStandard := "00", //Coding standard = CCITT standardized coding
informationTransferCapability := bit2str(valueof(p_InfoTrfCap)) //Information transfer capability
},
lLOctet3a := omit,
lLOctet4 := {
transferMode := "00", //Coding standard = CCITT standardized coding
informationTransferRate := "10000" //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 := {
layer3Identification := "10", //TODO check value and if parameter is mandatory
userInfoLayer3Protocol := "10000" //TODO check value and if parameter is mandatory
},
lLOctet7aUserSpecific := omit,
lLOctet7aX25 := omit,
lLOctet7bX25 := omit,
lLOctet7c := omit,
lLOctet7aTR9577 := omit,
lLOctet7bTR9577 := omit
}
template(present) LowLayerCompatibilityType mw_LowLayerCompatibilityType(template(present) LLOctet3Type p_LLOctet3,
template(present) LLOctet4Type p_LLOctet4,
template(present) 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(value) HighLayerCompatibilityType m_HighLayerCompatibilityType(template(value) Bit7 p_HLOctet4) := {
hLOctet3 := {
codingStandard :="00",
interpretation :="100",
presentationMethod := "01"
},
hLOctet4 := {
highLayerCharacteristics := bit2str(valueof(p_HLOctet4))
},
hLOctet4aMaintenance := omit,
hLOctet4Audio := omit
}
template(value) XmlBody m_XmlBody_CDIVN(
template(value) Comm_div_info_type p_cdivn
) := {
cdivn := p_cdivn
}
 
template(present) HighLayerCompatibilityType mw_HighLayerCompatibilityType(template(present) HLOctet3Type p_HLOctet3,
template(present) HLOctet4Type p_HLOctet4):= {
hLOctet3 := p_HLOctet3,
hLOctet4 := p_HLOctet4,
hLOctet4aMaintenance := *,
hLOctet4Audio := *
}
template(value) XmlBody m_XmlBody_Reginfo(
template(value) Reginfo p_regInfo
) := {
regInfo := p_regInfo
}
 
} //end group PSTNTemplates
template(value) MessageBody m_messageBodyXML(
template(value) XmlBody p_xmlBody
) := {
xmlBody := p_xmlBody
}
 
group CDIVNTemplates {
/* general CDIVN subscription */
template(value) Comm_div_info_type m_CDIVN_sub := {
entity := "comm-div-info",
comm_div_subs_info := {
attr := omit,//TODO:CR
comm_div_selection_criteria := {
attr := omit,//TODO:CR
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,
elem_list := {}
},
comm_div_ntfy_trigger_criteria := omit,
comm_div_info_selection_criteria := omit,
elem_list := {}
},
comm_div_ntfy_info := omit,
elem_list := {}
}
template(value) Reginfo m_reginfo(
template(value) XSD.AnyURI p_user
) := {
full,
0,
{m_registration(p_user)},
{}
}
 
template(value) Registration m_registration(
template(value) XSD.AnyURI p_user
) := {
p_user, // XSD.anyURI aor
"a7", // XSD.string id
init, // enumerated {active,init,terminated} state,
{}, // record of Contact contact_list optional,
{} // record of anytype elem_list optional
}
 
} // end grouup CDIVNTemplates
template(present) XmlBody mw_XmlBody_ConfInfo(
template(present) Conference_type p_confInfo
) := {
conference := p_confInfo
}
 
group ResourceListsTemplates {
template(present) XmlBody mw_XmlBody_CUG(
template(present) Cug p_cug
) := {
cug := p_cug
}
 
template(value) Resource_lists m_ResourceList_2Users(
template(value) EntryType p_user1,
template(value) EntryType p_user2
) :=
{
sequence_list := {
{
list := {
name := omit,
attr := omit,//TODO:CR
display_name := omit,
sequence_list := {
{
choice := {
entry := p_user1
}
},
{
choice := {
entry := p_user2
}
}
},
elem_list := {}
}
}
}
}
template(value) EntryType m_EntryUser(template(value) SipUrl p_user) := {
uri :=
p_user.components.sip.userInfo.userOrTelephoneSubscriber & "@" &
p_user.components.sip.hostPort.host,
attr := omit,//TODO:CR
display_name := omit,
elem_list := {}
}
}// end grouup ResourceListsTemplates
template(present) XmlBody mw_XmlBody_MCID(
template(present) Mcid p_mcid
) := {mcid := p_mcid}
 
group Ims3gppTemplates {
template(present) TIMS3GPP mw_Ims_3gpp_CW := {
version := 1.0,
attr := *,
choice := {
alternative_service := {
attr := *,
type_ := ?,
reason := ?,
elem_list := ?
}
},
elem_list := ?
}
} // end group Ims3gpp
template(present) XmlBody mw_XmlBody_PSTNTransit(
template(present) PSTN_transit p_pstn
) := {
pstnTransit := p_pstn
}
 
group CONFTemplates {
template(value) XSD.Boolean boolXSD_true := true;
template(value) XSD.Boolean boolXSD_false := false;
template(value) urn_ietf_params_xml_ns_conference_info.Media_type m_mediatype_status(template(value) Media_status_type p_status):= {
id:="1",
attr := omit,//TODO:CR
display_text :=omit,
type_ :=omit,
label_ :=omit,
src_id:=omit,
status:= p_status,
elem_list:={}
}
template(value) Endpoint_type m_endpoint(
template(omit) charstring p_Uri,
template(omit) Endpoint_status_type p_epStatus,
template(omit) Joining_type p_joinMethod,
template(omit) Disconnection_type p_discMethod,
template(value) urn_ietf_params_xml_ns_conference_info.Media_type p_mediastatus
):= {
entity:=p_Uri,
state:=full,
attr := omit,//TODO:CR
display_text:=omit,
referred:=omit,
status:=p_epStatus,
joining_method:=p_joinMethod,
joining_info:=omit,
disconnection_method:=omit,
disconnection_info:=omit,
media_list:={p_mediastatus},// optional,
call_info:=omit,
elem_list:={}
}
template(value) User_type m_1user (template(omit) charstring p_Uri,
template(value) Endpoint_type p_endpoint) := {
entity:=p_Uri,
state:=full,
attr := omit,//TODO:CR
display_text:=omit,
associated_aors:=omit,
roles:=omit,
languages :=omit,
cascaded_focus :=omit,
endpoint_list:={p_endpoint},// optional,
elem_list:={}
}
template(value) Users_type m_users_1user_full(template(value) User_type p_user) :={
state:=full,
attr := omit,//TODO:CR
user_list:={p_user},
elem_list:={}
}
template(value) Users_type m_users_2user_full(template(value) User_type p_user,
template(value) User_type p_user2)
modifies m_users_1user_full :={
user_list:={p_user,p_user2}
}
template(value) Conference_state_type m_conference_state(template(value) UnsignedInt p_nUsers,
template(value) boolean p_active,
template(value) boolean p_locked) := {
attr := omit,//TODO:CR
user_count:=p_nUsers,
active:=p_active,
locked:=p_locked,
elem_list:= {}
}
template(present) XmlBody mw_XmlBody_CDIVN(
template(present) Comm_div_info_type p_cdivn
) := {
cdivn := p_cdivn
}
 
template(value) Conference_type m_ci_cUri_cState_userEntity(template(value) charstring p_cUri,
template(value) Conference_state_type p_cState,
template(value) Users_type p_users ) := {
entity := p_cUri,
state := full,
version := 1,
attr := omit,//TODO:CR
conference_description := omit,
host_info := omit,
conference_state := p_cState,
users := p_users,
sidebars_by_ref := omit,
sidebars_by_val := omit,
elem_list := {}
}
template(present) Conference_type mw_conferenceInfo_active := {
entity := ?,
state := *,
version := *,
attr := *,
conference_description := *,
host_info := *,
conference_state := ?,
users := {
state := ?,
attr := *,
user_list := {
{
entity := *,
state := *,
attr := *,
display_text := *,
associated_aors := *,
roles := *,
languages := *,
cascaded_focus := *,
endpoint_list := {
{
entity := *,
state := *,
attr := *,
display_text := *,
referred := *,
status := connected,
joining_method := dialed_in,
joining_info := *,
disconnection_method := *,
disconnection_info := *,
media_list := ?,//TODO:CR
call_info := *,
elem_list := ?
}
},
elem_list := ?
}
},
elem_list := {}
},
sidebars_by_ref := *,
sidebars_by_val := *,
elem_list := ?
}
}
} // end group MessageBodyTemplates
group MessageTemplates {
template(present) XmlBody mw_XmlBody_simservs(
template(present) Simservs p_simservs
) := {
simservs := p_simservs
}
 
group modified_templates {
template(present) XmlBody mw_XmlBody_ResourceLists(
template(present) Resource_lists p_resourceLists
) := {
resourceLists := p_resourceLists
}
 
group request_send {
template(value) ACK_Request m_ACK_Request_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Route p_route)
modifies m_ACK_Request_Base := {
msgHeader := {route := p_route}
}
template(value) ACK_Request m_ACK_Request_AS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute)
modifies m_ACK_Request_IMS := {
msgHeader := {route := p_route, recordRoute := p_recordRoute}
}
template(value) ACK_Request m_ACK_Request_sdp_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) MessageBody p_mb,
template(omit) Route p_route)
modifies m_ACK_Request_Base := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication),
route := p_route
},
messageBody := p_mb
}
template(value) ACK_Request m_ACK_Request_Mime_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template MessageBody p_mb,
template(omit) Route p_route)
modifies m_ACK_Request_Base := {
msgHeader := {
contentLength := {
fieldName := CONTENT_LENGTH_E,
len:= f_MessageBodyLength(valueof(p_mb))
},
contentType := {
fieldName := CONTENT_TYPE_E,
mediaType := c_mimeMultipart
},
route := p_route
},
messageBody := p_mb
}
template(present) XmlBody mw_XmlBody_Reginfo(
template(present) Reginfo p_regInfo
) := {
regInfo := p_regInfo
}
 
template(value) BYE_Request m_BYE_Request_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute := omit
) modifies m_BYE_Request_Base := {
msgHeader := {
route := p_route,
recordRoute := p_recordRoute //used in case of AS as TS - for ISC interface
}
} // End of temlate m_BYE_Request_IMS
template(value) BYE_Request m_BYE_Request_Reason_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Route p_route,
template(value) charstring p_cause)
modifies m_BYE_Request_Base := {
msgHeader := {
reason := mw_Reason(p_cause),
route := p_route
}
}
template(value) BYE_Request m_BYE_Request_UserToUser_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Route p_route,
template(value) UserToUser.uuiData p_U2UData)
modifies m_BYE_Request_Base := {
msgHeader := {
route := p_route,
userToUser := m_UserToUserData(p_U2UData)
}
}
template(value) BYE_Request m_BYE_Request_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) 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(value) CANCEL_Request m_CANCEL_Request_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Route p_route)
modifies m_CANCEL_Request_Base := {
msgHeader := {route := p_route}
}
template(value) CANCEL_Request m_CANCEL_Request_Reason_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Route p_route,
template(value) integer p_cause)
modifies m_CANCEL_Request_IMS := {
msgHeader := {reason := m_Reason(p_cause)}
}
template(value) CANCEL_Request m_CANCEL_Request_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Route p_route)
modifies m_CANCEL_Request_IMS := {
}
/**
* @desc INFO message
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_mb
*/
template(value) INFO_Request m_INFO_Request_IMS_Base(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) MessageBody p_mb)
modifies m_INFO_Request_Base := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(p_mb))
},
messageBody := p_mb
}
/**
* @desc INFO message
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_mb
*/
template(value) INFO_Request m_INFO_Request_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) MessageBody p_mb)
modifies m_INFO_Request_IMS_Base := {
msgHeader := {
contentType := m_contentType(c_sdpApplication)
}
}
/**
* @desc INFO message
* @desc
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_mb
*/
template(value) INFO_Request m_INFO_Request_Mime_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) MessageBody p_mb)
modifies m_INFO_Request_IMS_Base := {
msgHeader := {
contentType := m_contentType(c_mimeMultipart)
}
}
template(value) INFO_Request m_INFO_Request_Xml_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) MessageBody p_mb)
modifies m_INFO_Request_IMS_Base := {
msgHeader := {
contentType := m_contentType(c_xmlApplication)
}
}
template(value) INVITE_Request m_INVITE_Request_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(value) MessageBody p_mb)
modifies m_INVITE_Request_noBody_UE := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication)
},
messageBody := p_mb
}
template(value) INVITE_Request m_INVITE_Request_noBody_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported)
modifies m_INVITE_Request_Base := {
msgHeader := {
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
}
}
template(value) INVITE_Request m_INVITE_Request_Allow_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(value) MessageBody p_mb,
template(value) LibSip_SIPTypesAndValues.Allow p_allow)
modifies m_INVITE_Request_UE := {
msgHeader := {allow := p_allow}
}
template(value) INVITE_Request m_INVITE_Request_noBody_Allow_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(value) LibSip_SIPTypesAndValues.Allow p_allow)
modifies m_INVITE_Request_noBody_UE := {
msgHeader := {allow := p_allow}
}
/**
* @desc INVITE message exchanged at Mw
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_contact
* @param p_require
* @param p_route
* @param p_recordRoute
* @param p_supported
* @param p_pChargingVector
* @param p_mb
*/
template(value) INVITE_Request m_INVITE_Request_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb)
modifies m_INVITE_Request_Base := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication),
require := p_require,
pChargingVector := p_pChargingVector,
recordRoute := p_recordRoute,
route := p_route,
supported := p_supported
},
messageBody := p_mb
}
/**
* @desc INVITE message exchanged at Mw
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_contact
* @param p_require
* @param p_route
* @param p_recordRoute
* @param p_supported
* @param p_pChargingVector
* @param p_mb
* @param p_historyInfo
*/
template(value) INVITE_Request m_INVITE_Request_HistoryInfo_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb,
template(value) HistoryInfo p_historyInfo)
modifies m_INVITE_Request_IMS := {
msgHeader := {
historyInfo := p_historyInfo
}
}
/**
* @desc INVITE message exchanged at Mw
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_contact
* @param p_require
* @param p_route
* @param p_recordRoute
* @param p_supported
* @param p_pChargingVector
* @param p_mb
*/
template(value) INVITE_Request m_INVITE_Request_Mime_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb)
modifies m_INVITE_Request_IMS := {
msgHeader := {
contentType := m_contentType(c_mimeMultipart)
}
}
/**
* @desc INVITE message exchanged at Mw
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_contact
* @param p_require
* @param p_route
* @param p_recordRoute
* @param p_supported
* @param p_pChargingVector
*/
template(value) INVITE_Request m_INVITE_Request_IMS_noBody(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector)
modifies m_INVITE_Request_Base := {
msgHeader := {
require := p_require,
pChargingVector := p_pChargingVector,
recordRoute := p_recordRoute,
route := p_route,
supported := p_supported
}
}
/**
* @desc INVITE message exchanged at Mw
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_contact
* @param p_require
* @param p_route
* @param p_recordRoute
* @param p_supported
* @param p_pChargingVector
* @param p_mb
* @param p_pAssertedID
* @param p_privacy
*/
template(value) INVITE_Request m_INVITE_Request_Mime_PAsserted_Privacy_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb,
template(value) PAssertedID p_pAssertedID,
template(value) Privacy p_privacy)
modifies m_INVITE_Request_Mime_IMS := {
msgHeader := {
pAssertedID := p_pAssertedID,
privacy := p_privacy
}
}
/**
* @desc INVITE message exchanged at Mw
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_contact
* @param p_require
* @param p_route
* @param p_recordRoute
* @param p_acceptContact
* @param p_pAssertedID
* @param p_supported
* @param p_pChargingVector
* @param p_mb
*/
template(value) INVITE_Request m_INVITE_Request_PAsserted_AcceptContact_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute,
template(value) AcceptContact p_acceptContact,
template(value) PAssertedID p_pAssertedID,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb)
modifies m_INVITE_Request_Base := {
msgHeader := {
acceptContact := p_acceptContact,
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication),
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
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_contact
* @param p_require
* @param p_route
* @param p_recordRoute
* @param p_pAssertedID
* @param p_privacy
* @param p_supported
* @param p_pChargingVector
* @param p_mb
*/
template(value) INVITE_Request m_INVITE_Request_PAsserted_Privacy_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute,
template(value) PAssertedID p_pAssertedID,
template(value) Privacy p_privacy,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb)
modifies m_INVITE_Request_Base := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication),
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
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_contact
* @param p_require
* @param p_route
* @param p_supported
* @param p_pChargingVector
* @param p_mb
* @param p_pAssertedService
*/
template(value) INVITE_Request m_INVITE_Request_PAssertedService_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb,
template(value) PAssertedService p_pAssertedService)
modifies m_INVITE_Request_Base := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication),
require := p_require,
pChargingVector := p_pChargingVector,
route := p_route,
supported := p_supported,
pAssertedService := p_pAssertedService
},
messageBody := p_mb
}
/**
* @desc INVITE message exchanged at Mw
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_contact
* @param p_require
* @param p_route
* @param p_recordRoute
* @param p_supported
* @param p_pChargingVector
* @param p_mb
*/
template(value) INVITE_Request m_INVITE_Request_PEarlyMedia_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb)
modifies m_INVITE_Request_IMS := {
msgHeader := {
pEarlyMedia := m_pEarlyMedia_sup
}
}
template(value) INVITE_Request m_INVITE_Request_PPreferred_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(value) MessageBody p_mb,
template(value) PPreferredID p_pPreferredID)
modifies m_INVITE_Request_UE := {
msgHeader := {
pPreferredID := p_pPreferredID
}
}
template(value) INVITE_Request m_INVITE_Request_PPreferred_Privacy_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(value) MessageBody p_mb,
template(value) PPreferredID p_pPreferredID,
template(value) Privacy p_privacy)
modifies m_INVITE_Request_UE := {
msgHeader := {
pPreferredID := p_pPreferredID,
privacy := p_privacy
}
}
template(value) INVITE_Request m_INVITE_Request_SessionExpires_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(value) MessageBody p_mb,
template(value) SessionExpires p_se)
modifies m_INVITE_Request_UE := {
msgHeader := {
sessionExpires := p_se
}
}
template(value) INVITE_Request m_INVITE_Request_minSE_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(value) MessageBody p_mb,
template(value) MinSE p_minSE)
modifies m_INVITE_Request_UE := {
msgHeader := {
minSE := p_minSE
}
}
/**
* @desc INVITE message exchanged at Mw
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_contact
* @param p_require
* @param p_route
* @param p_supported
* @param p_pChargingVector
* @param p_mb
* @param p_minSE
*/
template(value) INVITE_Request m_INVITE_Request_minSE_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb,
template(value) MinSE p_minSE)
modifies m_INVITE_Request_Base := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication),
require := p_require,
pChargingVector := p_pChargingVector,
route := p_route,
supported := p_supported,
minSE := p_minSE
},
messageBody := p_mb
}
template(value) INVITE_Request m_INVITE_Request_User2UserData_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb,
template(value) UserToUser.uuiData p_U2UData)
modifies m_INVITE_Request_IMS := {
msgHeader := {
userToUser := m_UserToUserData(p_U2UData)
}
}
template(value) MESSAGE_Request m_MESSAGE_Request_MBody_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(value) MessageBody p_mb)
modifies m_MESSAGE_Request_Base := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(m_MBody_longPlainText)),
contentType := m_contentType(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 := p_mb
}
template(value) MESSAGE_Request m_MESSAGE_Request_NoBody_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) 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(value) MESSAGE_Request m_MESSAGE_Request_PCharging_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported)
modifies m_MESSAGE_Request_NoBody_UE := {
msgHeader := {
pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
pChargingVector := m_pChargingVector_origIoi_fixedValue (PX_IMS_SUT_UE1_HOME_DOMAIN)
}
}
template(value) MESSAGE_Request m_MESSAGE_Request_PCharging_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector)
modifies m_MESSAGE_Request_NoBody_UE := {
msgHeader := {
pAccessNetworkInfo := omit,
pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
pChargingVector := p_pChargingVector
}
}
template(value) MESSAGE_Request m_MESSAGE_Request_PMediaAuth_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported)
modifies m_MESSAGE_Request_NoBody_UE := {
msgHeader := {
pMediaAuthorization := m_pMediaAuthorization_fixedValue
}
}
template(value) MESSAGE_Request m_MESSAGE_Request_PPreferred_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(value) PPreferredID p_pPreferredID)
modifies m_MESSAGE_Request_NoBody_UE := {
msgHeader := {
pPreferredID := p_pPreferredID
}
}
template(value) MESSAGE_Request m_MESSAGE_Request_1300Bytes_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported)
modifies m_MESSAGE_Request_NoBody_UE := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(m_MBody_longPlainText)),
contentType := m_contentType(c_plainText)
//securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
},
messageBody := m_MBody_longPlainText
}
template(value) NOTIFY_Request m_NOTIFY_Request_Xml_IMS_Conference(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) MessageBody p_mb)
modifies m_NOTIFY_Request_Base := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_xmlApplication),
event := {
fieldName := EVENT_E,
eventType := "conference",
eventParams := omit
},
subscriptionState := {
fieldName := SUBSCRIPTION_STATE_E,
subState := "active",
substateParams := omit
},
expires := m_expires(3600)
},
messageBody := p_mb
}
template(value) NOTIFY_Request m_NOTIFY_Request_Xml_IMS_RegInfo(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Contact p_contact,
template(value) MessageBody p_mb)
modifies m_NOTIFY_Request_Base := {
msgHeader := {
contact := p_contact,
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_xmlreginfoApplication),
event := m_Event_reg,
subscriptionState := m_SubscriptionState_active,
expires := m_expires(3600)
},
messageBody := p_mb
}
template(value) PRACK_Request m_PRACK_Request_sdp(
template(value) SipUrl p_requestUri,
template(omit) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) RAck p_RAck,
template(value) MessageBody p_mb)
modifies m_PRACK_Request_Base := {
requestLine := {requestUri := p_requestUri},
msgHeader := {
callId := p_callId,
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication),
cSeq := m_cSeq(p_cSeq.seqNumber, "PRACK"),
fromField := p_from,
rAck := p_RAck,
toField := p_to,
via := p_via
},
messageBody := p_mb
}
template(value) PUBLISH_Request m_PUBLISH_Request_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Event p_event,
template(omit) RAck p_RAck,
template(value) MessageBody p_mb,
template(omit) Route p_route)
modifies m_PUBLISH_Request_Base := {
requestLine := {requestUri := p_requestUri},
msgHeader := {
callId := p_callId,
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_plainText/*c_sdpApplication*/),
cSeq := m_cSeq(p_cSeq.seqNumber, "PUBLISH"),
event := p_event,
fromField := p_from,
route := p_route,
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
toField := p_to,
via := p_via
},
messageBody := p_mb
}
template(value) PUBLISH_Request m_PUBLISH_Request_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Event p_event,
template(omit) RAck p_RAck,
template(value) MessageBody p_mb,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute,
template(omit) PChargingVector p_pChargingVector)
modifies m_PUBLISH_Request_UE := {
msgHeader := {
recordRoute := p_recordRoute,
pChargingVector := p_pChargingVector
}
}
/**
* @desc REFER message exchanged at Mw
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_contact
* @param p_from
* @param p_to
* @param p_via
* @param p_referTo
* @param p_referredBy
* @param p_require
* @param p_route
* @param p_recordRoute
* @param p_supported
* @param p_pChargingVector
* @param p_mb
*/
template(value) REFER_Request m_REFER_Request_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(omit) Contact p_contact,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) ReferTo p_referTo,
template(omit) ReferredBy p_referredBy,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb)
modifies m_REFER_Request_Base := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication),
referredBy := p_referredBy,
referTo := p_referTo,
require := p_require,
pChargingVector := p_pChargingVector,
recordRoute := p_recordRoute,
route := p_route,
supported := p_supported
},
messageBody := p_mb
}
template(value) REGISTER_Request m_REGISTER_Request_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Contact p_contact,
template(omit) Authorization p_authorization,
template(omit) ProxyRequire p_proxyRequire,
template(omit) Require p_require,
template(omit) SecurityClient p_securityClient,
template(omit) SecurityVerify p_securityVerify,
template(omit) 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(value) REGISTER_Request m_REGISTER_Request_IMS(
template(value) SipUrl p_requestUri,
template(omit) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Contact p_contact,
template(omit) 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,
path := m_path_TS,
pChargingVector := m_pChargingVector_icid_TS,
pVisitedNetworkID := m_pVisitedNetworkID_TS,
require := {fieldName := REQUIRE_E, optionsTags := {"path"}},
toField := p_to,
via := p_via
}
}
template(value) REGISTER_Request m_REGISTER_Request_IMS_3party(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Contact p_contact,
template(omit) Authorization p_authorization,
template(omit) Path p_path)
modifies m_REGISTER_Request_IMS := {
msgHeader := {path := p_path}
}
template(value)
REGISTER_Request m_REGISTER_Request_expires_IMS(
template(value) SipUrl p_requestUri,
template(omit) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Contact p_contact,
template(omit) Authorization p_authorization,
template(value) DeltaSec p_deltaSec)
modifies m_REGISTER_Request_IMS := {
msgHeader := {
expires := m_expires(str2int(valueof(p_deltaSec)))
}
}
template(value) SUBSCRIBE_Request m_SUBSCRIBE_Request_UE(
template(value) SipUrl p_requestUri,
template(omit) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Contact p_contact,
template(omit) Route p_route)
modifies m_SUBSCRIBE_Request_Base := {
requestLine := {method := SUBSCRIBE_E, requestUri := p_requestUri},
msgHeader := {
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
contact := p_contact,
cSeq := m_cSeq(p_cSeq.seqNumber, "SUBSCRIBE"),
event := m_Event_reg,
expires := m_Expires_600000,
route := p_route
}
}
template(value) SUBSCRIBE_Request m_SUBSCRIBE_Request_mb_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Contact p_contact,
template(value) MessageBody p_mb)
modifies m_SUBSCRIBE_Request_Base := {
requestLine := {method := SUBSCRIBE_E, requestUri := p_requestUri},
msgHeader := {
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
contact := p_contact,
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
cSeq := m_cSeq(p_cSeq.seqNumber, "SUBSCRIBE"),
event := m_Event_reg,
expires := m_Expires_600000
},
messageBody := p_mb
}
template(value) SUBSCRIBE_Request m_SUBSCRIBE_Request_mb_event_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Contact p_contact,
template(value) MessageBody p_mb,
template(value) Event p_event,
template(value) charstring p_contentType)
modifies m_SUBSCRIBE_Request_mb_UE := {
msgHeader := {
contentType := m_contentType(p_contentType),
event := p_event
}
}
template(value) SUBSCRIBE_Request m_SUBSCRIBE_Request_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Contact p_contact)
modifies m_SUBSCRIBE_Request_Base := {
requestLine := {method := SUBSCRIBE_E, requestUri := p_requestUri},
msgHeader := {
contact := p_contact,
cSeq := m_cSeq(p_cSeq.seqNumber, "SUBSCRIBE"),
event := m_Event_reg,
expires := m_Expires_600000
}
}
template(value) SUBSCRIBE_Request m_SUBSCRIBE_Request_Event(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Contact p_contact,
template(value) Event p_event)
modifies m_SUBSCRIBE_Request_IMS := {
msgHeader := {
event := p_event
}
}
}//end group request_send
group request_receive {
template(present) ACK_Request mw_ACK_Request_noPaccessNetworkInfo(
template CallId p_callId)
modifies mw_ACK_Request_Base
:=
{
msgHeader := {
pAccessNetworkInfo := omit
}
}
 
template(present) ACK_Request mw_ACK_Request_PchargingVector(
template CallId p_callId,
template(present) PChargingVector p_pChargingVector)
modifies mw_ACK_Request_Base
:=
{
msgHeader := {
pChargingVector := p_pChargingVector
}
}
template(present) BYE_Request mw_BYE_Request_noPChargingFunction_UE(
template CallId p_callId)
modifies mw_BYE_Request_Base
:=
{
msgHeader := {
pChargingFunctionAddresses := omit,
pChargingVector := omit
}
}
template(present) BYE_Request mw_BYE_Request_via_PChargingVector_UE(
template CallId p_callId,
template(present) PChargingVector p_pChargingVector,
template(present) Via p_via)
modifies mw_BYE_Request_Base
:=
{
msgHeader := {
pChargingVector := p_pChargingVector,
via := p_via
}
}
template(present) BYE_Request mw_BYE_Request_via_UE(
template CallId p_callId,
template(present) Via p_via)
modifies mw_BYE_Request_Base
:=
{
msgHeader := {
via := p_via
}
}
template(present) BYE_Request mw_BYE_Request_route(
template CallId p_callId,
template(present) Route p_route)
modifies mw_BYE_Request_Base
:=
{
msgHeader := {
route := p_route
}
}
template(present) INVITE_Request mw_INVITE_Request_noPChargingFunction
modifies mw_INVITE_Request_Base
:=
{
msgHeader := {
pChargingFunctionAddresses := omit
}
}
template(present) INVITE_Request mw_INVITE_Request_PChargingFunction
modifies mw_INVITE_Request_Base
:=
{
msgHeader := {
pChargingFunctionAddresses := ?
}
}
template(present) INVITE_Request mw_INVITE_Request_NoPCharging
modifies mw_INVITE_Request_Base
:=
{
msgHeader := {
pChargingFunctionAddresses := omit,
pChargingVector := omit
}
}
template(present) INVITE_Request mw_INVITE_Request_NoPChargingPreferred
modifies mw_INVITE_Request_Base
:=
{
msgHeader := {
pChargingFunctionAddresses := omit,
pChargingVector := omit,
pPreferredID := omit
}
}
template(present) INVITE_Request mw_INVITE_Request_PAsserted_noPPreferred(
template(present) PAssertedID p_pAssertedID)
modifies mw_INVITE_Request_Base
:=
{
msgHeader := {
pAssertedID := p_pAssertedID,
pPreferredID := omit
}
}
template(present) INVITE_Request mw_INVITE_Request_PAsserted_AcceptContact(
template(present) PAssertedID p_pAssertedID,
template(present) AcceptContact p_acceptContact)
modifies mw_INVITE_Request_Base
:=
{
msgHeader := {
pAssertedID := p_pAssertedID,
acceptContact := p_acceptContact
}
}
template(present) INVITE_Request mw_INVITE_Request_RecordRoute_Via(
template(present) RecordRoute p_recordRoute,
template(present) Via p_via)
modifies mw_INVITE_Request_Base
:=
{
msgHeader := {
recordRoute := p_recordRoute,
via := p_via
}
}
} // end group XMLTemplates
 
template(present) INVITE_Request mw_INVITE_Request_route(
template(present) Route p_route)
modifies mw_INVITE_Request_Base :=
{
msgHeader := {
route := p_route
}
}
template(present) INVITE_Request mw_INVITE_Request_require(
template(present) Require p_require)
modifies mw_INVITE_Request_Base := {
msgHeader := {
require := p_require
}
}
template(present) INVITE_Request mw_INVITE_Request_supported(
template(present) Supported p_supported)
modifies mw_INVITE_Request_Base := {
msgHeader := {
supported := p_supported
}
}
template(present) INVITE_Request mw_INVITE_Request_SessionExpires(
template(present) SessionExpires p_sessionExpires)
modifies mw_INVITE_Request_Base :=
{
msgHeader := {
sessionExpires := p_sessionExpires
}
}
template(present) INVITE_Request mw_INVITE_Request_User2UserData(
template(present) UserToUser.uuiData p_U2UData)
modifies mw_INVITE_Request_Base :=
{
msgHeader := {
userToUser := mw_UserToUserData(p_U2UData)
}
}
template(present) 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(present) INVITE_Request mw_INVITE_Request_IMS_requestLine(
template PChargingVector p_pChargingVector,
template RecordRoute p_recordRoute,
template Route p_route,
template Via p_via,
template(present) SipUrl p_requestUri)
modifies mw_INVITE_Request_IMS := {
requestLine :=
{
requestUri := p_requestUri
},
msgHeader := {
pChargingVector := p_pChargingVector,
recordRoute := p_recordRoute,
route := p_route,
via := p_via
}
}
template(present) INVITE_Request mw_INVITE_Request_IMS_PAsserted_noPPreferred(
template PChargingVector p_pChargingVector,
template RecordRoute p_recordRoute,
template Route p_route,
template Via p_via,
template(present) PAssertedID p_pAssertedID)
modifies mw_INVITE_Request_IMS := {
msgHeader := {
pAssertedID := p_pAssertedID,
pPreferredID := omit
}
}
template(present) 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_IMS :=
{
messageBody := ?
}
template(present) INVITE_Request mw_INVITE_Request_IMS_cug(
template PChargingVector p_pChargingVector,
template RecordRoute p_recordRoute,
template Route p_route,
template Via p_via,
template(present) Cug p_cug)
modifies mw_INVITE_Request_IMS :=
{
messageBody := (
mw_MBody_XML(mw_XmlBody_CUG(p_cug)),
mw_MBody_MIMESdpXml(?, mw_XmlBody_CUG(p_cug))
)
}
template(present) INVITE_Request mw_INVITE_Request_IMS_noCug(
template PChargingVector p_pChargingVector,
template RecordRoute p_recordRoute,
template Route p_route,
template Via p_via)
modifies mw_INVITE_Request_IMS :=
{
messageBody := (
mw_MBody_XML(complement(mw_XmlBody_CUG(?))),
mw_MBody_MIMESdpXml(?, complement(mw_XmlBody_CUG(?)))
)
}
template(present) INVITE_Request mw_INVITE_Request_IMS_pstn(
template PChargingVector p_pChargingVector,
template RecordRoute p_recordRoute,
template Route p_route,
template Via p_via,
template(present) PSTN_transit p_pstn)
modifies mw_INVITE_Request_IMS :=
{
messageBody := (
mw_MBody_XML(mw_XmlBody_PSTNTransit(p_pstn)),
mw_MBody_MIMESdpXml(?, mw_XmlBody_PSTNTransit(p_pstn))
)
}
group ACR_CBTemplates {
 
/**
* @desc Await INVITE using topology hiding
*/
template(present) INVITE_Request mw_INVITE_Request_TH
modifies mw_INVITE_Request_TH_R10 :=
{
msgHeader := {
pChargingVector := omit
}
}
template(present) INVITE_Request mw_INVITE_Request_TH_R10
modifies mw_INVITE_Request_Base :=
{
msgHeader := {
pChargingFunctionAddresses := omit
}
}
/**
* @desc Await INVITE without PAsserted and Privacy
* @param p_from
*/
template(present) INVITE_Request mw_INVITE_Request_noPasserted_noPrivacy(
template From p_from)
modifies mw_INVITE_Request_Base
:=
{
msgHeader := {
fromField := p_from,
pAssertedID := omit,
pPreferredID := omit
}
}
template(value) Incoming_communication_barring m_ICB(
template(value) RuleType p_ruleType
) := {
active := omit,
attr := omit, // TODO:CR
ruleset := {
{p_ruleType}
}
}
 
template(value) Outgoing_communication_barring m_OCB(
template(value) RuleType p_ruleType
) := {
active := omit,
attr := omit, // TODO:CR
ruleset := {
{p_ruleType}
}
}
 
/**
* @desc Await INVITE with PAsserted and Privacy
* @param p_from
* @param p_pAssertedID
* @param p_privacy
*/
template(present) INVITE_Request mw_INVITE_Request_PassertedPrivacy(
template From p_from,
template(present) PAssertedID p_pAssertedID,
template(present) Privacy p_privacy)
modifies mw_INVITE_Request_noPasserted_noPrivacy :=
{
msgHeader := {
pAssertedID := p_pAssertedID,
privacy := p_privacy
}
}
/**
* @desc Await INVITE with PAsserted and Privacy
* @param p_from
* @param p_pAssertedID
* @param p_privacy
*/
template(present) INVITE_Request mw_INVITE_Request_Passerted_ifPrivacy(
template From p_from,
template PAssertedID p_pAssertedID,
template(present) Privacy p_privacy)
modifies mw_INVITE_Request_Base :=
{
msgHeader := {
fromField := p_from,
pAssertedID := p_pAssertedID,
privacy := p_privacy ifpresent
}
}
/**
* @desc Await INVITE with history info
* @param p_historyInfo
*/
template(present) INVITE_Request mw_INVITE_Request_HistoryInfo(
template(present) HistoryInfo p_historyInfo)
modifies mw_INVITE_Request_Base :=
{
msgHeader := {
historyInfo := p_historyInfo
}
}
template(present) MESSAGE_Request mw_MESSAGE_Request_noPchargingFunction_UE
modifies mw_MESSAGE_Request_Base :=
{
msgHeader := {
pChargingFunctionAddresses := omit,
pChargingVector := omit
}
}
template(present) MESSAGE_Request mw_MESSAGE_Request_noPchargingFunctionPrefId_UE
modifies mw_MESSAGE_Request_noPchargingFunction_UE :=
{
msgHeader := {
pPreferredID := omit
}
}
template(present) MESSAGE_Request mw_MESSAGE_Request_noPchargingFunction_IMS
:= mw_MESSAGE_Request_noPchargingFunction_UE;
template(present) MESSAGE_Request mw_MESSAGE_Request_PAsserted_noPPreferred(
template CallId p_callId,
template(present) PAssertedID p_pAssertedID)
modifies mw_MESSAGE_Request_Base :=
{
msgHeader := {
callId := p_callId,
pAssertedID := p_pAssertedID,
pPreferredID := omit
}
}
template(value) RuleType m_ruleType_actionFalse(
template(value) ConditionsType p_condition
) := {
id := "rule66",
conditions := p_condition,
actions := {
elem_list := {"<false/>"}
},
transformations := omit
}
 
template MESSAGE_Request mw_MESSAGE_Request_route(
template CallId p_callId,
template(present) Route p_route)
modifies mw_MESSAGE_Request_Base :=
{
msgHeader := {
callId := p_callId,
route := p_route
}
}
template(value) ConditionsType m_conditionsType_identity(
template(value) charstring p_id
) := {
{
{
identity_list := {
{
{
{
one := {
id := p_id,
elem := omit
}
}
}
}
}
}
}
}
 
template MESSAGE_Request mw_MESSAGE_Request_via(
template CallId p_callId,
template(present) Via p_via )
modifies mw_MESSAGE_Request_Base :=
{
msgHeader := {
callId := p_callId,
via := p_via
}
}
 
template(present) NOTIFY_Request mw_NOTIFY_Request(
template CallId p_callId,
template(present) charstring p_state,
template(present) charstring p_contentType,
template Event p_event,
template MessageBody p_mb)
modifies mw_NOTIFY_Request_Base := {
msgHeader :=
{
subscriptionState := mw_subscriptionState(p_state),
contentType := mw_contentType(p_contentType),
event := p_event
},
messageBody := p_mb
}
template(present) PRACK_Request mw_PRACK_Request_sdp(
template CallId p_callId,
template MessageBody p_mb)
modifies mw_PRACK_Request_Base :=
{
msgHeader :=
{
callId := p_callId
},
messageBody := p_mb
}
template(present) MESSAGE_Request mw_MESSAGE_Request_PchargingVector(
template(present) charstring p_id,
template charstring p_paramValue)
modifies mw_MESSAGE_Request_Base :=
{
msgHeader := {
pChargingVector := mw_pChargingVector(p_id,p_paramValue)
}
}
template(present) MESSAGE_Request mw_MESSAGE_Request_noPaccessNetworkInfo
modifies mw_MESSAGE_Request_Base :=
{
msgHeader := {
pAccessNetworkInfo := omit
}
}
} // end group ACR_CBTemplates
 
template(present) MESSAGE_Request mw_MESSAGE_Request_noPMediaAuthorization
modifies mw_MESSAGE_Request_Base :=
{
msgHeader := {
pMediaAuthorization := omit
}
}
template(present) PUBLISH_Request mw_PUBLISH_Request_PchargingVector(
template CallId p_callId,
template(present) PChargingVector p_pChargingVector)
modifies mw_PUBLISH_Request_Base :=
{
msgHeader := {
pChargingVector := p_pChargingVector
}
}
group CUGTemplates {
 
template(present) 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,
pVisitedNetworkID := p_pVisitedNetworkID,
require := mw_require_path,
securityClient := omit,
securityVerify := omit
}
}
template(present) REGISTER_Request mw_REGISTER_authorizedRequest_IMS(
template(present) Authorization p_authorization)
modifies mw_REGISTER_Request_Base :=
{
msgHeader := {
authorization := p_authorization
}
}
template(present) REGISTER_Request mw_REGISTER_authorizedRequest_wo_securityclient_IMS(
template(present) Authorization p_authorization)
modifies mw_REGISTER_authorizedRequest_IMS :=
{
msgHeader := {
securityClient := omit
}
}
template(present) REGISTER_Request mw_REGISTER_auth_via_nosecclient_IMS(
template(present) Authorization p_authorization,
template(value) Via p_via)
modifies mw_REGISTER_authorizedRequest_wo_securityclient_IMS :=
{
msgHeader := {
via := p_via
}
}
template(present) REGISTER_Request mw_REGISTER_authorizedRequest_wo_securityheaders_IMS
modifies mw_REGISTER_Request_Base :=
{
msgHeader := {
securityVerify := omit,
securityClient := omit
}
}
template(present) REGISTER_Request mw_REGISTER_unauthorizedRequest_IMS
modifies mw_REGISTER_Request_Base :=
{
msgHeader := {
authorization := *
}
}
template(value) Cug m_CUG(
template(omit) CugRequestType p_crt,
template(omit) NetworkIdentityType p_nit,
template(omit) SixteenbitType p_cibc,
template(omit) TwobitType p_cci
) := {
active := omit,
attr := omit, // TODO:CR
cugCallOperation := p_crt,
networkIndicator := p_nit,
cugInterlockBinaryCode := p_cibc,
cugCommunicationIndicator := p_cci
}
 
template(present) SUBSCRIBE_Request mw_SUBSCRIBE_Request_IMS(
template(present) From p_from,
template(present) 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 := *,
pChargingVector := p_pChargingVector
}
}
template(present) Cug mw_CUG(
template CugRequestType p_crt,
template NetworkIdentityType p_nit,
template SixteenbitType p_cibc,
template TwobitType p_cci
) := {
active := omit,
attr := ?,
cugCallOperation := p_crt,
networkIndicator := p_nit,
cugInterlockBinaryCode := p_cibc,
cugCommunicationIndicator := p_cci
}
 
template(value) CugRequestType m_cugReqType(
template(value) boolean p_outAccessRequest,
template(value) CugIndexType p_cugIndex
) := {
outgoingAccessRequest := p_outAccessRequest,
cugIndex := p_cugIndex
}
 
template(present) CugRequestType mw_cugReqType(
template(present) boolean p_outAccessRequest,
template(present) CugIndexType p_cugIndex
) := {
outgoingAccessRequest := p_outAccessRequest,
cugIndex := p_cugIndex
}
 
} // end group CUGTemplates
 
group CWTemplates {
 
template(value) Ims_cw m_CW(
template(value) TEmptyType p_cwi
) := {
attr := omit, // TODO:CR
communication_waiting_indication := p_cwi,
elem_list := {}
}
 
template(present) Ims_cw mw_ims_cw(
template(present) TEmptyType p_cwi
) := {
attr := ?,
communication_waiting_indication := p_cwi,
elem_list := ?
}
 
 
} // end group CWTemplates
 
group MCIDTemplates {
 
template(value) Mcid m_mcid_request_mcidIndicatorTrue := {
choice := {
request := {
mcidRequestIndicator := "1",
holdingIndicator := "0"
}
}
}
 
template(value) Mcid m_mcid_request_mcidIndicatorTrue_holdIndTrue
modifies m_mcid_request_mcidIndicatorTrue := {
choice := {
request := {
holdingIndicator := "1"
}
}
}
 
template(present) Mcid mw_mcid_request_mcidIndicatorTrue
modifies m_mcid_request_mcidIndicatorTrue := {
choice := {
request := {
holdingIndicator := ?
}
}
}
 
template(value) Mcid m_mcid_response_mcidIndicatorTrue := {
choice := {
response := {
mcidResponseIndicator := "1",
holdingProvidedIndicator := "0"
}
}
}
 
template(present) Mcid mw_mcid_response_mcidIndicatorTrue
modifies m_mcid_response_mcidIndicatorTrue := {
choice := {
response := {
holdingProvidedIndicator := ?
}
}
}
 
template(present) Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndFalse
modifies mw_mcid_response_mcidIndicatorTrue := {
choice := {
response := {
holdingProvidedIndicator := "0"
}
}
}
 
template(present) Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndTrue
modifies mw_mcid_response_mcidIndicatorTrue := {
choice := {
response := {
holdingProvidedIndicator := "1"
}
}
}
 
 
} // end group MCIDTemplates
 
group PSTNTemplates {
 
template(value) PSTN_transit m_PSTN_transit_BC1(
template(value) BearerCapabilityType p_bct
) := {
bearerInfomationElement_list := {p_bct},
highLayerCompatibility_list := {},
lowLayerCompatibility := omit,
progressIndicator_list := {},
display_list := {}
}
 
template(value) PSTN_transit m_PSTN_transit_BC2(
template(value) BearerCapabilityType p_bct,
template(value) BearerCapabilityType p_bct2
) modifies m_PSTN_transit_BC1 := {
bearerInfomationElement_list := {p_bct, p_bct2}
}
 
template(present) PSTN_transit mw_PSTN_transit_bc(
template(present) BearerCapabilityType p_bct,
template(present) BearerCapabilityType p_bct2
) := {
bearerInfomationElement_list := {p_bct, p_bct2},
highLayerCompatibility_list := {*, *},
lowLayerCompatibility := *,
progressIndicator_list := {*},
display_list := {*}
}
 
template(value) PSTN_transit m_PSTN_transit_BC1_HLC1(
template(value) BearerCapabilityType p_bct,
template(value) HighLayerCompatibilityType p_hlc
) modifies m_PSTN_transit_BC1 := {
highLayerCompatibility_list := {p_hlc}
}
 
template(value) PSTN_transit m_PSTN_transit_BC1_HLC2(
template(value) BearerCapabilityType p_bct,
template(value) HighLayerCompatibilityType p_hlc,
template(value) HighLayerCompatibilityType p_hlc2
) modifies m_PSTN_transit_BC1_HLC1 := {
highLayerCompatibility_list := {p_hlc, p_hlc2}
}
 
template(value) PSTN_transit m_PSTN_transit_BC1_LLC(
template(value) BearerCapabilityType p_bct,
template(value) LowLayerCompatibilityType p_llc
) modifies m_PSTN_transit_BC1 := {
lowLayerCompatibility := p_llc
}
 
template(value) PSTN_transit m_PSTN_transit_BC1_PI1(
template(value) BearerCapabilityType p_bct,
template(value) ProgressIndicatorType p_pi1
) modifies m_PSTN_transit_BC1 := {
progressIndicator_list := {p_pi1}
}
 
template(value) PSTN_transit m_PSTN_transit_BC1_PI2(
template(value) BearerCapabilityType p_bct,
template(value) ProgressIndicatorType p_pi1,
template(value) ProgressIndicatorType p_pi2
) modifies m_PSTN_transit_BC1_PI1 := {
progressIndicator_list := {p_pi1, p_pi2}
}
 
template(value) PSTN_transit m_PSTN_transit_BC1_PI3(
template(value) BearerCapabilityType p_bct,
template(value) ProgressIndicatorType p_pi1,
template(value) ProgressIndicatorType p_pi2,
template(value) ProgressIndicatorType p_pi3
) modifies m_PSTN_transit_BC1_PI2 := {
progressIndicator_list := {p_pi1, p_pi2, p_pi3}
}
 
template(value) PSTN_transit m_PSTN_transit_BC1_HLC1_PI1(
template(value) BearerCapabilityType p_bct,
template(value) HighLayerCompatibilityType p_hlc,
template(value) ProgressIndicatorType p_pi1
) modifies m_PSTN_transit_BC1_HLC1 := {
progressIndicator_list := {p_pi1}
}
 
template(value) BearerCapabilityType m_BearerCapabilityType(
template(value) Bit5 p_InfoTrfCap
) := {
bCoctet3 := {
codingStandard := "00", // Coding standard = CCITT standardized coding
informationTransferCabability := bit2str(valueof(p_InfoTrfCap)) // Information transfer capability
},
bCoctet4 := {
transferMode := "00", // Coding standard = CCITT standardized coding
informationTransferRate := "10000" // 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(present) BearerCapabilityType mw_BearerCapabilityType(
template(present) BCOctet3Type p_BCOctet3Type,
template(present) BCOctet4Type p_BCOctet4Type
) := {
bCoctet3 := p_BCOctet3Type,
bCoctet4 := p_BCOctet4Type,
bCoctet4_1 := *,
bCoctet5 := *,
bCoctet5a := *,
bCoctet5bV110 := *,
bCoctet5bV120 := *,
bCoctet5c := *,
bCoctet5d := *,
bCoctet6 := *,
bCoctet7 := *,
bCoctet7a := *,
bCoctet7b := *
}
 
template(present) BearerCapabilityType mw_BearerCapabilityType_TrfCap(
template(value) Bit5 p_InfoTrfCap
) modifies m_BearerCapabilityType := {
bCoctet4_1 := *,
bCoctet5 := *,
bCoctet5a := *,
bCoctet5bV110 := *,
bCoctet5bV120 := *,
bCoctet5c := *,
bCoctet5d := *,
bCoctet6 := *,
bCoctet7 := *,
bCoctet7a := *,
bCoctet7b := *
}
 
template(value) ProgressIndicatorType m_ProgressIndicatorType(
template(value) Bit7 p_progDesc
) := {
progressOctet3 := {
codingStandard := "00",
location := "0000"
},
progressOctet4 := {
progressDescription := bit2str(valueof(p_progDesc))
}
}
 
template(present) ProgressIndicatorType mw_ProgressIndicatorType(
template(present) ProgressOctet3Type p_ProgressOctet3Type,
template(present) ProgressOctet4Type p_ProgressOctet4Type
) := {
progressOctet3 := p_ProgressOctet3Type,
progressOctet4 := p_ProgressOctet4Type
}
 
template(value) LowLayerCompatibilityType m_LowLayerCompatibilityType(
template(value) Bit5 p_InfoTrfCap
) := {
lLOctet3 := {
codingStandard := "00", // Coding standard = CCITT standardized coding
informationTransferCapability := bit2str(valueof(p_InfoTrfCap)) // Information transfer capability
},
lLOctet3a := omit,
lLOctet4 := {
transferMode := "00", // Coding standard = CCITT standardized coding
informationTransferRate := "10000" // 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 := {
layer3Identification := "10", // TODO check value and if parameter is mandatory
userInfoLayer3Protocol := "10000" // TODO check value and if parameter is mandatory
},
lLOctet7aUserSpecific := omit,
lLOctet7aX25 := omit,
lLOctet7bX25 := omit,
lLOctet7c := omit,
lLOctet7aTR9577 := omit,
lLOctet7bTR9577 := omit
}
 
template(present) LowLayerCompatibilityType mw_LowLayerCompatibilityType(
template(present) LLOctet3Type p_LLOctet3,
template(present) LLOctet4Type p_LLOctet4,
template(present) 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(value) HighLayerCompatibilityType m_HighLayerCompatibilityType(
template(value) Bit7 p_HLOctet4
) := {
hLOctet3 := {
codingStandard := "00",
interpretation := "100",
presentationMethod := "01"
},
hLOctet4 := {
highLayerCharacteristics := bit2str(valueof(p_HLOctet4))
},
hLOctet4aMaintenance := omit,
hLOctet4Audio := omit
}
 
template(present) HighLayerCompatibilityType mw_HighLayerCompatibilityType(
template(present) HLOctet3Type p_HLOctet3,
template(present) HLOctet4Type p_HLOctet4
) := {
hLOctet3 := p_HLOctet3,
hLOctet4 := p_HLOctet4,
hLOctet4aMaintenance := *,
hLOctet4Audio := *
}
 
 
} // end group PSTNTemplates
 
group CDIVNTemplates {
 
/* general CDIVN subscription */
template(value) Comm_div_info_type m_CDIVN_sub := {
entity := "comm-div-info",
comm_div_subs_info := {
attr := omit, // TODO:CR
comm_div_selection_criteria := {
attr := omit, // TODO:CR
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,
elem_list := {}
},
comm_div_ntfy_trigger_criteria := omit,
comm_div_info_selection_criteria := omit,
elem_list := {}
},
comm_div_ntfy_info := omit,
elem_list := {}
}
 
} // end grouup CDIVNTemplates
 
group ResourceListsTemplates {
 
template(value) Resource_lists m_ResourceList_2Users(
template(value) EntryType p_user1,
template(value) EntryType p_user2
) := {
sequence_list := {
{
list := {
name := omit,
attr := omit, // TODO:CR
display_name := omit,
sequence_list := {
{
choice := {
entry := p_user1
}
},
{
choice := {
entry := p_user2
}
}
},
elem_list := {}
}
}
}
}
 
template(value) EntryType m_EntryUser(
template(value) SipUrl p_user
) := {
uri :=
p_user.components.sip.userInfo.userOrTelephoneSubscriber
& "@"
& p_user.components.sip.hostPort.host,
attr := omit, // TODO:CR
display_name := omit,
elem_list := {}
}
 
} // end grouup ResourceListsTemplates
 
group Ims3gppTemplates {
 
template(present) TIMS3GPP mw_Ims_3gpp_CW := {
version := 1.0,
attr := *,
choice := {
alternative_service := {
attr := *,
type_ := ?,
reason := ?,
elem_list := ?
}
},
elem_list := ?
}
 
} // end group Ims3gpp
 
group CONFTemplates {
 
template(value) XSD.Boolean boolXSD_true := true;
template(value) XSD.Boolean boolXSD_false := false;
 
template(value) urn_ietf_params_xml_ns_conference_info.Media_type m_mediatype_status(
template(value) Media_status_type p_status
) := {
id := "1",
attr := omit, // TODO:CR
display_text := omit,
type_ := omit,
label_ := omit,
src_id := omit,
status := p_status,
elem_list := {}
}
 
template(value) Endpoint_type m_endpoint(
template(omit) charstring p_Uri,
template(omit) Endpoint_status_type p_epStatus,
template(omit) Joining_type p_joinMethod,
template(omit) Disconnection_type p_discMethod,
template(value) urn_ietf_params_xml_ns_conference_info.Media_type p_mediastatus
) := {
entity := p_Uri,
state := full,
attr := omit, // TODO:CR
display_text := omit,
referred := omit,
status := p_epStatus,
joining_method := p_joinMethod,
joining_info := omit,
disconnection_method := omit,
disconnection_info := omit,
media_list := {p_mediastatus}, // optional,
call_info := omit,
elem_list := {}
}
 
template(value) User_type m_1user(
template(omit) charstring p_Uri,
template(value) Endpoint_type p_endpoint
) := {
entity := p_Uri,
state := full,
attr := omit, // TODO:CR
display_text := omit,
associated_aors := omit,
roles := omit,
languages := omit,
cascaded_focus := omit,
endpoint_list := {p_endpoint}, // optional,
elem_list := {}
}
 
template(value) Users_type m_users_1user_full(
template(value) User_type p_user
) := {
state := full,
attr := omit, // TODO:CR
user_list := {p_user},
elem_list := {}
}
 
template(value) Users_type m_users_2user_full(
template(value) User_type p_user,
template(value) User_type p_user2
) modifies m_users_1user_full := {
user_list := {p_user, p_user2}
}
 
template(value) Conference_state_type m_conference_state(
template(value) UnsignedInt p_nUsers,
template(value) boolean p_active,
template(value) boolean p_locked
) := {
attr := omit, // TODO:CR
user_count := p_nUsers,
active := p_active,
locked := p_locked,
elem_list := {}
}
 
template(value) Conference_type m_ci_cUri_cState_userEntity(
template(value) charstring p_cUri,
template(value) Conference_state_type p_cState,
template(value) Users_type p_users
) := {
entity := p_cUri,
state := full,
version := 1,
attr := omit, // TODO:CR
conference_description := omit,
host_info := omit,
conference_state := p_cState,
users := p_users,
sidebars_by_ref := omit,
sidebars_by_val := omit,
elem_list := {}
}
 
template(present) Conference_type mw_conferenceInfo_active := {
entity := ?,
state := *,
version := *,
attr := *,
conference_description := *,
host_info := *,
conference_state := ?,
users := {
state := ?,
attr := *,
user_list := {
{
entity := *,
state := *,
attr := *,
display_text := *,
associated_aors := *,
roles := *,
languages := *,
cascaded_focus := *,
endpoint_list := {
{
entity := *,
state := *,
attr := *,
display_text := *,
referred := *,
status := connected,
joining_method := dialed_in,
joining_info := *,
disconnection_method := *,
disconnection_info := *,
media_list := ?, // TODO:CR
call_info := *,
elem_list := ?
}
},
elem_list := ?
}
},
elem_list := {}
},
sidebars_by_ref := *,
sidebars_by_val := *,
elem_list := ?
}
}
 
} // end group MessageBodyTemplates
 
group MessageTemplates {
 
group modified_templates {
 
group request_send {
 
template(value) ACK_Request m_ACK_Request_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Route p_route
) modifies m_ACK_Request_Base := {
msgHeader := {route := p_route}
}
 
template(value) ACK_Request m_ACK_Request_AS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute
) modifies m_ACK_Request_IMS := {
msgHeader := {
route := p_route,
recordRoute := p_recordRoute
}
}
 
template(value) ACK_Request m_ACK_Request_sdp_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) MessageBody p_mb,
template(omit) Route p_route
) modifies m_ACK_Request_Base := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication),
route := p_route
},
messageBody := p_mb
}
 
template(value) ACK_Request m_ACK_Request_Mime_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template MessageBody p_mb,
template(omit) Route p_route
) modifies m_ACK_Request_Base := {
msgHeader := {
contentLength := {
fieldName := CONTENT_LENGTH_E,
len := f_MessageBodyLength(valueof(p_mb))
},
contentType := {
fieldName := CONTENT_TYPE_E,
mediaType := c_mimeMultipart
},
route := p_route
},
messageBody := p_mb
}
 
template(value) BYE_Request m_BYE_Request_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute := omit
) modifies m_BYE_Request_Base := {
msgHeader := {
route := p_route,
recordRoute := p_recordRoute // used in case of AS as TS - for ISC interface
}
} // End of temlate m_BYE_Request_IMS
 
template(value) BYE_Request m_BYE_Request_Reason_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Route p_route,
template(value) charstring p_cause
) modifies m_BYE_Request_Base := {
msgHeader := {
reason := mw_Reason(p_cause),
route := p_route
}
}
 
template(value) BYE_Request m_BYE_Request_UserToUser_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Route p_route,
template(value) UserToUser.uuiData p_U2UData
) modifies m_BYE_Request_Base := {
msgHeader := {
route := p_route,
userToUser := m_UserToUserData(p_U2UData)
}
}
 
template(value) BYE_Request m_BYE_Request_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) 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(value) CANCEL_Request m_CANCEL_Request_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Route p_route
) modifies m_CANCEL_Request_Base := {
msgHeader := {route := p_route}
}
 
template(value) CANCEL_Request m_CANCEL_Request_Reason_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Route p_route,
template(value) integer p_cause
) modifies m_CANCEL_Request_IMS := {
msgHeader := {reason := m_Reason(p_cause)}
}
 
template(value) CANCEL_Request m_CANCEL_Request_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Route p_route
) modifies m_CANCEL_Request_IMS := {
}
 
/**
* @desc INFO message
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_mb
*/
template(value) INFO_Request m_INFO_Request_IMS_Base(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) MessageBody p_mb
) modifies m_INFO_Request_Base := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(p_mb))
},
messageBody := p_mb
}
 
/**
* @desc INFO message
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_mb
*/
template(value) INFO_Request m_INFO_Request_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) MessageBody p_mb
) modifies m_INFO_Request_IMS_Base := {
msgHeader := {
contentType := m_contentType(c_sdpApplication)
}
}
 
/**
* @desc INFO message
* @desc
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_mb
*/
template(value) INFO_Request m_INFO_Request_Mime_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) MessageBody p_mb
) modifies m_INFO_Request_IMS_Base := {
msgHeader := {
contentType := m_contentType(c_mimeMultipart)
}
}
 
template(value) INFO_Request m_INFO_Request_Xml_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) MessageBody p_mb
) modifies m_INFO_Request_IMS_Base := {
msgHeader := {
contentType := m_contentType(c_xmlApplication)
}
}
 
template(value) INVITE_Request m_INVITE_Request_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(value) MessageBody p_mb
) modifies m_INVITE_Request_noBody_UE := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication)
},
messageBody := p_mb
}
 
template(value) INVITE_Request m_INVITE_Request_noBody_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported
) modifies m_INVITE_Request_Base := {
msgHeader := {
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
}
}
 
template(value) INVITE_Request m_INVITE_Request_Allow_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(value) MessageBody p_mb,
template(value) LibSip_SIPTypesAndValues.Allow p_allow
) modifies m_INVITE_Request_UE := {
msgHeader := {allow := p_allow}
}
 
template(value) INVITE_Request m_INVITE_Request_noBody_Allow_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(value) LibSip_SIPTypesAndValues.Allow p_allow
) modifies m_INVITE_Request_noBody_UE := {
msgHeader := {allow := p_allow}
}
 
/**
* @desc INVITE message exchanged at Mw
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_contact
* @param p_require
* @param p_route
* @param p_recordRoute
* @param p_supported
* @param p_pChargingVector
* @param p_mb
*/
template(value) INVITE_Request m_INVITE_Request_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb
) modifies m_INVITE_Request_Base := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication),
require := p_require,
pChargingVector := p_pChargingVector,
recordRoute := p_recordRoute,
route := p_route,
supported := p_supported
},
messageBody := p_mb
}
 
/**
* @desc INVITE message exchanged at Mw
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_contact
* @param p_require
* @param p_route
* @param p_recordRoute
* @param p_supported
* @param p_pChargingVector
* @param p_mb
* @param p_historyInfo
*/
template(value) INVITE_Request m_INVITE_Request_HistoryInfo_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb,
template(value) HistoryInfo p_historyInfo
) modifies m_INVITE_Request_IMS := {
msgHeader := {
historyInfo := p_historyInfo
}
}
 
/**
* @desc INVITE message exchanged at Mw
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_contact
* @param p_require
* @param p_route
* @param p_recordRoute
* @param p_supported
* @param p_pChargingVector
* @param p_mb
*/
template(value) INVITE_Request m_INVITE_Request_Mime_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb
) modifies m_INVITE_Request_IMS := {
msgHeader := {
contentType := m_contentType(c_mimeMultipart)
}
}
 
/**
* @desc INVITE message exchanged at Mw
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_contact
* @param p_require
* @param p_route
* @param p_recordRoute
* @param p_supported
* @param p_pChargingVector
*/
template(value) INVITE_Request m_INVITE_Request_IMS_noBody(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector
) modifies m_INVITE_Request_Base := {
msgHeader := {
require := p_require,
pChargingVector := p_pChargingVector,
recordRoute := p_recordRoute,
route := p_route,
supported := p_supported
}
}
 
/**
* @desc INVITE message exchanged at Mw
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_contact
* @param p_require
* @param p_route
* @param p_recordRoute
* @param p_supported
* @param p_pChargingVector
* @param p_mb
* @param p_pAssertedID
* @param p_privacy
*/
template(value) INVITE_Request m_INVITE_Request_Mime_PAsserted_Privacy_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb,
template(value) PAssertedID p_pAssertedID,
template(value) Privacy p_privacy
) modifies m_INVITE_Request_Mime_IMS := {
msgHeader := {
pAssertedID := p_pAssertedID,
privacy := p_privacy
}
}
 
/**
* @desc INVITE message exchanged at Mw
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_contact
* @param p_require
* @param p_route
* @param p_recordRoute
* @param p_acceptContact
* @param p_pAssertedID
* @param p_supported
* @param p_pChargingVector
* @param p_mb
*/
template(value) INVITE_Request m_INVITE_Request_PAsserted_AcceptContact_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute,
template(value) AcceptContact p_acceptContact,
template(value) PAssertedID p_pAssertedID,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb
) modifies m_INVITE_Request_Base := {
msgHeader := {
acceptContact := p_acceptContact,
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication),
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
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_contact
* @param p_require
* @param p_route
* @param p_recordRoute
* @param p_pAssertedID
* @param p_privacy
* @param p_supported
* @param p_pChargingVector
* @param p_mb
*/
template(value) INVITE_Request m_INVITE_Request_PAsserted_Privacy_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute,
template(value) PAssertedID p_pAssertedID,
template(value) Privacy p_privacy,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb
) modifies m_INVITE_Request_Base := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication),
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
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_contact
* @param p_require
* @param p_route
* @param p_supported
* @param p_pChargingVector
* @param p_mb
* @param p_pAssertedService
*/
template(value) INVITE_Request m_INVITE_Request_PAssertedService_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb,
template(value) PAssertedService p_pAssertedService
) modifies m_INVITE_Request_Base := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication),
require := p_require,
pChargingVector := p_pChargingVector,
route := p_route,
supported := p_supported,
pAssertedService := p_pAssertedService
},
messageBody := p_mb
}
 
/**
* @desc INVITE message exchanged at Mw
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_contact
* @param p_require
* @param p_route
* @param p_recordRoute
* @param p_supported
* @param p_pChargingVector
* @param p_mb
*/
template(value) INVITE_Request m_INVITE_Request_PEarlyMedia_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb
) modifies m_INVITE_Request_IMS := {
msgHeader := {
pEarlyMedia := m_pEarlyMedia_sup
}
}
 
template(value) INVITE_Request m_INVITE_Request_PPreferred_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(value) MessageBody p_mb,
template(value) PPreferredID p_pPreferredID
) modifies m_INVITE_Request_UE := {
msgHeader := {
pPreferredID := p_pPreferredID
}
}
 
template(value) INVITE_Request m_INVITE_Request_PPreferred_Privacy_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(value) MessageBody p_mb,
template(value) PPreferredID p_pPreferredID,
template(value) Privacy p_privacy
) modifies m_INVITE_Request_UE := {
msgHeader := {
pPreferredID := p_pPreferredID,
privacy := p_privacy
}
}
 
template(value) INVITE_Request m_INVITE_Request_SessionExpires_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(value) MessageBody p_mb,
template(value) SessionExpires p_se
) modifies m_INVITE_Request_UE := {
msgHeader := {
sessionExpires := p_se
}
}
 
template(value) INVITE_Request m_INVITE_Request_minSE_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(value) MessageBody p_mb,
template(value) MinSE p_minSE
) modifies m_INVITE_Request_UE := {
msgHeader := {
minSE := p_minSE
}
}
 
/**
* @desc INVITE message exchanged at Mw
* @param p_requestUri
* @param p_callId
* @param p_cSeq
* @param p_from
* @param p_to
* @param p_via
* @param p_contact
* @param p_require
* @param p_route
* @param p_supported
* @param p_pChargingVector
* @param p_mb
* @param p_minSE
*/
template(value) INVITE_Request m_INVITE_Request_minSE_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb,
template(value) MinSE p_minSE
) modifies m_INVITE_Request_Base := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication),
require := p_require,
pChargingVector := p_pChargingVector,
route := p_route,
supported := p_supported,
minSE := p_minSE
},
messageBody := p_mb
}
 
template(value) INVITE_Request m_INVITE_Request_User2UserData_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) Contact p_contact,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) RecordRoute p_recordRoute,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector,
template(value) MessageBody p_mb,
template(value) UserToUser.uuiData p_U2UData
) modifies m_INVITE_Request_IMS := {
msgHeader := {
userToUser := m_UserToUserData(p_U2UData)
}
}
 
template(value) MESSAGE_Request m_MESSAGE_Request_MBody_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(value) MessageBody p_mb
) modifies m_MESSAGE_Request_Base := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(m_MBody_longPlainText)),
contentType := m_contentType(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 := p_mb
}
 
template(value) MESSAGE_Request m_MESSAGE_Request_NoBody_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) 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(value) MESSAGE_Request m_MESSAGE_Request_PCharging_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported
) modifies m_MESSAGE_Request_NoBody_UE := {
msgHeader := {
pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
pChargingVector := m_pChargingVector_origIoi_fixedValue(PX_IMS_SUT_UE1_HOME_DOMAIN)
}
}
 
template(value) MESSAGE_Request m_MESSAGE_Request_PCharging_IMS(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(omit) PChargingVector p_pChargingVector
) modifies m_MESSAGE_Request_NoBody_UE := {
msgHeader := {
pAccessNetworkInfo := omit,
pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
pChargingVector := p_pChargingVector
}
}
 
template(value) MESSAGE_Request m_MESSAGE_Request_PMediaAuth_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported
) modifies m_MESSAGE_Request_NoBody_UE := {
msgHeader := {
pMediaAuthorization := m_pMediaAuthorization_fixedValue
}
}
 
template(value) MESSAGE_Request m_MESSAGE_Request_PPreferred_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported,
template(value) PPreferredID p_pPreferredID
) modifies m_MESSAGE_Request_NoBody_UE := {
msgHeader := {
pPreferredID := p_pPreferredID
}
}
 
template(value) MESSAGE_Request m_MESSAGE_Request_1300Bytes_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Require p_require,
template(omit) Route p_route,
template(omit) Supported p_supported
) modifies m_MESSAGE_Request_NoBody_UE := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(m_MBody_longPlainText)),
contentType := m_contentType(c_plainText)
// securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
},
messageBody := m_MBody_longPlainText
}
 
template(value) NOTIFY_Request m_NOTIFY_Request_Xml_IMS_Conference(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) MessageBody p_mb
) modifies m_NOTIFY_Request_Base := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_xmlApplication),
event := {
fieldName := EVENT_E,
eventType := "conference",
eventParams := omit
},
subscriptionState := {
fieldName := SUBSCRIPTION_STATE_E,
subState := "active",
substateParams := omit
},
expires := m_expires(3600)
},
messageBody := p_mb
}
 
template(value) NOTIFY_Request m_NOTIFY_Request_Xml_IMS_RegInfo(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Contact p_contact,
template(value) MessageBody p_mb
) modifies m_NOTIFY_Request_Base := {
msgHeader := {
contact := p_contact,
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_xmlreginfoApplication),
event := m_Event_reg,
subscriptionState := m_SubscriptionState_active,
expires := m_expires(3600)
},
messageBody := p_mb
}
 
template(value) PRACK_Request m_PRACK_Request_sdp(
template(value) SipUrl p_requestUri,
template(omit) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) RAck p_RAck,
template(value) MessageBody p_mb
) modifies m_PRACK_Request_Base := {
requestLine := {requestUri := p_requestUri},
msgHeader := {
callId := p_callId,
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication),
cSeq := m_cSeq(p_cSeq.seqNumber, "PRACK"),
fromField := p_from,
rAck := p_RAck,
toField := p_to,
via := p_via
},
messageBody := p_mb
}
 
template(value) PUBLISH_Request m_PUBLISH_Request_UE(
template(value) SipUrl p_requestUri,
template(value) CallId p_callId,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Event p_event,
template(omit) RAck p_RAck,
template(value) MessageBody p_mb,
template(omit) Route p_route
) modifies m_PUBLISH_Request_Base := {
requestLine := {requestUri := p_requestUri},
msgHeader := {
callId := p_callId,
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_plainText /*c_sdpApplication*/),
cSeq := m_cSeq(p_cSeq.seqNumber, "PUBLISH"),
event := p_event,
fromField := p_from,
route := p_route,
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,