Compare Revisions

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

Ignore whitespace Rev 208 → Rev 209

/branches/v3/ttcn/LibIms_Steps.ttcn
File deleted
\ No newline at end of file
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/v3/ttcn/LibIms_Templates.ttcn
===================================================================
--- branches/v3/ttcn/LibIms_Templates.ttcn (revision 208)
+++ branches/v3/ttcn/LibIms_Templates.ttcn (nonexistent)
@@ -1,4610 +0,0 @@
-/**
- * @author STF471
- * @version $Id$
- * @desc This module provides the templates used by the test component for SIP-IMS tests.
- * This module is part of LibImsV3.
- */
-module LibIms_Templates {
- // LibCommon
- import from LibCommon_DataStrings all;
-
- // LibSip
- import from LibSip_SIPTypesAndValues 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;
-
- // LibXMLTypes
- import from XSD all;
-
- import from urn_ietf_params_xml_ns_resource_lists language "XSD" all
- with {
- extension "File:../xsd/ResourceList.xsd";
- }
-
- 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+";
-
- template(present) NameAddr mw_SipUrl_SUTinterface(
- template(present) charstring p_host := ?,
- template(present) integer p_port := ?
- ) := {
- displayName := *,
- addrSpec := {
- scheme := "sip:",
- components := {
- sip := {
- userInfo := *,
- hostPort := mw_hostPort(p_host, p_port)
- }
- },
- urlParameters := *,
- headers := *
- }
- }
-
- template(present) Addr_Union mw_UE1_Addr_display(
- template(present) charstring p_displayName
- ) := {
- nameAddr := {
- displayName := p_displayName,
- addrSpec := ?
- }
- }
-
- group subfields {
-
- 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
- }
-
- template(present) SemicolonParam_List mw_semicolonParams_realm(
- template GenValue p_realm
- ) :=
- superset(
- {
- "realm",
- p_realm
- },
- {
- "nonce",
- ?
- },
- {
- "algorithm",
- { tokenOrHost := "AKAv1-MD5" }
- },
- {
- "ik",
- ?
- },
- {
- "ck",
- ?
- }
- );
-
- template(value) SemicolonParam_List m_semicolonParams_language(
- template(omit) GenValue p_language := omit
- ) := {
- {
- "language",
- p_language
- }
- }
-
- template(present) SemicolonParam_List mw_semicolonParams_language(
- template GenValue p_language
- ) := {
- {
- "language",
- p_language
- }
- }
-
- template(value) SemicolonParam_List m_semicolonParams_isub(
- template(omit) GenValue p_address := omit
- ) := {
- {
- "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) charstring p_host,
- template(value) integer p_port,
- 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(
- template(value) charstring p_host,
- template(value) integer p_port
- ) := {
- fieldName := PATH_E,
- pathValues := {
- {
- nameAddr := {
- displayName := omit, // optional charstring
- addrSpec := {
- scheme := c_sipScheme,
- components := {
- sip := {
- userInfo := {
- userOrTelephoneSubscriber := "registrar",
- password := omit
- },
- hostPort := {p_host, p_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 := { tokenOrHost := "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 := { tokenOrHost := "192.1.1.1" }
- }, // value is fixed because it is deleted on proxy
- {
- id := "ecf",
- paramValue := { tokenOrHost := "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 := omit
- ) 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) GenValue p_homeDomain
- ) modifies m_pChargingVector_icid_TS := {
- chargeParams := {
- {
- id := c_icid_generated_at,
- paramValue := { tokenOrHost := "192.1.1.10" }
- },
- {
- id := c_orig_ioi,
- paramValue := p_homeDomain
- }
- }
- }
-
- template(value) PChargingVector m_pChargingVector_termIoi_fixedValue(
- template(value) GenValue p_homeDomain
- ) modifies m_pChargingVector_icid_TS := {
- chargeParams := {
- {
- id := c_icid_generated_at,
- paramValue := { tokenOrHost := "192.1.1.10" }
- },
- {
- id := c_term_ioi,
- paramValue := p_homeDomain
- }
- }
- }
-
- template(value) PChargingVector m_pChargingVector_accessNetwInfo(
- template(value) GenValue p_homeDomain
- ) modifies m_pChargingVector_icid_TS := {
- chargeParams := {
- {
- id := c_term_ioi,
- paramValue := p_homeDomain
- },
- {
- id := c_access_network_charging_info,
- paramValue := { tokenOrHost := "192.1.1.10" }
- }
- }
- }
-
- // NOTE STF471 change: icidValue added
- template(present) PChargingVector mw_pChargingVector(
- template(present) charstring p_id := ?,
- template GenValue 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(
- template(present) charstring p_vNetworkSpecToken
- ) modifies m_pVisitedNetworkID_TS := {
- vNetWorkSpec := {
- {
- vNetworkSpecToken := p_vNetworkSpecToken,
- 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 := { tokenOrHost := 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 := {
- tokenOrHost := 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 := { tokenOrHost := "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(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) 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 := omit
- ) := {
- fieldName := ACCEPT_CONTACT_E,
- acValues := {
- {
- 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
- }
-
- 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
-
- 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,
- 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,
- 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
-
- group acrCbTemplates {
-
- template(value) Incoming_communication_barring m_ICB(
- template(value) RuleType p_ruleType
- ) := {
- active := omit,
- attr := omit,
- ruleset := {
- {p_ruleType}
- }
- }
-
- template(value) Outgoing_communication_barring m_OCB(
- template(value) RuleType p_ruleType
- ) := {
- active := omit,
- attr := omit,
- 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(value) ConditionsType m_conditionsType_identity(
- template(value) charstring p_id
- ) := {
- {
- {
- identity_list := {
- {
- {
- {
- one := {
- id := p_id,
- elem := omit
- }
- }
- }
- }
- }
- }
- }
- }
-
-
- } // end group acr_cbTemplates
-
- group cugTemplates {
-
- template(value) Cug m_CUG(
- template(omit) CugRequestType p_crt := omit,
- template(omit) NetworkIdentityType p_nit := omit,
- template(omit) SixteenbitType p_cibc := omit,
- template(omit) TwobitType p_cci := omit
- ) := {
- active := omit,
- attr := omit,
- 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(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,
- 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 := "11",
- userInfoLayer3Protocol := "00010"
- },
- 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,
- comm_div_selection_criteria := {
- attr := omit,
- 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 group 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,
- 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,
- display_name := omit,
- elem_list := {}
- }
-
- } // end group 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 ims3gppTemplates
-
- group confTemplates {
-
- template(value) XSD.Boolean m_boolXSD_true := true;
-
- template(value) XSD.Boolean m_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,
- 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 := omit,
- template(omit) Endpoint_status_type p_epStatus := omit,
- template(omit) Joining_type p_joinMethod := omit,
- template(omit) Disconnection_type p_discMethod := omit,
- template(value) urn_ietf_params_xml_ns_conference_info.Media_type p_mediastatus
- ) := {
- entity := p_Uri,
- state := full,
- attr := omit,
- display_text := omit,
- referred := omit,
- status := p_epStatus,
- joining_method := p_joinMethod,
- joining_info := omit,
- disconnection_method := p_discMethod,
- disconnection_info := omit,
- media_list := {p_mediastatus}, // optional,
- call_info := omit,
- elem_list := {}
- }
-
- template(value) User_type m_1user(
- template(omit) charstring p_Uri := omit,
- template(value) Endpoint_type p_endpoint
- ) := {
- entity := p_Uri,
- state := full,
- attr := omit,
- 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,
- 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,
- 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,
- 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 := ?,
- call_info := *,
- elem_list := ?
- }
- },
- elem_list := ?
- }
- },
- elem_list := ?
- },
- sidebars_by_ref := *,
- sidebars_by_val := *,
- elem_list := ?
- }
- }
-
- } // end group messageBodyTemplates
-
- group messageTemplates {
-
- group modifiedTemplates {
-
- group requestSend {
-
- 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 := omit
- ) 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 := omit,
- template(omit) RecordRoute p_recordRoute := omit
- ) 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 := omit
- ) 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(omit) MessageBody p_mb,
- template(omit) Route p_route := omit
- ) 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 := omit,
- 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 := omit,
- template(value) GenValue 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 := omit,
- 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 := omit
- ) modifies m_BYE_Request_Base := {
- msgHeader := {
- pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
- 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 := omit
- ) 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 := omit,
- 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 := omit
- ) 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) Supported p_supported := omit,
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) Supported p_supported := omit
- ) modifies m_INVITE_Request_Base := {
- msgHeader := {
- pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
- require := p_require,
- route := p_route,
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) Supported p_supported := omit,
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) Supported p_supported := omit,
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(omit) Supported p_supported := omit,
- template(omit) PChargingVector p_pChargingVector := omit,
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(omit) Supported p_supported := omit,
- template(omit) PChargingVector p_pChargingVector := omit,
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(omit) Supported p_supported := omit,
- template(omit) PChargingVector p_pChargingVector := omit,
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(omit) Supported p_supported := omit,
- template(omit) PChargingVector p_pChargingVector := omit
- ) 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(omit) Supported p_supported := omit,
- template(omit) PChargingVector p_pChargingVector := omit,
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(value) AcceptContact p_acceptContact,
- template(value) PAssertedID p_pAssertedID,
- template(omit) Supported p_supported := omit,
- template(omit) PChargingVector p_pChargingVector := omit,
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(value) PAssertedID p_pAssertedID,
- template(value) Privacy p_privacy,
- template(omit) Supported p_supported := omit,
- template(omit) PChargingVector p_pChargingVector := omit,
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) Supported p_supported := omit,
- template(omit) PChargingVector p_pChargingVector := omit,
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(omit) Supported p_supported := omit,
- template(omit) PChargingVector p_pChargingVector := omit,
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) Supported p_supported := omit,
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) Supported p_supported := omit,
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) Supported p_supported := omit,
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) Supported p_supported := omit,
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) Supported p_supported := omit,
- template(omit) PChargingVector p_pChargingVector := omit,
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(omit) Supported p_supported := omit,
- template(omit) PChargingVector p_pChargingVector := omit,
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) Supported p_supported := omit,
- 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,
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) Supported p_supported := omit
- ) 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) Supported p_supported := omit,
- template(value) GenValue p_homeDomain
- ) modifies m_MESSAGE_Request_NoBody_UE := {
- msgHeader := {
- pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
- pChargingVector := m_pChargingVector_origIoi_fixedValue(p_homeDomain)
- }
- }
-
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) Supported p_supported := omit,
- template(omit) PChargingVector p_pChargingVector := omit
- ) 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) Supported p_supported := omit
- ) 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) Supported p_supported := omit,
- 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 := omit,
- template(omit) Route p_route := omit,
- template(omit) Supported p_supported := omit
- ) modifies m_MESSAGE_Request_NoBody_UE := {
- msgHeader := {
- contentLength := m_contentLength(f_MessageBodyLength(m_MBody_longPlainText)),
- contentType := m_contentType(c_plainText)
- },
- 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 := omit,
- 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 := omit,
- 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 := omit,
- template(omit) RAck p_RAck := omit,
- template(value) MessageBody p_mb,
- template(omit) Route p_route := omit
- ) 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 := omit,
- template(omit) RAck p_RAck := omit,
- template(value) MessageBody p_mb,
- template(omit) Route p_route := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(omit) PChargingVector p_pChargingVector := omit
- ) 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 := omit,
- 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 := omit,
- template(omit) Require p_require := omit,
- template(omit) Route p_route := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(omit) Supported p_supported := omit,
- template(omit) PChargingVector p_pChargingVector := omit,
- 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 := omit,
- template(omit) Authorization p_authorization := omit,
- template(omit) ProxyRequire p_proxyRequire := omit,
- template(omit) Require p_require := omit,
- template(omit) SecurityClient p_securityClient := omit,
- template(omit) SecurityVerify p_securityVerify := omit,
- template(omit) Supported p_supported := omit
- ) 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 := omit,
- 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 := omit,
- template(omit) Authorization p_authorization := omit,
- template(value) charstring p_host,
- template(value) integer p_port
- ) 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(p_host, p_port),
- 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 := omit,
- template(omit) Authorization p_authorization := omit,
- template(value) charstring p_host,
- template(value) integer p_port,
- template(omit) Path p_path := omit
- ) 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 := omit,
- 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 := omit,
- template(omit) Authorization p_authorization := omit,
- template(value) charstring p_host,
- template(value) integer p_port,
- 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 := omit,
- 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 := omit,
- template(omit) Route p_route := omit
- ) 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 := omit,
- 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 := omit,
- 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 := omit
- ) 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 := omit,
- template(value) Event p_event
- ) modifies m_SUBSCRIBE_Request_IMS := {
- msgHeader := {
- event := p_event
- }
- }
-
- } // end group requestSend
-
- group requestReceive {
-
- 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
- }
- }
-
- 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))
- )
- }
-
- /**
- * @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
- }
- }
-
-
- /**
- * @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(present) 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(present) 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 GenValue 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
- }
- }
-
- 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
- }
- }
-
- 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(present) 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(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 := *,
- pAssertedID := p_pAssertedID,
- pChargingVector := p_pChargingVector
- }
- }
-
- template(present) UPDATE_Request mw_UPDATE_Request_fromChange(
- template CallId p_callId,
- template(present) From p_from := ?
- ) modifies mw_UPDATE_Request_Base := {
- msgHeader := {
- callId := p_callId,
- fromField := p_from
- }
- }
-
- } // end group requestReceive
-
- group responseSend {
-
- group responseSend1xx {
-
- template(value) Response m_Response_18x_Base(
- template(value) StatusLine_18x p_statusLine,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via
- ) modifies m_Response_Dummy := {
- statusLine := p_statusLine,
- msgHeader := {
- callId := p_callId,
- cSeq := p_cSeq,
- fromField := p_from,
- maxForwards := omit,
- toField := p_to,
- via := p_via
- },
- messageBody := omit,
- payload := omit
- }
-
- template(value) Response m_Response_18XonINVITE(
- template(value) StatusLine_18x p_statusLine,
- 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 := omit
- ) modifies m_Response_18x_Base := {
- msgHeader := {
- contact := p_contact // mandatory field due to 24 229 rel 7.9
- }
- }
-
- template(value) Response m_Response_18XonINVITE_AlertInfo(
- template(value) StatusLine_18x p_statusLine,
- 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) AlertInfo p_alertInfo
- ) modifies m_Response_18x_Base := {
- msgHeader := {
- alertInfo := p_alertInfo
- }
- }
-
- template(value) Response m_Response_18XonINVITE_sdp_require(
- template(value) StatusLine_18x p_statusLine,
- 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 := omit,
- template(value) MessageBody p_mb,
- template(omit) Require p_require := omit
- ) modifies m_Response_18x_Base := {
- msgHeader := {
- contact := p_contact,
- contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
- contentType := m_contentType(c_sdpApplication),
- require := p_require,
- rSeq := m_rseq9999
- },
- messageBody := p_mb
- }
-
- template(value) Response m_Response_18XonINVITE_AS(
- template(value) StatusLine_18x p_statusLine,
- 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 := omit,
- template(omit) RecordRoute p_recordRoute := omit
- ) modifies m_Response_18x_Base := {
- msgHeader := {
- contact := p_contact,
- recordRoute := p_recordRoute
- }
- }
-
- template(value) Response m_Response_18XonINVITE_UE(
- template(value) StatusLine_18x p_statusLine,
- 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 := omit
- ) modifies m_Response_18x_Base := {
- msgHeader := {
- contact := p_contact,
- rSeq := m_rseq9999
- }
- }
-
- template(value) Response m_Response_18XonINVITE_HistoryInfo_UE(
- template(value) StatusLine_18x p_statusLine,
- 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 := omit,
- template(value) HistoryInfo p_historyInfo
- ) modifies m_Response_18XonINVITE_UE := {
- msgHeader := {
- historyInfo := p_historyInfo
- }
- }
-
- template(value) Response m_Response_18XonINVITE_PchargingVector(
- template(value) StatusLine_18x p_statusLine,
- 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 := omit,
- template(value) PChargingVector p_pChargingVector
- ) modifies m_Response_18x_Base := {
- msgHeader := {
- contact := p_contact,
- pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
- pChargingVector := p_pChargingVector
- }
- }
-
- template(value) Response m_Response_18XonINVITE_pEearlyMedia(
- template(value) StatusLine_18x p_statusLine,
- 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) PEarlyMedia p_pEarlyMedia
- ) modifies m_Response_18x_Base := {
- msgHeader := {
- pEarlyMedia := p_pEarlyMedia
- }
- }
-
- template(value) Response m_Response_18XonINVITE_pPreferred_UE(
- template(value) StatusLine_18x p_statusLine,
- 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 := omit,
- template(value) PPreferredID p_pPreferredID
- ) modifies m_Response_18XonINVITE_UE := {
- msgHeader := {
- pPreferredID := p_pPreferredID
- }
- }
-
- template(value) Response m_Response_18XonINVITE_pAsserted_UE(
- template(value) StatusLine_18x p_statusLine,
- 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 := omit,
- template(value) PAssertedID p_pAssertedID
- ) modifies m_Response_18XonINVITE_UE := {
- msgHeader := {
- pAssertedID := p_pAssertedID
- }
- }
-
- template(value) Response m_Response_18XonINVITE_pAsserted_privacy_UE(
- template(value) StatusLine_18x p_statusLine,
- 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 := omit,
- template(value) PAssertedID p_pAssertedID,
- template(value) Privacy p_privacy
- ) modifies m_Response_18XonINVITE_pAsserted_UE := {
- msgHeader := {
- privacy := p_privacy
- }
- }
-
- template(value) Response m_Response_18XonINVITE_privacy_UE(
- template(value) StatusLine_18x p_statusLine,
- 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 := omit,
- template(value) Privacy p_privacy
- ) modifies m_Response_18XonINVITE_UE := {
- msgHeader := {
- privacy := p_privacy
- }
- }
-
- // NOTE STF471: changed order of parameter p_supported and p_privacy to be able to modify from m_Response_18XonINVITE_privacy_UE
- template(value) Response m_Response_18XonINVITE_supported_privacy_UE(
- template(value) StatusLine_18x p_statusLine,
- 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 := omit,
- template(value) Privacy p_privacy,
- template(value) Supported p_supported
- ) modifies m_Response_18XonINVITE_privacy_UE := {
- msgHeader := {
- supported := p_supported
- }
- }
-
- template(value) Response m_Response_18XonINVITE_recordRoute_UE(
- template(value) StatusLine_18x p_statusLine,
- 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 := omit,
- template(value) RecordRoute p_recordRoute
- ) modifies m_Response_18XonINVITE_UE := {
- msgHeader := {
- recordRoute := p_recordRoute // for INVITE response
- }
- }
-
- template(value) Response m_Response_18XonINVITE_Require(
- template(value) StatusLine_18x p_statusLine,
- 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) Require p_require
- ) modifies m_Response_18x_Base := {
- msgHeader := {
- require := p_require
- }
- }
-
- // NOTE STF471: removed m_Response_18XonINVITE_Require_ifpresent as it is same as m_Response_18XonINVITE_Require
- template(value) Response m_Response_18XonINVITE_UserToUser(
- template(value) StatusLine_18x p_statusLine,
- 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) UserToUser.uuiData p_U2UData
- ) modifies m_Response_18x_Base := {
- msgHeader := {
- userToUser := m_UserToUserData(p_U2UData)
- }
- }
-
- template(value) Response m_Response_18XonINVITE_Xml(
- template(value) StatusLine_18x p_statusLine,
- 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 := omit,
- template(value) MessageBody p_mb
- ) modifies m_Response_18XonINVITE_UE := {
- msgHeader := {
- contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
- contentType := m_contentType(c_xmlApplication)
- },
- messageBody := p_mb
- }
-
- template(value) Response m_Response_18XonINVITE_sdp_UE(
- template(value) StatusLine_18x p_statusLine,
- 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 := omit,
- template(value) MessageBody p_mb
- ) modifies m_Response_18XonINVITE_Xml := {
- msgHeader := {
- contentType := m_contentType(c_sdpApplication)
- }
- }
-
- // NOTE STF471: changed order of parameter p_require and p_mb to be able to modify from m_Response_18XonINVITE_sdp_UE
- template(value) Response m_Response_18XonINVITE_require_sdp_UE(
- template(value) StatusLine_18x p_statusLine,
- 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 := omit,
- template(value) MessageBody p_mb,
- template(omit) Require p_require := omit,
- template(omit) LibSip_SIPTypesAndValues.Allow p_allow := omit
- ) modifies m_Response_18XonINVITE_sdp_UE := {
- msgHeader := {
- require := p_require,
- allow := p_allow
- }
- }
-
- } // end group responseSend1xx
-
- group responseSend2xx {
-
- template(value) Response m_Response_2xx_Base(
- template(value) StatusLine_2xx p_statusLine,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via
- ) modifies m_Response_Dummy := {
- statusLine := p_statusLine,
- msgHeader := {
- callId := p_callId,
- cSeq := p_cSeq,
- fromField := p_from,
- maxForwards := omit,
- toField := p_to,
- via := p_via
- },
- messageBody := omit,
- payload := omit
- }
-
- template(value) Response m_Response_2xx_ext(
- template(value) StatusLine_2xx p_statusLine,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(omit) Route p_route := omit,
- template(omit) RecordRoute p_recordroute := omit
- ) modifies m_Response_2xx_Base := {
- msgHeader := {
- route := p_route, // f_route(),
- recordRoute :=
- p_recordroute // f_recordroute()
- }
- }
-
- template(value) Response m_Response_2xx_mbody(
- template(value) StatusLine_2xx p_statusLine,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(omit) Route p_route := omit,
- template(omit) RecordRoute p_recordroute := omit,
- template(value) MessageBody p_mb
- ) modifies m_Response_2xx_ext := {
- msgHeader := {
- contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
- contentType := m_contentType(c_sdpApplication)
- },
- messageBody := p_mb
- }
-
- template(value) Response m_Response_2xxonBYE_UE(
- template(value) StatusLine_2xx p_statusLine,
- 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 := omit
- ) modifies m_Response_2xx_Base := {
- msgHeader := {
- contact := p_contact
- }
- }
-
- template(value) Response m_Response_2xxonINVITE(
- template(value) StatusLine_2xx p_statusLine,
- 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 := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(value) MessageBody p_mb
- ) modifies m_Response_2xx_Base := {
- msgHeader := {
- contact := p_contact,
- contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
- contentType := m_contentType(c_sdpApplication),
- recordRoute := p_recordRoute // for INVITE response
- },
- messageBody := p_mb
- }
-
- // NOTE STF471: changed order of parameter p_historyInfo and p_mb to be able to modify from m_Response_2xxonINVITE
- template(value) Response m_Response_2xxonINVITE_HistoryInfo(
- template(value) StatusLine_2xx p_statusLine,
- 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 := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(value) MessageBody p_mb,
- template(value) HistoryInfo p_historyInfo
- ) modifies m_Response_2xxonINVITE := {
- msgHeader := {
- historyInfo := p_historyInfo
- }
- }
-
- template(value) Response m_Response_2xxonINVITE_Mime(
- template(value) StatusLine_2xx p_statusLine,
- 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 := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(value) MessageBody p_mb
- ) modifies m_Response_2xxonINVITE := {
- msgHeader := {
- contentType := m_contentType(c_mimeMultipart)
- }
- }
-
- template(value) Response m_Response_2xxonINVITE_UE(
- template(value) StatusLine_2xx p_statusLine,
- 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 := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(value) MessageBody p_mb
- ) modifies m_Response_2xxonINVITE := {
- }
-
- template(value) Response m_Response_2xxonINVITE_PchargingVector(
- template(value) StatusLine_2xx p_statusLine,
- 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 := omit,
- template(omit) RecordRoute p_recordroute := omit,
- template(value) MessageBody p_mb,
- template(omit) Contact p_contact := omit,
- template(value) PChargingVector p_pChargingVector
- ) modifies m_Response_2xx_mbody := {
- msgHeader := {
- contact := p_contact,
- pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
- pChargingVector := p_pChargingVector
- }
- }
-
- // NOTE STF471: changed order of parameter p_pPreferredID and p_mb to be able to modify from m_Response_2xxonINVITE
- template(value) Response m_Response_2XXonINVITE_pPreferred_UE(
- template(value) StatusLine_2xx p_statusLine,
- 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 := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(value) MessageBody p_mb,
- template(value) PPreferredID p_pPreferredID
- ) modifies m_Response_2xxonINVITE := {
- msgHeader := {
- pPreferredID := p_pPreferredID
- }
- }
-
- // NOTE STF471: changed order of parameter p_pPreferredID and p_mb to be able to modify from m_Response_2xxonINVITE
- template(value) Response m_Response_2XXonINVITE_pAsserted_UE(
- template(value) StatusLine_2xx p_statusLine,
- 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 := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(value) MessageBody p_mb,
- template(value) PAssertedID p_pAssertedID
- ) modifies m_Response_2xxonINVITE := {
- msgHeader := {
- pAssertedID := p_pAssertedID
- }
- }
-
- // NOTE STF471: changed order of parameter p_pAssertedID/p_privacy and p_mb to be able to modify from m_Response_2XXonINVITE_pAsserted_UE
- template(value) Response m_Response_2XXonINVITE_pAsserted_privacy_UE(
- template(value) StatusLine_2xx p_statusLine,
- 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 := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(value) MessageBody p_mb,
- template(value) PAssertedID p_pAssertedID,
- template(value) Privacy p_privacy
- ) modifies m_Response_2XXonINVITE_pAsserted_UE := {
- msgHeader := {
- privacy := p_privacy
- }
- }
-
- // NOTE STF471: changed order of parameter p_privacy and p_mb to be able to modify from m_Response_2xxonINVITE
- template(value) Response m_Response_2XXonINVITE_privacy_UE(
- template(value) StatusLine_2xx p_statusLine,
- 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 := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(value) MessageBody p_mb,
- template(value) Privacy p_privacy
- ) modifies m_Response_2xxonINVITE := {
- msgHeader := {
- privacy := p_privacy
- }
- }
-
- // NOTE STF471: changed order of parameter p_supported/p_privacy and p_mb to be able to modify from m_Response_2XXonINVITE_privacy_UE
- template(value) Response m_Response_2XXonINVITE_supported_privacy_UE(
- template(value) StatusLine_2xx p_statusLine,
- 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 := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(value) MessageBody p_mb,
- template(value) Privacy p_privacy,
- template(value) Supported p_supported
- ) modifies m_Response_2XXonINVITE_privacy_UE := {
- msgHeader := {
- supported := p_supported
- }
- }
-
- template(value) Response m_Response_2xxonINVITE_UserToUser(
- template(value) StatusLine_2xx p_statusLine,
- 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 := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(value) MessageBody p_mb,
- template(value) UserToUser.uuiData p_U2UData
- ) modifies m_Response_2xxonINVITE := {
- msgHeader := {
- userToUser := m_UserToUserData(p_U2UData)
- }
- }
-
- template(value) Response m_Response_2xxonREGISTER_IMS(
- template(value) StatusLine_2xx p_statusLine,
- template(omit) CallId p_callId := omit,
- 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 := omit,
- template(value) SipUrl p_serviceroute_sip_url,
- template(value) SipUrl p_passociated_uri
- ) modifies m_Response_2xx_Base := {
- msgHeader := {
- contact := p_contact,
- serviceRoute := {
- fieldName := SERVICE_ROUTE_E,
- routeBody := {
- {
- nameAddr := {
- displayName := omit,
- addrSpec := p_serviceroute_sip_url
- },
- rrParam := omit
- }
- }
- },
- pAssociatedURI :=
- m_pAssociatedURI(
- {
- displayName := omit,
- addrSpec := p_passociated_uri
- }
- ) // PAssociatedURI RFC3455
- }
- }
-
- template(value) Response m_Response_2xxonSUBSCRIBE_IMS(
- template(value) StatusLine_2xx p_statusLine,
- 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 := omit
- ) modifies m_Response_2xx_Base := {
- msgHeader := {
- contact := p_contact
- }
- }
-
- template(value) Response m_Response_2xxonSUBSCRIBE_UE(
- template(value) StatusLine_2xx p_statusLine,
- 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 := omit
- ) modifies m_Response_2xxonSUBSCRIBE_IMS := {
- }
-
- template(value) Response m_Response_2xxonMESSAGE_PAccessNetwInfo_UE(
- template(value) StatusLine_2xx p_statusLine,
- 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
- ) modifies m_Response_2xx_Base := {
- msgHeader := {
- pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a
- }
- }
-
- template(value) Response m_Response_2xxonMESSAGE_PCharging_UE(
- template(value) StatusLine_2xx p_statusLine,
- 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) PChargingVector p_pChargingVector
- ) modifies m_Response_2xx_Base := {
- msgHeader := {
- pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
- pChargingVector := p_pChargingVector
- }
- }
-
- template(value) Response m_Response_2xxonMESSAGE_PCharging_IMS(
- template(value) StatusLine_2xx p_statusLine,
- 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) PChargingVector p_pChargingVector
- ) modifies m_Response_2xxonMESSAGE_PCharging_UE := {
- }
-
- template(value) Response m_Response_2xxonMESSAGE_PMediaAuth_UE(
- template(value) StatusLine_2xx p_statusLine,
- 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
- ) modifies m_Response_2xx_Base := {
- msgHeader := {
- pMediaAuthorization := m_pMediaAuthorization_fixedValue
- }
- }
-
- template(value) Response m_Response_2xxonMESSAGE_pPreferredID_UE(
- template(value) StatusLine_2xx p_statusLine,
- 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) PPreferredID p_pPreferredID
- ) modifies m_Response_2xx_Base := {
- msgHeader := {
- pPreferredID := p_pPreferredID
- }
- }
-
- template(value) Response m_Response_2xxonUPDATE(
- template(value) StatusLine_2xx p_statusLine,
- 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 := omit,
- template(omit) RecordRoute p_recordRoute := omit,
- template(value) MessageBody p_mb
- ) modifies m_Response_2xx_Base := {
- msgHeader := {
- contact := p_contact,
- contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
- contentType := m_contentType(c_sdpApplication),
- recordRoute := p_recordRoute
- },
- messageBody := p_mb
- }
-
- } // end group responseSend2xx
-
- group responseSend3xx {
-
- template(value) Response m_Response_3xx_Base(
- template(value) StatusLine_3xx p_statusLine,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via
- ) modifies m_Response_Dummy := {
- statusLine := p_statusLine,
- msgHeader := {
- callId := p_callId,
- cSeq := p_cSeq,
- fromField := p_from,
- maxForwards := omit,
- toField := p_to,
- via := p_via
- },
- messageBody := omit,
- payload := omit
- }
-
- template(value) Response m_Response_3XXonINVITE(
- template(value) StatusLine_3xx p_statusLine,
- 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 := omit
- ) modifies m_Response_3xx_Base := {
- msgHeader := {
- contact := p_contact
- }
- }
-
- } // end group responseSend3xx
-
- group responseSend4xx {
-
- template(value) Response m_Response_4xx_Base(
- template(value) StatusLine_4xx p_statusLine,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via
- ) modifies m_Response_Dummy := {
- statusLine := p_statusLine,
- msgHeader := {
- callId := p_callId,
- cSeq := p_cSeq,
- fromField := p_from,
- maxForwards := omit,
- toField := p_to,
- via := p_via
- },
- messageBody := omit,
- payload := omit
- }
-
- template(value) Response m_Response_4XXonINVITE(
- template(value) StatusLine_4xx p_statusLine,
- 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 := omit
- ) modifies m_Response_4xx_Base := {
- msgHeader := {
- contact := p_contact
- }
- }
-
- template(value) Response m_Response_4XXonINVITE_UE(
- template(value) StatusLine_4xx p_statusLine,
- 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 := omit
- ) modifies m_Response_4xx_Base := {
- msgHeader := {
- contact := p_contact
- }
- }
-
- } // end group responseSend4xx
-
- template(value) Response m_Response_onCANCEL(
- template(value) StatusLine p_statusLine,
- 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
- ) modifies m_Response_Base := {
- }
-
- template(value) Response m_Response_onMESSAGE_IMS(
- template(value) StatusLine p_statusLine,
- 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 := omit
- ) modifies m_Response_Base := {
- msgHeader := {
- contact := p_contact
- }
- }
-
- template(value) Response m_Response_onINVITE(
- template(value) StatusLine p_statusLine,
- 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 := omit
- ) modifies m_Response_Base := {
- msgHeader := {
- contact := p_contact
- }
- }
-
- template(value) Response m_Response_onINVITE_Reason(
- template(value) StatusLine p_statusLine,
- 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 := omit,
- template(value) GenValue p_cause
- ) modifies m_Response_onINVITE := {
- msgHeader := {
- reason := mw_Reason(p_cause)
- }
- }
-
- template(value) Response m_Response_WWWauthenticate_IMS(
- template(value) StatusLine p_statusLine,
- template(omit) CallId p_callId := omit,
- template(value) CSeq p_cSeq,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(value) WwwAuthenticate p_wwwAuthenticate
- ) modifies m_Response_Base := {
- msgHeader := {
- wwwAuthenticate := p_wwwAuthenticate
- }
- }
-
- } // end group responseSend
-
- group responseReceive {
-
- group responseReceive2xx {
-
- // NOTE STF471: removed statusline parameter as it is fixed 200 status code
- template(present) Response mw_Response_200onINVITE_noPChargingVector_UE(
- template CallId p_callId,
- template CSeq p_cSeq
- ) modifies mw_Response_2xx_Base := {
- statusLine := {
- sipVersion := c_sipNameVersion,
- statusCode := 200,
- reasonPhrase := ?
- },
- msgHeader := {
- pChargingVector := omit
- }
- }
-
- // NOTE STF471: removed statusline parameter as it is fixed 200 status code
- template(present) Response mw_Response_200onINVITE_SDP_UE(
- template CallId p_callId,
- template CSeq p_cSeq
- ) modifies mw_Response_2xx_Base := {
- statusLine := {
- sipVersion := c_sipNameVersion,
- statusCode := 200,
- reasonPhrase := ?
- },
- messageBody := {
- sdpMessageBody := ?
- }
- }
-
- // NOTE STF471: removed statusline parameter as it is a 200.299 status code
- template(present) Response mw_Response_2xxonMESSAGE_noPCharging_UE(
- template CallId p_callId,
- template CSeq p_cSeq
- ) modifies mw_Response_2xx_Base := {
- msgHeader := {
- pChargingFunctionAddresses := omit,
- pChargingVector := omit
- }
- }
-
- // NOTE STF471: removed statusline parameter as it is a 200..299 status code
- template(present) Response mw_Response_2xxonMESSAGE_noPCharging_IMS(
- template CallId p_callId,
- template CSeq p_cSeq
- ) modifies mw_Response_2xxonMESSAGE_noPCharging_UE := {
- }
-
- // NOTE STF471: removed statusline parameter as it is a 200..299 status code
- template(present) Response mw_Response_2xxonMESSAGE_noPAccessNetworkInfo_IMS(
- template CallId p_callId,
- template CSeq p_cSeq
- ) modifies mw_Response_2xx_Base := {
- msgHeader := {
- pAccessNetworkInfo := omit
- }
- }
-
- // NOTE STF471: removed statusline parameter as it is a 200..299 status code
- template(present) Response mw_Response_2xxonMESSAGE_noPMediaAuthorization_IMS(
- template CallId p_callId,
- template CSeq p_cSeq
- ) modifies mw_Response_2xx_Base := {
- msgHeader := {
- pMediaAuthorization := omit
- }
- }
-
- // NOTE STF471: removed statusline parameter as it is a fixed 200 status code
- template(present) Response mw_Response_200onREGISTER_IMS(
- template CallId p_callId,
- template CSeq p_cSeq,
- template SipUrl p_ue_uri,
- template Contact p_contact,
- template SipUrl p_sut_scscf_uri
- ) modifies mw_Response_2xx_Base := {
- statusLine := {
- sipVersion := c_sipNameVersion,
- statusCode := 200,
- reasonPhrase := ?
- },
- msgHeader := {
- pAssociatedURI := {
- fieldName := P_ASSOCIATED_URI_E,
- nameAddrList := {
- *,
- {
- nameAddr := {
- displayName := *,
- addrSpec := p_ue_uri
- },
- genericParams := *
- },
- *
- }
- },
- path := ?,
- serviceRoute := {
- fieldName := SERVICE_ROUTE_E,
- routeBody := {
- {
- nameAddr := {
- displayName := *,
- addrSpec := p_sut_scscf_uri
- },
- rrParam := *
- }
- }
- },
- pChargingFunctionAddresses := ?,
- pChargingVector := ?,
- contact := p_contact
- }
- }
-
- } // end group responseReceive2xx
-
- group responseReceive4xx {
-
- // NOTE STF471: removed statusline parameter as it is a fixed 401 status code
- template(present) Response mw_Response_401onREGISTER_securityServer_UE(
- template CallId p_callId,
- template CSeq p_cSeq
- ) modifies mw_Response_4xx_Base := {
- statusLine := {
- sipVersion := c_sipNameVersion,
- statusCode := 401,
- reasonPhrase := ?
- },
- msgHeader := {
- securityServer := ?,
- wwwAuthenticate := ?
- }
- }
-
- // NOTE STF471: removed statusline parameter as it is a fixed 400 status code
- template(present) Response mw_Response_401onREGISTER_WWWauthenticate_IMS(
- template CallId p_callId,
- template CSeq p_cSeq,
- template(present) WwwAuthenticate p_wwwAuthenticate := ?
- ) modifies mw_Response_4xx_Base := {
- statusLine := {
- sipVersion := c_sipNameVersion,
- statusCode := 401,
- reasonPhrase := ?
- },
- msgHeader := {
- wwwAuthenticate := p_wwwAuthenticate
- }
- }
-
- } // end group responseReceive4xx
-
- // NOTE STF471: changed statusline parameter to statusCode parameter
- template(present) Response mw_Response_SecServer_WWWAuth_UE(
- template(present) StatusLine.statusCode p_statusCode := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template(present) SecurityServer p_securityServer := ?,
- template WwwAuthenticate p_wwwAuthenticate
- ) modifies mw_Response_StatusCode_Base := {
- msgHeader := {
- securityServer := p_securityServer,
- wwwAuthenticate := p_wwwAuthenticate
- }
- }
-
- // NOTE STF471: changed statusline parameter to statusCode parameter
- template(present) Response mw_Response_PpreferredID_PassertedID(
- template(present) StatusLine.statusCode p_statusCode := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template(present) PPreferredID p_pPreferredID := ?,
- template(present) PAssertedID p_pAssertedID := ?
- ) modifies mw_Response_StatusCode_Base := {
- msgHeader := {
- pAssertedID := p_pAssertedID,
- pPreferredID := p_pPreferredID
- }
- }
-
- // NOTE STF471: changed statusline parameter to statusCode parameter
- template(present) Response mw_Response_PAsserted_Privacy_History(
- template(present) StatusLine.statusCode p_statusCode := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template(present) PAssertedID p_pAssertedID := ?,
- template(present) Privacy p_privacy := ?,
- template(present) HistoryInfo p_historyInfo := ?
- ) modifies mw_Response_StatusCode_Base := {
- msgHeader := {
- pAssertedID := p_pAssertedID,
- privacy := p_privacy,
- historyInfo := p_historyInfo
- }
- }
-
- // NOTE STF471: changed statusline parameter to statusCode parameter
- template(present) Response mw_Response_PAsserted_ContentType(
- template(present) StatusLine.statusCode p_statusCode := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template(present) PAssertedID p_pAssertedID := ?,
- template(present) ContentType p_contentType := ?
- ) modifies mw_Response_StatusCode_Base := {
- msgHeader := {
- pAssertedID := p_pAssertedID,
- contentType := p_contentType
- }
- }
-
- // NOTE STF471: changed statusline parameter to statusCode parameter
- template(present) Response mw_Response_PchargingVector(
- template(present) StatusLine.statusCode p_statusCode := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template(present) PChargingVector p_chargingVector := ?
- ) modifies mw_Response_StatusCode_Base := {
- msgHeader := {
- pChargingVector := p_chargingVector
- }
- }
-
- // NOTE STF471: changed name from mw_Response_PchargingVecFctadrId
- // NOTE STF471: changed statusline parameter to statusCode parameter
- template(present) Response mw_Response_PchargingVector_PchargingFunctionAddr_PpreferredID(
- template(present) StatusLine.statusCode p_statusCode := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template(present) PChargingVector p_chargingVector := ?,
- template(present) PChargingFunctionAddresses p_chargingFunctionAddresses := ?,
- template(present) PPreferredID p_preferredID := ?
- ) modifies mw_Response_StatusCode_Base := {
- msgHeader := {
- pChargingVector := p_chargingVector,
- pChargingFunctionAddresses := p_chargingFunctionAddresses,
- pPreferredID := p_preferredID
- }
- }
-
- // NOTE STF471: changed statusline parameter to statusCode parameter
- template(present) Response mw_Response_PchargingFunctionAddr(
- template(present) StatusLine.statusCode p_statusCode := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template(present) PChargingFunctionAddresses p_chargingFunctionAddresses := ?
- ) modifies mw_Response_StatusCode_Base := {
- msgHeader := {
- pChargingFunctionAddresses := p_chargingFunctionAddresses
- }
- }
-
- } // end group responseReceive
-
- } // end group modifiedTemplates
-
- } // end group messageTemplates
-
-} // end module LibIms_Templates
\ No newline at end of file
/branches/v3/ttcn/LibIms_Templates.ttcn
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/v3/ttcn/LibIms_Interface.ttcn
===================================================================
--- branches/v3/ttcn/LibIms_Interface.ttcn (revision 208)
+++ branches/v3/ttcn/LibIms_Interface.ttcn (nonexistent)
@@ -1,22 +0,0 @@
-/**
- * @author STF471
- * @version $Id$
- * @desc This module provides the component type for SIP-IMS tests.
- * This module is part of LibImsV3.
- */
-module LibIms_Interface {
- // LibSip
- import from LibSip_Interface all;
- // LibIms
- import from LibIms_SIPTypesAndValues all;
-
- group adressTypes {
-
- type component ImsComponent extends SipComponent {
- // general variables
- var ImsInterfaceProfile vc_interfaceprofile;
- } // end ImsComponent
-
-
- } // end group AdressTypes
-} // end module LibIms_TestSystem
/branches/v3/ttcn/LibIms_Interface.ttcn
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/v3/ttcn/LibIms_SIPTypesAndValues.ttcn
===================================================================
--- branches/v3/ttcn/LibIms_SIPTypesAndValues.ttcn (revision 208)
+++ branches/v3/ttcn/LibIms_SIPTypesAndValues.ttcn (nonexistent)
@@ -1,65 +0,0 @@
-/**
- * @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 {
-
- group otherTypes {
-
- /**
- * @desc StatusLine with status code restricted to 18x
- * @remark Used TTCN-3 internally
- */
- type record StatusLine_18x {
- charstring sipVersion,
- integer statusCode (180 .. 189) ,
- charstring reasonPhrase
- }
-
- /**
- * @desc StatusLine with status code restricted to 2xx
- * @remark Used TTCN-3 internally
- */
- type record StatusLine_2xx {
- charstring sipVersion,
- integer statusCode (200 .. 299) ,
- charstring reasonPhrase
- }
-
- /**
- * @desc StatusLine with status code restricted to 3xx
- * @remark Used TTCN-3 internally
- */
- type record StatusLine_3xx {
- charstring sipVersion,
- integer statusCode (300 .. 399) ,
- charstring reasonPhrase
- }
-
- /**
- * @desc StatusLine with status code restricted to 4xx
- * @remark Used TTCN-3 internally
- */
- type record StatusLine_4xx {
- charstring sipVersion,
- integer statusCode (400 .. 499) ,
- charstring reasonPhrase
- }
-
- 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_SIPTypesAndValues.ttcn
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/v3/ttcn/LibIms_Library.ttcn
===================================================================
--- branches/v3/ttcn/LibIms_Library.ttcn (revision 208)
+++ branches/v3/ttcn/LibIms_Library.ttcn (nonexistent)
@@ -1,16 +0,0 @@
-/**
- * @author STF471
- * @version $Id: LibSip_Steps.ttcn 614 2014-07-07 10:01:14Z tepelmann $
- * @desc This module provides all modules of the LibIms as public imports.
- * Importing this module will automatically import all here listed modules,
- * no other LibIms_xxx module import needed in this case.
- * This module is part of LibImsV3.
- */
-module LibIms_Library {
-
- import from LibIms_Interface all;
- import from LibIms_SIPTypesAndValues all;
- import from LibIms_Steps all;
- import from LibIms_Templates all;
-
-}
\ No newline at end of file
Index: branches/v2/ttcn/LibIms_Templates.ttcn
===================================================================
--- branches/v2/ttcn/LibIms_Templates.ttcn (nonexistent)
+++ branches/v2/ttcn/LibIms_Templates.ttcn (revision 209)
@@ -0,0 +1,3619 @@
+/*
+ * @author STF 346, STF366, STF368, STF369, STF450
+ * @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_Templates
+{
+ import from XSDAUX all;
+
+ //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 urn_ietf_params_xml_ns_resource_lists language "XSD" all
+ with {
+ extension "File:../xsd/ResourceList.xsd"
+ }
+
+ 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 charstring m_international_number_format := pattern "\\+\d+";//pattern "\+\d+";
+
+ template NameAddr mw_SipUrl_SUTinterface(charstring p_host, integer p_port) :=
+ {
+ displayName := *,
+ addrSpec := {
+ scheme := c_sipScheme,
+ components := { sip:= {
+ userInfo := *,
+ hostPort := {p_host, p_port}}},
+ urlParameters := *,
+ headers := *
+ }
+ }
+
+ template Addr_Union mw_UE1_Addr_display := {nameAddr:={displayName:=PX_IMS_SUT_UE1_DISPLAY,addrSpec:=?}};
+
+ template Addr_Union mw_AddrUnion_userInfo(template (present) charstring p_userInfo) :=
+ {
+ nameAddr:={displayName := *,
+ addrSpec := {
+ scheme := c_sipScheme,
+ components := { sip:= {
+ userInfo := {userOrTelephoneSubscriber :=p_userInfo, password :=*},
+ hostPort := ?}},
+ urlParameters := *,
+ headers := *
+ }
+ }
+ }
+
+group Subfields{
+
+
+ template SipUrl m_SipUrl_currIpaddr_CSCF(in 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
+ }
+
+ template 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 SemicolonParam_List m_semicolonParams_language (template charstring p_language):=
+ {{"language",p_language}}
+
+ template SemicolonParam_List mw_semicolonParams_language (template charstring p_language):=
+ {{"language",p_language}}
+
+ template SemicolonParam_List m_semicolonParams_isub (template charstring p_address):=
+ {{"isub",p_address}}
+}
+
+group HeaderFieldTemplates{
+
+ template MinSE m_minSE(DeltaSec p_ds):=
+ {
+ fieldName := MIN_SE_E,
+ deltaSec:=p_ds,
+ minSeParam:=omit
+ }
+
+ template PathValue mw_pathvalue (template SipUrl p_sipUrl):=
+ {
+ nameAddr := {displayName := *, // optional charstring
+ addrSpec := p_sipUrl // SipUrl
+ },
+ rrParam := *
+ }
+
+ template Path m_path (template SipUrl p_sipUrl):=
+ {
+ fieldName := PATH_E,
+ pathValues := {
+ {nameAddr := {
+ displayName := omit, // optional charstring
+ addrSpec := p_sipUrl // SipUrl
+ },
+ rrParam := omit}
+ }
+ }
+
+ template Path m_path_TS := {
+ fieldName := PATH_E,
+ pathValues := {
+ {
+ nameAddr := {
+ displayName := omit, // optional charstring
+ addrSpec := {
+ scheme := c_sipScheme,
+ components := { sip:= {
+ userInfo := 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 Path mw_path (template SipUrl p_sipUrl):=
+ {
+ fieldName := PATH_E,
+ pathValues := {mw_pathvalue(p_sipUrl)} // any number of SipUrl may occur before p_sipUrl
+ }
+
+ template PAccessNetworkInfo m_pAccessNetworkInfo_IEEE_11a :=
+ {
+ fieldName := P_ACCESS_NETWORK_INFO_E,
+ accessType := "IEEE-802.11a",
+ genericParams := {{id:="extension-access-info",paramValue :="192.1.1.20"}}
+ };
+
+ template PAssertedService m_pAssertedService (PAssertedServiceValue p_pAssertedServiceValue):=
+ {
+ fieldName := P_ASSERTED_SERVICE_E,
+ pAssertedServiceValue := p_pAssertedServiceValue
+ };
+
+ template PChargingFunctionAddresses m_pChargingFunctionAddresses_fixedValue :=
+ {
+ fieldName := P_CHARGING_FUNCTION_ADDRESSES_E,
+ chargeAddrParams := {{id:="ccf",paramValue :="192.1.1.1"}, // value is fixed because it is deleted on proxy
+ {id:="ecf",paramValue :="192.1.1.2"}} // value is fixed because it is deleted on proxy
+ };
+
+
+ template PChargingVector m_pChargingVector(template SemicolonParam_List p_chargeParams) :=
+ {
+ fieldName := P_CHARGING_VECTOR_E,
+ chargeParams := p_chargeParams
+ };
+
+ template PChargingVector m_pChargingVector_icid_TS :=
+ {
+ fieldName := P_CHARGING_VECTOR_E,
+ chargeParams := {{id:=c_icid, paramValue :=c_icid_value}}
+ };
+
+ template PChargingVector m_pChargingVector_origIoi_fixedValue(charstring p_homeDomain) :=
+ {
+ fieldName := P_CHARGING_VECTOR_E,
+ chargeParams := {{id:=c_icid, paramValue :=c_icid_value},
+ {id:=c_icid_generated_at, paramValue :="192.1.1.10"},
+ {id:=c_orig_ioi, paramValue := p_homeDomain}}
+ };
+
+ template PChargingVector m_pChargingVector_termIoi_fixedValue(charstring p_homeDomain) :=
+ {
+ fieldName := P_CHARGING_VECTOR_E,
+ chargeParams := {{id:=c_icid, paramValue :=c_icid_value},
+ {id:=c_icid_generated_at, paramValue :="192.1.1.10"},
+ {id:=c_term_ioi, paramValue := p_homeDomain}}
+ };
+
+ template PChargingVector m_pChargingVector_origIoi_fixedValue1(charstring p_homeDomain) :=
+ {
+ fieldName := P_CHARGING_VECTOR_E,
+ chargeParams := {
+ {id:=c_icid_generated_at, paramValue :="192.1.1.10"},
+ {id:=c_orig_ioi, paramValue := p_homeDomain}}
+ };
+
+ template PChargingVector m_pChargingVector_accessNetwInfo(charstring p_homeDomain) :=
+ {
+ fieldName := P_CHARGING_VECTOR_E,
+ chargeParams := {{id:=c_icid, paramValue :=c_icid_value},
+ {id:=c_term_ioi, paramValue := p_homeDomain},
+ {id:=c_access_network_charging_info, paramValue := "192.1.1.10"}}
+ };
+
+ template PChargingVector mw_pChargingVector(template charstring p_id, template charstring p_paramValue) :=
+ {
+ fieldName := P_CHARGING_VECTOR_E,
+ chargeParams := superset({id := p_id, paramValue := p_paramValue})
+ };
+
+ template PMediaAuthorization m_pMediaAuthorization_fixedValue :=
+ {
+ fieldName := P_MEDIA_AUTHORIZATION_E,
+ pMediaAuthorizations := {"A"} // example
+ };
+
+
+ template PEarlyMedia m_pEarlyMedia_sup :=
+ {fieldName := P_EARLY_MEDIA_E, em_param := {"supported"}};
+
+
+ template ProxyRequire m_proxyRequire_secAgree :=
+ {
+ fieldName := PROXY_REQUIRE_E,
+ optionsTags := {"sec-agree"}
+ };
+
+ template PVisitedNetworkID m_pVisitedNetworkID_TS :=
+ {
+ fieldName := P_VISITED_NETWORK_E,
+ vNetWorkSpec := {{vNetworkSpecToken := PX_IMS_SUT_ICSCF_VisitedNetworkID,
+ genericParams := omit}}
+ }
+
+ template PVisitedNetworkID mw_pVisitedNetworkID :=
+ {
+ fieldName := P_VISITED_NETWORK_E,
+ vNetWorkSpec := {{vNetworkSpecToken := PX_IMS_SUT_PCSCF_VisitedNetworkID,
+ genericParams := *}}
+ }
+
+ template RecordRoute m_recordRoute_notmatching:=
+ {
+ fieldName := RECORD_ROUTE_E,
+ routeBody :=
+ {{
+ nameAddr :=
+ {
+ displayName := omit,
+ addrSpec :=
+ {
+ scheme := c_sipScheme, // contains "sip"
+ 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 Require m_require_secAgree :=
+ {
+ fieldName := REQUIRE_E,
+ optionsTags := {"sec-agree"}
+ };
+
+ template Require mw_require_path :=
+ {
+ fieldName := REQUIRE_E,
+ optionsTags := superset("path")
+ };
+
+ template Route m_route_interface (in ImsInterfaceProfile p_interfaceprofile):=
+ {
+ fieldName := ROUTE_E,
+ routeBody := {{nameAddr := {displayName := omit,
+ addrSpec := {scheme := c_sipScheme, // contains "sip"
+ components := { sip:= {
+ userInfo := omit,
+ hostPort := {host:=p_interfaceprofile.SUTHomeDomain, portField:= omit}}},
+ urlParameters := omit,
+ headers := omit}
+ },
+ rrParam := omit}
+ }};
+
+ template 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 SessionExpires m_se(DeltaSec p_ds):=
+ {
+ fieldName := SESSION_EXPIRES_E,
+ deltaSec:=p_ds,
+ seParam:=omit
+ }
+
+ template SessionExpires mw_se:=
+ {
+ fieldName := SESSION_EXPIRES_E,
+ deltaSec:=?,
+ seParam:=omit
+ }
+
+ template Supported m_supported_timer:=
+ {
+ fieldName := SUPPORTED_E,
+ optionsTags := {"timer"}
+ }
+
+ template Supported m_supported_histinfo:=
+ {
+ fieldName := SUPPORTED_E,
+ optionsTags := {"histinfo"}
+ }
+
+
+ template Supported m_supported_fromChange:=
+ {
+ fieldName := SUPPORTED_E,
+ optionsTags := {"from-change"}
+ }
+
+ template To m_To_targetRefreshRequest(template To p_To) :=
+ {
+ fieldName := TO_E,
+ addressField :=
+ {nameAddr := {
+ displayName := p_To.addressField.nameAddr.displayName,
+ addrSpec := p_To.addressField.nameAddr.addrSpec
+ }},//end addressField
+ toParams := {{id := c_tagId, paramValue := f_getRndTag()}}
+ };
+
+ template ViaBody m_ViaBody_virtualUEinPCSCF(charstring branch_val,in SipUserProfile p_userprofile) :=
+ {
+ sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT),
+ sentBy:={host:=p_userprofile.contactIpaddr, portField:= p_userprofile.contactPort},
+ viaParams:={{id :=c_branchId,paramValue :=branch_val}}
+ }
+
+ template ViaBody m_ViaBody_virtual_XCSCF(charstring branch_val,in SipUserProfile p_userprofile) :=
+ {
+ sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT),
+ sentBy:={host:=p_userprofile.currIpaddr, portField:= p_userprofile.currPort},
+ viaParams:={{id :=c_branchId,paramValue :=branch_val}}
+ }
+
+ template Via m_via_notmatching:=
+ {
+ fieldName := VIA_E,
+ viaBody :=
+ {{
+ sentProtocol := valueof(m_SentProtocol("UDP")),
+ sentBy:={host:="unknown.domain.name", portField:= 10000},
+ viaParams:={{id :=c_branchId,paramValue :="abcd0000"}}
+ } }
+ };
+
+ /*
+ * @desc WWW-Authenticate header field
+ * @param p_challenge value
+ */
+ template WwwAuthenticate m_wwwAuthenticate (Challenge p_challenge):=
+ {
+ fieldName := WWW_AUTHENTICATE_E,
+ challenge := p_challenge
+ }
+
+ /*
+ * @desc WWW-Authenticate header field
+ * @param p_challenge value
+ */
+ template WwwAuthenticate mw_wwwAuthenticate (template SemicolonParam_List p_semicolonParam_List):=
+ {
+ fieldName := WWW_AUTHENTICATE_E,
+ challenge :=
+ {digestCln := p_semicolonParam_List // set of GenericParam
+ }
+ }
+
+ template SemicolonParam_List mw_challenge := superset(mw_ck,mw_ik);
+ // template SemicolonParam_List mw_challenge := {mw_ck,mw_ik};
+ template GenericParam mw_ck := {"ck", *};
+ template GenericParam mw_ik := {"ik", *}
+
+
+ /*
+ * @desc AcceptContact header field
+ * @param p_acValues value
+ */
+ template AcceptContact m_acceptContact (template SemicolonParam_List p_semicolonParam_List):=
+ {
+ fieldName := ACCEPT_CONTACT_E,
+ acValues := {{wildcard:=c_WILDCARD, acRcParams := p_semicolonParam_List} // set of GenericParam
+ }
+ }
+
+ /*
+ * @desc Authenticate header field
+ * @param p_challenge value
+ */
+ template AcceptContact mw_acceptContact (template SemicolonParam_List p_semicolonParam_List):=
+ {
+ fieldName := ACCEPT_CONTACT_E,
+ acValues :=
+ {{wildcard:=c_WILDCARD, acRcParams := p_semicolonParam_List} // set of GenericParam
+ }
+ }
+
+ template SubscriptionState mw_subscriptionState(template charstring p_state) := {
+ fieldName := SUBSCRIPTION_STATE_E,
+ subState := p_state,
+ substateParams := omit
+ }
+
+ //[3455/5.1]
+ template PAssociatedURI m_pAssociatedURI (template NameAddr p_nameAddr) := {
+ fieldName := P_ASSOCIATED_URI_E,
+ nameAddrList := {{nameAddr:=p_nameAddr, genericParams:=omit}}
+ }
+
+ template SecurityServer mw_securityServer (template SecurityMechanism_List p_securityMechanism_List):= {
+ fieldName := SECURITY_SERVER_E,
+ securityMech := p_securityMechanism_List
+ }
+
+ template SecurityClient m_securityClient (template SecurityMechanism_List p_securityMechanism_List):= {
+ fieldName := SECURITY_CLIENT_E,
+ securityMech := p_securityMechanism_List
+ }
+
+ template SecurityVerify m_securityVerify (template SecurityMechanism_List p_securityMechanism_List):= {
+ fieldName := SECURITY_VERIFY_E,
+ securityMech := p_securityMechanism_List
+ }
+
+} // end group HeaderFieldTemplates
+
+group MessageBodyTemplates {
+
+group XMLTemplates {
+
+ template XmlBody m_XmlBody_ConfInfo(template Conference_type p_confInfo) :=
+ {
+ conference := p_confInfo
+ };
+
+ template XmlBody m_XmlBody_CW(template Ims_cw p_cw) :=
+ {
+ cw := p_cw
+ };
+
+ template XmlBody m_XmlBody_CUG(template Cug p_cug) :=
+ {
+ cug := p_cug
+ };
+
+ template XmlBody m_XmlBody_MCID(template Mcid p_mcid) :=
+ {
+ mcid := p_mcid
+ };
+
+ template XmlBody m_XmlBody_PSTNTransit(template PSTN_transit p_pstn) :=
+ {
+ pstnTransit := p_pstn
+ };
+
+ template XmlBody m_XmlBody_simservs(template Simservs p_simservs) :=
+ {
+ simservs := p_simservs
+ };
+
+ template XmlBody m_XmlBody_ACR_ICB(template Incoming_communication_barring p_icb) := {
+ simservs := {
+ attr := {},
+ absServiceGroup_list := {},
+ extensions := {
+ elem_list := valueof(p_icb.attr)
+ }
+ }
+ };
+
+ template XmlBody m_XmlBody_ACR_OCB(template Outgoing_communication_barring p_ocb) := {
+ simservs := {
+ attr := {},
+ absServiceGroup_list := {},
+ extensions := {
+ elem_list := valueof(p_ocb.attr)
+ }
+ }
+ };
+
+ template XmlBody m_XmlBody_CDIVN(template Comm_div_info_type p_cdivn) :=
+ {
+ cdivn := p_cdivn
+ };
+
+ template XmlBody m_XmlBody_Reginfo(template Reginfo p_regInfo) :=
+ {
+ regInfo := p_regInfo
+ };
+
+ template MessageBody m_messageBodyXML(template XmlBody p_xmlBody) :=
+ {
+ xmlBody := p_xmlBody
+ };
+
+ template Reginfo m_reginfo (template XSDAUX.anyURI p_user):= {
+ full,
+ 0,
+ {m_registration(p_user)},
+ {}
+ };
+
+ template Registration m_registration (template XSDAUX.anyURI p_user):= {
+ p_user, // XSDAUX.anyURI aor
+ "a7", // XSDAUX.string id
+ init, //enumerated {active,init,terminated} state,
+ {}, // record of Contact contact_list optional,
+ {} // record of anytype elem_list optional
+ };
+
+ template XmlBody mw_XmlBody_ConfInfo(template Conference_type p_confInfo) :=
+ {
+ conference := p_confInfo
+ };
+
+ template XmlBody mw_XmlBody_CUG(template Cug p_cug) :=
+ {
+ cug := p_cug
+ };
+
+ template XmlBody mw_XmlBody_MCID(template Mcid p_mcid) :=
+ {
+ mcid := p_mcid
+ };
+
+ template XmlBody mw_XmlBody_PSTNTransit(template PSTN_transit p_pstn) :=
+ {
+ pstnTransit := p_pstn
+ };
+
+ template XmlBody mw_XmlBody_CDIVN(template Comm_div_info_type p_cdivn) :=
+ {
+ cdivn := p_cdivn
+ };
+
+ template XmlBody mw_XmlBody_simservs(template Simservs p_simservs) :=
+ {
+ simservs := p_simservs
+ };
+
+ template XmlBody mw_XmlBody_ResourceLists(template Resource_lists p_resourceLists) :=
+ {
+ resourceLists := p_resourceLists
+ };
+
+ template XmlBody mw_XmlBody_Reginfo(template Reginfo p_regInfo) :=
+ {
+ regInfo := p_regInfo
+ };
+
+}// end group XMLTemplates
+
+group ACR_CBTemplates {
+
+ template Incoming_communication_barring m_ICB(template RuleType p_ruleType) :=
+ {
+ active := omit,
+ attr := {},
+ ruleset := {
+ {p_ruleType}
+ }
+ }
+
+ template Outgoing_communication_barring m_OCB(template(present) RuleType p_ruleType) :=
+ {
+ active := omit,
+ attr := {},
+ ruleset := {
+ {p_ruleType}
+ }
+ }
+
+ template RuleType m_ruleType_actionFalse(template ConditionsType p_condition) :=
+ {
+ id := "rule66",
+ conditions := p_condition,
+ actions := {elem_list:={"<false/>"}},
+ transformations := omit
+ }
+
+ template ConditionsType m_conditionsType_identity(template(present) charstring p_id, template charstring p_scheme) := {
+ {
+ {identity_list := {{{{one := {id := p_id, elem := omit}}}}}}
+ }
+ }
+
+} //end group ACR_CBTemplates
+
+group CUGTemplates {
+
+ template Cug m_CUG (
+ template CugRequestType p_crt,
+ template NetworkIdentityType p_nit,
+ template SixteenbitType p_cibc,
+ template TwoBitType p_cci
+ ):= {
+ active := omit,
+ attr := {},
+ cugCallOperation := p_crt,
+ networkIndicator := p_nit,
+ cugInterlockBinaryCode := p_cibc,
+ cugCommunicationIndicator :=p_cci
+ }
+
+ template Cug mw_CUG (
+ template CugRequestType p_crt,
+ template NetworkIdentityType p_nit,
+ template SixteenbitType p_cibc,
+ template TwoBitType p_cci
+ ):= {
+ active := omit,
+ attr := ?,
+ cugCallOperation := p_crt,
+ networkIndicator := p_nit,
+ cugInterlockBinaryCode := p_cibc,
+ cugCommunicationIndicator := p_cci
+ }
+
+ template CugRequestType m_cugReqType(boolean p_outAccessRequest, integer p_cugIndex) :=
+ {
+ outgoingAccessRequest := p_outAccessRequest,
+ cugIndex := p_cugIndex
+ }
+
+ template CugRequestType mw_cugReqType(template boolean p_outAccessRequest, template integer p_cugIndex) :=
+ {
+ outgoingAccessRequest := p_outAccessRequest,
+ cugIndex := p_cugIndex
+ }
+}//end group CUGTemplates
+
+group CWTemplates {
+
+ template Ims_cw m_CW(template TEmptyType p_cwi) := {
+ attr := {},
+ communication_waiting_indication := p_cwi,
+ elem_list := {}
+ }
+
+ template Ims_cw mw_ims_cw(template TEmptyType p_cwi) := {
+ attr := ?,
+ communication_waiting_indication := p_cwi,
+ elem_list := ?
+ }
+
+ template Cug m_CW2 (
+ 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 Cug mw_CW (
+ 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
+ }
+
+}//end group CWTemplates
+
+group MCIDTemplates {
+
+ template Mcid m_mcid_request_mcidIndicatorTrue :=
+ {
+ choice := {
+ request := {mcidRequestIndicator := bit2str('1'B),
+ holdingIndicator := bit2str('0'B)}
+ }
+ }
+
+ template Mcid m_mcid_request_mcidIndicatorTrue_holdIndTrue :=
+ {
+ choice := {
+ request := {mcidRequestIndicator := bit2str('1'B),
+ holdingIndicator := bit2str('1'B)}
+ }
+ }
+
+ template Mcid m_mcid_response_mcidIndicatorTrue :=
+ {
+ choice := {
+ response := {mcidResponseIndicator := bit2str('1'B),
+ holdingProvidedIndicator := bit2str('0'B)}
+ }
+ }
+
+ template Mcid mw_mcid_request_mcidIndicatorTrue :=
+ {
+ choice := {
+ request := {mcidRequestIndicator := bit2str('1'B),
+ holdingIndicator := ?}
+ }
+ }
+
+ template Mcid mw_mcid_response_mcidIndicatorTrue :=
+ {
+ choice := {
+ response := {mcidResponseIndicator := bit2str('1'B),
+ holdingProvidedIndicator := ?}
+ }
+ }
+
+ template Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndFalse :=
+ {
+ choice := {
+ response := {mcidResponseIndicator := bit2str('1'B),
+ holdingProvidedIndicator := bit2str('0'B)}
+ }
+ }
+
+ template Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndTrue :=
+ {
+ choice := {
+ response := {mcidResponseIndicator := bit2str('1'B),
+ holdingProvidedIndicator := bit2str('1'B)}
+ }
+ }
+
+} //end group MCIDTemplates
+
+group PSTNTemplates {
+
+ template PSTN_transit m_PSTN_transit_BC1(template BearerCapabilityType p_bct) :=
+ {
+ bearerInfomationElement_list := {p_bct},
+ highLayerCompatibility_list := {},
+ lowLayerCompatibility := omit,
+ progressIndicator_list := {},
+ display_list := {}
+ }
+
+ template PSTN_transit m_PSTN_transit_BC2(template BearerCapabilityType p_bct,
+ template BearerCapabilityType p_bct2) :=
+ {
+ bearerInfomationElement_list := {p_bct, p_bct2},
+ highLayerCompatibility_list := {},
+ lowLayerCompatibility := omit,
+ progressIndicator_list := {},
+ display_list := {}
+ }
+
+ template PSTN_transit m_PSTN_transit_BC1_HLC1(template BearerCapabilityType p_bct,
+ template HighLayerCompatibilityType p_hlc) :=
+ {
+ bearerInfomationElement_list := {p_bct},
+ highLayerCompatibility_list := {p_hlc},
+ lowLayerCompatibility := omit,
+ progressIndicator_list := {},
+ display_list := {}
+ }
+
+ template PSTN_transit m_PSTN_transit_BC1_LLC(template BearerCapabilityType p_bct,
+ template LowLayerCompatibilityType p_llc) :=
+ {
+ bearerInfomationElement_list := {p_bct},
+ highLayerCompatibility_list := {},
+ lowLayerCompatibility := p_llc,
+ progressIndicator_list := {},
+ display_list := {}
+ }
+
+ template PSTN_transit m_PSTN_transit_BC1_PI1(template BearerCapabilityType p_bct,
+ template ProgressIndicatorType p_pi1) :=
+ {
+ bearerInfomationElement_list := {p_bct},
+ highLayerCompatibility_list := {},
+ lowLayerCompatibility := omit,
+ progressIndicator_list := {p_pi1},
+ display_list := {}
+ }
+
+ template PSTN_transit m_PSTN_transit_BC1_PI2(template BearerCapabilityType p_bct,
+ template ProgressIndicatorType p_pi1,
+ template ProgressIndicatorType p_pi2) :=
+ {
+ bearerInfomationElement_list := {p_bct},
+ highLayerCompatibility_list := {},
+ lowLayerCompatibility := omit,
+ progressIndicator_list := {p_pi1, p_pi2},
+ display_list := {}
+ }
+
+ template PSTN_transit m_PSTN_transit_BC1_PI3(template BearerCapabilityType p_bct,
+ template ProgressIndicatorType p_pi1,
+ template ProgressIndicatorType p_pi2,
+ template ProgressIndicatorType p_pi3) :=
+ {
+ bearerInfomationElement_list := {p_bct},
+ highLayerCompatibility_list := {},
+ lowLayerCompatibility := omit,
+ progressIndicator_list := {p_pi1, p_pi2, p_pi3},
+ display_list := {}
+ }
+
+ template PSTN_transit m_PSTN_transit_BC1_HLC2(template BearerCapabilityType p_bct,
+ template HighLayerCompatibilityType p_hlc1,
+ template HighLayerCompatibilityType p_hlc2) :=
+ {
+ bearerInfomationElement_list := {p_bct},
+ highLayerCompatibility_list := {p_hlc1, p_hlc2},
+ lowLayerCompatibility := omit,
+ progressIndicator_list := {},
+ display_list := {}
+ }
+
+ template PSTN_transit m_PSTN_transit_BC1_HLC1_PI1(template BearerCapabilityType p_bct,
+ template HighLayerCompatibilityType p_hlc1,
+ template ProgressIndicatorType p_pi1) :=
+ {
+ bearerInfomationElement_list := {p_bct},
+ highLayerCompatibility_list := {p_hlc1},
+ lowLayerCompatibility := omit,
+ progressIndicator_list := {p_pi1},
+ display_list := {}
+ }
+
+ template PSTN_transit mw_PSTN_transit_bc(template BearerCapabilityType p_bct,
+ template BearerCapabilityType p_bct2) :=
+ {
+ bearerInfomationElement_list := {p_bct, p_bct2},
+ highLayerCompatibility_list := {*, *},
+ lowLayerCompatibility := *,
+ progressIndicator_list := {*},
+ display_list := {*}
+ }
+
+
+ template BearerCapabilityType m_BearerCapabilityType (Bit5 p_InfoTrfCap):= {
+ bCoctet3 := {codingStandard := bit2str('00'B), //Coding standard = CCITT standardized coding
+ informationTransferCabability := bit2str(p_InfoTrfCap)},//Information transfer capability
+ bCoctet4 := {transferMode := bit2str('00'B), //Coding standard = CCITT standardized coding
+ informationTransferRate := bit2str('10000'B)}, //Information transfer rate = 64 kbit/s
+ bCoctet4_1 := omit,
+ bCoctet5 := omit,
+ bCoctet5a := omit,
+ bCoctet5bV110 := omit,
+ bCoctet5bV120 := omit,
+ bCoctet5c := omit,
+ bCoctet5d := omit,
+ bCoctet6 := omit,
+ bCoctet7 := omit,
+ bCoctet7a := omit,
+ bCoctet7b := omit
+ }
+
+ template ProgressIndicatorType m_ProgressIndicatorType (Bit7 p_progDesc) := {
+ progressOctet3 := {codingStandard := bit2str('00'B),
+ location := bit2str('0000'B)
+ },
+ progressOctet4 := {progressDescription := bit2str(p_progDesc)}
+ }
+
+ template LowLayerCompatibilityType m_LowLayerCompatibilityType (Bit5 p_InfoTrfCap) := {
+ lLOctet3 := {codingStandard := bit2str('00'B), //Coding standard = CCITT standardized coding
+ informationTransferCapability := bit2str(p_InfoTrfCap)},//Information transfer capability
+ lLOctet3a := omit,
+ lLOctet4 := {transferMode := bit2str('00'B), //Coding standard = CCITT standardized coding
+ informationTransferRate := bit2str('10000'B)}, //Information transfer rate = 64 kbit/s
+ lLOctet4_1 := omit,
+ lLOctet5 := omit,
+ lLOctet5a := omit,
+ lLOctet5bV110 := omit,
+ lLOctet5bV120 := omit,
+ lLOctet5c := omit,
+ lLOctet5d := omit,
+ lLOctet6 := omit,
+ lLOctet6aHDLC := omit,
+ lLOctet6aUserSpecific := omit,
+ lLOctet6b := omit,
+ lLOctet7 := {layer3Identification := bit2str('11'B),
+ userInfoLayer3Protocol := bit2str('00010'B)},
+ lLOctet7aUserSpecific := omit,
+ lLOctet7aX25 := omit,
+ lLOctet7bX25 := omit,
+ lLOctet7c := omit,
+ lLOctet7aTR9577 := omit,
+ lLOctet7bTR9577 := omit
+ }
+
+ template HighLayerCompatibilityType m_HighLayerCompatibilityType
+ (Bit7 p_HLOctet4):= {
+ hLOctet3 := {
+ codingStandard :=bit2str('00'B),
+ interpretation :=bit2str('100'B),
+ presentationMethod := bit2str('01'B)
+ },
+ hLOctet4 := {
+ highLayerCharacteristics := bit2str(p_HLOctet4)
+ },
+ hLOctet4aMaintenance := omit,
+ hLOctet4Audio := omit
+ }
+
+ template BearerCapabilityType mw_BearerCapabilityType (template BCOctet3Type p_BCOctet3Type, template BCOctet4Type p_BCOctet4Type):= {
+ bCoctet3 := p_BCOctet3Type,
+ bCoctet4 := p_BCOctet4Type,
+ bCoctet4_1 := * ,
+ bCoctet5 := * ,
+ bCoctet5a := * ,
+ bCoctet5bV110 := * ,
+ bCoctet5bV120 := * ,
+ bCoctet5c := * ,
+ bCoctet5d := * ,
+ bCoctet6 := * ,
+ bCoctet7 := * ,
+ bCoctet7a := * ,
+ bCoctet7b := *
+ }
+
+ template BearerCapabilityType mw_BearerCapabilityType_TrfCap (Bit5 p_InfoTrfCap):= {
+ bCoctet3 := {codingStandard := bit2str('00'B), //Coding standard = CCITT standardized coding
+ informationTransferCabability := bit2str(p_InfoTrfCap)},//Information transfer capability
+ bCoctet4 := {transferMode := bit2str('00'B), //Coding standard = CCITT standardized coding
+ informationTransferRate := bit2str('10000'B)}, //Information transfer rate = 64 kbit/s
+ bCoctet4_1 := * ,
+ bCoctet5 := * ,
+ bCoctet5a := * ,
+ bCoctet5bV110 := * ,
+ bCoctet5bV120 := * ,
+ bCoctet5c := * ,
+ bCoctet5d := * ,
+ bCoctet6 := * ,
+ bCoctet7 := * ,
+ bCoctet7a := * ,
+ bCoctet7b := *
+ }
+
+ template ProgressIndicatorType mw_ProgressIndicatorType (template ProgressOctet3Type p_ProgressOctet3Type, template ProgressOctet4Type p_ProgressOctet4Type) := {
+ progressOctet3 := p_ProgressOctet3Type,
+ progressOctet4 := p_ProgressOctet4Type
+ }
+
+ template LowLayerCompatibilityType mw_LowLayerCompatibilityType
+ (template LLOctet3Type p_LLOctet3, template LLOctet4Type p_LLOctet4, template LLOctet7Type p_LLOctet7) := {
+ lLOctet3 := p_LLOctet3,
+ lLOctet3a := * ,
+ lLOctet4 := p_LLOctet4,
+ lLOctet4_1 := * ,
+ lLOctet5 := * ,
+ lLOctet5a := * ,
+ lLOctet5bV110 := * ,
+ lLOctet5bV120 := * ,
+ lLOctet5c := * ,
+ lLOctet5d := * ,
+ lLOctet6 := * ,
+ lLOctet6aHDLC := * ,
+ lLOctet6aUserSpecific := * ,
+ lLOctet6b := * ,
+ lLOctet7 := p_LLOctet7,
+ lLOctet7aUserSpecific := * ,
+ lLOctet7aX25 := * ,
+ lLOctet7bX25 := * ,
+ lLOctet7c := * ,
+ lLOctet7aTR9577 := * ,
+ lLOctet7bTR9577 := *
+ }
+
+ template HighLayerCompatibilityType mw_HighLayerCompatibilityType
+ (template HLOctet3Type p_HLOctet3, template HLOctet4Type p_HLOctet4):= {
+ hLOctet3 := p_HLOctet3,
+ hLOctet4 := p_HLOctet4,
+ hLOctet4aMaintenance := *,
+ hLOctet4Audio := *
+ }
+
+} //end group PSTNTemplates
+
+group CDIVNTemplates {
+
+ /* general CDIVN subscription */
+ template Comm_div_info_type m_CDIVN_sub := {
+ entity := "comm-div-info",
+ comm_div_subs_info := {
+ attr := {},
+ comm_div_selection_criteria := {
+ attr := {},
+ 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 Resource_lists m_ResourceList_2Users(
+ template EntryType p_user1,
+ template EntryType p_user2
+ ) :=
+ {
+ sequence_list := {
+ {
+ list := {
+ name := omit,
+ attr := {},
+ display_name := omit,
+ sequence_list := {
+ {
+ choice := {
+ entry := p_user1
+ }
+ },
+ {
+ choice := {
+ entry := p_user2
+ }
+ }
+ },
+ elem_list := {}
+ }
+ }
+ }
+ }
+
+ template EntryType m_EntryUser(SipUrl p_user) := {
+
+ uri :=
+ p_user.components.sip.userInfo.userOrTelephoneSubscriber & "@" &
+ p_user.components.sip.hostPort.host,
+ attr := {},
+ display_name := omit,
+ elem_list := {}
+ }
+}// end grouup ResourceListsTemplates
+
+group Ims3gppTemplates {
+
+ template 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 booleanXSD boolXSD_true:={bool:=true}
+ template booleanXSD boolXSD_false:={bool:=false}
+
+ template anyAttributes m_emptyAnyAttributes:={}
+
+ template urn_ietf_params_xml_ns_conference_info.Media_type m_mediatype_status(template Media_status_type p_status):= {
+ id:="1",
+ attr := {},
+ display_text :=omit,
+ type_ :=omit,
+ label_ :=omit,
+ src_id:=omit,
+ status:= p_status,
+ elem_list:={}
+ }
+
+ template Endpoint_type m_endpoint(template charstring p_Uri,template Endpoint_status_type p_epStatus,template Joining_type p_joinMethod, template Disconnection_type p_discMethod, template urn_ietf_params_xml_ns_conference_info.Media_type p_mediastatus):= {
+ entity:=p_Uri,
+ state:=full,
+ attr := {},
+ 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 User_type m_1user (template charstring p_Uri,template Endpoint_type p_endpoint) := {
+ entity:=p_Uri,
+ state:=full,
+ attr := {},
+ display_text:=omit,
+ associated_aors:=omit,
+ roles:=omit,
+ languages :=omit,
+ cascaded_focus :=omit,
+ endpoint_list:={p_endpoint},// optional,
+ elem_list:={}
+ }
+
+ template Users_type m_users_1user_full(template User_type p_user):={
+ state:=full,
+ attr := {},
+ user_list:={p_user},
+ elem_list:={}
+ }
+
+ template Users_type m_users_2user_full(template User_type p_user1,template User_type p_user2):={
+ state:=full,
+ attr := {},
+ user_list:={p_user1,p_user2},
+ elem_list:={}
+ }
+
+ template Conference_state_type m_conference_state(template unsignedInt p_nUsers, boolean p_active, boolean p_locked) := {
+ attr := {},
+ user_count:=p_nUsers,
+ active:=p_active,
+ locked:=p_locked,
+ elem_list:= {}
+ }
+
+ template Conference_type m_ci_cUri_cState_userEntity(template charstring p_cUri, template Conference_state_type p_cState, template Users_type p_users ) := {
+ entity := p_cUri,
+ state := full,
+ version := 1,
+ attr := {},
+ conference_description := omit,
+ host_info := omit,
+ conference_state := p_cState,
+ users := p_users,
+ sidebars_by_ref := omit,
+ sidebars_by_val := omit,
+ elem_list := {}
+ }
+
+ template 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 := *,
+ 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 ACK_Request m_ACK_Request_AS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template Route p_route, template RecordRoute p_recordRoute ) modifies m_ACK_Request_Base :=
+ {
+ msgHeader :=
+ {
+ route := p_route,
+ recordRoute := p_recordRoute
+ }
+ }
+
+ template ACK_Request m_ACK_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template Route p_route) modifies m_ACK_Request_Base :=
+ {
+ msgHeader :=
+ {
+ route := p_route
+ }
+ }
+
+ template ACK_Request m_ACK_Request_sdp_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via,template MessageBody p_mb, template 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_sdpAplication},
+ route := p_route
+ },
+ messageBody := p_mb
+ }
+
+ template ACK_Request m_ACK_Request_Mime_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via,template MessageBody p_mb, template 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 BYE_Request m_BYE_Request_IMS
+ ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Route p_route, template 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
+ }
+ }
+
+ template BYE_Request m_BYE_Request_Reason_IMS
+ ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Route p_route, charstring p_cause)
+ modifies m_BYE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ reason := mw_Reason(p_cause),
+ route := p_route
+ }
+ }
+
+ template BYE_Request m_BYE_Request_UserToUser_IMS
+ ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Route p_route, template charstring p_U2UData)
+ modifies m_BYE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ route := p_route,
+ userToUser := m_UserToUserData(p_U2UData)
+ }
+ }
+
+ template BYE_Request m_BYE_Request_UE
+ ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Route p_route)
+ modifies m_BYE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
+ route := p_route
+ }
+ }
+
+ template CANCEL_Request m_CANCEL_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Route p_route) modifies m_CANCEL_Request_Base :=
+ {
+ msgHeader :=
+ {
+ route := p_route
+ }
+ }
+
+ template CANCEL_Request m_CANCEL_Request_Reason_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Route p_route, integer p_cause) modifies m_CANCEL_Request_Base :=
+ {
+ msgHeader :=
+ {
+ reason := m_Reason(p_cause),
+ route := p_route
+ }
+ }
+
+ template CANCEL_Request m_CANCEL_Request_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Route p_route) modifies m_CANCEL_Request_Base :=
+ {
+ msgHeader :=
+ {
+ route := p_route
+ }
+ }
+
+ /*
+ *
+ * @desc INFO message
+ *
+ */
+ template INFO_Request m_INFO_Request_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template MessageBody p_mb )
+ modifies m_INFO_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}
+ },
+ messageBody := p_mb
+ }
+
+ /*
+ *
+ * @desc INFO message
+ *
+ */
+ template INFO_Request m_INFO_Request_Mime_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template MessageBody p_mb )
+ modifies m_INFO_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart}
+ },
+ messageBody := p_mb
+ }
+
+ template INFO_Request m_INFO_Request_Xml_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template MessageBody p_mb )
+ modifies m_INFO_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_xmlAplication}
+ },
+ messageBody := p_mb
+ }
+
+ template INVITE_Request m_INVITE_Request_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template Supported p_supported, template MessageBody p_mb )
+ modifies m_INVITE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ require := p_require,
+ route := p_route,
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
+ supported := p_supported
+ },
+ messageBody := p_mb
+ }
+
+ template INVITE_Request m_INVITE_Request_noBody_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template Supported p_supported )
+ 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 INVITE_Request m_INVITE_Request_Allow_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template Supported p_supported, template MessageBody p_mb, template LibSip_SIPTypesAndValues.Allow p_allow)
+ modifies m_INVITE_Request_UE
+ :=
+ {
+ msgHeader :=
+ {
+ allow := p_allow
+ }
+ }
+
+ template INVITE_Request m_INVITE_Request_noBody_Allow_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template Supported p_supported, template LibSip_SIPTypesAndValues.Allow p_allow)
+ modifies m_INVITE_Request_noBody_UE
+ :=
+ {
+ msgHeader :=
+ {
+ allow := p_allow
+ }
+ }
+
+
+ /*
+ *
+ * @desc INVITE message exchanged at Mw
+ *
+ */
+ template INVITE_Request m_INVITE_Request_IMS (
+ SipUrl p_requestUri,
+ CallId p_callId,
+ CSeq p_cSeq,
+ From p_from,
+ To p_to,
+ Via p_via,
+ Contact p_contact,
+ template Require p_require,
+ template Route p_route,
+ template RecordRoute p_recordRoute,
+ template Supported p_supported,
+ template PChargingVector p_pChargingVector,
+ template MessageBody p_mb
+ ) modifies m_INVITE_Request_Base := {
+ msgHeader := {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ require := p_require,
+ pChargingVector := p_pChargingVector,
+ recordRoute := p_recordRoute,
+ route := p_route,
+ supported := p_supported
+ },
+ messageBody := p_mb
+ }
+
+ /*
+ *
+ * @desc INVITE message exchanged at Mw
+ *
+ */
+ template INVITE_Request m_INVITE_Request_HistoryInfo_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb,
+ template HistoryInfo p_historyInfo)
+ modifies m_INVITE_Request_IMS
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ historyInfo := p_historyInfo
+ }
+ }
+
+ /*
+ *
+ * @desc INVITE message exchanged at Mw
+ *
+ */
+ template INVITE_Request m_INVITE_Request_Mime_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb )
+ modifies m_INVITE_Request_IMS
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart}
+ }
+ }
+
+ /*
+ *
+ * @desc INVITE message exchanged at Mw
+ *
+ */
+ template INVITE_Request m_INVITE_Request_IMS_noBody
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector)
+ 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
+ *
+ */
+ template INVITE_Request m_INVITE_Request_Mime_PAsserted_Privacy_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb,
+ template PAssertedID p_pAssertedID, template Privacy p_privacy )
+ modifies m_INVITE_Request_IMS
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart},
+ pAssertedID := p_pAssertedID,
+ privacy := p_privacy
+ }
+ }
+
+ /*
+ *
+ * @desc INVITE message exchanged at Mw
+ *
+ */
+ template INVITE_Request m_INVITE_Request_PAsserted_AcceptContact_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template RecordRoute p_recordRoute, template AcceptContact p_acceptContact, template PAssertedID p_pAssertedID, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb )
+ modifies m_INVITE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ acceptContact := p_acceptContact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ require := p_require,
+ pAssertedID := p_pAssertedID,
+ pChargingVector := p_pChargingVector,
+ recordRoute := p_recordRoute,
+ route := p_route,
+ supported := p_supported
+ },
+ messageBody := p_mb
+ }
+
+ /*
+ *
+ * @desc INVITE message exchanged at Mw
+ *
+ */
+ template INVITE_Request m_INVITE_Request_PAsserted_Privacy_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template RecordRoute p_recordRoute, template PAssertedID p_pAssertedID, template Privacy p_privacy, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb )
+ modifies m_INVITE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ require := p_require,
+ pAssertedID := p_pAssertedID,
+ pChargingVector := p_pChargingVector,
+ privacy := p_privacy,
+ recordRoute := p_recordRoute,
+ route := p_route,
+ supported := p_supported
+ },
+ messageBody := p_mb
+ }
+
+ /*
+ *
+ * @desc INVITE message exchanged at Mw
+ *
+ */
+ template INVITE_Request m_INVITE_Request_PAssertedService_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template PAssertedService p_pAssertedService)
+ modifies m_INVITE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ require := p_require,
+ pChargingVector := p_pChargingVector,
+ route := p_route,
+ supported := p_supported,
+ pAssertedService := p_pAssertedService
+ },
+ messageBody := p_mb
+ }
+
+ /*
+ *
+ * @desc INVITE message exchanged at Mw
+ *
+ */
+ template INVITE_Request m_INVITE_Request_PEarlyMedia_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb )
+ modifies m_INVITE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ require := p_require,
+ pChargingVector := p_pChargingVector,
+ pEarlyMedia := m_pEarlyMedia_sup,
+ recordRoute := p_recordRoute,
+ route := p_route,
+ supported := p_supported
+ },
+ messageBody := p_mb
+ }
+
+ template INVITE_Request m_INVITE_Request_PPreferred_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template Supported p_supported, template MessageBody p_mb,template PPreferredID p_pPreferredID )
+ modifies m_INVITE_Request_UE
+ :=
+ {
+ msgHeader :=
+ {
+ pPreferredID := p_pPreferredID
+ }
+ }
+
+ template INVITE_Request m_INVITE_Request_PPreferred_Privacy_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template Supported p_supported, template MessageBody p_mb,template PPreferredID p_pPreferredID, template Privacy p_privacy)
+ modifies m_INVITE_Request_UE
+ :=
+ {
+ msgHeader :=
+ {
+ pPreferredID := p_pPreferredID,
+ privacy := p_privacy
+ }
+ }
+
+ template INVITE_Request m_INVITE_Request_SessionExpires_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template Supported p_supported, template MessageBody p_mb, template SessionExpires p_se)
+ modifies m_INVITE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ require := p_require,
+ route := p_route,
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
+ supported := p_supported,
+ sessionExpires := p_se
+ },
+ messageBody := p_mb
+ }
+
+ template INVITE_Request m_INVITE_Request_minSE_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template Supported p_supported, template MessageBody p_mb, template MinSE p_minSE)
+ modifies m_INVITE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ require := p_require,
+ route := p_route,
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
+ supported := p_supported,
+ minSE := p_minSE
+ },
+ messageBody := p_mb
+ }
+
+ /*
+ *
+ * @desc INVITE message exchanged at Mw
+ *
+ */
+ template INVITE_Request m_INVITE_Request_minSE_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template MinSE p_minSE)
+ modifies m_INVITE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ require := p_require,
+ pChargingVector := p_pChargingVector,
+ route := p_route,
+ supported := p_supported,
+ minSE := p_minSE
+ },
+ messageBody := p_mb
+ }
+
+ template INVITE_Request m_INVITE_Request_User2UserData_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template charstring p_U2UData)
+ modifies m_INVITE_Request_IMS
+ :=
+ {
+ msgHeader :=
+ {
+ userToUser := m_UserToUserData(valueof(p_U2UData))
+ }
+ }
+
+ template MESSAGE_Request m_MESSAGE_Request_MBody_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Require p_require,
+ template Route p_route, template Supported p_supported, template MessageBody p_messageBody)
+ modifies m_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(m_MBody_longPlainText))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText},
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ require := p_require,
+ route := p_route,
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
+ supported := p_supported
+ },
+ messageBody := p_messageBody
+ }
+
+ template MESSAGE_Request m_MESSAGE_Request_NoBody_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Require p_require,
+ template Route p_route, template Supported p_supported)
+ modifies m_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ require := p_require,
+ route := p_route,
+ supported := p_supported
+ },
+ messageBody := omit
+ }
+
+ template MESSAGE_Request m_MESSAGE_Request_PCharging_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Require p_require,
+ template Route p_route, template Supported p_supported)
+ modifies m_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
+ pChargingVector := m_pChargingVector_origIoi_fixedValue(PX_IMS_SUT_UE1_HOME_DOMAIN),
+ require := p_require,
+ route := p_route,
+ supported := p_supported
+ },
+ messageBody := omit
+ }
+
+ template MESSAGE_Request m_MESSAGE_Request_PCharging_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Require p_require,
+ template Route p_route, template Supported p_supported,
+ template PChargingVector p_pChargingVector)
+ modifies m_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
+ pChargingVector := p_pChargingVector,
+ require := p_require,
+ route := p_route,
+ supported := p_supported
+ },
+ messageBody := omit
+ }
+
+ template MESSAGE_Request m_MESSAGE_Request_PMediaAuth_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Require p_require,
+ template Route p_route, template Supported p_supported)
+ modifies m_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ pMediaAuthorization := m_pMediaAuthorization_fixedValue,
+ require := p_require,
+ route := p_route,
+ supported := p_supported
+ },
+ messageBody := omit
+ }
+
+ template MESSAGE_Request m_MESSAGE_Request_PPreferred_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Require p_require,
+ template Route p_route, template Supported p_supported, template PPreferredID p_pPreferredID)
+ modifies m_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ pPreferredID := p_pPreferredID,
+ require := p_require,
+ route := p_route,
+ supported := p_supported
+ },
+ messageBody := omit
+ }
+
+ template MESSAGE_Request m_MESSAGE_Request_1300Bytes_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Require p_require,
+ template Route p_route, template Supported p_supported)
+ modifies m_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(m_MBody_longPlainText))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText},
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ require := p_require,
+ route := p_route,
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
+ supported := p_supported
+ },
+ messageBody := m_MBody_longPlainText
+ }
+
+ template NOTIFY_Request m_NOTIFY_Request_Xml_IMS_Conference
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template MessageBody p_mb )
+ modifies m_NOTIFY_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_xmlAplication},
+ event := {fieldName:=EVENT_E, eventType:="conference",eventParams:=omit},
+ subscriptionState:={fieldName:=SUBSCRIPTION_STATE_E, subState:="active",substateParams:=omit},
+ expires:={fieldName:=EXPIRES_E, deltaSec:="3600"}
+
+ },
+ messageBody := p_mb
+ }
+
+
+ template NOTIFY_Request m_NOTIFY_Request_Xml_IMS_RegInfo
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template MessageBody p_mb )
+ modifies m_NOTIFY_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_xmlreginfoAplication},
+ event := m_Event_reg,
+ subscriptionState:=m_SubscriptionState_active,
+ expires:={fieldName:=EXPIRES_E, deltaSec:="3600"}
+
+ },
+ messageBody := p_mb
+ }
+
+ template PRACK_Request m_PRACK_Request_sdp (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, RAck p_RAck, template MessageBody p_mb)
+ modifies m_PRACK_Request_Base :=
+ {
+ requestLine :=
+ {
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ callId := p_callId,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "PRACK"},
+ fromField := p_from,
+ rAck := p_RAck,
+ toField := p_to,
+ via := p_via
+ },
+ messageBody := p_mb
+ }
+
+ template PUBLISH_Request m_PUBLISH_Request_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template Event p_event, template RAck p_RAck, template MessageBody p_mb,template Route p_route)
+ modifies m_PUBLISH_Request_Base :=
+ {
+ requestLine :=
+ {
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ callId := p_callId,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText/*c_sdpAplication*/},
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "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 PUBLISH_Request m_PUBLISH_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template Event p_event, template RAck p_RAck, template MessageBody p_mb,
+ template Route p_route,template RecordRoute p_recordRoute,template PChargingVector p_pChargingVector)
+ modifies m_PUBLISH_Request_Base :=
+ {
+ requestLine :=
+ {
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ callId := p_callId,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText/*c_sdpAplication*/},
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "PUBLISH"},
+ event := p_event,
+ fromField := p_from,
+ route := p_route,
+ recordRoute:= p_recordRoute,
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ pChargingVector := p_pChargingVector,
+ toField := p_to,
+ via := p_via
+ },
+ messageBody := p_mb
+ }
+
+ /*
+ *
+ * @desc REFER message exchanged at Mw
+ *
+ */
+ template REFER_Request m_REFER_Request_IMS(
+ SipUrl p_requestUri,
+ CallId p_callId,
+ CSeq p_cSeq,
+ Contact p_contact,
+ From p_from,
+ template To p_to,
+ Via p_via,
+ template ReferTo p_referTo,
+ template ReferredBy p_referredBy,
+ template Require p_require,
+ template Route p_route,
+ template RecordRoute p_recordRoute,
+ template Supported p_supported,
+ template PChargingVector p_pChargingVector,
+ template MessageBody p_mb
+ ) modifies m_REFER_Request_Base := {
+ msgHeader := {
+ contentLength := {
+ fieldName := CONTENT_LENGTH_E,
+ len:= f_MessageBodyLength(valueof(p_mb))
+ },
+ contentType := {
+ fieldName := CONTENT_TYPE_E,
+ mediaType := c_sdpAplication
+ },
+ 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 REGISTER_Request m_REGISTER_Request_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template Authorization p_authorization,
+ template ProxyRequire p_proxyRequire, template Require p_require,
+ template SecurityClient p_securityClient, template SecurityVerify p_securityVerify, template Supported p_supported)
+ modifies m_REGISTER_Request_Base :=
+ {
+ requestLine :=
+ {
+ method := REGISTER_E,
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ authorization := p_authorization,
+ callId := p_callId,
+ contact := p_contact,
+ cSeq := p_cSeq,
+ fromField := p_from,
+ proxyRequire := p_proxyRequire,
+ require := p_require,
+ securityClient := p_securityClient,
+ securityVerify := p_securityVerify,
+ supported := p_supported,
+ toField := p_to,
+ via := p_via
+
+ }
+ }
+
+
+ template REGISTER_Request m_REGISTER_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template Authorization p_authorization)
+ modifies m_REGISTER_Request_Base :=
+ {
+ requestLine :=
+ {
+ method := REGISTER_E,
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ authorization := p_authorization,
+ callId := p_callId,
+ contact := p_contact,
+ cSeq := p_cSeq,
+ fromField := p_from,
+ 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 REGISTER_Request m_REGISTER_Request_IMS_3party (
+ SipUrl p_requestUri,
+ CallId p_callId,
+ CSeq p_cSeq,
+ From p_from,
+ To p_to,
+ Via p_via,
+ Contact p_contact,
+ template Authorization p_authorization,
+ template Path p_path
+ ) modifies m_REGISTER_Request_IMS :=
+ {
+ msgHeader :=
+ {
+ path := p_path
+
+ }
+ }
+
+ template REGISTER_Request m_REGISTER_Request_expires_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template Authorization p_authorization, template DeltaSec p_deltaSec)
+ modifies m_REGISTER_Request_IMS :=
+ {
+ msgHeader :=
+ {
+ expires := {fieldName := EXPIRES_E, deltaSec := p_deltaSec}
+ }
+ }
+
+ template SUBSCRIBE_Request m_SUBSCRIBE_Request_UE (SipUrl p_requestUri, CallId p_callId,
+ CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template 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 := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
+ event := m_Event_reg,
+ expires := m_Expires_600000,
+ route := p_route
+ }
+ }
+
+ template SUBSCRIBE_Request m_SUBSCRIBE_Request_mb_UE (SipUrl p_requestUri, CallId p_callId,
+ CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template MessageBody p_mb) modifies m_SUBSCRIBE_Request_Base :=
+ {
+ requestLine :=
+ {
+ method := SUBSCRIBE_E,
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
+ event := m_Event_reg,
+ expires := m_Expires_600000
+ },
+ messageBody := p_mb
+ }
+
+ template SUBSCRIBE_Request m_SUBSCRIBE_Request_mb_event_UE (SipUrl p_requestUri, CallId p_callId,
+ CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template MessageBody p_mb, Event p_event, charstring p_contentType) modifies m_SUBSCRIBE_Request_mb_UE :=
+ {
+ requestLine :=
+ {
+ method := SUBSCRIBE_E,
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := p_contentType},
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ contact := p_contact,
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
+ event := p_event,
+ expires := m_Expires_600000
+ },
+ messageBody := p_mb
+ }
+
+ template SUBSCRIBE_Request m_SUBSCRIBE_Request_IMS (SipUrl p_requestUri, CallId p_callId,
+ CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact) modifies m_SUBSCRIBE_Request_Base :=
+ {
+ requestLine :=
+ {
+ method := SUBSCRIBE_E,
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ contact := p_contact,
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
+ event := m_Event_reg,
+ expires := m_Expires_600000
+ }
+ }
+
+ template SUBSCRIBE_Request m_SUBSCRIBE_Request_Event (SipUrl p_requestUri, CallId p_callId,
+ CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Event p_event) modifies m_SUBSCRIBE_Request_Base :=
+ {
+ requestLine :=
+ {
+ method := SUBSCRIBE_E,
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ contact := p_contact,
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
+ event := p_event,
+ expires := m_Expires_600000
+ }
+ }
+ template UPDATE_Request m_UPDATE_Request_fromChange (template CallId p_callId, template From p_from) modifies mw_UPDATE_Request_Base :=
+ {
+ msgHeader :=
+ {
+ fromField := p_from
+ }
+ }
+
+}//end group request_send
+
+group request_receive {
+
+ template ACK_Request mw_ACK_Request_noPaccessNetworkInfo (template CallId p_callId)
+ modifies mw_ACK_Request_Base
+ :=
+ {
+ msgHeader := { pAccessNetworkInfo := omit}
+ }
+
+ template ACK_Request mw_ACK_Request_PchargingVector (template CallId p_callId, template PChargingVector p_pChargingVector)
+ modifies mw_ACK_Request_Base
+ :=
+ {
+ msgHeader := { pChargingVector := p_pChargingVector}
+ }
+
+ template BYE_Request mw_BYE_Request_noPChargingFunction_UE(template CallId p_callId) modifies mw_BYE_Request_Base
+ :=
+ {
+ msgHeader := {pChargingFunctionAddresses := omit,
+ pChargingVector := omit}
+ }
+
+ template BYE_Request mw_BYE_Request_via_PChargingVector_UE(template CallId p_callId, template PChargingVector p_pChargingVector, template Via p_via) modifies mw_BYE_Request_Base
+ :=
+ {
+ msgHeader := {pChargingVector := p_pChargingVector,
+ via := p_via}
+ }
+
+ template BYE_Request mw_BYE_Request_via_UE(template CallId p_callId, template Via p_via) modifies mw_BYE_Request_Base
+ :=
+ {
+ msgHeader := { via := p_via }
+ }
+
+ template BYE_Request mw_BYE_Request_route(template CallId p_callId, template Route p_route) modifies mw_BYE_Request_Base
+ :=
+ {
+ msgHeader := {route := p_route}
+ }
+
+ template INVITE_Request mw_INVITE_Request_noPChargingFunction modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {pChargingFunctionAddresses := omit}
+ }
+ template INVITE_Request mw_INVITE_Request_PChargingFunction modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {pChargingFunctionAddresses := ?}
+ }
+
+ template INVITE_Request mw_INVITE_Request_NoPCharging modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {pChargingFunctionAddresses := omit,
+ pChargingVector := omit}
+ }
+
+ template INVITE_Request mw_INVITE_Request_NoPChargingPreferred modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {pChargingFunctionAddresses := omit,
+ pChargingVector := omit,
+ pPreferredID := omit}
+ }
+
+ template INVITE_Request mw_INVITE_Request_PAsserted_noPPreferred (template PAssertedID p_pAssertedID)modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {pAssertedID := p_pAssertedID,
+ pPreferredID := omit
+ }
+ }
+
+ template INVITE_Request mw_INVITE_Request_PAsserted_AcceptContact (template PAssertedID p_pAssertedID, template AcceptContact p_acceptContact) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {pAssertedID := p_pAssertedID,
+ acceptContact := p_acceptContact
+ }
+ }
+
+ template INVITE_Request mw_INVITE_Request_RecordRoute_Via (template RecordRoute p_recordRoute, template Via p_via) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {recordRoute := p_recordRoute,
+ via := p_via}
+ }
+
+ template INVITE_Request mw_INVITE_Request_route (template Route p_route) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {route := p_route}
+ }
+
+ template INVITE_Request mw_INVITE_Request_require (
+ template Require p_require
+ ) modifies mw_INVITE_Request_Base := {
+ msgHeader := { require := p_require }
+ }
+
+ template INVITE_Request mw_INVITE_Request_supported (
+ template Supported p_supported
+ ) modifies mw_INVITE_Request_Base := {
+ msgHeader := { supported := p_supported }
+ }
+
+ template INVITE_Request mw_INVITE_Request_SessionExpires (template SessionExpires p_sessionExpires) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {sessionExpires := p_sessionExpires}
+ }
+
+ template INVITE_Request mw_INVITE_Request_User2UserData (template charstring p_U2UData) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {userToUser := mw_UserToUserData(p_U2UData)}
+ }
+
+ template INVITE_Request mw_INVITE_Request_IMS (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {
+ pChargingVector := p_pChargingVector,
+ recordRoute := p_recordRoute,
+ route := p_route,
+ via := p_via
+ }
+ }
+ template INVITE_Request mw_INVITE_Request_IMS_requestLine(template PChargingVector p_pChargingVector,
+ template RecordRoute p_recordRoute,
+ template Route p_route, template Via p_via, template SipUrl p_requestUri)
+ modifies mw_INVITE_Request_Base := {
+ requestLine :=
+ {
+ requestUri := p_requestUri
+ },
+ msgHeader := {
+ pChargingVector := p_pChargingVector,
+ recordRoute := p_recordRoute,
+ route := p_route,
+ via := p_via
+ }
+ }
+
+ template 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 SipUrl p_requestUri, template PAssertedID p_pAssertedID)
+ modifies mw_INVITE_Request_Base := {
+ msgHeader := {pAssertedID := p_pAssertedID, pPreferredID := omit}
+ }
+
+ template INVITE_Request mw_INVITE_Request_IMS_mb (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {
+ pChargingVector := p_pChargingVector,
+ recordRoute := p_recordRoute,
+ route := p_route,
+ via := p_via
+ },
+ messageBody := ?
+ }
+
+ template INVITE_Request mw_INVITE_Request_IMS_cug (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via, template Cug p_cug ) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {
+ pChargingVector := p_pChargingVector,
+ recordRoute := p_recordRoute,
+ route := p_route,
+ via := p_via
+ },
+ messageBody := (mw_MBody_XML(mw_XmlBody_CUG(p_cug)),
+ mw_MBody_MIMESdpXml(?, mw_XmlBody_CUG(p_cug)))
+ }
+
+ template INVITE_Request mw_INVITE_Request_IMS_noCug (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via ) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {
+ pChargingVector := p_pChargingVector,
+ recordRoute := p_recordRoute,
+ route := p_route,
+ via := p_via
+ },
+ messageBody := (mw_MBody_XML(complement(mw_XmlBody_CUG(?))),
+ mw_MBody_MIMESdpXml(?, complement(mw_XmlBody_CUG(?)) ))
+ }
+
+ template INVITE_Request mw_INVITE_Request_IMS_pstn (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via, template PSTN_transit p_pstn ) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {
+ pChargingVector := p_pChargingVector,
+ recordRoute := p_recordRoute,
+ route := p_route,
+ via := p_via
+ },
+ messageBody := (mw_MBody_XML(mw_XmlBody_PSTNTransit(p_pstn)),
+ mw_MBody_MIMESdpXml(?, mw_XmlBody_PSTNTransit(p_pstn)))//m_MBody_PSTN(p_pstn)//PSTN_transit
+ }
+
+ /*
+ *
+ * @desc Await INVITE using topology hiding
+ */
+ template INVITE_Request mw_INVITE_Request_TH modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := { pChargingFunctionAddresses := omit,
+ pChargingVector := omit }
+ }
+
+ template INVITE_Request mw_INVITE_Request_TH_R10 modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := { pChargingFunctionAddresses := omit }
+ }
+
+ /*
+ *
+ * @desc Await INVITE without PAsserted and Privacy
+ */
+ template INVITE_Request mw_INVITE_Request_noPasserted_noPrivacy (template From p_from)
+ modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := { fromField := p_from,
+ pAssertedID := omit,
+ pPreferredID := omit}
+ }
+
+
+ /*
+ *
+ * @desc Await INVITE with PAsserted and Privacy
+ */
+ template INVITE_Request mw_INVITE_Request_PassertedPrivacy (template From p_from, template PAssertedID p_pAssertedID, template Privacy p_privacy)
+ modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {
+ fromField := p_from,
+ pAssertedID := p_pAssertedID,
+ privacy := p_privacy}
+ }
+
+ /*
+ *
+ * @desc Await INVITE with PAsserted and Privacy
+ */
+ template INVITE_Request mw_INVITE_Request_Passerted_ifPrivacy (template From p_from, template PAssertedID p_pAssertedID, template Privacy p_privacy)
+ modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {
+ fromField := p_from,
+ pAssertedID := p_pAssertedID,
+ privacy := p_privacy ifpresent}
+ }
+
+ /*
+ *
+ * @desc Await INVITE with PAsserted and Privacy
+ */
+ template INVITE_Request mw_INVITE_Request_HistoryInfo (template HistoryInfo p_historyInfo)
+ modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {
+ historyInfo := p_historyInfo}
+ }
+
+ template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunction_UE
+ modifies mw_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader := { pChargingFunctionAddresses := omit,
+ pChargingVector := omit}
+ }
+
+ template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunctionPrefId_UE
+ modifies mw_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader := { pChargingFunctionAddresses := omit,
+ pChargingVector := omit,
+ pPreferredID := omit}
+ }
+
+ template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunction_IMS
+ modifies mw_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader := { pChargingFunctionAddresses := omit,
+ pChargingVector := omit}
+ }
+
+ template MESSAGE_Request mw_MESSAGE_Request_PAsserted_noPPreferred (template CallId p_callId, template PAssertedID p_pAssertedID)modifies mw_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader := {pAssertedID := p_pAssertedID,
+ pPreferredID := omit
+ }
+ }
+
+ template MESSAGE_Request mw_MESSAGE_Request_route (template CallId p_callId, template Route p_route )modifies mw_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader := {route := p_route
+ }
+ }
+
+ template MESSAGE_Request mw_MESSAGE_Request_via (template CallId p_callId, template Via p_via )modifies mw_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader := {via := p_via
+ }
+ }
+
+ template NOTIFY_Request mw_NOTIFY_Request(
+ template CallId p_callId,
+ template charstring p_state,
+ template charstring p_contentType,
+ template Event p_event,
+ template MessageBody p_mb
+ ) modifies mw_NOTIFY_Request_Base := {
+ msgHeader :=
+ {
+ subscriptionState := mw_subscriptionState(p_state),
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := p_contentType},
+ event := p_event
+ },
+ messageBody := p_mb
+ }
+ template 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 MESSAGE_Request mw_MESSAGE_Request_PchargingVector (template charstring p_id, template charstring p_paramValue)
+ modifies mw_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader := { pChargingVector := mw_pChargingVector(p_id,p_paramValue)}
+ }
+
+ template MESSAGE_Request mw_MESSAGE_Request_noPaccessNetworkInfo
+ modifies mw_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader := { pAccessNetworkInfo := omit}
+ }
+
+ template MESSAGE_Request mw_MESSAGE_Request_noPMediaAuthorization
+ modifies mw_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader := { pMediaAuthorization := omit}
+ }
+
+ template PUBLISH_Request mw_PUBLISH_Request_PchargingVector(template CallId p_callId, template PChargingVector p_pChargingVector) modifies mw_PUBLISH_Request_Base :=
+ {
+ msgHeader := { pChargingVector := p_pChargingVector}
+ }
+
+ template REGISTER_Request mw_REGISTER_Request_IMS (template Path p_Path, template PChargingVector p_pChargingVector, template PVisitedNetworkID p_pVisitedNetworkID)
+ modifies mw_REGISTER_Request_Base
+ :=
+ {
+ msgHeader := { authorization := ?,
+ path := p_Path,
+ pChargingVector := p_pChargingVector, //mw_pChargingVector(p_id,p_paramValue)
+ pVisitedNetworkID := p_pVisitedNetworkID,
+ require := mw_require_path,
+ securityClient := omit,
+ securityVerify := omit
+ }
+ }
+
+
+
+ template REGISTER_Request mw_REGISTER_authorizedRequest_IMS (template Authorization p_authorization)
+ modifies mw_REGISTER_Request_Base
+ :=
+ {
+ msgHeader := { authorization := p_authorization
+ }
+ }
+
+ template REGISTER_Request mw_REGISTER_authorizedRequest_wo_securityclient_IMS (template Authorization p_authorization)
+ modifies mw_REGISTER_Request_Base
+ :=
+ {
+ msgHeader := { authorization := p_authorization,
+ securityClient := omit
+ }
+ }
+ template REGISTER_Request mw_REGISTER_auth_via_nosecclient_IMS (template Authorization p_authorization, Via p_via )
+ modifies mw_REGISTER_Request_Base := {
+ msgHeader := {
+ authorization := p_authorization,
+ via := p_via,
+ securityClient := omit
+ }
+ }
+ template REGISTER_Request mw_REGISTER_authorizedRequest_wo_securityheaders_IMS
+ modifies mw_REGISTER_Request_Base
+ :=
+ {
+ msgHeader := { securityVerify := omit,
+ securityClient := omit
+ }
+ }
+
+ template REGISTER_Request mw_REGISTER_unauthorizedRequest_IMS
+ modifies mw_REGISTER_Request_Base
+ :=
+ {
+ msgHeader := { authorization := *
+ }
+ }
+
+ template SUBSCRIBE_Request mw_SUBSCRIBE_Request_IMS (
+ template From p_from,
+ template 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 UPDATE_Request mw_UPDATE_Request_fromChange (template CallId p_callId, template From p_from) modifies mw_UPDATE_Request_Base :=
+ {
+ msgHeader :=
+ {
+ fromField := p_from
+ }
+ }
+
+}//end group request_receive
+group response_send
+{
+ template Response m_Response_2xxonBYE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit
+ }
+ }
+
+ template Response m_Response_onCANCEL (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute)
+ modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ //contact := p_contact,
+ maxForwards := omit//,
+ //recordRoute := p_recordRoute
+ }
+ }
+
+ template Response m_Response_18XonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact //mandatory field due to 24 229 rel 7.9
+ //maxForwards := omit,
+ //rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ }
+ }
+
+ template Response m_Response_18XonINVITE_AlertInfo (
+ StatusLine p_statusLine,
+ CallId p_callId,
+ CSeq p_cSeq,
+ From p_from,
+ To p_to,
+ Via p_via,
+ AlertInfo p_alertInfo
+ ) modifies m_Response_Base:= {
+ msgHeader :=
+ {
+ alertInfo := p_alertInfo
+ }
+ }
+
+ template Response m_Response_18XonINVITE_sdp_require (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact,template MessageBody p_mb,template Require p_require ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ require := p_require,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_18XonINVITE_AS (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ recordRoute := p_recordRoute
+ }
+ }
+
+ template Response m_Response_18XonINVITE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ }
+ }
+
+
+ template Response m_Response_18XonINVITE_HistoryInfo_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template HistoryInfo p_historyInfo) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ historyInfo := p_historyInfo,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ }
+ }
+
+ template Response m_Response_18XonINVITE_PchargingVector (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template PChargingVector p_pChargingVector ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
+ pChargingVector := p_pChargingVector
+
+ }
+ }
+
+ template Response m_Response_18XonINVITE_pEearlyMedia (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template PEarlyMedia p_pEarlyMedia ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ pEarlyMedia := p_pEarlyMedia
+ }
+ }
+
+
+ template Response m_Response_18XonINVITE_pPreferred_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template PPreferredID p_pPreferredID ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit,
+ pPreferredID := p_pPreferredID,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ }
+ }
+
+
+ template Response m_Response_18XonINVITE_pAsserted_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit,
+ pAssertedID := p_pAssertedID,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ }
+ }
+
+ template Response m_Response_18XonINVITE_pAsserted_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID, template Privacy p_privacy) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit,
+ pAssertedID := p_pAssertedID,
+ privacy := p_privacy,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ }
+ }
+
+ template Response m_Response_18XonINVITE_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template Privacy p_privacy) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit,
+ privacy := p_privacy,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ }
+ }
+
+
+ template Response m_Response_18XonINVITE_supported_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template Supported p_supported, template Privacy p_privacy) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit,
+ supported := p_supported,
+ privacy := p_privacy,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ }
+ }
+
+ template Response m_Response_18XonINVITE_recordRoute_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999},//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ recordRoute := p_recordRoute//for INVITE response
+ }
+ }
+
+ template Response m_Response_18XonINVITE_Require (
+ StatusLine p_statusLine,
+ CallId p_callId,
+ CSeq p_cSeq,
+ From p_from,
+ To p_to,
+ Via p_via,
+ Contact p_contact,
+ Require p_require
+ ) modifies m_Response_Base:= {
+ msgHeader :=
+ {
+ require := p_require
+ }
+ }
+
+ template Response m_Response_18XonINVITE_Require_ifpresent (
+ StatusLine p_statusLine,
+ CallId p_callId,
+ CSeq p_cSeq,
+ From p_from,
+ To p_to,
+ Via p_via,
+ Contact p_contact,
+ Require p_require
+ ) modifies m_Response_Base:= {
+ msgHeader :=
+ {
+ require := p_require
+ }
+ }
+
+ template Response m_Response_18XonINVITE_UserToUser (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template charstring p_U2UData) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ userToUser := m_UserToUserData(valueof(p_U2UData))
+ }
+ }
+
+ template Response m_Response_18XonINVITE_Xml (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact,template MessageBody p_mb ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_xmlAplication},
+ maxForwards := omit,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_18XonINVITE_sdp_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact,template MessageBody p_mb ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_18XonINVITE_require_sdp_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, Require p_require, template MessageBody p_mb, template LibSip_SIPTypesAndValues.Allow p_allow ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ require := p_require,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999},//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ allow := p_allow
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2xxonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb)
+ modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ recordRoute := p_recordRoute//for INVITE response
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2xxonINVITE_HistoryInfo (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template HistoryInfo p_historyInfo, template MessageBody p_mb)
+ modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ historyInfo := p_historyInfo,
+ maxForwards := omit,
+ recordRoute := p_recordRoute//for INVITE response
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2xxonINVITE_Mime (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb)
+ modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart},
+ maxForwards := omit,
+ recordRoute := p_recordRoute//for INVITE response
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2xxonINVITE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb)
+ modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ recordRoute := p_recordRoute//for INVITE response
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2xxonINVITE_PchargingVector (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template Route p_route, template RecordRoute p_recordroute, template MessageBody p_mb, template Contact p_contact, template PChargingVector p_pChargingVector ) modifies m_Response_mbody :=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
+ pChargingVector := p_pChargingVector
+
+ }
+ }
+
+ template Response m_Response_2XXonINVITE_pPreferred_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template PPreferredID p_pPreferredID, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ pPreferredID := p_pPreferredID,
+ recordRoute := p_recordRoute//for INVITE response
+ },
+ messageBody := p_mb
+ }
+
+
+ template Response m_Response_2XXonINVITE_pAsserted_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ pAssertedID := p_pAssertedID,
+ recordRoute := p_recordRoute//for INVITE response
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2XXonINVITE_pAsserted_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID, template Privacy p_privacy, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ pAssertedID := p_pAssertedID,
+ privacy := p_privacy,
+ recordRoute := p_recordRoute//for INVITE response
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2XXonINVITE_supported_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template Supported p_supported, template Privacy p_privacy, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ supported := p_supported,
+ privacy := p_privacy,
+ recordRoute := p_recordRoute//for INVITE response
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2XXonINVITE_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template Privacy p_privacy, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ privacy := p_privacy,
+ recordRoute := p_recordRoute//for INVITE response
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2xxonINVITE_UserToUser (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb, template charstring p_U2UData)
+ modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ recordRoute := p_recordRoute,//for INVITE response
+ userToUser := m_UserToUserData(valueof(p_U2UData))
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2xxonREGISTER_IMS (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, SipUrl p_serviceroute_sip_url, SipUrl p_passociated_uri)
+ modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ serviceRoute := {fieldName:=SERVICE_ROUTE_E,
+ routeBody:={{ nameAddr:= {displayName:=omit,addrSpec:=p_serviceroute_sip_url},rrParam:=omit}}},
+ pAssociatedURI := m_pAssociatedURI({displayName:=omit,addrSpec:=p_passociated_uri}) // PAssociatedURI RFC3455
+
+ }
+ }
+
+
+ template Response m_Response_2xxonSUBSCRIBE_IMS (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact)
+ modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact
+ }
+ }
+
+
+ template Response m_Response_2xxonSUBSCRIBE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact)
+ modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact
+ }
+ }
+
+ template Response m_Response_onMESSAGE_IMS(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact
+ }
+ }
+
+ template Response m_Response_2xxonMESSAGE_PAccessNetwInfo_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a
+ }
+ }
+
+ template Response m_Response_2xxonMESSAGE_PCharging_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template PChargingVector p_pChargingVector) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
+ pChargingVector := p_pChargingVector
+ }
+ }
+
+
+ template Response m_Response_2xxonMESSAGE_PCharging_IMS(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template PChargingVector p_pChargingVector) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
+ pChargingVector := p_pChargingVector
+ }
+ }
+
+ template Response m_Response_2xxonMESSAGE_PMediaAuth_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ pMediaAuthorization := m_pMediaAuthorization_fixedValue
+ }
+ }
+
+ template Response m_Response_2xxonMESSAGE_pPreferredID_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template PPreferredID p_pPreferredID) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ pPreferredID := p_pPreferredID
+ }
+ }
+
+ template Response m_Response_2xxonUPDATE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb)
+ modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ recordRoute := p_recordRoute
+ },
+ messageBody := p_mb
+ }
+
+
+ template Response m_Response_3XXonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit
+ }
+ }
+
+
+ template Response m_Response_4XXonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit
+ }
+ }
+
+ template Response m_Response_4XXonINVITE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template Contact p_contact ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit
+ }
+ }
+
+ template Response m_Response_onINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit
+ }
+ }
+
+ template Response m_Response_onINVITE_Reason (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, charstring p_cause) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit,
+ reason := mw_Reason(p_cause)
+ }
+ }
+
+ template Response m_Response_WWWauthenticate_IMS(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template WwwAuthenticate p_wwwAuthenticate) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ wwwAuthenticate := p_wwwAuthenticate
+ }
+ }
+
+}//end group response_send
+
+group response_receive
+{
+
+ template Response mw_Response_200onINVITE_noPChargingVector_UE(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pChargingVector := omit
+ }
+ }
+
+ template Response mw_Response_200onINVITE_SDP_UE(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ messageBody := {
+ sdpMessageBody := ?
+ }
+ }
+
+ template Response mw_Response_2xxonMESSAGE_noPCharging_UE(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pChargingFunctionAddresses := omit,
+ pChargingVector := omit
+ }
+ }
+
+ template Response mw_Response_2xxonMESSAGE_noPCharging_IMS(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pChargingFunctionAddresses := omit,
+ pChargingVector := omit
+ }
+ }
+
+
+ template Response mw_Response_2xxonMESSAGE_noPAccessNetworkInfo_IMS(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pAccessNetworkInfo := omit
+ }
+ }
+
+ template Response mw_Response_2xxonMESSAGE_noPMediaAuthorization_IMS(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pMediaAuthorization := omit
+ }
+ }
+
+ template Response mw_Response_401onREGISTER_securityServer_UE(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ securityServer := ?,
+ wwwAuthenticate := ?
+ }
+ }
+
+ template Response mw_Response_SecServer_WWWAuth_UE (template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template SecurityServer p_securityServer, template WwwAuthenticate p_wwwAuthenticate) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ securityServer := p_securityServer,
+ wwwAuthenticate := p_wwwAuthenticate
+ }
+ }
+
+ template Response mw_Response_401onREGISTER_WWWauthenticate_IMS(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template WwwAuthenticate p_wwwAuthenticate) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ wwwAuthenticate := p_wwwAuthenticate
+ }
+ }
+
+ template Response mw_Response_200onREGISTER_IMS(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template SipUrl p_ue_uri, template Contact p_contact, template SipUrl p_sut_scscf_uri) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pAssociatedURI := {fieldName := P_ASSOCIATED_URI_E, nameAddrList:={*,{nameAddr:={displayName:=*,addrSpec:=p_ue_uri},genericParams:=*},*}},
+ path := ?,
+ serviceRoute := {fieldName := SERVICE_ROUTE_E, routeBody := {{nameAddr:={displayName:=*,addrSpec:=p_sut_scscf_uri},rrParam:=*}}},
+ pChargingFunctionAddresses := ?,
+ pChargingVector := ?,
+ contact := p_contact
+ }
+ }
+
+ template Response mw_Response_PpreferredID_PassertedID(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template PPreferredID p_pPreferredID, template PAssertedID p_pAssertedID) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pAssertedID := p_pAssertedID,
+ pPreferredID := p_pPreferredID
+ }
+ }
+
+ template Response mw_Response_PAsserted_Privacy_History (template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template PAssertedID p_pAssertedID, template Privacy p_privacy, template HistoryInfo p_historyInfo) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pAssertedID := p_pAssertedID,
+ privacy := p_privacy,
+ historyInfo := p_historyInfo
+ }
+ }
+
+ template Response mw_Response_PAsserted_ContentType (template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template PAssertedID p_pAssertedID, template ContentType p_contentType) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pAssertedID := p_pAssertedID,
+ contentType := p_contentType
+ }
+ }
+
+ template Response mw_Response_PchargingVector(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template PChargingVector p_chargingVector) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pChargingVector := p_chargingVector // mw_pChargingVector(p_id,p_paramValue)
+ }
+ }
+
+
+ template Response mw_Response_PchargingVecFctadrId(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template PChargingVector p_chargingVector,
+ template PChargingFunctionAddresses p_chargingFunctionAddresses, template PPreferredID p_preferredID) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pChargingVector := p_chargingVector, // mw_pChargingVector(p_id,p_paramValue)
+ pChargingFunctionAddresses := p_chargingFunctionAddresses,
+ pPreferredID := p_preferredID
+ }
+ }
+
+ template Response mw_Response_PchargingFunctionAddr(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template PChargingFunctionAddresses p_chargingFunctionAddresses) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pChargingFunctionAddresses := p_chargingFunctionAddresses
+ }
+ }
+
+} // end response_receive
+
+}//end modified_templates
+
+}//end Message_templates
+
+} // end module LibIms_Templates
\ No newline at end of file
/branches/v2/ttcn/LibIms_Templates.ttcn
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: branches/v2/ttcn/LibIms_Steps.ttcn
===================================================================
--- branches/v2/ttcn/LibIms_Steps.ttcn (nonexistent)
+++ branches/v2/ttcn/LibIms_Steps.ttcn (revision 209)
@@ -0,0 +1,1885 @@
+/*
+ * @author STF 346, STF366, STF368, STF369, STF450
+ * @version $Id$
+ * @desc This module provides the types used by the test component
+ * for SIP-IMS tests.
+ * This module is part of LibImsV2.
+ */
+
+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 {
+
+ /**
+ *
+ * @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 (ispresent(p_message.msgHeader.via)) {
+
+ v_intVia := sizeof(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;
+ }
+ }
+
+ /**
+ ** @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
+ {
+ 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;
+
+ for (var integer i := 0; i < v_intVia; i := 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 (ispresent(p_message.msgHeader.route)) {
+
+ v_intRoute := sizeof(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 (ispresent(p_message.msgHeader.recordRoute)) {
+
+ v_intRecordRoute := sizeof(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 := p_message.msgHeader.recordRoute;
+ }
+ }
+
+ /**
+ *
+ * @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;
+
+ v_intRecordRoute := sizeof(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)}
+ }
+
+ }//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 := valueof(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;
+ }
+ f_removeOwnViaParameter(v_response);
+ }// end function f_setHeadersForwardResponse
+
+ /*
+ *
+ * @desc sets Invite header fields (IMS addresses)
+ * extension of general settings from LibSip basic function
+ * @param p_cSeq_s current cSeq
+ * @param p_to_user user_profile id of the user to be invited
+ * @verdict
+ */
+ function f_setHeadersINVITE(inout CSeq p_cSeq_s, in integer p_to_user) runs on ImsComponent
+ {
+ vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier
+
+ vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier
+
+ vc_requestUri := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header
+
+ if (vc_boo_route)
+ { vc_route := valueof(m_route_interface(vc_interfaceprofile))};
+ if (vc_boo_recordRoute)
+ { vc_recordRoute := valueof(m_recordRoute_currIpAddr(vc_userprofile))};
+
+ LibSip_Steps.f_setHeadersINVITE(p_cSeq_s);
+
+ }// end f_setHeadersINVITE
+
+ /*
+ *
+ * @desc sets 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 := valueof(m_route_interface(vc_interfaceprofile))};
+ if (vc_boo_recordRoute)
+ { vc_recordRoute := valueof(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
+
+ vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier
+
+ vc_requestUri := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header
+
+ LibSip_Steps.f_setHeadersMESSAGE(p_cSeq_s);
+
+ }// end f_setHeadersMESSAGE
+
+ /*
+ *
+ * @desc sets Notify header fields (IMS addresses)
+ * extension of general settings from LibSip basic function
+ * @param p_cSeq_s current cSeq
+ * @param p_to_user user_profile id of the user to be invited
+ * @verdict
+ */
+ function f_setHeadersNOTIFY(inout CSeq p_cSeq_s, in integer p_to_user) runs on ImsComponent
+ {
+ 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
+
+ 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 := valueof(m_Contact(m_SipUrl_currIpaddr_CSCF(vc_userprofile)));
+
+ }// end f_setHeadersNOTIFY
+
+ /*
+ *
+ * @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_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier
+
+ vc_requestUri := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header
+
+ if (vc_boo_route)
+ { vc_route := valueof(m_route_interface(vc_interfaceprofile))};
+ if (vc_boo_recordRoute)
+ { vc_recordRoute := valueof(m_recordRoute_currIpAddr(vc_userprofile))};
+
+ //contact header initialization for sending of PUBLISH from CSCF component
+ vc_contact := valueof(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 (ispresent(v_request.msgHeader.recordRoute))
+ {
+ vc_recordRoute := v_request.msgHeader.recordRoute;
+ v_nbroute := sizeof(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;
+ }
+ 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;
+
+ p_cSeq_s.fieldName := CSEQ_E;
+ p_cSeq_s.seqNumber := p_cSeq_s.seqNumber + 1;
+ p_cSeq_s.method := p_method ;
+ vc_cSeq := p_cSeq_s;
+
+ vc_contact := valueof(m_Contact(m_SipUrl_contactIpaddr(vc_userprofile)));
+
+ vc_branch := c_branchCookie & f_getRndTag();
+ vc_branch_ICSCF := c_branchCookie & f_getRndTag();
+
+ vc_via:={
+ fieldName := VIA_E,
+ viaBody := {valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile)),
+ valueof(m_ViaBody_virtualUEinPCSCF(vc_branch_ICSCF, vc_userprofile))
+ }
+ };
+ }// end function f_setHeadersGeneral_ICSCF
+
+ /**
+ *
+ * @desc sets header field for the next outgoing REGISTER message
+ * from the visited P-CSCF to the home I-CSCF
+ * @param p_cSeq_s CSeq parameter to be applied
+ */
+ function f_setHeaders_REGISTER_PCSCF(inout CSeq p_cSeq_s) runs on SipComponent
+ {
+ var SemicolonParam_List v_params;
+
+ f_setHeadersGeneral(p_cSeq_s, "REGISTER"); // cseq, contact, branch, via
+
+ vc_requestUri:=
+ {
+ scheme := c_sipScheme,
+ 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_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier
+
+ vc_requestUri := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header
+
+ if (vc_boo_route)
+ { vc_route := valueof(m_route_interface(vc_interfaceprofile))};
+ if (vc_boo_recordRoute)
+ { vc_recordRoute := valueof(m_recordRoute_currIpAddr(vc_userprofile))};
+
+ LibSip_Steps.f_setHeadersREFER(p_cSeq_s);
+
+ }// end f_setHeadersREFER
+
+ /*
+ * @desc sets REFER header fields (IMS addresses)
+ * extension of general settings from LibSip basic function
+ * @param p_cSeq_s current cSeq
+ * @param p_uri SipUrl for request URI and To header
+ */
+ function f_setHeadersREFER_conf(inout CSeq p_cSeq_s, in SipUrl p_uri) runs on ImsComponent
+ {
+ vc_to := {
+ fieldName := TO_E,
+ addressField := {
+ nameAddr := {
+ displayName := omit, // optional charstring
+ addrSpec := p_uri // SipUrl
+ }
+ },//end addressField
+ toParams := omit
+ };
+
+ vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier
+
+ vc_requestUri := p_uri; // Request URI of Invite is identical with To header
+
+ if (vc_boo_route) {
+ vc_route := valueof(m_route_interface(vc_interfaceprofile))
+ };
+ if (vc_boo_recordRoute) {
+ vc_recordRoute := valueof(m_recordRoute_currIpAddr(vc_userprofile))
+ };
+
+ LibSip_Steps.f_setHeadersREFER(p_cSeq_s);
+ }// end f_setHeadersREFER_conf
+
+ } // end group fieldOperations
+
+ group awaitingMessage {
+ }
+ group sendMessage {
+ /**
+ *
+ * @desc send PRACK message
+ * @param p_request template of the message to be sent
+ */
+ function f_SendPRACK_sdp(template MessageBody p_mb) runs on SipComponent
+ {
+ f_setHeadersGeneral(vc_cSeq, "PRACK"); // cseq, contact, branch, via
+ vc_rAck := valueof(m_RAck(vc_response.msgHeader.rSeq.responseNum, vc_cSeq.seqNumber, vc_cSeq.method));
+
+ SIPP.send(m_PRACK_Request_sdp(
+ vc_requestUri,
+ vc_callId,
+ vc_cSeq,
+ vc_from,
+ vc_to,
+ vc_via,
+ vc_rAck,
+ p_mb
+ )) 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;
+ }
+
+// //temporary not used and it can be deleted during validation
+// case (c_userProfile_UE1atSUTvisiting) { //variant c_userProfile_UE1atSUTvisiting
+// vc_userprofile.currPort := PX_IMS_TS_UE2_PORT;
+// vc_userprofile.currIpaddr := PX_IMS_TS_UE2_IPADDR;
+// vc_userprofile.contactPort := PX_IMS_TS_UE2_PORT;
+// vc_userprofile.contactIpaddr := PX_IMS_TS_UE2_IPADDR;
+// vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE2_BEARER_IPADDR;
+// vc_userprofile.homeDomain := PX_IMS_SUT_UE2_HOME_DOMAIN;
+// vc_userprofile.publUsername := PX_IMS_SUT_UE2_PUBLIC_USER;
+// vc_userprofile.qop := PX_IMS_SUT_UE2_QOP;
+// vc_userprofile.privUsername := PX_IMS_SUT_UE2_PRIVAT_USERNAME;
+// vc_userprofile.passwd := PX_IMS_SUT_UE2_PRIVAT_PASSWD;
+// vc_userprofile.registrarDomain := PX_IMS_TS_UE2_REGISTRAR;
+// }
+
+ case (c_userProfile_IBCFwithHomeUE) { //variant c_userProfile_IBCFwithHomeUE
+ vc_userprofile.currPort := PX_IMS_TS_IBCF_PORT; // via (Ic interface of TS)
+ vc_userprofile.currIpaddr := PX_IMS_TS_IBCF_IPADDR; // via
+ vc_userprofile.contactPort := PX_IMS_TS_IBCF_PORT; // contact (simulated UE)
+ vc_userprofile.contactIpaddr := PX_IMS_TS_IBCF_IPADDR; // contact
+ vc_userprofile.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
+ 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
+ }
+
+ // 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
+ }
+
+ 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 p_from := c_empty_From;
+ p_from := { fieldName := FROM_E,
+ addressField :=
+ {nameAddr := {
+ displayName := omit, // optional charstring
+ addrSpec := f_initSipUrl(p_user) // SipUrl
+ }},//end addressField
+ fromParams := {{id := c_tagId, paramValue := p_tag_str}}
+ };
+ return(p_from)
+ }
+
+ function f_initSipUrl(in integer p_user) runs on ImsComponent return SipUrl
+ {
+ var SipUrl 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}
+ }
+ 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}
+ }
+ 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)}
+ }
+
+
+ /*
+ *
+ * @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
+ */
+ function f_get_userDomainPort (in SipUserProfile p_userProfile) runs on ImsComponent return /*template*/ 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 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);
+
+ // 401 response
+ f_sendResponse(m_Response_WWWauthenticate_IMS(c_statusLine401,
+ vc_callId, vc_cSeq,vc_caller_From, vc_caller_To, vc_via,
+ m_wwwAuthenticate(f_calculatecChallenge_forWWWAuthorization
+ (PX_IMS_SUT_UE1_QOP,vc_authorization.body[0].digestResponse)))
+ );
+
+ //Awaiting 2nd REGISTER with authorization header
+ f_awaitingREGISTER(mw_REGISTER_authorizedRequest_IMS(m_Authorization_digest(mw_digestResponse((c_Integrity_protected_yes,c_Integrity_protected_ip_assoc_pending)))));
+
+ // 200OK to complete the request
+ vc_contact := 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,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
+ vc_contact := 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 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
+
+
+ } // 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(valueof(m_media_dynPT(PX_SIP_SDP_dyn, PX_SIP_SDP_encoding)), vc_userprofile));
+
+ vc_contact := valueof(m_Contact(m_SipUrl_contactIpaddr(vc_userprofile)));
+
+ }
+
+ /*
+ *
+ * @desc Sets variables and default initialization for user profile and handle registration and authentication with MD5
+ * @param p_userprofile user profile of call
+ * @param p_cSeq_s cseq parameter
+ * @param p_register register template
+ */
+ function f_IMS_preamble_withRegistration (in integer p_userprofile, 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
+ 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;
+
+ 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
+ * @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
+ f_IMS_preamble_woRegistration(p_userprofile, p_cSeq_s);
+ //Preamble
+ f_Registration(p_cSeq_s, p_register, PX_SIP_REGISTER_AUTHENTICATION_ENABLED, true);
+
+ // 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);
+
+ //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
+ */
+ 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_boo_route := true;
+ vc_boo_recordRoute := true;
+ vc_cSeq := p_cSeq_s;
+
+ //Defaults
+ vc_def_catchSyncStop := activate(a_Sip_catchSyncStop());
+ vc_default := activate (a_altstep_AS());
+
+ //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(valueof(m_media_dynPT(PX_SIP_SDP_dyn, PX_SIP_SDP_encoding)), vc_userprofile));
+ vc_contact := valueof(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();
+ }
+
+ /*
+ *
+ * @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);}
+ 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,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))));
+// 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()
+ };
+
+ function f_IMS_postamble_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,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)}};
+ 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,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)}};
+ 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_UE1_withoutRegistration () runs on ImsComponent
+ {f_terminate_component()};
+
+ function f_SIP_postamble_UE2_withoutRegistration () runs on ImsComponent
+ {f_terminate_component()};
+
+ /**
+ *
+ * @desc sends BYE and awaits response
+ * @param p_CallId parameter for outgoing BYE
+ * @param p_cSeq parameter for outgoing BYE
+ * @param p_from parameter for outgoing BYE
+ * @param p_to parameter for outgoing BYE
+ * @param p_reqHostPort parameter for outgoing BYE
+ */
+ function f_terminateCall_IMS(SipUrl p_requestUri, CallId p_CallId, inout CSeq p_cSeq, From p_from,
+ template To p_to) runs on ImsComponent
+ {
+ 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, valueof(p_to), vc_via, vc_route));
+
+ tc_resp.start(PX_SIP_TRESP);
+ alt
+ {
+ [] SIPP.receive (mw_Response_Base(mw_statusLine1xx, p_CallId, p_cSeq))
+ {
+ repeat;
+ }
+ [] SIPP.receive (mw_Response_Base(mw_statusLineFinal, p_CallId, p_cSeq))
+ {
+ tc_resp.stop;
+ }
+ // timeout should be handled in default_alt_step
+ }
+ } // end function f_terminateCall
+
+
+ /**
+ *
+ * @desc sends BYE and awaits response
+ * @param p_CallId parameter for outgoing BYE
+ * @param p_cSeq parameter for outgoing BYE
+ * @param p_from parameter for outgoing BYE
+ * @param p_to parameter for outgoing BYE
+ * @param p_reqHostPort parameter for outgoing BYE
+ */
+ function f_terminateCall_UE(SipUrl p_requestUri, CallId p_CallId, inout CSeq p_cSeq, From p_from,
+ template To p_to, 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 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, 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
+ };
+ 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
+ {
+ var Response v_response;
+ var Request v_request;
+
+ [] 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");
+ f_IMS_awaitDeRegistration();
+ f_componentStop();
+ }
+ // allow repeated INVITEs
+ [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
+ }
+ [] 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
+ {
+ f_setHeadersOnReceiptOfResponse(v_response.msgHeader.cSeq, v_response);
+ repeat;
+ }
+
+ // according to SIP chap.8.1.3.2
+ [] 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
+ {
+ f_setHeadersOnReceiptOfResponse(v_response.msgHeader.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);
+ f_send200OK();
+ repeat
+ }
+
+ // awaiting of Notify
+ [] SIPP.receive(mw_NOTIFY_Request_Base(vc_callId))->value v_request sender vc_sent_label
+ {
+ f_setHeadersOnReceiptOfRequest(v_request);
+ f_send200OK();
+ repeat
+ }
+ // awaiting of subscribe from UE
+ [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));
+ 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_awaitingOkResponse(vc_cSeq);
+ repeat
+ }
+ // unexpected BYE is acknowledged to avoid retransmissions
+ [] SIPP.receive(mw_BYE_Request_Base(?))-> value v_request sender vc_sent_label
+ {
+ setverdict(fail);
+ f_setHeadersOnReceiptOfRequest(v_request);
+ f_send200OK();
+ action("Please de-register");
+ f_IMS_awaitDeRegistration();
+ f_componentStop();
+ }
+
+ // unexpected CANCEL is acknowledged to avoid retransmissions
+ [] SIPP.receive(mw_CANCEL_Request_Base(?))-> value v_request sender vc_sent_label
+ {
+ setverdict(fail);
+ f_setHeadersOnReceiptOfRequest(v_request);
+ //Answer to the CANCEL
+ f_send200OK();
+ action("Please de-register");
+ f_IMS_awaitDeRegistration();
+ f_componentStop();
+ }
+ // catch 4xx response
+ [] SIPP.receive(mw_Response_Base(mw_statusLine4xx, vc_callId, ?))-> value v_response sender vc_sent_label
+ {
+ setverdict(fail);
+ f_setHeadersOnReceiptOfResponse(v_response.msgHeader.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");
+ f_IMS_awaitDeRegistration();
+ f_componentStop();
+ }
+ // catch 5xx response
+ [] SIPP.receive(mw_Response_Base(mw_statusLine5xx, vc_callId, ?))-> value v_response sender vc_sent_label
+ {
+ setverdict(fail);
+ f_setHeadersOnReceiptOfResponse(v_response.msgHeader.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");
+ 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();
+ }
+ // 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();
+ }
+ }
+
+ /**
+ *
+ * @desc main default altstep to handle unexpected messages and timeout
+ * @verdict fail for all unexpected branches
+ */
+ altstep a_altstep_AS() runs on SipComponent
+ {
+ var Response v_response;
+ var Request v_request;
+
+ [] any timer.timeout
+ {
+ setverdict(fail);
+ all timer.stop;
+ }
+
+ // allow repeated INVITEs
+ [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
+ {
+ 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));
+ repeat;
+ }
+
+ // 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
+ {
+ setverdict(fail);
+ f_setHeadersOnReceiptOfRequest(v_request);
+ f_send200OK();
+ }
+
+ // unexpected BYE is acknowledged to avoid retransmissions
+ [] SIPP.receive(mw_BYE_Request_Base(?))-> value v_request sender vc_sent_label
+ {
+ setverdict(fail);
+ f_setHeadersOnReceiptOfRequest(v_request);
+ f_send200OK();
+ }
+
+ [] 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;
+ }
+ }
+ }
+} // module LibIms_Steps
\ No newline at end of file
/branches/v2/ttcn/LibIms_Steps.ttcn
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: branches/v2/ttcn/LibIms_PIXITS.ttcn
===================================================================
--- branches/v2/ttcn/LibIms_PIXITS.ttcn (nonexistent)
+++ branches/v2/ttcn/LibIms_PIXITS.ttcn (revision 209)
@@ -0,0 +1,563 @@
+/*
+ * @author STF 346, STF366, STF368, STF369, STF450
+ * @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_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";
+
+ /** @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";
+
+ /** @desc charstring for identity of the tester UE1 local user
+ */
+ modulepar charstring PX_IMS_SUT_UE1_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-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 charstring for UE1 display name
+ */
+ modulepar charstring PX_IMS_SUT_UE1_DISPLAY := "UE1@SUT";
+} // end group SUT_UE1
+
+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 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 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 UE2 local user
+ */
+ modulepar charstring PX_IMS_SUT_UE2_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-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 := "UE2@SUT";
+} // end group SUT_UE2
+
+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 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/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";
+
+ /** @desc charstring for identity of the tester UE3 local user
+ */
+ modulepar charstring PX_IMS_SUT_UE3_PUBLIC_USER := "2910";
+
+ /** @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 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
+
+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 - PCSCF4 port number to exchange SIP messages - connection point for UE4
+ */
+ modulepar integer PX_IMS_SUT_PCSCF4_PORT := 5060;
+
+ /** @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 UE4 local user
+ */
+ modulepar charstring PX_IMS_SUT_UE4_PUBLIC_USER := "2910";
+
+ /** @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_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
+
+group SUT_unknown{
+ /** @desc charstring for identity of unknown UE public user
+ */
+ modulepar charstring PX_IMS_SUT_unknownUE_PUBLIC_USER := "0007";
+} // end group SUT_unknown
+
+group EMERGENCY{
+ /** @desc charstring for identity of emergency service local domain
+ */
+ modulepar charstring PX_IMS_SUT_EMERGENCY_HOME_DOMAIN := "home.net";
+
+ /** @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
+
+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;
+
+ /** @desc charstring for SUT/IBCF1 domain
+ */
+ modulepar charstring PX_IMS_SUT_IBCF1_HOME_DOMAIN := "ibcf1.sut.net";
+
+ /** @desc charstring for SUT/IBCF2 IP address to exchange SIP messages
+ */
+ modulepar charstring PX_IMS_SUT_IBCF2_IPADDR := "172.31.10.6";
+
+ /** @desc integer for SUT/IBCF2 port number to exchange SIP messages
+ */
+ modulepar integer PX_IMS_SUT_IBCF2_PORT := 5060;
+
+ /** @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 integer for SUT/P-CSCF port number to exchange SIP messages
+ */
+ modulepar integer PX_IMS_SUT_PCSCF_PORT := 5060;
+
+ /** @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 integer for SUT/S-CSCF port number to exchange SIP messages
+ */
+ modulepar integer PX_IMS_SUT_SCSCF_PORT := 5060;
+
+ /** @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
+
+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 integer for SUT/I-CSCF port number to exchange SIP messages
+ */
+ modulepar integer PX_IMS_SUT_ICSCF_PORT := 5060;
+
+ /** @desc charstring for SUT/I-CSCFdomain
+ */
+ modulepar charstring PX_IMS_SUT_ICSCF_HOME_DOMAIN := "icscf.sut.net";
+
+ /** @desc charstring for SUT/I-CSCF P_VisitedNetwork ID header (see RFC3455)
+ */
+ modulepar charstring PX_IMS_SUT_ICSCF_VisitedNetworkID := "Visited ETSI 1";
+} // 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";
+
+ /** @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";
+
+}//end group SUT_UE1
+
+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 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";
+
+} // 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;
+
+ /** @desc charstring invalid GRUU for Request-URI to be rejected by IUT S-CSCF
+ */
+ modulepar charstring PX_IMS_SUT_INVALID_GRUU;
+
+ /** @desc charstring Service value in P-Asserted-Service header to be rejected by IUT S-CSCF, as service is not subscribed-to
+ */
+ modulepar charstring PX_IMS_SUT_UNSUBSCRIBED_SERVICE;
+
+ /** @desc charstring Service value in SDP message body to be rejected by IUT S-CSCF, as service is not subscribed-to;
+ ** intentionally kept as charstring to allow maximum flexibility to construct unsubscribed service **
+ */
+ modulepar charstring PX_IMS_SUT_UNSUBSCRIBED_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/v2/ttcn/LibIms_PIXITS.ttcn
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: branches/v2/ttcn/LibIms_Interface.ttcn
===================================================================
--- branches/v2/ttcn/LibIms_Interface.ttcn (nonexistent)
+++ branches/v2/ttcn/LibIms_Interface.ttcn (revision 209)
@@ -0,0 +1,39 @@
+/*
+ * @author STF 346, STF366, STF368, STF369, STF450
+ * @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;
+
+ group AdressTypes
+ {
+
+ type component ImsComponent extends SipComponent
+ {
+ // general variables
+ var ImsInterfaceProfile vc_interfaceprofile
+ } // end ImsComponent
+
+ }// end group AdressTypes
+
+
+
+
+} // end module LibIms_TestSystem
/branches/v2/ttcn/LibIms_Interface.ttcn
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: branches/v2/ttcn/LibIms_SIPTypesAndValues.ttcn
===================================================================
--- branches/v2/ttcn/LibIms_SIPTypesAndValues.ttcn (nonexistent)
+++ branches/v2/ttcn/LibIms_SIPTypesAndValues.ttcn (revision 209)
@@ -0,0 +1,96 @@
+/*
+ * @author STF 346, STF366, STF368, STF369, STF450
+ * @version $Id$
+ * @desc This module provides the types and constants used by the test component
+ * for SIP tests.
+ * This module is part of LibImsV2.
+ */
+
+module LibIms_SIPTypesAndValues
+{
+ // SipAts
+ import from LibSip_SDPTypes all;
+ import from LibSip_XMLTypes all;
+
+group Constants
+{
+
+const integer c_ISUP_HOP_COUNT:=31; //TODO replace this value with appropriate PIXIT parameter
+
+// 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
+
+ // number of service profile
+ const integer c_serviceProfile_EMERGENCY := 911;
+ const integer c_serviceProfile_EMERGENCY_INVALID := 912;
+
+ // number of SIPURL identifiers
+ const integer c_interfaceSIPURL_IMS_SUT_PCSCF1_domain := 1101; // c_interfaceProfile_IMS_SUT_PCSCF1
+ const integer c_interfaceSIPURL_IMS_SUT_PCSCF1_ip := 1102; // c_interfaceProfile_IMS_SUT_PCSCF1
+
+} //end group UserProfileConstants
+
+
+} //end group Constants
+
+
+ group otherTypes{
+ type record ImsInterfaceProfile
+ { /** @desc integer for Port number to exchange SIP messages
+ */
+ integer SUTPort,
+
+ /** @desc charstring for IP address to exchange SIP messages
+ */
+ charstring SUTIpaddr,
+
+ /** @desc charstring for home domain to exchange SIP messages
+ */
+ charstring SUTHomeDomain
+ }
+ }
+
+} // end module LibIms_SIPTypesAndValues
/branches/v2/ttcn/LibIms_SIPTypesAndValues.ttcn
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/v2.0.1/ttcn/LibIms_Templates.ttcn
===================================================================
--- tags/v2.0.1/ttcn/LibIms_Templates.ttcn (nonexistent)
+++ tags/v2.0.1/ttcn/LibIms_Templates.ttcn (revision 209)
@@ -0,0 +1,3619 @@
+/*
+ * @author STF 346, STF366, STF368, STF369, STF450
+ * @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_Templates
+{
+ import from XSDAUX all;
+
+ //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 urn_ietf_params_xml_ns_resource_lists language "XSD" all
+ with {
+ extension "File:../xsd/ResourceList.xsd"
+ }
+
+ 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 charstring m_international_number_format := pattern "\\+\d+";//pattern "\+\d+";
+
+ template NameAddr mw_SipUrl_SUTinterface(charstring p_host, integer p_port) :=
+ {
+ displayName := *,
+ addrSpec := {
+ scheme := c_sipScheme,
+ components := { sip:= {
+ userInfo := *,
+ hostPort := {p_host, p_port}}},
+ urlParameters := *,
+ headers := *
+ }
+ }
+
+ template Addr_Union mw_UE1_Addr_display := {nameAddr:={displayName:=PX_IMS_SUT_UE1_DISPLAY,addrSpec:=?}};
+
+ template Addr_Union mw_AddrUnion_userInfo(template (present) charstring p_userInfo) :=
+ {
+ nameAddr:={displayName := *,
+ addrSpec := {
+ scheme := c_sipScheme,
+ components := { sip:= {
+ userInfo := {userOrTelephoneSubscriber :=p_userInfo, password :=*},
+ hostPort := ?}},
+ urlParameters := *,
+ headers := *
+ }
+ }
+ }
+
+group Subfields{
+
+
+ template SipUrl m_SipUrl_currIpaddr_CSCF(in 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
+ }
+
+ template 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 SemicolonParam_List m_semicolonParams_language (template charstring p_language):=
+ {{"language",p_language}}
+
+ template SemicolonParam_List mw_semicolonParams_language (template charstring p_language):=
+ {{"language",p_language}}
+
+ template SemicolonParam_List m_semicolonParams_isub (template charstring p_address):=
+ {{"isub",p_address}}
+}
+
+group HeaderFieldTemplates{
+
+ template MinSE m_minSE(DeltaSec p_ds):=
+ {
+ fieldName := MIN_SE_E,
+ deltaSec:=p_ds,
+ minSeParam:=omit
+ }
+
+ template PathValue mw_pathvalue (template SipUrl p_sipUrl):=
+ {
+ nameAddr := {displayName := *, // optional charstring
+ addrSpec := p_sipUrl // SipUrl
+ },
+ rrParam := *
+ }
+
+ template Path m_path (template SipUrl p_sipUrl):=
+ {
+ fieldName := PATH_E,
+ pathValues := {
+ {nameAddr := {
+ displayName := omit, // optional charstring
+ addrSpec := p_sipUrl // SipUrl
+ },
+ rrParam := omit}
+ }
+ }
+
+ template Path m_path_TS := {
+ fieldName := PATH_E,
+ pathValues := {
+ {
+ nameAddr := {
+ displayName := omit, // optional charstring
+ addrSpec := {
+ scheme := c_sipScheme,
+ components := { sip:= {
+ userInfo := 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 Path mw_path (template SipUrl p_sipUrl):=
+ {
+ fieldName := PATH_E,
+ pathValues := {mw_pathvalue(p_sipUrl)} // any number of SipUrl may occur before p_sipUrl
+ }
+
+ template PAccessNetworkInfo m_pAccessNetworkInfo_IEEE_11a :=
+ {
+ fieldName := P_ACCESS_NETWORK_INFO_E,
+ accessType := "IEEE-802.11a",
+ genericParams := {{id:="extension-access-info",paramValue :="192.1.1.20"}}
+ };
+
+ template PAssertedService m_pAssertedService (PAssertedServiceValue p_pAssertedServiceValue):=
+ {
+ fieldName := P_ASSERTED_SERVICE_E,
+ pAssertedServiceValue := p_pAssertedServiceValue
+ };
+
+ template PChargingFunctionAddresses m_pChargingFunctionAddresses_fixedValue :=
+ {
+ fieldName := P_CHARGING_FUNCTION_ADDRESSES_E,
+ chargeAddrParams := {{id:="ccf",paramValue :="192.1.1.1"}, // value is fixed because it is deleted on proxy
+ {id:="ecf",paramValue :="192.1.1.2"}} // value is fixed because it is deleted on proxy
+ };
+
+
+ template PChargingVector m_pChargingVector(template SemicolonParam_List p_chargeParams) :=
+ {
+ fieldName := P_CHARGING_VECTOR_E,
+ chargeParams := p_chargeParams
+ };
+
+ template PChargingVector m_pChargingVector_icid_TS :=
+ {
+ fieldName := P_CHARGING_VECTOR_E,
+ chargeParams := {{id:=c_icid, paramValue :=c_icid_value}}
+ };
+
+ template PChargingVector m_pChargingVector_origIoi_fixedValue(charstring p_homeDomain) :=
+ {
+ fieldName := P_CHARGING_VECTOR_E,
+ chargeParams := {{id:=c_icid, paramValue :=c_icid_value},
+ {id:=c_icid_generated_at, paramValue :="192.1.1.10"},
+ {id:=c_orig_ioi, paramValue := p_homeDomain}}
+ };
+
+ template PChargingVector m_pChargingVector_termIoi_fixedValue(charstring p_homeDomain) :=
+ {
+ fieldName := P_CHARGING_VECTOR_E,
+ chargeParams := {{id:=c_icid, paramValue :=c_icid_value},
+ {id:=c_icid_generated_at, paramValue :="192.1.1.10"},
+ {id:=c_term_ioi, paramValue := p_homeDomain}}
+ };
+
+ template PChargingVector m_pChargingVector_origIoi_fixedValue1(charstring p_homeDomain) :=
+ {
+ fieldName := P_CHARGING_VECTOR_E,
+ chargeParams := {
+ {id:=c_icid_generated_at, paramValue :="192.1.1.10"},
+ {id:=c_orig_ioi, paramValue := p_homeDomain}}
+ };
+
+ template PChargingVector m_pChargingVector_accessNetwInfo(charstring p_homeDomain) :=
+ {
+ fieldName := P_CHARGING_VECTOR_E,
+ chargeParams := {{id:=c_icid, paramValue :=c_icid_value},
+ {id:=c_term_ioi, paramValue := p_homeDomain},
+ {id:=c_access_network_charging_info, paramValue := "192.1.1.10"}}
+ };
+
+ template PChargingVector mw_pChargingVector(template charstring p_id, template charstring p_paramValue) :=
+ {
+ fieldName := P_CHARGING_VECTOR_E,
+ chargeParams := superset({id := p_id, paramValue := p_paramValue})
+ };
+
+ template PMediaAuthorization m_pMediaAuthorization_fixedValue :=
+ {
+ fieldName := P_MEDIA_AUTHORIZATION_E,
+ pMediaAuthorizations := {"A"} // example
+ };
+
+
+ template PEarlyMedia m_pEarlyMedia_sup :=
+ {fieldName := P_EARLY_MEDIA_E, em_param := {"supported"}};
+
+
+ template ProxyRequire m_proxyRequire_secAgree :=
+ {
+ fieldName := PROXY_REQUIRE_E,
+ optionsTags := {"sec-agree"}
+ };
+
+ template PVisitedNetworkID m_pVisitedNetworkID_TS :=
+ {
+ fieldName := P_VISITED_NETWORK_E,
+ vNetWorkSpec := {{vNetworkSpecToken := PX_IMS_SUT_ICSCF_VisitedNetworkID,
+ genericParams := omit}}
+ }
+
+ template PVisitedNetworkID mw_pVisitedNetworkID :=
+ {
+ fieldName := P_VISITED_NETWORK_E,
+ vNetWorkSpec := {{vNetworkSpecToken := PX_IMS_SUT_PCSCF_VisitedNetworkID,
+ genericParams := *}}
+ }
+
+ template RecordRoute m_recordRoute_notmatching:=
+ {
+ fieldName := RECORD_ROUTE_E,
+ routeBody :=
+ {{
+ nameAddr :=
+ {
+ displayName := omit,
+ addrSpec :=
+ {
+ scheme := c_sipScheme, // contains "sip"
+ 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 Require m_require_secAgree :=
+ {
+ fieldName := REQUIRE_E,
+ optionsTags := {"sec-agree"}
+ };
+
+ template Require mw_require_path :=
+ {
+ fieldName := REQUIRE_E,
+ optionsTags := superset("path")
+ };
+
+ template Route m_route_interface (in ImsInterfaceProfile p_interfaceprofile):=
+ {
+ fieldName := ROUTE_E,
+ routeBody := {{nameAddr := {displayName := omit,
+ addrSpec := {scheme := c_sipScheme, // contains "sip"
+ components := { sip:= {
+ userInfo := omit,
+ hostPort := {host:=p_interfaceprofile.SUTHomeDomain, portField:= omit}}},
+ urlParameters := omit,
+ headers := omit}
+ },
+ rrParam := omit}
+ }};
+
+ template 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 SessionExpires m_se(DeltaSec p_ds):=
+ {
+ fieldName := SESSION_EXPIRES_E,
+ deltaSec:=p_ds,
+ seParam:=omit
+ }
+
+ template SessionExpires mw_se:=
+ {
+ fieldName := SESSION_EXPIRES_E,
+ deltaSec:=?,
+ seParam:=omit
+ }
+
+ template Supported m_supported_timer:=
+ {
+ fieldName := SUPPORTED_E,
+ optionsTags := {"timer"}
+ }
+
+ template Supported m_supported_histinfo:=
+ {
+ fieldName := SUPPORTED_E,
+ optionsTags := {"histinfo"}
+ }
+
+
+ template Supported m_supported_fromChange:=
+ {
+ fieldName := SUPPORTED_E,
+ optionsTags := {"from-change"}
+ }
+
+ template To m_To_targetRefreshRequest(template To p_To) :=
+ {
+ fieldName := TO_E,
+ addressField :=
+ {nameAddr := {
+ displayName := p_To.addressField.nameAddr.displayName,
+ addrSpec := p_To.addressField.nameAddr.addrSpec
+ }},//end addressField
+ toParams := {{id := c_tagId, paramValue := f_getRndTag()}}
+ };
+
+ template ViaBody m_ViaBody_virtualUEinPCSCF(charstring branch_val,in SipUserProfile p_userprofile) :=
+ {
+ sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT),
+ sentBy:={host:=p_userprofile.contactIpaddr, portField:= p_userprofile.contactPort},
+ viaParams:={{id :=c_branchId,paramValue :=branch_val}}
+ }
+
+ template ViaBody m_ViaBody_virtual_XCSCF(charstring branch_val,in SipUserProfile p_userprofile) :=
+ {
+ sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT),
+ sentBy:={host:=p_userprofile.currIpaddr, portField:= p_userprofile.currPort},
+ viaParams:={{id :=c_branchId,paramValue :=branch_val}}
+ }
+
+ template Via m_via_notmatching:=
+ {
+ fieldName := VIA_E,
+ viaBody :=
+ {{
+ sentProtocol := valueof(m_SentProtocol("UDP")),
+ sentBy:={host:="unknown.domain.name", portField:= 10000},
+ viaParams:={{id :=c_branchId,paramValue :="abcd0000"}}
+ } }
+ };
+
+ /*
+ * @desc WWW-Authenticate header field
+ * @param p_challenge value
+ */
+ template WwwAuthenticate m_wwwAuthenticate (Challenge p_challenge):=
+ {
+ fieldName := WWW_AUTHENTICATE_E,
+ challenge := p_challenge
+ }
+
+ /*
+ * @desc WWW-Authenticate header field
+ * @param p_challenge value
+ */
+ template WwwAuthenticate mw_wwwAuthenticate (template SemicolonParam_List p_semicolonParam_List):=
+ {
+ fieldName := WWW_AUTHENTICATE_E,
+ challenge :=
+ {digestCln := p_semicolonParam_List // set of GenericParam
+ }
+ }
+
+ template SemicolonParam_List mw_challenge := superset(mw_ck,mw_ik);
+ // template SemicolonParam_List mw_challenge := {mw_ck,mw_ik};
+ template GenericParam mw_ck := {"ck", *};
+ template GenericParam mw_ik := {"ik", *}
+
+
+ /*
+ * @desc AcceptContact header field
+ * @param p_acValues value
+ */
+ template AcceptContact m_acceptContact (template SemicolonParam_List p_semicolonParam_List):=
+ {
+ fieldName := ACCEPT_CONTACT_E,
+ acValues := {{wildcard:=c_WILDCARD, acRcParams := p_semicolonParam_List} // set of GenericParam
+ }
+ }
+
+ /*
+ * @desc Authenticate header field
+ * @param p_challenge value
+ */
+ template AcceptContact mw_acceptContact (template SemicolonParam_List p_semicolonParam_List):=
+ {
+ fieldName := ACCEPT_CONTACT_E,
+ acValues :=
+ {{wildcard:=c_WILDCARD, acRcParams := p_semicolonParam_List} // set of GenericParam
+ }
+ }
+
+ template SubscriptionState mw_subscriptionState(template charstring p_state) := {
+ fieldName := SUBSCRIPTION_STATE_E,
+ subState := p_state,
+ substateParams := omit
+ }
+
+ //[3455/5.1]
+ template PAssociatedURI m_pAssociatedURI (template NameAddr p_nameAddr) := {
+ fieldName := P_ASSOCIATED_URI_E,
+ nameAddrList := {{nameAddr:=p_nameAddr, genericParams:=omit}}
+ }
+
+ template SecurityServer mw_securityServer (template SecurityMechanism_List p_securityMechanism_List):= {
+ fieldName := SECURITY_SERVER_E,
+ securityMech := p_securityMechanism_List
+ }
+
+ template SecurityClient m_securityClient (template SecurityMechanism_List p_securityMechanism_List):= {
+ fieldName := SECURITY_CLIENT_E,
+ securityMech := p_securityMechanism_List
+ }
+
+ template SecurityVerify m_securityVerify (template SecurityMechanism_List p_securityMechanism_List):= {
+ fieldName := SECURITY_VERIFY_E,
+ securityMech := p_securityMechanism_List
+ }
+
+} // end group HeaderFieldTemplates
+
+group MessageBodyTemplates {
+
+group XMLTemplates {
+
+ template XmlBody m_XmlBody_ConfInfo(template Conference_type p_confInfo) :=
+ {
+ conference := p_confInfo
+ };
+
+ template XmlBody m_XmlBody_CW(template Ims_cw p_cw) :=
+ {
+ cw := p_cw
+ };
+
+ template XmlBody m_XmlBody_CUG(template Cug p_cug) :=
+ {
+ cug := p_cug
+ };
+
+ template XmlBody m_XmlBody_MCID(template Mcid p_mcid) :=
+ {
+ mcid := p_mcid
+ };
+
+ template XmlBody m_XmlBody_PSTNTransit(template PSTN_transit p_pstn) :=
+ {
+ pstnTransit := p_pstn
+ };
+
+ template XmlBody m_XmlBody_simservs(template Simservs p_simservs) :=
+ {
+ simservs := p_simservs
+ };
+
+ template XmlBody m_XmlBody_ACR_ICB(template Incoming_communication_barring p_icb) := {
+ simservs := {
+ attr := {},
+ absServiceGroup_list := {},
+ extensions := {
+ elem_list := valueof(p_icb.attr)
+ }
+ }
+ };
+
+ template XmlBody m_XmlBody_ACR_OCB(template Outgoing_communication_barring p_ocb) := {
+ simservs := {
+ attr := {},
+ absServiceGroup_list := {},
+ extensions := {
+ elem_list := valueof(p_ocb.attr)
+ }
+ }
+ };
+
+ template XmlBody m_XmlBody_CDIVN(template Comm_div_info_type p_cdivn) :=
+ {
+ cdivn := p_cdivn
+ };
+
+ template XmlBody m_XmlBody_Reginfo(template Reginfo p_regInfo) :=
+ {
+ regInfo := p_regInfo
+ };
+
+ template MessageBody m_messageBodyXML(template XmlBody p_xmlBody) :=
+ {
+ xmlBody := p_xmlBody
+ };
+
+ template Reginfo m_reginfo (template XSDAUX.anyURI p_user):= {
+ full,
+ 0,
+ {m_registration(p_user)},
+ {}
+ };
+
+ template Registration m_registration (template XSDAUX.anyURI p_user):= {
+ p_user, // XSDAUX.anyURI aor
+ "a7", // XSDAUX.string id
+ init, //enumerated {active,init,terminated} state,
+ {}, // record of Contact contact_list optional,
+ {} // record of anytype elem_list optional
+ };
+
+ template XmlBody mw_XmlBody_ConfInfo(template Conference_type p_confInfo) :=
+ {
+ conference := p_confInfo
+ };
+
+ template XmlBody mw_XmlBody_CUG(template Cug p_cug) :=
+ {
+ cug := p_cug
+ };
+
+ template XmlBody mw_XmlBody_MCID(template Mcid p_mcid) :=
+ {
+ mcid := p_mcid
+ };
+
+ template XmlBody mw_XmlBody_PSTNTransit(template PSTN_transit p_pstn) :=
+ {
+ pstnTransit := p_pstn
+ };
+
+ template XmlBody mw_XmlBody_CDIVN(template Comm_div_info_type p_cdivn) :=
+ {
+ cdivn := p_cdivn
+ };
+
+ template XmlBody mw_XmlBody_simservs(template Simservs p_simservs) :=
+ {
+ simservs := p_simservs
+ };
+
+ template XmlBody mw_XmlBody_ResourceLists(template Resource_lists p_resourceLists) :=
+ {
+ resourceLists := p_resourceLists
+ };
+
+ template XmlBody mw_XmlBody_Reginfo(template Reginfo p_regInfo) :=
+ {
+ regInfo := p_regInfo
+ };
+
+}// end group XMLTemplates
+
+group ACR_CBTemplates {
+
+ template Incoming_communication_barring m_ICB(template RuleType p_ruleType) :=
+ {
+ active := omit,
+ attr := {},
+ ruleset := {
+ {p_ruleType}
+ }
+ }
+
+ template Outgoing_communication_barring m_OCB(template(present) RuleType p_ruleType) :=
+ {
+ active := omit,
+ attr := {},
+ ruleset := {
+ {p_ruleType}
+ }
+ }
+
+ template RuleType m_ruleType_actionFalse(template ConditionsType p_condition) :=
+ {
+ id := "rule66",
+ conditions := p_condition,
+ actions := {elem_list:={"<false/>"}},
+ transformations := omit
+ }
+
+ template ConditionsType m_conditionsType_identity(template(present) charstring p_id, template charstring p_scheme) := {
+ {
+ {identity_list := {{{{one := {id := p_id, elem := omit}}}}}}
+ }
+ }
+
+} //end group ACR_CBTemplates
+
+group CUGTemplates {
+
+ template Cug m_CUG (
+ template CugRequestType p_crt,
+ template NetworkIdentityType p_nit,
+ template SixteenbitType p_cibc,
+ template TwoBitType p_cci
+ ):= {
+ active := omit,
+ attr := {},
+ cugCallOperation := p_crt,
+ networkIndicator := p_nit,
+ cugInterlockBinaryCode := p_cibc,
+ cugCommunicationIndicator :=p_cci
+ }
+
+ template Cug mw_CUG (
+ template CugRequestType p_crt,
+ template NetworkIdentityType p_nit,
+ template SixteenbitType p_cibc,
+ template TwoBitType p_cci
+ ):= {
+ active := omit,
+ attr := ?,
+ cugCallOperation := p_crt,
+ networkIndicator := p_nit,
+ cugInterlockBinaryCode := p_cibc,
+ cugCommunicationIndicator := p_cci
+ }
+
+ template CugRequestType m_cugReqType(boolean p_outAccessRequest, integer p_cugIndex) :=
+ {
+ outgoingAccessRequest := p_outAccessRequest,
+ cugIndex := p_cugIndex
+ }
+
+ template CugRequestType mw_cugReqType(template boolean p_outAccessRequest, template integer p_cugIndex) :=
+ {
+ outgoingAccessRequest := p_outAccessRequest,
+ cugIndex := p_cugIndex
+ }
+}//end group CUGTemplates
+
+group CWTemplates {
+
+ template Ims_cw m_CW(template TEmptyType p_cwi) := {
+ attr := {},
+ communication_waiting_indication := p_cwi,
+ elem_list := {}
+ }
+
+ template Ims_cw mw_ims_cw(template TEmptyType p_cwi) := {
+ attr := ?,
+ communication_waiting_indication := p_cwi,
+ elem_list := ?
+ }
+
+ template Cug m_CW2 (
+ 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 Cug mw_CW (
+ 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
+ }
+
+}//end group CWTemplates
+
+group MCIDTemplates {
+
+ template Mcid m_mcid_request_mcidIndicatorTrue :=
+ {
+ choice := {
+ request := {mcidRequestIndicator := bit2str('1'B),
+ holdingIndicator := bit2str('0'B)}
+ }
+ }
+
+ template Mcid m_mcid_request_mcidIndicatorTrue_holdIndTrue :=
+ {
+ choice := {
+ request := {mcidRequestIndicator := bit2str('1'B),
+ holdingIndicator := bit2str('1'B)}
+ }
+ }
+
+ template Mcid m_mcid_response_mcidIndicatorTrue :=
+ {
+ choice := {
+ response := {mcidResponseIndicator := bit2str('1'B),
+ holdingProvidedIndicator := bit2str('0'B)}
+ }
+ }
+
+ template Mcid mw_mcid_request_mcidIndicatorTrue :=
+ {
+ choice := {
+ request := {mcidRequestIndicator := bit2str('1'B),
+ holdingIndicator := ?}
+ }
+ }
+
+ template Mcid mw_mcid_response_mcidIndicatorTrue :=
+ {
+ choice := {
+ response := {mcidResponseIndicator := bit2str('1'B),
+ holdingProvidedIndicator := ?}
+ }
+ }
+
+ template Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndFalse :=
+ {
+ choice := {
+ response := {mcidResponseIndicator := bit2str('1'B),
+ holdingProvidedIndicator := bit2str('0'B)}
+ }
+ }
+
+ template Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndTrue :=
+ {
+ choice := {
+ response := {mcidResponseIndicator := bit2str('1'B),
+ holdingProvidedIndicator := bit2str('1'B)}
+ }
+ }
+
+} //end group MCIDTemplates
+
+group PSTNTemplates {
+
+ template PSTN_transit m_PSTN_transit_BC1(template BearerCapabilityType p_bct) :=
+ {
+ bearerInfomationElement_list := {p_bct},
+ highLayerCompatibility_list := {},
+ lowLayerCompatibility := omit,
+ progressIndicator_list := {},
+ display_list := {}
+ }
+
+ template PSTN_transit m_PSTN_transit_BC2(template BearerCapabilityType p_bct,
+ template BearerCapabilityType p_bct2) :=
+ {
+ bearerInfomationElement_list := {p_bct, p_bct2},
+ highLayerCompatibility_list := {},
+ lowLayerCompatibility := omit,
+ progressIndicator_list := {},
+ display_list := {}
+ }
+
+ template PSTN_transit m_PSTN_transit_BC1_HLC1(template BearerCapabilityType p_bct,
+ template HighLayerCompatibilityType p_hlc) :=
+ {
+ bearerInfomationElement_list := {p_bct},
+ highLayerCompatibility_list := {p_hlc},
+ lowLayerCompatibility := omit,
+ progressIndicator_list := {},
+ display_list := {}
+ }
+
+ template PSTN_transit m_PSTN_transit_BC1_LLC(template BearerCapabilityType p_bct,
+ template LowLayerCompatibilityType p_llc) :=
+ {
+ bearerInfomationElement_list := {p_bct},
+ highLayerCompatibility_list := {},
+ lowLayerCompatibility := p_llc,
+ progressIndicator_list := {},
+ display_list := {}
+ }
+
+ template PSTN_transit m_PSTN_transit_BC1_PI1(template BearerCapabilityType p_bct,
+ template ProgressIndicatorType p_pi1) :=
+ {
+ bearerInfomationElement_list := {p_bct},
+ highLayerCompatibility_list := {},
+ lowLayerCompatibility := omit,
+ progressIndicator_list := {p_pi1},
+ display_list := {}
+ }
+
+ template PSTN_transit m_PSTN_transit_BC1_PI2(template BearerCapabilityType p_bct,
+ template ProgressIndicatorType p_pi1,
+ template ProgressIndicatorType p_pi2) :=
+ {
+ bearerInfomationElement_list := {p_bct},
+ highLayerCompatibility_list := {},
+ lowLayerCompatibility := omit,
+ progressIndicator_list := {p_pi1, p_pi2},
+ display_list := {}
+ }
+
+ template PSTN_transit m_PSTN_transit_BC1_PI3(template BearerCapabilityType p_bct,
+ template ProgressIndicatorType p_pi1,
+ template ProgressIndicatorType p_pi2,
+ template ProgressIndicatorType p_pi3) :=
+ {
+ bearerInfomationElement_list := {p_bct},
+ highLayerCompatibility_list := {},
+ lowLayerCompatibility := omit,
+ progressIndicator_list := {p_pi1, p_pi2, p_pi3},
+ display_list := {}
+ }
+
+ template PSTN_transit m_PSTN_transit_BC1_HLC2(template BearerCapabilityType p_bct,
+ template HighLayerCompatibilityType p_hlc1,
+ template HighLayerCompatibilityType p_hlc2) :=
+ {
+ bearerInfomationElement_list := {p_bct},
+ highLayerCompatibility_list := {p_hlc1, p_hlc2},
+ lowLayerCompatibility := omit,
+ progressIndicator_list := {},
+ display_list := {}
+ }
+
+ template PSTN_transit m_PSTN_transit_BC1_HLC1_PI1(template BearerCapabilityType p_bct,
+ template HighLayerCompatibilityType p_hlc1,
+ template ProgressIndicatorType p_pi1) :=
+ {
+ bearerInfomationElement_list := {p_bct},
+ highLayerCompatibility_list := {p_hlc1},
+ lowLayerCompatibility := omit,
+ progressIndicator_list := {p_pi1},
+ display_list := {}
+ }
+
+ template PSTN_transit mw_PSTN_transit_bc(template BearerCapabilityType p_bct,
+ template BearerCapabilityType p_bct2) :=
+ {
+ bearerInfomationElement_list := {p_bct, p_bct2},
+ highLayerCompatibility_list := {*, *},
+ lowLayerCompatibility := *,
+ progressIndicator_list := {*},
+ display_list := {*}
+ }
+
+
+ template BearerCapabilityType m_BearerCapabilityType (Bit5 p_InfoTrfCap):= {
+ bCoctet3 := {codingStandard := bit2str('00'B), //Coding standard = CCITT standardized coding
+ informationTransferCabability := bit2str(p_InfoTrfCap)},//Information transfer capability
+ bCoctet4 := {transferMode := bit2str('00'B), //Coding standard = CCITT standardized coding
+ informationTransferRate := bit2str('10000'B)}, //Information transfer rate = 64 kbit/s
+ bCoctet4_1 := omit,
+ bCoctet5 := omit,
+ bCoctet5a := omit,
+ bCoctet5bV110 := omit,
+ bCoctet5bV120 := omit,
+ bCoctet5c := omit,
+ bCoctet5d := omit,
+ bCoctet6 := omit,
+ bCoctet7 := omit,
+ bCoctet7a := omit,
+ bCoctet7b := omit
+ }
+
+ template ProgressIndicatorType m_ProgressIndicatorType (Bit7 p_progDesc) := {
+ progressOctet3 := {codingStandard := bit2str('00'B),
+ location := bit2str('0000'B)
+ },
+ progressOctet4 := {progressDescription := bit2str(p_progDesc)}
+ }
+
+ template LowLayerCompatibilityType m_LowLayerCompatibilityType (Bit5 p_InfoTrfCap) := {
+ lLOctet3 := {codingStandard := bit2str('00'B), //Coding standard = CCITT standardized coding
+ informationTransferCapability := bit2str(p_InfoTrfCap)},//Information transfer capability
+ lLOctet3a := omit,
+ lLOctet4 := {transferMode := bit2str('00'B), //Coding standard = CCITT standardized coding
+ informationTransferRate := bit2str('10000'B)}, //Information transfer rate = 64 kbit/s
+ lLOctet4_1 := omit,
+ lLOctet5 := omit,
+ lLOctet5a := omit,
+ lLOctet5bV110 := omit,
+ lLOctet5bV120 := omit,
+ lLOctet5c := omit,
+ lLOctet5d := omit,
+ lLOctet6 := omit,
+ lLOctet6aHDLC := omit,
+ lLOctet6aUserSpecific := omit,
+ lLOctet6b := omit,
+ lLOctet7 := {layer3Identification := bit2str('11'B),
+ userInfoLayer3Protocol := bit2str('00010'B)},
+ lLOctet7aUserSpecific := omit,
+ lLOctet7aX25 := omit,
+ lLOctet7bX25 := omit,
+ lLOctet7c := omit,
+ lLOctet7aTR9577 := omit,
+ lLOctet7bTR9577 := omit
+ }
+
+ template HighLayerCompatibilityType m_HighLayerCompatibilityType
+ (Bit7 p_HLOctet4):= {
+ hLOctet3 := {
+ codingStandard :=bit2str('00'B),
+ interpretation :=bit2str('100'B),
+ presentationMethod := bit2str('01'B)
+ },
+ hLOctet4 := {
+ highLayerCharacteristics := bit2str(p_HLOctet4)
+ },
+ hLOctet4aMaintenance := omit,
+ hLOctet4Audio := omit
+ }
+
+ template BearerCapabilityType mw_BearerCapabilityType (template BCOctet3Type p_BCOctet3Type, template BCOctet4Type p_BCOctet4Type):= {
+ bCoctet3 := p_BCOctet3Type,
+ bCoctet4 := p_BCOctet4Type,
+ bCoctet4_1 := * ,
+ bCoctet5 := * ,
+ bCoctet5a := * ,
+ bCoctet5bV110 := * ,
+ bCoctet5bV120 := * ,
+ bCoctet5c := * ,
+ bCoctet5d := * ,
+ bCoctet6 := * ,
+ bCoctet7 := * ,
+ bCoctet7a := * ,
+ bCoctet7b := *
+ }
+
+ template BearerCapabilityType mw_BearerCapabilityType_TrfCap (Bit5 p_InfoTrfCap):= {
+ bCoctet3 := {codingStandard := bit2str('00'B), //Coding standard = CCITT standardized coding
+ informationTransferCabability := bit2str(p_InfoTrfCap)},//Information transfer capability
+ bCoctet4 := {transferMode := bit2str('00'B), //Coding standard = CCITT standardized coding
+ informationTransferRate := bit2str('10000'B)}, //Information transfer rate = 64 kbit/s
+ bCoctet4_1 := * ,
+ bCoctet5 := * ,
+ bCoctet5a := * ,
+ bCoctet5bV110 := * ,
+ bCoctet5bV120 := * ,
+ bCoctet5c := * ,
+ bCoctet5d := * ,
+ bCoctet6 := * ,
+ bCoctet7 := * ,
+ bCoctet7a := * ,
+ bCoctet7b := *
+ }
+
+ template ProgressIndicatorType mw_ProgressIndicatorType (template ProgressOctet3Type p_ProgressOctet3Type, template ProgressOctet4Type p_ProgressOctet4Type) := {
+ progressOctet3 := p_ProgressOctet3Type,
+ progressOctet4 := p_ProgressOctet4Type
+ }
+
+ template LowLayerCompatibilityType mw_LowLayerCompatibilityType
+ (template LLOctet3Type p_LLOctet3, template LLOctet4Type p_LLOctet4, template LLOctet7Type p_LLOctet7) := {
+ lLOctet3 := p_LLOctet3,
+ lLOctet3a := * ,
+ lLOctet4 := p_LLOctet4,
+ lLOctet4_1 := * ,
+ lLOctet5 := * ,
+ lLOctet5a := * ,
+ lLOctet5bV110 := * ,
+ lLOctet5bV120 := * ,
+ lLOctet5c := * ,
+ lLOctet5d := * ,
+ lLOctet6 := * ,
+ lLOctet6aHDLC := * ,
+ lLOctet6aUserSpecific := * ,
+ lLOctet6b := * ,
+ lLOctet7 := p_LLOctet7,
+ lLOctet7aUserSpecific := * ,
+ lLOctet7aX25 := * ,
+ lLOctet7bX25 := * ,
+ lLOctet7c := * ,
+ lLOctet7aTR9577 := * ,
+ lLOctet7bTR9577 := *
+ }
+
+ template HighLayerCompatibilityType mw_HighLayerCompatibilityType
+ (template HLOctet3Type p_HLOctet3, template HLOctet4Type p_HLOctet4):= {
+ hLOctet3 := p_HLOctet3,
+ hLOctet4 := p_HLOctet4,
+ hLOctet4aMaintenance := *,
+ hLOctet4Audio := *
+ }
+
+} //end group PSTNTemplates
+
+group CDIVNTemplates {
+
+ /* general CDIVN subscription */
+ template Comm_div_info_type m_CDIVN_sub := {
+ entity := "comm-div-info",
+ comm_div_subs_info := {
+ attr := {},
+ comm_div_selection_criteria := {
+ attr := {},
+ 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 Resource_lists m_ResourceList_2Users(
+ template EntryType p_user1,
+ template EntryType p_user2
+ ) :=
+ {
+ sequence_list := {
+ {
+ list := {
+ name := omit,
+ attr := {},
+ display_name := omit,
+ sequence_list := {
+ {
+ choice := {
+ entry := p_user1
+ }
+ },
+ {
+ choice := {
+ entry := p_user2
+ }
+ }
+ },
+ elem_list := {}
+ }
+ }
+ }
+ }
+
+ template EntryType m_EntryUser(SipUrl p_user) := {
+
+ uri :=
+ p_user.components.sip.userInfo.userOrTelephoneSubscriber & "@" &
+ p_user.components.sip.hostPort.host,
+ attr := {},
+ display_name := omit,
+ elem_list := {}
+ }
+}// end grouup ResourceListsTemplates
+
+group Ims3gppTemplates {
+
+ template 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 booleanXSD boolXSD_true:={bool:=true}
+ template booleanXSD boolXSD_false:={bool:=false}
+
+ template anyAttributes m_emptyAnyAttributes:={}
+
+ template urn_ietf_params_xml_ns_conference_info.Media_type m_mediatype_status(template Media_status_type p_status):= {
+ id:="1",
+ attr := {},
+ display_text :=omit,
+ type_ :=omit,
+ label_ :=omit,
+ src_id:=omit,
+ status:= p_status,
+ elem_list:={}
+ }
+
+ template Endpoint_type m_endpoint(template charstring p_Uri,template Endpoint_status_type p_epStatus,template Joining_type p_joinMethod, template Disconnection_type p_discMethod, template urn_ietf_params_xml_ns_conference_info.Media_type p_mediastatus):= {
+ entity:=p_Uri,
+ state:=full,
+ attr := {},
+ 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 User_type m_1user (template charstring p_Uri,template Endpoint_type p_endpoint) := {
+ entity:=p_Uri,
+ state:=full,
+ attr := {},
+ display_text:=omit,
+ associated_aors:=omit,
+ roles:=omit,
+ languages :=omit,
+ cascaded_focus :=omit,
+ endpoint_list:={p_endpoint},// optional,
+ elem_list:={}
+ }
+
+ template Users_type m_users_1user_full(template User_type p_user):={
+ state:=full,
+ attr := {},
+ user_list:={p_user},
+ elem_list:={}
+ }
+
+ template Users_type m_users_2user_full(template User_type p_user1,template User_type p_user2):={
+ state:=full,
+ attr := {},
+ user_list:={p_user1,p_user2},
+ elem_list:={}
+ }
+
+ template Conference_state_type m_conference_state(template unsignedInt p_nUsers, boolean p_active, boolean p_locked) := {
+ attr := {},
+ user_count:=p_nUsers,
+ active:=p_active,
+ locked:=p_locked,
+ elem_list:= {}
+ }
+
+ template Conference_type m_ci_cUri_cState_userEntity(template charstring p_cUri, template Conference_state_type p_cState, template Users_type p_users ) := {
+ entity := p_cUri,
+ state := full,
+ version := 1,
+ attr := {},
+ conference_description := omit,
+ host_info := omit,
+ conference_state := p_cState,
+ users := p_users,
+ sidebars_by_ref := omit,
+ sidebars_by_val := omit,
+ elem_list := {}
+ }
+
+ template 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 := *,
+ 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 ACK_Request m_ACK_Request_AS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template Route p_route, template RecordRoute p_recordRoute ) modifies m_ACK_Request_Base :=
+ {
+ msgHeader :=
+ {
+ route := p_route,
+ recordRoute := p_recordRoute
+ }
+ }
+
+ template ACK_Request m_ACK_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template Route p_route) modifies m_ACK_Request_Base :=
+ {
+ msgHeader :=
+ {
+ route := p_route
+ }
+ }
+
+ template ACK_Request m_ACK_Request_sdp_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via,template MessageBody p_mb, template 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_sdpAplication},
+ route := p_route
+ },
+ messageBody := p_mb
+ }
+
+ template ACK_Request m_ACK_Request_Mime_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via,template MessageBody p_mb, template 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 BYE_Request m_BYE_Request_IMS
+ ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Route p_route, template 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
+ }
+ }
+
+ template BYE_Request m_BYE_Request_Reason_IMS
+ ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Route p_route, charstring p_cause)
+ modifies m_BYE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ reason := mw_Reason(p_cause),
+ route := p_route
+ }
+ }
+
+ template BYE_Request m_BYE_Request_UserToUser_IMS
+ ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Route p_route, template charstring p_U2UData)
+ modifies m_BYE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ route := p_route,
+ userToUser := m_UserToUserData(p_U2UData)
+ }
+ }
+
+ template BYE_Request m_BYE_Request_UE
+ ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Route p_route)
+ modifies m_BYE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
+ route := p_route
+ }
+ }
+
+ template CANCEL_Request m_CANCEL_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Route p_route) modifies m_CANCEL_Request_Base :=
+ {
+ msgHeader :=
+ {
+ route := p_route
+ }
+ }
+
+ template CANCEL_Request m_CANCEL_Request_Reason_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Route p_route, integer p_cause) modifies m_CANCEL_Request_Base :=
+ {
+ msgHeader :=
+ {
+ reason := m_Reason(p_cause),
+ route := p_route
+ }
+ }
+
+ template CANCEL_Request m_CANCEL_Request_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Route p_route) modifies m_CANCEL_Request_Base :=
+ {
+ msgHeader :=
+ {
+ route := p_route
+ }
+ }
+
+ /*
+ *
+ * @desc INFO message
+ *
+ */
+ template INFO_Request m_INFO_Request_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template MessageBody p_mb )
+ modifies m_INFO_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}
+ },
+ messageBody := p_mb
+ }
+
+ /*
+ *
+ * @desc INFO message
+ *
+ */
+ template INFO_Request m_INFO_Request_Mime_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template MessageBody p_mb )
+ modifies m_INFO_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart}
+ },
+ messageBody := p_mb
+ }
+
+ template INFO_Request m_INFO_Request_Xml_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template MessageBody p_mb )
+ modifies m_INFO_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_xmlAplication}
+ },
+ messageBody := p_mb
+ }
+
+ template INVITE_Request m_INVITE_Request_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template Supported p_supported, template MessageBody p_mb )
+ modifies m_INVITE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ require := p_require,
+ route := p_route,
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
+ supported := p_supported
+ },
+ messageBody := p_mb
+ }
+
+ template INVITE_Request m_INVITE_Request_noBody_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template Supported p_supported )
+ 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 INVITE_Request m_INVITE_Request_Allow_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template Supported p_supported, template MessageBody p_mb, template LibSip_SIPTypesAndValues.Allow p_allow)
+ modifies m_INVITE_Request_UE
+ :=
+ {
+ msgHeader :=
+ {
+ allow := p_allow
+ }
+ }
+
+ template INVITE_Request m_INVITE_Request_noBody_Allow_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template Supported p_supported, template LibSip_SIPTypesAndValues.Allow p_allow)
+ modifies m_INVITE_Request_noBody_UE
+ :=
+ {
+ msgHeader :=
+ {
+ allow := p_allow
+ }
+ }
+
+
+ /*
+ *
+ * @desc INVITE message exchanged at Mw
+ *
+ */
+ template INVITE_Request m_INVITE_Request_IMS (
+ SipUrl p_requestUri,
+ CallId p_callId,
+ CSeq p_cSeq,
+ From p_from,
+ To p_to,
+ Via p_via,
+ Contact p_contact,
+ template Require p_require,
+ template Route p_route,
+ template RecordRoute p_recordRoute,
+ template Supported p_supported,
+ template PChargingVector p_pChargingVector,
+ template MessageBody p_mb
+ ) modifies m_INVITE_Request_Base := {
+ msgHeader := {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ require := p_require,
+ pChargingVector := p_pChargingVector,
+ recordRoute := p_recordRoute,
+ route := p_route,
+ supported := p_supported
+ },
+ messageBody := p_mb
+ }
+
+ /*
+ *
+ * @desc INVITE message exchanged at Mw
+ *
+ */
+ template INVITE_Request m_INVITE_Request_HistoryInfo_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb,
+ template HistoryInfo p_historyInfo)
+ modifies m_INVITE_Request_IMS
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ historyInfo := p_historyInfo
+ }
+ }
+
+ /*
+ *
+ * @desc INVITE message exchanged at Mw
+ *
+ */
+ template INVITE_Request m_INVITE_Request_Mime_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb )
+ modifies m_INVITE_Request_IMS
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart}
+ }
+ }
+
+ /*
+ *
+ * @desc INVITE message exchanged at Mw
+ *
+ */
+ template INVITE_Request m_INVITE_Request_IMS_noBody
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector)
+ 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
+ *
+ */
+ template INVITE_Request m_INVITE_Request_Mime_PAsserted_Privacy_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb,
+ template PAssertedID p_pAssertedID, template Privacy p_privacy )
+ modifies m_INVITE_Request_IMS
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart},
+ pAssertedID := p_pAssertedID,
+ privacy := p_privacy
+ }
+ }
+
+ /*
+ *
+ * @desc INVITE message exchanged at Mw
+ *
+ */
+ template INVITE_Request m_INVITE_Request_PAsserted_AcceptContact_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template RecordRoute p_recordRoute, template AcceptContact p_acceptContact, template PAssertedID p_pAssertedID, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb )
+ modifies m_INVITE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ acceptContact := p_acceptContact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ require := p_require,
+ pAssertedID := p_pAssertedID,
+ pChargingVector := p_pChargingVector,
+ recordRoute := p_recordRoute,
+ route := p_route,
+ supported := p_supported
+ },
+ messageBody := p_mb
+ }
+
+ /*
+ *
+ * @desc INVITE message exchanged at Mw
+ *
+ */
+ template INVITE_Request m_INVITE_Request_PAsserted_Privacy_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template RecordRoute p_recordRoute, template PAssertedID p_pAssertedID, template Privacy p_privacy, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb )
+ modifies m_INVITE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ require := p_require,
+ pAssertedID := p_pAssertedID,
+ pChargingVector := p_pChargingVector,
+ privacy := p_privacy,
+ recordRoute := p_recordRoute,
+ route := p_route,
+ supported := p_supported
+ },
+ messageBody := p_mb
+ }
+
+ /*
+ *
+ * @desc INVITE message exchanged at Mw
+ *
+ */
+ template INVITE_Request m_INVITE_Request_PAssertedService_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template PAssertedService p_pAssertedService)
+ modifies m_INVITE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ require := p_require,
+ pChargingVector := p_pChargingVector,
+ route := p_route,
+ supported := p_supported,
+ pAssertedService := p_pAssertedService
+ },
+ messageBody := p_mb
+ }
+
+ /*
+ *
+ * @desc INVITE message exchanged at Mw
+ *
+ */
+ template INVITE_Request m_INVITE_Request_PEarlyMedia_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb )
+ modifies m_INVITE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ require := p_require,
+ pChargingVector := p_pChargingVector,
+ pEarlyMedia := m_pEarlyMedia_sup,
+ recordRoute := p_recordRoute,
+ route := p_route,
+ supported := p_supported
+ },
+ messageBody := p_mb
+ }
+
+ template INVITE_Request m_INVITE_Request_PPreferred_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template Supported p_supported, template MessageBody p_mb,template PPreferredID p_pPreferredID )
+ modifies m_INVITE_Request_UE
+ :=
+ {
+ msgHeader :=
+ {
+ pPreferredID := p_pPreferredID
+ }
+ }
+
+ template INVITE_Request m_INVITE_Request_PPreferred_Privacy_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template Supported p_supported, template MessageBody p_mb,template PPreferredID p_pPreferredID, template Privacy p_privacy)
+ modifies m_INVITE_Request_UE
+ :=
+ {
+ msgHeader :=
+ {
+ pPreferredID := p_pPreferredID,
+ privacy := p_privacy
+ }
+ }
+
+ template INVITE_Request m_INVITE_Request_SessionExpires_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template Supported p_supported, template MessageBody p_mb, template SessionExpires p_se)
+ modifies m_INVITE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ require := p_require,
+ route := p_route,
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
+ supported := p_supported,
+ sessionExpires := p_se
+ },
+ messageBody := p_mb
+ }
+
+ template INVITE_Request m_INVITE_Request_minSE_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template Supported p_supported, template MessageBody p_mb, template MinSE p_minSE)
+ modifies m_INVITE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ require := p_require,
+ route := p_route,
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
+ supported := p_supported,
+ minSE := p_minSE
+ },
+ messageBody := p_mb
+ }
+
+ /*
+ *
+ * @desc INVITE message exchanged at Mw
+ *
+ */
+ template INVITE_Request m_INVITE_Request_minSE_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template MinSE p_minSE)
+ modifies m_INVITE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ require := p_require,
+ pChargingVector := p_pChargingVector,
+ route := p_route,
+ supported := p_supported,
+ minSE := p_minSE
+ },
+ messageBody := p_mb
+ }
+
+ template INVITE_Request m_INVITE_Request_User2UserData_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template Require p_require,
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template charstring p_U2UData)
+ modifies m_INVITE_Request_IMS
+ :=
+ {
+ msgHeader :=
+ {
+ userToUser := m_UserToUserData(valueof(p_U2UData))
+ }
+ }
+
+ template MESSAGE_Request m_MESSAGE_Request_MBody_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Require p_require,
+ template Route p_route, template Supported p_supported, template MessageBody p_messageBody)
+ modifies m_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(m_MBody_longPlainText))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText},
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ require := p_require,
+ route := p_route,
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
+ supported := p_supported
+ },
+ messageBody := p_messageBody
+ }
+
+ template MESSAGE_Request m_MESSAGE_Request_NoBody_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Require p_require,
+ template Route p_route, template Supported p_supported)
+ modifies m_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ require := p_require,
+ route := p_route,
+ supported := p_supported
+ },
+ messageBody := omit
+ }
+
+ template MESSAGE_Request m_MESSAGE_Request_PCharging_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Require p_require,
+ template Route p_route, template Supported p_supported)
+ modifies m_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
+ pChargingVector := m_pChargingVector_origIoi_fixedValue(PX_IMS_SUT_UE1_HOME_DOMAIN),
+ require := p_require,
+ route := p_route,
+ supported := p_supported
+ },
+ messageBody := omit
+ }
+
+ template MESSAGE_Request m_MESSAGE_Request_PCharging_IMS
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Require p_require,
+ template Route p_route, template Supported p_supported,
+ template PChargingVector p_pChargingVector)
+ modifies m_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
+ pChargingVector := p_pChargingVector,
+ require := p_require,
+ route := p_route,
+ supported := p_supported
+ },
+ messageBody := omit
+ }
+
+ template MESSAGE_Request m_MESSAGE_Request_PMediaAuth_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Require p_require,
+ template Route p_route, template Supported p_supported)
+ modifies m_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ pMediaAuthorization := m_pMediaAuthorization_fixedValue,
+ require := p_require,
+ route := p_route,
+ supported := p_supported
+ },
+ messageBody := omit
+ }
+
+ template MESSAGE_Request m_MESSAGE_Request_PPreferred_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Require p_require,
+ template Route p_route, template Supported p_supported, template PPreferredID p_pPreferredID)
+ modifies m_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ pPreferredID := p_pPreferredID,
+ require := p_require,
+ route := p_route,
+ supported := p_supported
+ },
+ messageBody := omit
+ }
+
+ template MESSAGE_Request m_MESSAGE_Request_1300Bytes_UE
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template Require p_require,
+ template Route p_route, template Supported p_supported)
+ modifies m_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(m_MBody_longPlainText))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText},
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ require := p_require,
+ route := p_route,
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
+ supported := p_supported
+ },
+ messageBody := m_MBody_longPlainText
+ }
+
+ template NOTIFY_Request m_NOTIFY_Request_Xml_IMS_Conference
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, template MessageBody p_mb )
+ modifies m_NOTIFY_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_xmlAplication},
+ event := {fieldName:=EVENT_E, eventType:="conference",eventParams:=omit},
+ subscriptionState:={fieldName:=SUBSCRIPTION_STATE_E, subState:="active",substateParams:=omit},
+ expires:={fieldName:=EXPIRES_E, deltaSec:="3600"}
+
+ },
+ messageBody := p_mb
+ }
+
+
+ template NOTIFY_Request m_NOTIFY_Request_Xml_IMS_RegInfo
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template MessageBody p_mb )
+ modifies m_NOTIFY_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_xmlreginfoAplication},
+ event := m_Event_reg,
+ subscriptionState:=m_SubscriptionState_active,
+ expires:={fieldName:=EXPIRES_E, deltaSec:="3600"}
+
+ },
+ messageBody := p_mb
+ }
+
+ template PRACK_Request m_PRACK_Request_sdp (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, RAck p_RAck, template MessageBody p_mb)
+ modifies m_PRACK_Request_Base :=
+ {
+ requestLine :=
+ {
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ callId := p_callId,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "PRACK"},
+ fromField := p_from,
+ rAck := p_RAck,
+ toField := p_to,
+ via := p_via
+ },
+ messageBody := p_mb
+ }
+
+ template PUBLISH_Request m_PUBLISH_Request_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template Event p_event, template RAck p_RAck, template MessageBody p_mb,template Route p_route)
+ modifies m_PUBLISH_Request_Base :=
+ {
+ requestLine :=
+ {
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ callId := p_callId,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText/*c_sdpAplication*/},
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "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 PUBLISH_Request m_PUBLISH_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template Event p_event, template RAck p_RAck, template MessageBody p_mb,
+ template Route p_route,template RecordRoute p_recordRoute,template PChargingVector p_pChargingVector)
+ modifies m_PUBLISH_Request_Base :=
+ {
+ requestLine :=
+ {
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ callId := p_callId,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText/*c_sdpAplication*/},
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "PUBLISH"},
+ event := p_event,
+ fromField := p_from,
+ route := p_route,
+ recordRoute:= p_recordRoute,
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ pChargingVector := p_pChargingVector,
+ toField := p_to,
+ via := p_via
+ },
+ messageBody := p_mb
+ }
+
+ /*
+ *
+ * @desc REFER message exchanged at Mw
+ *
+ */
+ template REFER_Request m_REFER_Request_IMS(
+ SipUrl p_requestUri,
+ CallId p_callId,
+ CSeq p_cSeq,
+ Contact p_contact,
+ From p_from,
+ template To p_to,
+ Via p_via,
+ template ReferTo p_referTo,
+ template ReferredBy p_referredBy,
+ template Require p_require,
+ template Route p_route,
+ template RecordRoute p_recordRoute,
+ template Supported p_supported,
+ template PChargingVector p_pChargingVector,
+ template MessageBody p_mb
+ ) modifies m_REFER_Request_Base := {
+ msgHeader := {
+ contentLength := {
+ fieldName := CONTENT_LENGTH_E,
+ len:= f_MessageBodyLength(valueof(p_mb))
+ },
+ contentType := {
+ fieldName := CONTENT_TYPE_E,
+ mediaType := c_sdpAplication
+ },
+ 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 REGISTER_Request m_REGISTER_Request_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template Authorization p_authorization,
+ template ProxyRequire p_proxyRequire, template Require p_require,
+ template SecurityClient p_securityClient, template SecurityVerify p_securityVerify, template Supported p_supported)
+ modifies m_REGISTER_Request_Base :=
+ {
+ requestLine :=
+ {
+ method := REGISTER_E,
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ authorization := p_authorization,
+ callId := p_callId,
+ contact := p_contact,
+ cSeq := p_cSeq,
+ fromField := p_from,
+ proxyRequire := p_proxyRequire,
+ require := p_require,
+ securityClient := p_securityClient,
+ securityVerify := p_securityVerify,
+ supported := p_supported,
+ toField := p_to,
+ via := p_via
+
+ }
+ }
+
+
+ template REGISTER_Request m_REGISTER_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template Authorization p_authorization)
+ modifies m_REGISTER_Request_Base :=
+ {
+ requestLine :=
+ {
+ method := REGISTER_E,
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ authorization := p_authorization,
+ callId := p_callId,
+ contact := p_contact,
+ cSeq := p_cSeq,
+ fromField := p_from,
+ 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 REGISTER_Request m_REGISTER_Request_IMS_3party (
+ SipUrl p_requestUri,
+ CallId p_callId,
+ CSeq p_cSeq,
+ From p_from,
+ To p_to,
+ Via p_via,
+ Contact p_contact,
+ template Authorization p_authorization,
+ template Path p_path
+ ) modifies m_REGISTER_Request_IMS :=
+ {
+ msgHeader :=
+ {
+ path := p_path
+
+ }
+ }
+
+ template REGISTER_Request m_REGISTER_Request_expires_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template Authorization p_authorization, template DeltaSec p_deltaSec)
+ modifies m_REGISTER_Request_IMS :=
+ {
+ msgHeader :=
+ {
+ expires := {fieldName := EXPIRES_E, deltaSec := p_deltaSec}
+ }
+ }
+
+ template SUBSCRIBE_Request m_SUBSCRIBE_Request_UE (SipUrl p_requestUri, CallId p_callId,
+ CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template 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 := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
+ event := m_Event_reg,
+ expires := m_Expires_600000,
+ route := p_route
+ }
+ }
+
+ template SUBSCRIBE_Request m_SUBSCRIBE_Request_mb_UE (SipUrl p_requestUri, CallId p_callId,
+ CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template MessageBody p_mb) modifies m_SUBSCRIBE_Request_Base :=
+ {
+ requestLine :=
+ {
+ method := SUBSCRIBE_E,
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
+ event := m_Event_reg,
+ expires := m_Expires_600000
+ },
+ messageBody := p_mb
+ }
+
+ template SUBSCRIBE_Request m_SUBSCRIBE_Request_mb_event_UE (SipUrl p_requestUri, CallId p_callId,
+ CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template MessageBody p_mb, Event p_event, charstring p_contentType) modifies m_SUBSCRIBE_Request_mb_UE :=
+ {
+ requestLine :=
+ {
+ method := SUBSCRIBE_E,
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := p_contentType},
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
+ contact := p_contact,
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
+ event := p_event,
+ expires := m_Expires_600000
+ },
+ messageBody := p_mb
+ }
+
+ template SUBSCRIBE_Request m_SUBSCRIBE_Request_IMS (SipUrl p_requestUri, CallId p_callId,
+ CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact) modifies m_SUBSCRIBE_Request_Base :=
+ {
+ requestLine :=
+ {
+ method := SUBSCRIBE_E,
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ contact := p_contact,
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
+ event := m_Event_reg,
+ expires := m_Expires_600000
+ }
+ }
+
+ template SUBSCRIBE_Request m_SUBSCRIBE_Request_Event (SipUrl p_requestUri, CallId p_callId,
+ CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Event p_event) modifies m_SUBSCRIBE_Request_Base :=
+ {
+ requestLine :=
+ {
+ method := SUBSCRIBE_E,
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ contact := p_contact,
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
+ event := p_event,
+ expires := m_Expires_600000
+ }
+ }
+ template UPDATE_Request m_UPDATE_Request_fromChange (template CallId p_callId, template From p_from) modifies mw_UPDATE_Request_Base :=
+ {
+ msgHeader :=
+ {
+ fromField := p_from
+ }
+ }
+
+}//end group request_send
+
+group request_receive {
+
+ template ACK_Request mw_ACK_Request_noPaccessNetworkInfo (template CallId p_callId)
+ modifies mw_ACK_Request_Base
+ :=
+ {
+ msgHeader := { pAccessNetworkInfo := omit}
+ }
+
+ template ACK_Request mw_ACK_Request_PchargingVector (template CallId p_callId, template PChargingVector p_pChargingVector)
+ modifies mw_ACK_Request_Base
+ :=
+ {
+ msgHeader := { pChargingVector := p_pChargingVector}
+ }
+
+ template BYE_Request mw_BYE_Request_noPChargingFunction_UE(template CallId p_callId) modifies mw_BYE_Request_Base
+ :=
+ {
+ msgHeader := {pChargingFunctionAddresses := omit,
+ pChargingVector := omit}
+ }
+
+ template BYE_Request mw_BYE_Request_via_PChargingVector_UE(template CallId p_callId, template PChargingVector p_pChargingVector, template Via p_via) modifies mw_BYE_Request_Base
+ :=
+ {
+ msgHeader := {pChargingVector := p_pChargingVector,
+ via := p_via}
+ }
+
+ template BYE_Request mw_BYE_Request_via_UE(template CallId p_callId, template Via p_via) modifies mw_BYE_Request_Base
+ :=
+ {
+ msgHeader := { via := p_via }
+ }
+
+ template BYE_Request mw_BYE_Request_route(template CallId p_callId, template Route p_route) modifies mw_BYE_Request_Base
+ :=
+ {
+ msgHeader := {route := p_route}
+ }
+
+ template INVITE_Request mw_INVITE_Request_noPChargingFunction modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {pChargingFunctionAddresses := omit}
+ }
+ template INVITE_Request mw_INVITE_Request_PChargingFunction modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {pChargingFunctionAddresses := ?}
+ }
+
+ template INVITE_Request mw_INVITE_Request_NoPCharging modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {pChargingFunctionAddresses := omit,
+ pChargingVector := omit}
+ }
+
+ template INVITE_Request mw_INVITE_Request_NoPChargingPreferred modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {pChargingFunctionAddresses := omit,
+ pChargingVector := omit,
+ pPreferredID := omit}
+ }
+
+ template INVITE_Request mw_INVITE_Request_PAsserted_noPPreferred (template PAssertedID p_pAssertedID)modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {pAssertedID := p_pAssertedID,
+ pPreferredID := omit
+ }
+ }
+
+ template INVITE_Request mw_INVITE_Request_PAsserted_AcceptContact (template PAssertedID p_pAssertedID, template AcceptContact p_acceptContact) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {pAssertedID := p_pAssertedID,
+ acceptContact := p_acceptContact
+ }
+ }
+
+ template INVITE_Request mw_INVITE_Request_RecordRoute_Via (template RecordRoute p_recordRoute, template Via p_via) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {recordRoute := p_recordRoute,
+ via := p_via}
+ }
+
+ template INVITE_Request mw_INVITE_Request_route (template Route p_route) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {route := p_route}
+ }
+
+ template INVITE_Request mw_INVITE_Request_require (
+ template Require p_require
+ ) modifies mw_INVITE_Request_Base := {
+ msgHeader := { require := p_require }
+ }
+
+ template INVITE_Request mw_INVITE_Request_supported (
+ template Supported p_supported
+ ) modifies mw_INVITE_Request_Base := {
+ msgHeader := { supported := p_supported }
+ }
+
+ template INVITE_Request mw_INVITE_Request_SessionExpires (template SessionExpires p_sessionExpires) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {sessionExpires := p_sessionExpires}
+ }
+
+ template INVITE_Request mw_INVITE_Request_User2UserData (template charstring p_U2UData) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {userToUser := mw_UserToUserData(p_U2UData)}
+ }
+
+ template INVITE_Request mw_INVITE_Request_IMS (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {
+ pChargingVector := p_pChargingVector,
+ recordRoute := p_recordRoute,
+ route := p_route,
+ via := p_via
+ }
+ }
+ template INVITE_Request mw_INVITE_Request_IMS_requestLine(template PChargingVector p_pChargingVector,
+ template RecordRoute p_recordRoute,
+ template Route p_route, template Via p_via, template SipUrl p_requestUri)
+ modifies mw_INVITE_Request_Base := {
+ requestLine :=
+ {
+ requestUri := p_requestUri
+ },
+ msgHeader := {
+ pChargingVector := p_pChargingVector,
+ recordRoute := p_recordRoute,
+ route := p_route,
+ via := p_via
+ }
+ }
+
+ template 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 SipUrl p_requestUri, template PAssertedID p_pAssertedID)
+ modifies mw_INVITE_Request_Base := {
+ msgHeader := {pAssertedID := p_pAssertedID, pPreferredID := omit}
+ }
+
+ template INVITE_Request mw_INVITE_Request_IMS_mb (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {
+ pChargingVector := p_pChargingVector,
+ recordRoute := p_recordRoute,
+ route := p_route,
+ via := p_via
+ },
+ messageBody := ?
+ }
+
+ template INVITE_Request mw_INVITE_Request_IMS_cug (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via, template Cug p_cug ) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {
+ pChargingVector := p_pChargingVector,
+ recordRoute := p_recordRoute,
+ route := p_route,
+ via := p_via
+ },
+ messageBody := (mw_MBody_XML(mw_XmlBody_CUG(p_cug)),
+ mw_MBody_MIMESdpXml(?, mw_XmlBody_CUG(p_cug)))
+ }
+
+ template INVITE_Request mw_INVITE_Request_IMS_noCug (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via ) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {
+ pChargingVector := p_pChargingVector,
+ recordRoute := p_recordRoute,
+ route := p_route,
+ via := p_via
+ },
+ messageBody := (mw_MBody_XML(complement(mw_XmlBody_CUG(?))),
+ mw_MBody_MIMESdpXml(?, complement(mw_XmlBody_CUG(?)) ))
+ }
+
+ template INVITE_Request mw_INVITE_Request_IMS_pstn (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via, template PSTN_transit p_pstn ) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {
+ pChargingVector := p_pChargingVector,
+ recordRoute := p_recordRoute,
+ route := p_route,
+ via := p_via
+ },
+ messageBody := (mw_MBody_XML(mw_XmlBody_PSTNTransit(p_pstn)),
+ mw_MBody_MIMESdpXml(?, mw_XmlBody_PSTNTransit(p_pstn)))//m_MBody_PSTN(p_pstn)//PSTN_transit
+ }
+
+ /*
+ *
+ * @desc Await INVITE using topology hiding
+ */
+ template INVITE_Request mw_INVITE_Request_TH modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := { pChargingFunctionAddresses := omit,
+ pChargingVector := omit }
+ }
+
+ template INVITE_Request mw_INVITE_Request_TH_R10 modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := { pChargingFunctionAddresses := omit }
+ }
+
+ /*
+ *
+ * @desc Await INVITE without PAsserted and Privacy
+ */
+ template INVITE_Request mw_INVITE_Request_noPasserted_noPrivacy (template From p_from)
+ modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := { fromField := p_from,
+ pAssertedID := omit,
+ pPreferredID := omit}
+ }
+
+
+ /*
+ *
+ * @desc Await INVITE with PAsserted and Privacy
+ */
+ template INVITE_Request mw_INVITE_Request_PassertedPrivacy (template From p_from, template PAssertedID p_pAssertedID, template Privacy p_privacy)
+ modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {
+ fromField := p_from,
+ pAssertedID := p_pAssertedID,
+ privacy := p_privacy}
+ }
+
+ /*
+ *
+ * @desc Await INVITE with PAsserted and Privacy
+ */
+ template INVITE_Request mw_INVITE_Request_Passerted_ifPrivacy (template From p_from, template PAssertedID p_pAssertedID, template Privacy p_privacy)
+ modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {
+ fromField := p_from,
+ pAssertedID := p_pAssertedID,
+ privacy := p_privacy ifpresent}
+ }
+
+ /*
+ *
+ * @desc Await INVITE with PAsserted and Privacy
+ */
+ template INVITE_Request mw_INVITE_Request_HistoryInfo (template HistoryInfo p_historyInfo)
+ modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {
+ historyInfo := p_historyInfo}
+ }
+
+ template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunction_UE
+ modifies mw_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader := { pChargingFunctionAddresses := omit,
+ pChargingVector := omit}
+ }
+
+ template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunctionPrefId_UE
+ modifies mw_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader := { pChargingFunctionAddresses := omit,
+ pChargingVector := omit,
+ pPreferredID := omit}
+ }
+
+ template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunction_IMS
+ modifies mw_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader := { pChargingFunctionAddresses := omit,
+ pChargingVector := omit}
+ }
+
+ template MESSAGE_Request mw_MESSAGE_Request_PAsserted_noPPreferred (template CallId p_callId, template PAssertedID p_pAssertedID)modifies mw_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader := {pAssertedID := p_pAssertedID,
+ pPreferredID := omit
+ }
+ }
+
+ template MESSAGE_Request mw_MESSAGE_Request_route (template CallId p_callId, template Route p_route )modifies mw_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader := {route := p_route
+ }
+ }
+
+ template MESSAGE_Request mw_MESSAGE_Request_via (template CallId p_callId, template Via p_via )modifies mw_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader := {via := p_via
+ }
+ }
+
+ template NOTIFY_Request mw_NOTIFY_Request(
+ template CallId p_callId,
+ template charstring p_state,
+ template charstring p_contentType,
+ template Event p_event,
+ template MessageBody p_mb
+ ) modifies mw_NOTIFY_Request_Base := {
+ msgHeader :=
+ {
+ subscriptionState := mw_subscriptionState(p_state),
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := p_contentType},
+ event := p_event
+ },
+ messageBody := p_mb
+ }
+ template 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 MESSAGE_Request mw_MESSAGE_Request_PchargingVector (template charstring p_id, template charstring p_paramValue)
+ modifies mw_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader := { pChargingVector := mw_pChargingVector(p_id,p_paramValue)}
+ }
+
+ template MESSAGE_Request mw_MESSAGE_Request_noPaccessNetworkInfo
+ modifies mw_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader := { pAccessNetworkInfo := omit}
+ }
+
+ template MESSAGE_Request mw_MESSAGE_Request_noPMediaAuthorization
+ modifies mw_MESSAGE_Request_Base
+ :=
+ {
+ msgHeader := { pMediaAuthorization := omit}
+ }
+
+ template PUBLISH_Request mw_PUBLISH_Request_PchargingVector(template CallId p_callId, template PChargingVector p_pChargingVector) modifies mw_PUBLISH_Request_Base :=
+ {
+ msgHeader := { pChargingVector := p_pChargingVector}
+ }
+
+ template REGISTER_Request mw_REGISTER_Request_IMS (template Path p_Path, template PChargingVector p_pChargingVector, template PVisitedNetworkID p_pVisitedNetworkID)
+ modifies mw_REGISTER_Request_Base
+ :=
+ {
+ msgHeader := { authorization := ?,
+ path := p_Path,
+ pChargingVector := p_pChargingVector, //mw_pChargingVector(p_id,p_paramValue)
+ pVisitedNetworkID := p_pVisitedNetworkID,
+ require := mw_require_path,
+ securityClient := omit,
+ securityVerify := omit
+ }
+ }
+
+
+
+ template REGISTER_Request mw_REGISTER_authorizedRequest_IMS (template Authorization p_authorization)
+ modifies mw_REGISTER_Request_Base
+ :=
+ {
+ msgHeader := { authorization := p_authorization
+ }
+ }
+
+ template REGISTER_Request mw_REGISTER_authorizedRequest_wo_securityclient_IMS (template Authorization p_authorization)
+ modifies mw_REGISTER_Request_Base
+ :=
+ {
+ msgHeader := { authorization := p_authorization,
+ securityClient := omit
+ }
+ }
+ template REGISTER_Request mw_REGISTER_auth_via_nosecclient_IMS (template Authorization p_authorization, Via p_via )
+ modifies mw_REGISTER_Request_Base := {
+ msgHeader := {
+ authorization := p_authorization,
+ via := p_via,
+ securityClient := omit
+ }
+ }
+ template REGISTER_Request mw_REGISTER_authorizedRequest_wo_securityheaders_IMS
+ modifies mw_REGISTER_Request_Base
+ :=
+ {
+ msgHeader := { securityVerify := omit,
+ securityClient := omit
+ }
+ }
+
+ template REGISTER_Request mw_REGISTER_unauthorizedRequest_IMS
+ modifies mw_REGISTER_Request_Base
+ :=
+ {
+ msgHeader := { authorization := *
+ }
+ }
+
+ template SUBSCRIBE_Request mw_SUBSCRIBE_Request_IMS (
+ template From p_from,
+ template 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 UPDATE_Request mw_UPDATE_Request_fromChange (template CallId p_callId, template From p_from) modifies mw_UPDATE_Request_Base :=
+ {
+ msgHeader :=
+ {
+ fromField := p_from
+ }
+ }
+
+}//end group request_receive
+group response_send
+{
+ template Response m_Response_2xxonBYE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit
+ }
+ }
+
+ template Response m_Response_onCANCEL (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute)
+ modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ //contact := p_contact,
+ maxForwards := omit//,
+ //recordRoute := p_recordRoute
+ }
+ }
+
+ template Response m_Response_18XonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact //mandatory field due to 24 229 rel 7.9
+ //maxForwards := omit,
+ //rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ }
+ }
+
+ template Response m_Response_18XonINVITE_AlertInfo (
+ StatusLine p_statusLine,
+ CallId p_callId,
+ CSeq p_cSeq,
+ From p_from,
+ To p_to,
+ Via p_via,
+ AlertInfo p_alertInfo
+ ) modifies m_Response_Base:= {
+ msgHeader :=
+ {
+ alertInfo := p_alertInfo
+ }
+ }
+
+ template Response m_Response_18XonINVITE_sdp_require (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact,template MessageBody p_mb,template Require p_require ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ require := p_require,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_18XonINVITE_AS (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ recordRoute := p_recordRoute
+ }
+ }
+
+ template Response m_Response_18XonINVITE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ }
+ }
+
+
+ template Response m_Response_18XonINVITE_HistoryInfo_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template HistoryInfo p_historyInfo) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ historyInfo := p_historyInfo,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ }
+ }
+
+ template Response m_Response_18XonINVITE_PchargingVector (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template PChargingVector p_pChargingVector ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
+ pChargingVector := p_pChargingVector
+
+ }
+ }
+
+ template Response m_Response_18XonINVITE_pEearlyMedia (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template PEarlyMedia p_pEarlyMedia ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ pEarlyMedia := p_pEarlyMedia
+ }
+ }
+
+
+ template Response m_Response_18XonINVITE_pPreferred_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template PPreferredID p_pPreferredID ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit,
+ pPreferredID := p_pPreferredID,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ }
+ }
+
+
+ template Response m_Response_18XonINVITE_pAsserted_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit,
+ pAssertedID := p_pAssertedID,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ }
+ }
+
+ template Response m_Response_18XonINVITE_pAsserted_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID, template Privacy p_privacy) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit,
+ pAssertedID := p_pAssertedID,
+ privacy := p_privacy,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ }
+ }
+
+ template Response m_Response_18XonINVITE_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template Privacy p_privacy) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit,
+ privacy := p_privacy,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ }
+ }
+
+
+ template Response m_Response_18XonINVITE_supported_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template Supported p_supported, template Privacy p_privacy) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit,
+ supported := p_supported,
+ privacy := p_privacy,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ }
+ }
+
+ template Response m_Response_18XonINVITE_recordRoute_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999},//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ recordRoute := p_recordRoute//for INVITE response
+ }
+ }
+
+ template Response m_Response_18XonINVITE_Require (
+ StatusLine p_statusLine,
+ CallId p_callId,
+ CSeq p_cSeq,
+ From p_from,
+ To p_to,
+ Via p_via,
+ Contact p_contact,
+ Require p_require
+ ) modifies m_Response_Base:= {
+ msgHeader :=
+ {
+ require := p_require
+ }
+ }
+
+ template Response m_Response_18XonINVITE_Require_ifpresent (
+ StatusLine p_statusLine,
+ CallId p_callId,
+ CSeq p_cSeq,
+ From p_from,
+ To p_to,
+ Via p_via,
+ Contact p_contact,
+ Require p_require
+ ) modifies m_Response_Base:= {
+ msgHeader :=
+ {
+ require := p_require
+ }
+ }
+
+ template Response m_Response_18XonINVITE_UserToUser (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template charstring p_U2UData) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ userToUser := m_UserToUserData(valueof(p_U2UData))
+ }
+ }
+
+ template Response m_Response_18XonINVITE_Xml (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact,template MessageBody p_mb ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_xmlAplication},
+ maxForwards := omit,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_18XonINVITE_sdp_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact,template MessageBody p_mb ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_18XonINVITE_require_sdp_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, Require p_require, template MessageBody p_mb, template LibSip_SIPTypesAndValues.Allow p_allow ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ require := p_require,
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999},//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
+ allow := p_allow
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2xxonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb)
+ modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ recordRoute := p_recordRoute//for INVITE response
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2xxonINVITE_HistoryInfo (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template HistoryInfo p_historyInfo, template MessageBody p_mb)
+ modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ historyInfo := p_historyInfo,
+ maxForwards := omit,
+ recordRoute := p_recordRoute//for INVITE response
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2xxonINVITE_Mime (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb)
+ modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart},
+ maxForwards := omit,
+ recordRoute := p_recordRoute//for INVITE response
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2xxonINVITE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb)
+ modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ recordRoute := p_recordRoute//for INVITE response
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2xxonINVITE_PchargingVector (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template Route p_route, template RecordRoute p_recordroute, template MessageBody p_mb, template Contact p_contact, template PChargingVector p_pChargingVector ) modifies m_Response_mbody :=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
+ pChargingVector := p_pChargingVector
+
+ }
+ }
+
+ template Response m_Response_2XXonINVITE_pPreferred_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template PPreferredID p_pPreferredID, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ pPreferredID := p_pPreferredID,
+ recordRoute := p_recordRoute//for INVITE response
+ },
+ messageBody := p_mb
+ }
+
+
+ template Response m_Response_2XXonINVITE_pAsserted_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ pAssertedID := p_pAssertedID,
+ recordRoute := p_recordRoute//for INVITE response
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2XXonINVITE_pAsserted_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID, template Privacy p_privacy, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ pAssertedID := p_pAssertedID,
+ privacy := p_privacy,
+ recordRoute := p_recordRoute//for INVITE response
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2XXonINVITE_supported_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template Supported p_supported, template Privacy p_privacy, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ supported := p_supported,
+ privacy := p_privacy,
+ recordRoute := p_recordRoute//for INVITE response
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2XXonINVITE_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template Privacy p_privacy, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ privacy := p_privacy,
+ recordRoute := p_recordRoute//for INVITE response
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2xxonINVITE_UserToUser (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb, template charstring p_U2UData)
+ modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ recordRoute := p_recordRoute,//for INVITE response
+ userToUser := m_UserToUserData(valueof(p_U2UData))
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_2xxonREGISTER_IMS (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, SipUrl p_serviceroute_sip_url, SipUrl p_passociated_uri)
+ modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ serviceRoute := {fieldName:=SERVICE_ROUTE_E,
+ routeBody:={{ nameAddr:= {displayName:=omit,addrSpec:=p_serviceroute_sip_url},rrParam:=omit}}},
+ pAssociatedURI := m_pAssociatedURI({displayName:=omit,addrSpec:=p_passociated_uri}) // PAssociatedURI RFC3455
+
+ }
+ }
+
+
+ template Response m_Response_2xxonSUBSCRIBE_IMS (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact)
+ modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact
+ }
+ }
+
+
+ template Response m_Response_2xxonSUBSCRIBE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact)
+ modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact
+ }
+ }
+
+ template Response m_Response_onMESSAGE_IMS(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact
+ }
+ }
+
+ template Response m_Response_2xxonMESSAGE_PAccessNetwInfo_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a
+ }
+ }
+
+ template Response m_Response_2xxonMESSAGE_PCharging_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template PChargingVector p_pChargingVector) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
+ pChargingVector := p_pChargingVector
+ }
+ }
+
+
+ template Response m_Response_2xxonMESSAGE_PCharging_IMS(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template PChargingVector p_pChargingVector) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
+ pChargingVector := p_pChargingVector
+ }
+ }
+
+ template Response m_Response_2xxonMESSAGE_PMediaAuth_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ pMediaAuthorization := m_pMediaAuthorization_fixedValue
+ }
+ }
+
+ template Response m_Response_2xxonMESSAGE_pPreferredID_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template PPreferredID p_pPreferredID) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ pPreferredID := p_pPreferredID
+ }
+ }
+
+ template Response m_Response_2xxonUPDATE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb)
+ modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ maxForwards := omit,
+ recordRoute := p_recordRoute
+ },
+ messageBody := p_mb
+ }
+
+
+ template Response m_Response_3XXonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit
+ }
+ }
+
+
+ template Response m_Response_4XXonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit
+ }
+ }
+
+ template Response m_Response_4XXonINVITE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template Contact p_contact ) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit
+ }
+ }
+
+ template Response m_Response_onINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit
+ }
+ }
+
+ template Response m_Response_onINVITE_Reason (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, charstring p_cause) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ maxForwards := omit,
+ reason := mw_Reason(p_cause)
+ }
+ }
+
+ template Response m_Response_WWWauthenticate_IMS(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template WwwAuthenticate p_wwwAuthenticate) modifies m_Response_Base:=
+ {
+ msgHeader :=
+ {
+ wwwAuthenticate := p_wwwAuthenticate
+ }
+ }
+
+}//end group response_send
+
+group response_receive
+{
+
+ template Response mw_Response_200onINVITE_noPChargingVector_UE(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pChargingVector := omit
+ }
+ }
+
+ template Response mw_Response_200onINVITE_SDP_UE(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ messageBody := {
+ sdpMessageBody := ?
+ }
+ }
+
+ template Response mw_Response_2xxonMESSAGE_noPCharging_UE(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pChargingFunctionAddresses := omit,
+ pChargingVector := omit
+ }
+ }
+
+ template Response mw_Response_2xxonMESSAGE_noPCharging_IMS(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pChargingFunctionAddresses := omit,
+ pChargingVector := omit
+ }
+ }
+
+
+ template Response mw_Response_2xxonMESSAGE_noPAccessNetworkInfo_IMS(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pAccessNetworkInfo := omit
+ }
+ }
+
+ template Response mw_Response_2xxonMESSAGE_noPMediaAuthorization_IMS(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pMediaAuthorization := omit
+ }
+ }
+
+ template Response mw_Response_401onREGISTER_securityServer_UE(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ securityServer := ?,
+ wwwAuthenticate := ?
+ }
+ }
+
+ template Response mw_Response_SecServer_WWWAuth_UE (template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template SecurityServer p_securityServer, template WwwAuthenticate p_wwwAuthenticate) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ securityServer := p_securityServer,
+ wwwAuthenticate := p_wwwAuthenticate
+ }
+ }
+
+ template Response mw_Response_401onREGISTER_WWWauthenticate_IMS(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template WwwAuthenticate p_wwwAuthenticate) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ wwwAuthenticate := p_wwwAuthenticate
+ }
+ }
+
+ template Response mw_Response_200onREGISTER_IMS(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template SipUrl p_ue_uri, template Contact p_contact, template SipUrl p_sut_scscf_uri) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pAssociatedURI := {fieldName := P_ASSOCIATED_URI_E, nameAddrList:={*,{nameAddr:={displayName:=*,addrSpec:=p_ue_uri},genericParams:=*},*}},
+ path := ?,
+ serviceRoute := {fieldName := SERVICE_ROUTE_E, routeBody := {{nameAddr:={displayName:=*,addrSpec:=p_sut_scscf_uri},rrParam:=*}}},
+ pChargingFunctionAddresses := ?,
+ pChargingVector := ?,
+ contact := p_contact
+ }
+ }
+
+ template Response mw_Response_PpreferredID_PassertedID(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template PPreferredID p_pPreferredID, template PAssertedID p_pAssertedID) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pAssertedID := p_pAssertedID,
+ pPreferredID := p_pPreferredID
+ }
+ }
+
+ template Response mw_Response_PAsserted_Privacy_History (template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template PAssertedID p_pAssertedID, template Privacy p_privacy, template HistoryInfo p_historyInfo) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pAssertedID := p_pAssertedID,
+ privacy := p_privacy,
+ historyInfo := p_historyInfo
+ }
+ }
+
+ template Response mw_Response_PAsserted_ContentType (template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template PAssertedID p_pAssertedID, template ContentType p_contentType) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pAssertedID := p_pAssertedID,
+ contentType := p_contentType
+ }
+ }
+
+ template Response mw_Response_PchargingVector(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template PChargingVector p_chargingVector) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pChargingVector := p_chargingVector // mw_pChargingVector(p_id,p_paramValue)
+ }
+ }
+
+
+ template Response mw_Response_PchargingVecFctadrId(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template PChargingVector p_chargingVector,
+ template PChargingFunctionAddresses p_chargingFunctionAddresses, template PPreferredID p_preferredID) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pChargingVector := p_chargingVector, // mw_pChargingVector(p_id,p_paramValue)
+ pChargingFunctionAddresses := p_chargingFunctionAddresses,
+ pPreferredID := p_preferredID
+ }
+ }
+
+ template Response mw_Response_PchargingFunctionAddr(template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template PChargingFunctionAddresses p_chargingFunctionAddresses) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pChargingFunctionAddresses := p_chargingFunctionAddresses
+ }
+ }
+
+} // end response_receive
+
+}//end modified_templates
+
+}//end Message_templates
+
+} // end module LibIms_Templates
\ No newline at end of file
/tags/v2.0.1/ttcn/LibIms_Templates.ttcn
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/v2.0.1/ttcn/LibIms_Steps.ttcn
===================================================================
--- tags/v2.0.1/ttcn/LibIms_Steps.ttcn (nonexistent)
+++ tags/v2.0.1/ttcn/LibIms_Steps.ttcn (revision 209)
@@ -0,0 +1,1885 @@
+/*
+ * @author STF 346, STF366, STF368, STF369, STF450
+ * @version $Id$
+ * @desc This module provides the types used by the test component
+ * for SIP-IMS tests.
+ * This module is part of LibImsV2.
+ */
+
+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 {
+
+ /**
+ *
+ * @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 (ispresent(p_message.msgHeader.via)) {
+
+ v_intVia := sizeof(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;
+ }
+ }
+
+ /**
+ ** @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
+ {
+ 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;
+
+ for (var integer i := 0; i < v_intVia; i := 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 (ispresent(p_message.msgHeader.route)) {
+
+ v_intRoute := sizeof(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 (ispresent(p_message.msgHeader.recordRoute)) {
+
+ v_intRecordRoute := sizeof(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 := p_message.msgHeader.recordRoute;
+ }
+ }
+
+ /**
+ *
+ * @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;
+
+ v_intRecordRoute := sizeof(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)}
+ }
+
+ }//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 := valueof(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;
+ }
+ f_removeOwnViaParameter(v_response);
+ }// end function f_setHeadersForwardResponse
+
+ /*
+ *
+ * @desc sets Invite header fields (IMS addresses)
+ * extension of general settings from LibSip basic function
+ * @param p_cSeq_s current cSeq
+ * @param p_to_user user_profile id of the user to be invited
+ * @verdict
+ */
+ function f_setHeadersINVITE(inout CSeq p_cSeq_s, in integer p_to_user) runs on ImsComponent
+ {
+ vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier
+
+ vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier
+
+ vc_requestUri := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header
+
+ if (vc_boo_route)
+ { vc_route := valueof(m_route_interface(vc_interfaceprofile))};
+ if (vc_boo_recordRoute)
+ { vc_recordRoute := valueof(m_recordRoute_currIpAddr(vc_userprofile))};
+
+ LibSip_Steps.f_setHeadersINVITE(p_cSeq_s);
+
+ }// end f_setHeadersINVITE
+
+ /*
+ *
+ * @desc sets 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 := valueof(m_route_interface(vc_interfaceprofile))};
+ if (vc_boo_recordRoute)
+ { vc_recordRoute := valueof(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
+
+ vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier
+
+ vc_requestUri := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header
+
+ LibSip_Steps.f_setHeadersMESSAGE(p_cSeq_s);
+
+ }// end f_setHeadersMESSAGE
+
+ /*
+ *
+ * @desc sets Notify header fields (IMS addresses)
+ * extension of general settings from LibSip basic function
+ * @param p_cSeq_s current cSeq
+ * @param p_to_user user_profile id of the user to be invited
+ * @verdict
+ */
+ function f_setHeadersNOTIFY(inout CSeq p_cSeq_s, in integer p_to_user) runs on ImsComponent
+ {
+ 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
+
+ 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 := valueof(m_Contact(m_SipUrl_currIpaddr_CSCF(vc_userprofile)));
+
+ }// end f_setHeadersNOTIFY
+
+ /*
+ *
+ * @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_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier
+
+ vc_requestUri := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header
+
+ if (vc_boo_route)
+ { vc_route := valueof(m_route_interface(vc_interfaceprofile))};
+ if (vc_boo_recordRoute)
+ { vc_recordRoute := valueof(m_recordRoute_currIpAddr(vc_userprofile))};
+
+ //contact header initialization for sending of PUBLISH from CSCF component
+ vc_contact := valueof(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 (ispresent(v_request.msgHeader.recordRoute))
+ {
+ vc_recordRoute := v_request.msgHeader.recordRoute;
+ v_nbroute := sizeof(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;
+ }
+ 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;
+
+ p_cSeq_s.fieldName := CSEQ_E;
+ p_cSeq_s.seqNumber := p_cSeq_s.seqNumber + 1;
+ p_cSeq_s.method := p_method ;
+ vc_cSeq := p_cSeq_s;
+
+ vc_contact := valueof(m_Contact(m_SipUrl_contactIpaddr(vc_userprofile)));
+
+ vc_branch := c_branchCookie & f_getRndTag();
+ vc_branch_ICSCF := c_branchCookie & f_getRndTag();
+
+ vc_via:={
+ fieldName := VIA_E,
+ viaBody := {valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile)),
+ valueof(m_ViaBody_virtualUEinPCSCF(vc_branch_ICSCF, vc_userprofile))
+ }
+ };
+ }// end function f_setHeadersGeneral_ICSCF
+
+ /**
+ *
+ * @desc sets header field for the next outgoing REGISTER message
+ * from the visited P-CSCF to the home I-CSCF
+ * @param p_cSeq_s CSeq parameter to be applied
+ */
+ function f_setHeaders_REGISTER_PCSCF(inout CSeq p_cSeq_s) runs on SipComponent
+ {
+ var SemicolonParam_List v_params;
+
+ f_setHeadersGeneral(p_cSeq_s, "REGISTER"); // cseq, contact, branch, via
+
+ vc_requestUri:=
+ {
+ scheme := c_sipScheme,
+ 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_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier
+
+ vc_requestUri := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header
+
+ if (vc_boo_route)
+ { vc_route := valueof(m_route_interface(vc_interfaceprofile))};
+ if (vc_boo_recordRoute)
+ { vc_recordRoute := valueof(m_recordRoute_currIpAddr(vc_userprofile))};
+
+ LibSip_Steps.f_setHeadersREFER(p_cSeq_s);
+
+ }// end f_setHeadersREFER
+
+ /*
+ * @desc sets REFER header fields (IMS addresses)
+ * extension of general settings from LibSip basic function
+ * @param p_cSeq_s current cSeq
+ * @param p_uri SipUrl for request URI and To header
+ */
+ function f_setHeadersREFER_conf(inout CSeq p_cSeq_s, in SipUrl p_uri) runs on ImsComponent
+ {
+ vc_to := {
+ fieldName := TO_E,
+ addressField := {
+ nameAddr := {
+ displayName := omit, // optional charstring
+ addrSpec := p_uri // SipUrl
+ }
+ },//end addressField
+ toParams := omit
+ };
+
+ vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier
+
+ vc_requestUri := p_uri; // Request URI of Invite is identical with To header
+
+ if (vc_boo_route) {
+ vc_route := valueof(m_route_interface(vc_interfaceprofile))
+ };
+ if (vc_boo_recordRoute) {
+ vc_recordRoute := valueof(m_recordRoute_currIpAddr(vc_userprofile))
+ };
+
+ LibSip_Steps.f_setHeadersREFER(p_cSeq_s);
+ }// end f_setHeadersREFER_conf
+
+ } // end group fieldOperations
+
+ group awaitingMessage {
+ }
+ group sendMessage {
+ /**
+ *
+ * @desc send PRACK message
+ * @param p_request template of the message to be sent
+ */
+ function f_SendPRACK_sdp(template MessageBody p_mb) runs on SipComponent
+ {
+ f_setHeadersGeneral(vc_cSeq, "PRACK"); // cseq, contact, branch, via
+ vc_rAck := valueof(m_RAck(vc_response.msgHeader.rSeq.responseNum, vc_cSeq.seqNumber, vc_cSeq.method));
+
+ SIPP.send(m_PRACK_Request_sdp(
+ vc_requestUri,
+ vc_callId,
+ vc_cSeq,
+ vc_from,
+ vc_to,
+ vc_via,
+ vc_rAck,
+ p_mb
+ )) 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;
+ }
+
+// //temporary not used and it can be deleted during validation
+// case (c_userProfile_UE1atSUTvisiting) { //variant c_userProfile_UE1atSUTvisiting
+// vc_userprofile.currPort := PX_IMS_TS_UE2_PORT;
+// vc_userprofile.currIpaddr := PX_IMS_TS_UE2_IPADDR;
+// vc_userprofile.contactPort := PX_IMS_TS_UE2_PORT;
+// vc_userprofile.contactIpaddr := PX_IMS_TS_UE2_IPADDR;
+// vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE2_BEARER_IPADDR;
+// vc_userprofile.homeDomain := PX_IMS_SUT_UE2_HOME_DOMAIN;
+// vc_userprofile.publUsername := PX_IMS_SUT_UE2_PUBLIC_USER;
+// vc_userprofile.qop := PX_IMS_SUT_UE2_QOP;
+// vc_userprofile.privUsername := PX_IMS_SUT_UE2_PRIVAT_USERNAME;
+// vc_userprofile.passwd := PX_IMS_SUT_UE2_PRIVAT_PASSWD;
+// vc_userprofile.registrarDomain := PX_IMS_TS_UE2_REGISTRAR;
+// }
+
+ case (c_userProfile_IBCFwithHomeUE) { //variant c_userProfile_IBCFwithHomeUE
+ vc_userprofile.currPort := PX_IMS_TS_IBCF_PORT; // via (Ic interface of TS)
+ vc_userprofile.currIpaddr := PX_IMS_TS_IBCF_IPADDR; // via
+ vc_userprofile.contactPort := PX_IMS_TS_IBCF_PORT; // contact (simulated UE)
+ vc_userprofile.contactIpaddr := PX_IMS_TS_IBCF_IPADDR; // contact
+ vc_userprofile.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
+ 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
+ }
+
+ // 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
+ }
+
+ 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 p_from := c_empty_From;
+ p_from := { fieldName := FROM_E,
+ addressField :=
+ {nameAddr := {
+ displayName := omit, // optional charstring
+ addrSpec := f_initSipUrl(p_user) // SipUrl
+ }},//end addressField
+ fromParams := {{id := c_tagId, paramValue := p_tag_str}}
+ };
+ return(p_from)
+ }
+
+ function f_initSipUrl(in integer p_user) runs on ImsComponent return SipUrl
+ {
+ var SipUrl 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}
+ }
+ 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}
+ }
+ 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)}
+ }
+
+
+ /*
+ *
+ * @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
+ */
+ function f_get_userDomainPort (in SipUserProfile p_userProfile) runs on ImsComponent return /*template*/ 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 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);
+
+ // 401 response
+ f_sendResponse(m_Response_WWWauthenticate_IMS(c_statusLine401,
+ vc_callId, vc_cSeq,vc_caller_From, vc_caller_To, vc_via,
+ m_wwwAuthenticate(f_calculatecChallenge_forWWWAuthorization
+ (PX_IMS_SUT_UE1_QOP,vc_authorization.body[0].digestResponse)))
+ );
+
+ //Awaiting 2nd REGISTER with authorization header
+ f_awaitingREGISTER(mw_REGISTER_authorizedRequest_IMS(m_Authorization_digest(mw_digestResponse((c_Integrity_protected_yes,c_Integrity_protected_ip_assoc_pending)))));
+
+ // 200OK to complete the request
+ vc_contact := 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,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
+ vc_contact := 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 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
+
+
+ } // 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(valueof(m_media_dynPT(PX_SIP_SDP_dyn, PX_SIP_SDP_encoding)), vc_userprofile));
+
+ vc_contact := valueof(m_Contact(m_SipUrl_contactIpaddr(vc_userprofile)));
+
+ }
+
+ /*
+ *
+ * @desc Sets variables and default initialization for user profile and handle registration and authentication with MD5
+ * @param p_userprofile user profile of call
+ * @param p_cSeq_s cseq parameter
+ * @param p_register register template
+ */
+ function f_IMS_preamble_withRegistration (in integer p_userprofile, 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
+ 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;
+
+ 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
+ * @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
+ f_IMS_preamble_woRegistration(p_userprofile, p_cSeq_s);
+ //Preamble
+ f_Registration(p_cSeq_s, p_register, PX_SIP_REGISTER_AUTHENTICATION_ENABLED, true);
+
+ // 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);
+
+ //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
+ */
+ 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_boo_route := true;
+ vc_boo_recordRoute := true;
+ vc_cSeq := p_cSeq_s;
+
+ //Defaults
+ vc_def_catchSyncStop := activate(a_Sip_catchSyncStop());
+ vc_default := activate (a_altstep_AS());
+
+ //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(valueof(m_media_dynPT(PX_SIP_SDP_dyn, PX_SIP_SDP_encoding)), vc_userprofile));
+ vc_contact := valueof(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();
+ }
+
+ /*
+ *
+ * @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);}
+ 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,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))));
+// 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()
+ };
+
+ function f_IMS_postamble_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,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)}};
+ 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,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)}};
+ 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_UE1_withoutRegistration () runs on ImsComponent
+ {f_terminate_component()};
+
+ function f_SIP_postamble_UE2_withoutRegistration () runs on ImsComponent
+ {f_terminate_component()};
+
+ /**
+ *
+ * @desc sends BYE and awaits response
+ * @param p_CallId parameter for outgoing BYE
+ * @param p_cSeq parameter for outgoing BYE
+ * @param p_from parameter for outgoing BYE
+ * @param p_to parameter for outgoing BYE
+ * @param p_reqHostPort parameter for outgoing BYE
+ */
+ function f_terminateCall_IMS(SipUrl p_requestUri, CallId p_CallId, inout CSeq p_cSeq, From p_from,
+ template To p_to) runs on ImsComponent
+ {
+ 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, valueof(p_to), vc_via, vc_route));
+
+ tc_resp.start(PX_SIP_TRESP);
+ alt
+ {
+ [] SIPP.receive (mw_Response_Base(mw_statusLine1xx, p_CallId, p_cSeq))
+ {
+ repeat;
+ }
+ [] SIPP.receive (mw_Response_Base(mw_statusLineFinal, p_CallId, p_cSeq))
+ {
+ tc_resp.stop;
+ }
+ // timeout should be handled in default_alt_step
+ }
+ } // end function f_terminateCall
+
+
+ /**
+ *
+ * @desc sends BYE and awaits response
+ * @param p_CallId parameter for outgoing BYE
+ * @param p_cSeq parameter for outgoing BYE
+ * @param p_from parameter for outgoing BYE
+ * @param p_to parameter for outgoing BYE
+ * @param p_reqHostPort parameter for outgoing BYE
+ */
+ function f_terminateCall_UE(SipUrl p_requestUri, CallId p_CallId, inout CSeq p_cSeq, From p_from,
+ template To p_to, 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 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, 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
+ };
+ 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
+ {
+ var Response v_response;
+ var Request v_request;
+
+ [] 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");
+ f_IMS_awaitDeRegistration();
+ f_componentStop();
+ }
+ // allow repeated INVITEs
+ [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
+ }
+ [] 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
+ {
+ f_setHeadersOnReceiptOfResponse(v_response.msgHeader.cSeq, v_response);
+ repeat;
+ }
+
+ // according to SIP chap.8.1.3.2
+ [] 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
+ {
+ f_setHeadersOnReceiptOfResponse(v_response.msgHeader.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);
+ f_send200OK();
+ repeat
+ }
+
+ // awaiting of Notify
+ [] SIPP.receive(mw_NOTIFY_Request_Base(vc_callId))->value v_request sender vc_sent_label
+ {
+ f_setHeadersOnReceiptOfRequest(v_request);
+ f_send200OK();
+ repeat
+ }
+ // awaiting of subscribe from UE
+ [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));
+ 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_awaitingOkResponse(vc_cSeq);
+ repeat
+ }
+ // unexpected BYE is acknowledged to avoid retransmissions
+ [] SIPP.receive(mw_BYE_Request_Base(?))-> value v_request sender vc_sent_label
+ {
+ setverdict(fail);
+ f_setHeadersOnReceiptOfRequest(v_request);
+ f_send200OK();
+ action("Please de-register");
+ f_IMS_awaitDeRegistration();
+ f_componentStop();
+ }
+
+ // unexpected CANCEL is acknowledged to avoid retransmissions
+ [] SIPP.receive(mw_CANCEL_Request_Base(?))-> value v_request sender vc_sent_label
+ {
+ setverdict(fail);
+ f_setHeadersOnReceiptOfRequest(v_request);
+ //Answer to the CANCEL
+ f_send200OK();
+ action("Please de-register");
+ f_IMS_awaitDeRegistration();
+ f_componentStop();
+ }
+ // catch 4xx response
+ [] SIPP.receive(mw_Response_Base(mw_statusLine4xx, vc_callId, ?))-> value v_response sender vc_sent_label
+ {
+ setverdict(fail);
+ f_setHeadersOnReceiptOfResponse(v_response.msgHeader.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");
+ f_IMS_awaitDeRegistration();
+ f_componentStop();
+ }
+ // catch 5xx response
+ [] SIPP.receive(mw_Response_Base(mw_statusLine5xx, vc_callId, ?))-> value v_response sender vc_sent_label
+ {
+ setverdict(fail);
+ f_setHeadersOnReceiptOfResponse(v_response.msgHeader.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");
+ 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();
+ }
+ // 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();
+ }
+ }
+
+ /**
+ *
+ * @desc main default altstep to handle unexpected messages and timeout
+ * @verdict fail for all unexpected branches
+ */
+ altstep a_altstep_AS() runs on SipComponent
+ {
+ var Response v_response;
+ var Request v_request;
+
+ [] any timer.timeout
+ {
+ setverdict(fail);
+ all timer.stop;
+ }
+
+ // allow repeated INVITEs
+ [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
+ {
+ 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));
+ repeat;
+ }
+
+ // 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
+ {
+ setverdict(fail);
+ f_setHeadersOnReceiptOfRequest(v_request);
+ f_send200OK();
+ }
+
+ // unexpected BYE is acknowledged to avoid retransmissions
+ [] SIPP.receive(mw_BYE_Request_Base(?))-> value v_request sender vc_sent_label
+ {
+ setverdict(fail);
+ f_setHeadersOnReceiptOfRequest(v_request);
+ f_send200OK();
+ }
+
+ [] 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;
+ }
+ }
+ }
+} // module LibIms_Steps
\ No newline at end of file
/tags/v2.0.1/ttcn/LibIms_Steps.ttcn
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/v2.0.1/ttcn/LibIms_PIXITS.ttcn
===================================================================
--- tags/v2.0.1/ttcn/LibIms_PIXITS.ttcn (nonexistent)
+++ tags/v2.0.1/ttcn/LibIms_PIXITS.ttcn (revision 209)
@@ -0,0 +1,563 @@
+/*
+ * @author STF 346, STF366, STF368, STF369, STF450
+ * @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_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";
+
+ /** @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";
+
+ /** @desc charstring for identity of the tester UE1 local user
+ */
+ modulepar charstring PX_IMS_SUT_UE1_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-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 charstring for UE1 display name
+ */
+ modulepar charstring PX_IMS_SUT_UE1_DISPLAY := "UE1@SUT";
+} // end group SUT_UE1
+
+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 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 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 UE2 local user
+ */
+ modulepar charstring PX_IMS_SUT_UE2_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-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 := "UE2@SUT";
+} // end group SUT_UE2
+
+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 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/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";
+
+ /** @desc charstring for identity of the tester UE3 local user
+ */
+ modulepar charstring PX_IMS_SUT_UE3_PUBLIC_USER := "2910";
+
+ /** @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 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
+
+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 - PCSCF4 port number to exchange SIP messages - connection point for UE4
+ */
+ modulepar integer PX_IMS_SUT_PCSCF4_PORT := 5060;
+
+ /** @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 UE4 local user
+ */
+ modulepar charstring PX_IMS_SUT_UE4_PUBLIC_USER := "2910";
+
+ /** @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_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
+
+group SUT_unknown{
+ /** @desc charstring for identity of unknown UE public user
+ */
+ modulepar charstring PX_IMS_SUT_unknownUE_PUBLIC_USER := "0007";
+} // end group SUT_unknown
+
+group EMERGENCY{
+ /** @desc charstring for identity of emergency service local domain
+ */
+ modulepar charstring PX_IMS_SUT_EMERGENCY_HOME_DOMAIN := "home.net";
+
+ /** @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
+
+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;
+
+ /** @desc charstring for SUT/IBCF1 domain
+ */
+ modulepar charstring PX_IMS_SUT_IBCF1_HOME_DOMAIN := "ibcf1.sut.net";
+
+ /** @desc charstring for SUT/IBCF2 IP address to exchange SIP messages
+ */
+ modulepar charstring PX_IMS_SUT_IBCF2_IPADDR := "172.31.10.6";
+
+ /** @desc integer for SUT/IBCF2 port number to exchange SIP messages
+ */
+ modulepar integer PX_IMS_SUT_IBCF2_PORT := 5060;
+
+ /** @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 integer for SUT/P-CSCF port number to exchange SIP messages
+ */
+ modulepar integer PX_IMS_SUT_PCSCF_PORT := 5060;
+
+ /** @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 integer for SUT/S-CSCF port number to exchange SIP messages
+ */
+ modulepar integer PX_IMS_SUT_SCSCF_PORT := 5060;
+
+ /** @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
+
+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 integer for SUT/I-CSCF port number to exchange SIP messages
+ */
+ modulepar integer PX_IMS_SUT_ICSCF_PORT := 5060;
+
+ /** @desc charstring for SUT/I-CSCFdomain
+ */
+ modulepar charstring PX_IMS_SUT_ICSCF_HOME_DOMAIN := "icscf.sut.net";
+
+ /** @desc charstring for SUT/I-CSCF P_VisitedNetwork ID header (see RFC3455)
+ */
+ modulepar charstring PX_IMS_SUT_ICSCF_VisitedNetworkID := "Visited ETSI 1";
+} // 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";
+
+ /** @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";
+
+}//end group SUT_UE1
+
+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 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";
+
+} // 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;
+
+ /** @desc charstring invalid GRUU for Request-URI to be rejected by IUT S-CSCF
+ */
+ modulepar charstring PX_IMS_SUT_INVALID_GRUU;
+
+ /** @desc charstring Service value in P-Asserted-Service header to be rejected by IUT S-CSCF, as service is not subscribed-to
+ */
+ modulepar charstring PX_IMS_SUT_UNSUBSCRIBED_SERVICE;
+
+ /** @desc charstring Service value in SDP message body to be rejected by IUT S-CSCF, as service is not subscribed-to;
+ ** intentionally kept as charstring to allow maximum flexibility to construct unsubscribed service **
+ */
+ modulepar charstring PX_IMS_SUT_UNSUBSCRIBED_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
/tags/v2.0.1/ttcn/LibIms_PIXITS.ttcn
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/v2.0.1/ttcn/LibIms_Interface.ttcn
===================================================================
--- tags/v2.0.1/ttcn/LibIms_Interface.ttcn (nonexistent)
+++ tags/v2.0.1/ttcn/LibIms_Interface.ttcn (revision 209)
@@ -0,0 +1,39 @@
+/*
+ * @author STF 346, STF366, STF368, STF369, STF450
+ * @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;
+
+ group AdressTypes
+ {
+
+ type component ImsComponent extends SipComponent
+ {
+ // general variables
+ var ImsInterfaceProfile vc_interfaceprofile
+ } // end ImsComponent
+
+ }// end group AdressTypes
+
+
+
+
+} // end module LibIms_TestSystem
/tags/v2.0.1/ttcn/LibIms_Interface.ttcn
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/v2.0.1/ttcn/LibIms_SIPTypesAndValues.ttcn
===================================================================
--- tags/v2.0.1/ttcn/LibIms_SIPTypesAndValues.ttcn (nonexistent)
+++ tags/v2.0.1/ttcn/LibIms_SIPTypesAndValues.ttcn (revision 209)
@@ -0,0 +1,96 @@
+/*
+ * @author STF 346, STF366, STF368, STF369, STF450
+ * @version $Id$
+ * @desc This module provides the types and constants used by the test component
+ * for SIP tests.
+ * This module is part of LibImsV2.
+ */
+
+module LibIms_SIPTypesAndValues
+{
+ // SipAts
+ import from LibSip_SDPTypes all;
+ import from LibSip_XMLTypes all;
+
+group Constants
+{
+
+const integer c_ISUP_HOP_COUNT:=31; //TODO replace this value with appropriate PIXIT parameter
+
+// 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
+
+ // number of service profile
+ const integer c_serviceProfile_EMERGENCY := 911;
+ const integer c_serviceProfile_EMERGENCY_INVALID := 912;
+
+ // number of SIPURL identifiers
+ const integer c_interfaceSIPURL_IMS_SUT_PCSCF1_domain := 1101; // c_interfaceProfile_IMS_SUT_PCSCF1
+ const integer c_interfaceSIPURL_IMS_SUT_PCSCF1_ip := 1102; // c_interfaceProfile_IMS_SUT_PCSCF1
+
+} //end group UserProfileConstants
+
+
+} //end group Constants
+
+
+ group otherTypes{
+ type record ImsInterfaceProfile
+ { /** @desc integer for Port number to exchange SIP messages
+ */
+ integer SUTPort,
+
+ /** @desc charstring for IP address to exchange SIP messages
+ */
+ charstring SUTIpaddr,
+
+ /** @desc charstring for home domain to exchange SIP messages
+ */
+ charstring SUTHomeDomain
+ }
+ }
+
+} // end module LibIms_SIPTypesAndValues
/tags/v2.0.1/ttcn/LibIms_SIPTypesAndValues.ttcn
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/ttcn/LibIms_PIXITS.ttcn
===================================================================
--- trunk/ttcn/LibIms_PIXITS.ttcn (revision 208)
+++ trunk/ttcn/LibIms_PIXITS.ttcn (nonexistent)
@@ -1,563 +0,0 @@
-/*
- * @author STF 346, STF366, STF368, STF369, STF450
- * @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_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";
-
- /** @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";
-
- /** @desc charstring for identity of the tester UE1 local user
- */
- modulepar charstring PX_IMS_SUT_UE1_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-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 charstring for UE1 display name
- */
- modulepar charstring PX_IMS_SUT_UE1_DISPLAY := "UE1@SUT";
-} // end group SUT_UE1
-
-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 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 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 UE2 local user
- */
- modulepar charstring PX_IMS_SUT_UE2_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-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 := "UE2@SUT";
-} // end group SUT_UE2
-
-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 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/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";
-
- /** @desc charstring for identity of the tester UE3 local user
- */
- modulepar charstring PX_IMS_SUT_UE3_PUBLIC_USER := "2910";
-
- /** @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 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
-
-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 - PCSCF4 port number to exchange SIP messages - connection point for UE4
- */
- modulepar integer PX_IMS_SUT_PCSCF4_PORT := 5060;
-
- /** @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 UE4 local user
- */
- modulepar charstring PX_IMS_SUT_UE4_PUBLIC_USER := "2910";
-
- /** @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_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
-
-group SUT_unknown{
- /** @desc charstring for identity of unknown UE public user
- */
- modulepar charstring PX_IMS_SUT_unknownUE_PUBLIC_USER := "0007";
-} // end group SUT_unknown
-
-group EMERGENCY{
- /** @desc charstring for identity of emergency service local domain
- */
- modulepar charstring PX_IMS_SUT_EMERGENCY_HOME_DOMAIN := "home.net";
-
- /** @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
-
-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;
-
- /** @desc charstring for SUT/IBCF1 domain
- */
- modulepar charstring PX_IMS_SUT_IBCF1_HOME_DOMAIN := "ibcf1.sut.net";
-
- /** @desc charstring for SUT/IBCF2 IP address to exchange SIP messages
- */
- modulepar charstring PX_IMS_SUT_IBCF2_IPADDR := "172.31.10.6";
-
- /** @desc integer for SUT/IBCF2 port number to exchange SIP messages
- */
- modulepar integer PX_IMS_SUT_IBCF2_PORT := 5060;
-
- /** @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 integer for SUT/P-CSCF port number to exchange SIP messages
- */
- modulepar integer PX_IMS_SUT_PCSCF_PORT := 5060;
-
- /** @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 integer for SUT/S-CSCF port number to exchange SIP messages
- */
- modulepar integer PX_IMS_SUT_SCSCF_PORT := 5060;
-
- /** @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
-
-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 integer for SUT/I-CSCF port number to exchange SIP messages
- */
- modulepar integer PX_IMS_SUT_ICSCF_PORT := 5060;
-
- /** @desc charstring for SUT/I-CSCFdomain
- */
- modulepar charstring PX_IMS_SUT_ICSCF_HOME_DOMAIN := "icscf.sut.net";
-
- /** @desc charstring for SUT/I-CSCF P_VisitedNetwork ID header (see RFC3455)
- */
- modulepar charstring PX_IMS_SUT_ICSCF_VisitedNetworkID := "Visited ETSI 1";
-} // 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";
-
- /** @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";
-
-}//end group SUT_UE1
-
-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 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";
-
-} // 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;
-
- /** @desc charstring invalid GRUU for Request-URI to be rejected by IUT S-CSCF
- */
- modulepar charstring PX_IMS_SUT_INVALID_GRUU;
-
- /** @desc charstring Service value in P-Asserted-Service header to be rejected by IUT S-CSCF, as service is not subscribed-to
- */
- modulepar charstring PX_IMS_SUT_UNSUBSCRIBED_SERVICE;
-
- /** @desc charstring Service value in SDP message body to be rejected by IUT S-CSCF, as service is not subscribed-to;
- ** intentionally kept as charstring to allow maximum flexibility to construct unsubscribed service **
- */
- modulepar charstring PX_IMS_SUT_UNSUBSCRIBED_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
/trunk/ttcn/LibIms_PIXITS.ttcn
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/ttcn/LibIms_Interface.ttcn
===================================================================
--- trunk/ttcn/LibIms_Interface.ttcn (revision 208)
+++ trunk/ttcn/LibIms_Interface.ttcn (revision 209)
@@ -1,39 +1,22 @@
-/*
- * @author STF 346, STF366, STF368, STF369, STF450
- * @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 STF471
+ * @version $Id$
+ * @desc This module provides the component type for SIP-IMS tests.
+ * This module is part of LibImsV3.
*/
+module LibIms_Interface {
+ // LibSip
+ 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
/trunk/ttcn/LibIms_Steps.ttcn
1,1885 → 1,1492
/*
* @author STF 346, STF366, STF368, STF369, STF450
* @version $Id$
* @desc This module provides the types used by the test component
* for SIP-IMS tests.
* This module is part of LibImsV2.
/**
* @author STF471
* @version $Id$
* @desc This module provides the steps 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_Templates all;
import from LibSip_Steps all;
import from LibSip_PIXITS all;
import from LibSip_Interface 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_SIPTypesAndValues all;
 
group externalfunctions {
} // end group externalfunctions
group parameterOperations {
 
/**
*
* @desc functions add new via parameter
* @desc Adds 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 (ispresent(p_message.msgHeader.via)) {
function f_addNewViaParameter(
in Request p_message
) runs on ImsComponent {
var integer v_intVia;
var integer i := 0;
if (isvalue(p_message.msgHeader.via)) {
 
v_intVia := sizeof(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
* @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
{
var integer v_intVia;
var Via v_via := c_empty_Via;
if (ispresent(p_message.msgHeader.via)) {
* @desc Removes own Via parameter
* @param p_message (request) SIP message to be used to prepair via header
*/
function f_removeOwnViaParameter(
in Response p_message
) runs on ImsComponent {
var integer v_intVia;
var Via v_via := c_empty_Via;
var integer i := 0;
 
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];
}
vc_via := v_via;
}
}
if (ispresent(p_message.msgHeader.via)) {
 
v_intVia := lengthof(p_message.msgHeader.via.viaBody) - 1;
 
for (i := 0; i < v_intVia; i := 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 (ispresent(p_message.msgHeader.route)) {
* @desc Adds new RecordRoute parameter and removes Route parameter
* @param p_message (request) SIP message to be used to prepair via header
*/
function f_addNewRecordRouteAndRemoveRoutParameter(
in Request p_message
) runs on ImsComponent {
var integer v_intRoute, v_intRecordRoute;
var integer i := 1;
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;
}
 
v_intRoute := sizeof(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 (ispresent(p_message.msgHeader.recordRoute)) {
if (isvalue(p_message.msgHeader.recordRoute)) {
 
v_intRecordRoute := sizeof(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 := p_message.msgHeader.recordRoute;
}
}
v_intRecordRoute := lengthof(p_message.msgHeader.recordRoute.routeBody);
while (0 < 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 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 Adds new RecordRoute parameter (IMS)
* @param p_rr The recordRoute parameter to add
*/
function f_addNewRecordRouteIMS(
in RecordRoute p_rr
) runs on ImsComponent
return template RecordRoute {
var integer v_intRecordRoute;
var template RecordRoute v_recordRoute := omit;
 
v_intRecordRoute := sizeof(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_rr.routeBody);
if (v_intRecordRoute > 0) {
while (0 < 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);
}
}
 
}//end group parameterOperations
group fieldOperations {
} // end group parameterOperations
 
/*
*
* @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
group fieldOperations {
 
/**
*
* @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)
{
/**
* @desc Sets BYE header fields (IMS addresses) extension of general settings from LibSip basic function
* @param p_cSeq_s The current cSeq
* @param p_to_user The selected user's SIP URL
*/
function f_setHeadersBYE(
inout CSeq p_cSeq_s,
in SipUrl p_to_user
) runs on ImsComponent {
vc_requestUri := 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 The current cSeq
*/
function f_setHeadersCANCEL(
inout CSeq p_cSeq_s
) 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_cSeq_s The current cSeq
* @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_addNewViaParameter(v_request);
f_addNewRecordRouteAndRemoveRoutParameter(v_request);
}
else
{ //B2Bmode
vc_contact := valueof(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;
}
else {
// B2Bmode
vc_contact := m_Contact(m_SipUrl_contactIpaddr(vc_userprofile));
vc_callId := {
fieldName := CALL_ID_E,
callid := f_getRndCallId() & 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(
) 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 := valueof(m_route_interface(vc_interfaceprofile))};
if (vc_boo_recordRoute)
{ vc_recordRoute := valueof(m_recordRoute_currIpAddr(vc_userprofile))};
LibSip_Steps.f_setHeadersINVITE(p_cSeq_s);
}// end f_setHeadersINVITE
/**
* @desc Sets Invite header fields (IMS addresses) extension of general settings from LibSip basic function
* @param p_cSeq_s The current cSeq
* @param p_to_user The selected user's SIP URL
*/
function f_setHeadersINVITE(
inout CSeq p_cSeq_s,
in SipUrl p_to_user
) runs on ImsComponent {
vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier
vc_from := f_initFromHeader(p_to_user, f_getRndTag()); // init of vc_from using userProfile identifier
vc_requestUri := 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 := valueof(m_route_interface(vc_interfaceprofile))};
if (vc_boo_recordRoute)
{ vc_recordRoute := valueof(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 The current cSeq
* @param p_to_user The selected user's SIP URL
*/
function f_setHeadersUPDATE(
inout CSeq p_cSeq_s,
in SipUrl p_to_user
) runs on ImsComponent {
vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier
vc_from := f_initFromHeader(p_to_user, f_getRndTag()); // init of vc_from using userProfile identifier
vc_requestUri := 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 The current cSeq
* @param p_to_user The selected user's SIP URL
*/
function f_setHeadersMESSAGE(
inout CSeq p_cSeq_s,
in SipUrl p_to_user
) runs on ImsComponent {
vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier
vc_from := f_initFromHeader(p_to_user, 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_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 := valueof(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 The current cSeq
* @param p_to_user The selected user's SIP URL
*/
function f_setHeadersNOTIFY(
inout CSeq p_cSeq_s,
in SipUrl 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(p_to_user, f_getRndTag()); // init of vc_from using userProfile identifier
vc_requestUri := 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 := valueof(m_route_interface(vc_interfaceprofile))};
if (vc_boo_recordRoute)
{ vc_recordRoute := valueof(m_recordRoute_currIpAddr(vc_userprofile))};
//contact header initialization for sending of PUBLISH from CSCF component
vc_contact := valueof(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 The current cSeq
* @param p_to_user The selected user's SIP URL
*/
function f_setHeadersPUBLISH(
inout CSeq p_cSeq_s,
in SipUrl 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 (ispresent(v_request.msgHeader.recordRoute))
{
vc_recordRoute := v_request.msgHeader.recordRoute;
v_nbroute := sizeof(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(p_to_user, f_getRndTag()); // init of vc_from using userProfile identifier
vc_requestUri := 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 The current cSeq
* @param p_to_user The selected user's SIP URL
*/
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(p_to_user, 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 The current cSeq
* @param p_orginatingSide true in case of Re-INVITE is send from the orgination endpoint otherwise false.
* @param p_to_user The selected user's SIP URL
*/
function f_setHeadersReINVITE(
inout CSeq p_cSeq_s,
in boolean p_orginatingSide,
in SipUrl p_to_user
) runs on ImsComponent {
var integer v_tmp, i, 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 := 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 (i := 0; i <= (v_nbroute - 1); i := i + 1) {
j := v_nbroute - 1 - i;
vc_route.routeBody[j] := vc_recordRoute.routeBody[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 := valueof(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 The CSeq parameter
* @param p_method The method name for cSeq header field
*/
function f_setHeadersGeneral_ICSCF(
inout CSeq p_cSeq_s,
in charstring p_method
) runs on SipComponent {
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_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;
vc_contact := m_Contact(m_SipUrl_contactIpaddr(vc_userprofile));
 
f_setHeadersGeneral(p_cSeq_s, "REGISTER"); // cseq, contact, branch, via
vc_branch := c_branchCookie & f_getRndTag();
vc_branch_ICSCF := c_branchCookie & f_getRndTag();
 
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_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 := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header
if (vc_boo_route)
{ vc_route := valueof(m_route_interface(vc_interfaceprofile))};
if (vc_boo_recordRoute)
{ vc_recordRoute := valueof(m_recordRoute_currIpAddr(vc_userprofile))};
LibSip_Steps.f_setHeadersREFER(p_cSeq_s);
}// end f_setHeadersREFER
/*
* @desc sets REFER header fields (IMS addresses)
* extension of general settings from LibSip basic function
* @param p_cSeq_s current cSeq
* @param p_uri SipUrl for request URI and To header
*/
function f_setHeadersREFER_conf(inout CSeq p_cSeq_s, in SipUrl p_uri) runs on ImsComponent
{
vc_to := {
fieldName := TO_E,
addressField := {
nameAddr := {
displayName := omit, // optional charstring
addrSpec := p_uri // SipUrl
}
},//end addressField
toParams := omit
};
/**
* @desc Sets header field for the next outgoing REGISTER message from the visited P-CSCF to the home I-CSCF
* @param p_cSeq_s The CSeq parameter to be applied
*/
function f_setHeaders_REGISTER_PCSCF(
inout CSeq p_cSeq_s
) runs on SipComponent {
var SemicolonParam_List v_params;
 
vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier
vc_requestUri := p_uri; // Request URI of Invite is identical with To header
if (vc_boo_route) {
vc_route := valueof(m_route_interface(vc_interfaceprofile))
};
if (vc_boo_recordRoute) {
vc_recordRoute := valueof(m_recordRoute_currIpAddr(vc_userprofile))
};
LibSip_Steps.f_setHeadersREFER(p_cSeq_s);
}// end f_setHeadersREFER_conf
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
};
 
} // 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 MessageBody p_mb) runs on SipComponent
{
f_setHeadersGeneral(vc_cSeq, "PRACK"); // cseq, contact, branch, via
vc_rAck := valueof(m_RAck(vc_response.msgHeader.rSeq.responseNum, vc_cSeq.seqNumber, vc_cSeq.method));
SIPP.send(m_PRACK_Request_sdp(
vc_requestUri,
vc_callId,
vc_cSeq,
vc_from,
vc_to,
vc_via,
vc_rAck,
p_mb
)) to vc_sent_label;
}
vc_reqHostPort := vc_requestUri.components.sip.hostPort;
 
}
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_callId := {
fieldName := CALL_ID_E,
callid := f_getRndCallId() & c_AT & vc_userprofile.currIpaddr
};
vc_callIdReg := vc_callId;
 
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_to := valueof(m_To(m_SipUrl_currDomain(vc_userprofile)));
v_params := {
{
id := c_tagId,
paramValue := {
tokenOrHost := f_getRndTag()
}
}
};
vc_from := {
fieldName := FROM_E,
addressField := vc_to.addressField,
fromParams := v_params
};
 
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;
// }
if (not vc_firstREGISTER_sent) {
v_params := {
{
id := c_expiresId,
paramValue := {
tokenOrHost := c_shortRegistration
}
}
};
vc_contact.contactBody.contactAddresses[0].contactParams := 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
}
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_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
}
/**
* @desc Sets REFER header fields (IMS addresses) extension of general settings from LibSip basic function
* @param p_cSeq_s The current cSeq
* @param p_to_user The selected user's SIP URL
*/
function f_setHeadersREFER(
inout CSeq p_cSeq_s,
in SipUrl p_to_user
) runs on ImsComponent {
vc_requestUri := 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_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
}
LibSip_Steps.f_setHeadersREFER(p_cSeq_s);
} // end f_setHeadersREFER
 
// 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
}
/**
* @desc Sets REFER header fields (IMS addresses) extension of general settings from LibSip basic function
* @param p_cSeq_s The current cSeq
* @param p_uri The 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
};
 
// 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
}
vc_from := f_initFromHeader(p_uri, 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);
}
 
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_conf
 
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
} // end group fieldOperations
 
group awaitingMessage {
}
group sendMessage {
 
/**
* @desc Sends PRACK message
* @param p_mb The message body of the PRACK message
* @param p_rack_cseq The cSeq of the PRACK message
*/
function f_sendPRACK_sdp(
template(value) MessageBody p_mb,
CSeq p_rack_cseq
) runs on SipComponent {
var integer v_responseNum := 1;
var template(value) PRACK_Request v_prackReq;
 
f_setHeadersGeneral(vc_cSeq, "PRACK"); // cseq, contact, branch, via
if (isvalue(vc_response.msgHeader.rSeq.responseNum)) {
v_responseNum := vc_response.msgHeader.rSeq.responseNum;
}
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
vc_rAck := m_RAck(v_responseNum, p_rack_cseq.seqNumber, p_rack_cseq.method);
 
v_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)) {
v_prackReq.msgHeader.route := f_route();
}
case (c_userProfile_AS2) { //variant c_userProfile_AS2
vc_userprofile.currPort := PX_IMS_TS_AS2_PORT; // via, route(Isc interface of TS)
vc_userprofile.currIpaddr := PX_IMS_TS_AS2_IPADDR; // via, route
vc_userprofile.homeDomain := PX_IMS_TS_AS2_HOME_DOMAIN; // via, route
}
case (c_userProfile_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);
}
SIPP.send(v_prackReq) to vc_sent_label;
}
 
}
group globalSteps {
 
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)
}
//NOTE STF471: removed function f_init_userprofile, have to move up to specific ATS
 
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}
/**
* @desc Initializes the To header
* @param p_user Identifies the selected user's SIP URL
* @return The To header
*/
function f_initToHeader(
in SipUrl p_user
) runs on ImsComponent
return To {
var To v_to := c_empty_To;
v_to := {
fieldName := TO_E,
addressField := {
nameAddr := {
displayName := omit, // optional charstring
addrSpec := p_user // SipUrl
}
}, // end addressField
toParams := omit
};
return (v_to);
}
 
/**
* @desc Initializes the From header
* @param p_user Identifies the selected user' SIP URL
* @param p_tag_str The string value of the tag id
* @return The From header
*/
function f_initFromHeader(
in SipUrl 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 := p_user // SipUrl
}
}, // end addressField
fromParams := {
{
id := c_tagId,
paramValue := {
tokenOrHost := p_tag_str
}
}
}
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}
}
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)}
}
};
return v_from;
}
 
//NOTE STF471: removed function f_initSipUrl, have to move up to specific ATS
 
/*
*
* @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
//NOTE STF471: removed function f_init_interfaceprofile, have to move up to specific ATS
 
/**
* @desc Retrieves user DomainPort value of the user profile
* @param p_userProfile Identifies the selected user profile
* @return The Domain HostPort
*/
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 The HostPort
*/
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 The Domain HostPort
*/
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,vc_authorization.body[0].digestResponse)))
);
/**
* @desc Gets the receive template for the NameAddr of the interface
* @param p_interface Identifies the selected interface
* @return The NameAddr 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(m_Authorization_digest(mw_digestResponse((c_Integrity_protected_yes,c_Integrity_protected_ip_assoc_pending)))));
}
group registration {
 
// 200OK to complete the request
vc_contact := 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));
/**
* @desc Registration and authentication
* @param p_cSeq_s The current cseq
* @param p_auth flag indicating if authentication is needed
* @param p_host P-CSCF domain name (formerly value from module parameter PX_IMS_TS_PCSCF_HOME_DOMAIN)
* @param p_port P-CSCF port number (formerly value from module parameter PX_IMS_TS_PCSCF_PORT)
*/
function f_Registration_IMS(
inout CSeq p_cSeq_s,
in boolean p_auth,
template(value) charstring p_host,
template(value) integer p_port
) 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}), p_host, p_port)); // 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;
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}), p_host, p_port)); // LibSip
// awaiting 200 OK REGISTER
f_awaitingOkResponse(p_cSeq_s);
f_getServiceRouteMapIntoRouteInRegistration(vc_response);
}
[] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, p_cSeq_s)) {
tc_ack.stop;
log("*** " & __SCOPE__ & ": INCONC: Authorization was not requested as expected ***");
setverdict(inconc);
}
}
}
else {
f_awaitingOkResponse(p_cSeq_s);
f_getServiceRouteMapIntoRouteInRegistration(vc_response);
}
} // end function f_Registration_IMS
 
}//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
{
/**
* @desc awaiting UE1 registration (with authentication)
* @param p_cSeq_s The current cseq
* @param p_to_user The selected user's SIP URL
* @param p_qop of the peer UE (alternatively)
* @param p_register The expected REGISTER_Request - default: mw_REGISTER_authorizedRequest_IMS
*/
function f_awaitingRegistration_IMS(
inout CSeq p_cSeq_s,
in SipUrl p_to_user,
in charstring p_qop,
in template(present) REGISTER_Request p_register :=
mw_REGISTER_authorizedRequest_IMS(
mw_Authorization_digest(
mw_digestResponse(
(c_Integrity_protected_yes, c_Integrity_protected_ip_assoc_pending)
)
)
)
) 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,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
vc_contact := 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
// Awaiting 1st REGISTER
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS);
 
// 401 response
f_sendResponse(
m_Response_WWWauthenticate_IMS(
c_statusLine401,
vc_callId,
p_cSeq_s,
vc_caller_From,
vc_caller_To,
vc_via,
m_wwwAuthenticate(
f_calculatecChallenge_forWWWAuthorization(
p_qop,
valueof(vc_authorization.body[0].digestResponse)
)
)
)
);
 
/**
*
* @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 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
// Awaiting 2nd REGISTER with authorization header
f_awaitingREGISTER(p_register);
 
} // 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);
// 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",
{
tokenOrHost := int2str(3600)
}
}
};
}
v_passociated_url := vc_caller_From.addressField.nameAddr.addrSpec;
f_sendResponse(m_Response_2xxonREGISTER_IMS(c_statusLine200, vc_callId, p_cSeq_s, vc_callee_From, vc_callee_To, vc_via, vc_contact, p_to_user, v_passociated_url));
} // end function f_awaitingRegistration_IMS
 
//Preamble
f_init_userprofile(p_userprofile); // assignment of PIXIT values to component variable
vc_sdp_local := valueof(m_SDP_bandwidth(valueof(m_media_dynPT(PX_SIP_SDP_dyn, PX_SIP_SDP_encoding)), vc_userprofile));
/**
* @desc Awaiting UE1 registration (with authentication, without security headers)
* @param p_cSeq_s The current cseq
* @param p_to_user The selected user's SIP URL
* @param p_qop of the peer UE (alternatively)
*/
function f_awaitingRegistration_IMS_gm(
inout CSeq p_cSeq_s,
in SipUrl p_to_user,
in charstring p_qop
) runs on ImsComponent {
vc_ignore_subscribe := true; // handle SUBSCRIBE during the call
f_awaitingRegistration_IMS(p_cSeq_s, p_to_user, p_qop, mw_REGISTER_authorizedRequest_wo_securityheaders_IMS);
vc_DeregDone := false;
} // end function f_awaitingRegistration_IMS_gm
 
vc_contact := valueof(m_Contact(m_SipUrl_contactIpaddr(vc_userprofile)));
/**
* @desc Remove registration
* @param p_cSeq_s The current cseq
* @param p_host P-CSCF domain name (formerly value from module parameter PX_IMS_TS_PCSCF_HOME_DOMAIN)
* @param p_port P-CSCF port number (formerly value from module parameter PX_IMS_TS_PCSCF_PORT)
*/
function f_removeRegistration_IMS(
inout CSeq p_cSeq_s,
template(value) charstring p_host,
template(value) integer p_port
) runs on SipComponent {
var template(value) REGISTER_Request v_request;
 
}
if (PX_SIP_REGISTRATION) {
f_setHeaders_deREGISTER(p_cSeq_s);
v_request := m_REGISTER_Request_expires_IMS(vc_requestUri, vc_callIdReg, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, vc_authorization, p_host, p_port, "0");
v_request.msgHeader.route := f_route();
 
/*
*
* @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, template REGISTER_Request p_register) runs on ImsComponent
{
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;
alt {
[] SIPP.receive(mw_Response_Base(c_statusLine401, vc_callIdReg, p_cSeq_s)) -> value vc_response {
tc_ack.stop;
// set headers via, cseq and authorization
f_setHeaders_2ndREGISTER(p_cSeq_s);
v_request := m_REGISTER_Request_expires_IMS(vc_requestUri, vc_callIdReg, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, vc_authorization, p_host, p_port, "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_s));
}
[] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq_s)) -> value vc_response {
tc_ack.stop;
f_setHeadersOnReceiptOfResponse(vc_response);
log("*** " & __SCOPE__ & ": INFO: Authorization was not requested as expected ***");
}
}
}
else {
f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq_s));
}
}
} // end f_RemoveRegistration_IMS
 
f_init_interfaceprofile(p_interface);
//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);
} // end group 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));
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 The current cseq
*/
function f_IMS_preamble_MGCF(
inout CSeq p_cSeq_s
) runs on ImsComponent {
vc_boo_recordRoute := true;
vc_boo_route := true;
//NOTE STF471: removed f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_MGCF);
 
/*
*
* @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_IMS_preamble_woRegistration(p_cSeq_s);
}
 
f_init_interfaceprofile(p_interface);
//Variables & defaults initialization
f_IMS_preamble_woRegistration(p_userprofile, p_cSeq_s);
//Preamble
/**
* @desc Sets variables and default initialization for user profile
* @param p_cSeq_s The current cseq
*/
function f_IMS_preamble_woRegistration(
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
//NOTE STF471: removed 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, PX_SIP_SDP_CLOCKRATE, omit), vc_userprofile));
vc_contact := m_Contact(m_SipUrl_contactIpaddr(vc_userprofile));
}
 
//NOTE STF471 added
/**
* @desc Sets variables and default initialization for user profile
* @param p_cSeq_s The current cseq
*/
function f_IMS_preamble_woRegistration_as(
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
//NOTE STF471: removed 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, PX_SIP_SDP_CLOCKRATE, omit), vc_userprofile));
}
 
/**
* @desc Sets variables and default initialization for user profile and handle registration and authentication with MD5
* @param p_cSeq_s The current cseq
* @param p_register Register template
*/
function f_IMS_preamble_withEmergencyRegistration(
inout CSeq p_cSeq_s,
template REGISTER_Request p_register
) runs on ImsComponent {
 
//NOTE STF471: removed f_init_interfaceprofile(p_interface);
// Variables & defaults initialization
f_IMS_preamble_woRegistration(p_cSeq_s);
// 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
* (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));
}
/**
* @desc Sets variables and default initialization for user profile and handle registration and authentication with MD5
* @param p_cSeq_s The current cseq
* @param p_register Register template
*/
function f_IMS_preamble_withRegistration(
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
* (basic registration template)
* @param p_userprofile user profile of call
* @param p_cSeq_s cseq parameter
//NOTE STF471: removed f_init_interfaceprofile(p_interface);
// Variables & defaults initialization
f_IMS_preamble_woRegistration(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;
 
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));
}
 
//NOTE STF471 added
/**
* @desc Sets variables and default initialization for user profile and handle registration and authentication with MD5
* @param p_cSeq_s The current cseq
* @param p_register Register template
*/
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_withRegistrationWoSubscription(
inout CSeq p_cSeq_s,
out template REGISTER_Request p_register
) runs on ImsComponent {
//NOTE STF471: removed f_init_interfaceprofile(p_interface);
 
// Variables & defaults initialization
f_IMS_preamble_woRegistration(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_cSeq_s The current cseq
* @param p_host P-CSCF domain name (formerly value from module parameter PX_IMS_TS_PCSCF_HOME_DOMAIN)
* @param p_port P-CSCF port number (formerly value from module parameter PX_IMS_TS_PCSCF_PORT)
*/
function f_IMS_preamble_withRegistrationBasic(
inout CSeq p_cSeq_s,
template(value) charstring p_host,
template(value) integer p_port
) runs on ImsComponent {
//NOTE STF471: removed f_init_interfaceprofile(p_interface);
// Variables & defaults initialization
f_IMS_preamble_woRegistration(p_cSeq_s);
 
// Preamble
f_Registration_IMS(p_cSeq_s, PX_SIP_REGISTER_AUTHENTICATION_ENABLED, p_host, p_port);
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_cSeq_s The current cseq
*/
function f_IMS_preamble_AS(
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
f_init_interfaceprofile(p_interface);
f_init_userprofile(p_userprofile); // assignment of PIXIT values to component variable
vc_sdp_local := valueof(m_SDP_bandwidth(valueof(m_media_dynPT(PX_SIP_SDP_dyn, PX_SIP_SDP_encoding)), vc_userprofile));
vc_contact := valueof(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();
}
/*
*
* @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);}
// Preamble
//NOTE STF471: removed f_init_interfaceprofile(p_interface);
//NOTE STF471: removed 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, PX_SIP_SDP_CLOCKRATE, omit), vc_userprofile));
vc_contact := m_Contact(m_SipUrl_contactIpaddr(vc_userprofile));
}
 
} // end group preambles
 
group postambles {
 
/**
* @desc Terminates component and handles deregistration
* @param p_cSeq_s The current cseq
*/
function f_IMS_postamble_withDeRegistration(
CSeq p_cSeq_s
) runs on ImsComponent {
f_RemoveRegistration(p_cSeq_s);
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,vc_authorization.body[0].digestResponse)))
);
/**
* @desc Terminates component and optionally handles deregistration on AS as TS
* @param p_deRegistration Handle deregistration?
*/
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));
/**
* @desc Terminates component without registration
*/
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);
/**
* @desc Terminates component without de-registration
*/
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,vc_authorization.body[0].digestResponse)))
);
/**
* @desc Terminates component with de-registration
* @param p_to_user The selected user's SIP URL
* @param p_qop of the peer UE (alternatively)
*/
function f_SIP_postamble_IMS1_awaitDeRegistration(
in SipUrl p_to_user,
in charstring p_qop
) 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(p_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);
// 200OK to complete the request
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, p_to_user, v_passociated_url));
 
f_terminate_component()
};
f_terminate_component();
}
 
function f_IMS_awaitDeRegistration () runs on ImsComponent
{
/**
* @desc Terminates component with de-registration
* @param p_to_user The selected user's SIP URL
* @param p_qop of the peer UE (alternatively)
*/
function f_IMS_postamble_awaitDeRegistration(
in SipUrl p_to_user,
in charstring p_qop
) 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,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(p_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);
// 200OK to complete the request
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, p_to_user, v_passociated_url));
 
f_terminate_component();
}
 
 
/**
* @desc Awaits de-registration
* @param p_to_user The selected user's SIP URL
* @param p_qop of the peer UE (alternatively)
*/
function f_IMS_awaitDeRegistration(
in SipUrl p_to_user,
in charstring p_qop
) 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(p_qop, valueof(vc_authorization.body[0].digestResponse)))));
 
// Awaiting 2nd REGISTER with authorization header
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS);
// 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_sendResponse(m_Response_2xxonREGISTER_IMS(c_statusLine200, vc_callId, vc_cSeq, vc_callee_From, vc_callee_To, vc_via, vc_contact, p_to_user, 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 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, valueof(p_to), vc_via, vc_route));
tc_resp.start(PX_SIP_TRESP);
alt
{
[] SIPP.receive (mw_Response_Base(mw_statusLine1xx, p_CallId, p_cSeq))
{
repeat;
}
[] SIPP.receive (mw_Response_Base(mw_statusLineFinal, p_CallId, p_cSeq))
{
tc_resp.stop;
}
// timeout should be handled in default_alt_step
}
} // end function f_terminateCall
/**
*
* @desc sends BYE and awaits response
* @param p_CallId parameter for outgoing BYE
* @param p_cSeq parameter for outgoing BYE
* @param p_from parameter for outgoing BYE
* @param p_to parameter for outgoing BYE
* @param p_reqHostPort parameter for outgoing BYE
*/
function f_terminateCall_UE(SipUrl p_requestUri, CallId p_CallId, inout CSeq p_cSeq, From p_from,
template To p_to, 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
//NOTE STF471: renamed f_SIP_postamble_UE(1|2)_withoutRegistration to f_SIP_postamble_UE_withoutRegistration
/**
*
* @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
* @desc Terminates component without registration
*/
function f_terminateCall_UE_withDeReg(SipUrl p_requestUri, CallId p_CallId, inout CSeq p_cSeq, From p_from,
template 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, 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;
}
function f_SIP_postamble_UE_withoutRegistration(
) runs on ImsComponent {
f_terminate_component();
}
 
/**
* @desc Sends BYE and awaits response (IMS)
* @param p_requestUri The Request URI
* @param p_callId CallId parameter for outgoing BYE
* @param p_cSeq_s CSeq parameter for outgoing BYE
* @param p_from From parameter for outgoing BYE
* @param p_to To parameter for outgoing BYE
*/
function f_terminateCall_IMS(
SipUrl p_requestUri,
CallId p_callId,
inout CSeq p_cSeq_s,
From p_from,
template(value) To p_to
) runs on ImsComponent {
LibSip_Steps.f_setHeadersBYE(p_cSeq_s);
// 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_s, p_from, p_to, vc_via, vc_route));
 
tc_resp.start;
alt {
[] SIPP.receive(mw_Response_Base(mw_statusLine1xx, p_callId, p_cSeq_s)) {
repeat;
}
[] SIPP.receive(mw_Response_Base(mw_statusLineFinal, p_callId, p_cSeq_s)) {
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_IMS
 
/**
* @desc Sends BYE and awaits response (UE)
* @param p_requestUri The Request URI
* @param p_callId CallId parameter for outgoing BYE
* @param p_cSeq_s CSeq parameter for outgoing BYE
* @param p_from From parameter for outgoing BYE
* @param p_to To parameter for outgoing BYE
* @param p_recordRoute RecordRoute parameter for outgoing BYE - default: omit
*/
function f_terminateCall_UE(
SipUrl p_requestUri,
CallId p_callId,
inout CSeq p_cSeq_s,
From p_from,
template(value) To p_to,
template RecordRoute p_recordRoute := omit
) runs on ImsComponent {
var Route v_route;
LibSip_Steps.f_setHeadersBYE(p_cSeq_s);
// Sending of a BYE request to release the call and expect a final response
if (ispresent(p_recordRoute)) {
v_route := {ROUTE_E, valueof(p_recordRoute.routeBody)};
f_SendBYE(m_BYE_Request_UE(p_requestUri, p_callId, p_cSeq_s, p_from, valueof(p_to), vc_via, v_route));
}
else {
f_SendBYE(m_BYE_Request_UE(p_requestUri, p_callId, p_cSeq_s, p_from, valueof(p_to), vc_via, vc_route));
}
 
tc_resp.start;
alt {
[] SIPP.receive(mw_Response_Base(mw_statusLine1xx, p_callId, p_cSeq_s)) {
repeat;
}
[] SIPP.receive(mw_Response_Base(mw_statusLineFinal, p_callId, p_cSeq_s)) {
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_requestUri The Request URI
* @param p_callId CallId parameter for outgoing BYE
* @param p_cSeq_s CSeq parameter for outgoing BYE
* @param p_from From parameter for outgoing BYE
* @param p_to To parameter for outgoing BYE
* @param p_qop of the peer UE (alternatively)
*/
function f_terminateCall_UE_withDeReg(
SipUrl p_requestUri,
CallId p_callId,
inout CSeq p_cSeq_s,
From p_from,
template(value) To p_to,
in charstring p_qop
) runs on ImsComponent {
LibSip_Steps.f_setHeadersBYE(p_cSeq_s);
// 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_s, p_from, p_to, vc_via, vc_route));
 
tc_resp.start;
alt {
[] SIPP.receive(mw_Response_Base(mw_statusLine1xx, p_callId, p_cSeq_s)) {
repeat;
}
[] SIPP.receive(mw_Response_Base(mw_statusLineFinal, p_callId, p_cSeq_s)) {
tc_resp.stop;
}
// timeout should be handled in default_alt_step
}
action("Please de-register");
f_IMS_awaitDeRegistration(p_requestUri, p_qop);
} // end function f_terminateCall_UE_withDeReg
}
group defaults {
altstep a_clearRegistration_IMSuser() runs on ImsComponent
{
 
}
group defaults {
 
/**
* @desc Altstep for clearing registration (IMS user)
* @param p_to_user The selected user's SIP URL
* @param p_qop of the peer UE (alternatively)
* @verdict fail for all unexpected branches
*/
altstep a_clearRegistration_IMSuser(
in SipUrl p_to_user,
in charstring p_qop
) runs on ImsComponent {
var Response v_response;
var Request v_request;
[] 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
var CSeq v_cSeq;
[] any timer.timeout {
log("*** " & testcasename() & ": FAIL: Timeout while waiting for message. ***");
setverdict(fail);
all timer.stop;
vc_callId := vc_callIdReg;
action("Please de-register");
f_IMS_awaitDeRegistration();
f_componentStop();
action("Please de-register");
f_IMS_awaitDeRegistration(p_to_user, p_qop);
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
{
f_setHeadersOnReceiptOfResponse(v_response.msgHeader.cSeq, v_response);
[] 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_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
{
f_setHeadersOnReceiptOfResponse(v_response.msgHeader.cSeq, v_response);
[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_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));
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));
}
// 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_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 {
log("*** " & testcasename() & ": FAIL: Unexpected BYE message received. ***");
setverdict(fail);
f_setHeadersOnReceiptOfRequest(v_request);
f_setHeadersOnReceiptOfRequest(v_request);
f_send200OK();
action("Please de-register");
f_IMS_awaitDeRegistration();
f_componentStop();
}
action("Please de-register");
f_IMS_awaitDeRegistration(p_to_user, p_qop);
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 {
log("*** " & testcasename() & ": FAIL: Unexpected CANCEL message received. ***");
setverdict(fail);
f_setHeadersOnReceiptOfRequest(v_request);
//Answer to the CANCEL
// Answer to the CANCEL
f_send200OK();
action("Please de-register");
f_IMS_awaitDeRegistration();
f_componentStop();
}
action("Please de-register");
f_IMS_awaitDeRegistration(p_to_user, p_qop);
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 {
log("*** " & testcasename() & ": FAIL: Unexpected 4xx response received. ***");
setverdict(fail);
f_setHeadersOnReceiptOfResponse(v_response.msgHeader.cSeq, v_response);
v_cSeq := valueof(v_response.msgHeader.cSeq);
f_setHeadersOnReceiptOfResponse(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");
f_IMS_awaitDeRegistration();
f_componentStop();
action("Please de-register");
f_IMS_awaitDeRegistration(p_to_user, p_qop);
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 {
log("*** " & testcasename() & ": FAIL: Unexpected 5xx response received. ***");
setverdict(fail);
f_setHeadersOnReceiptOfResponse(v_response.msgHeader.cSeq, v_response);
v_cSeq := valueof(v_response.msgHeader.cSeq);
f_setHeadersOnReceiptOfResponse(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");
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();
action("Please de-register");
f_IMS_awaitDeRegistration(p_to_user, p_qop);
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();
// catch invalid REGISTER
[] SIPP.receive(mw_REGISTER_Request_Base) -> value v_request sender vc_sent_label {
log("*** " & testcasename() & ": FAIL: Unexpected REGISTER received. ***");
setverdict(fail);
f_componentStop();
}
// any
[] SIPP.receive {
log("*** " & testcasename() & ": FAIL: Unexpected message received. ***");
setverdict(fail);
all timer.stop;
action("Please de-register");
f_IMS_awaitDeRegistration(p_to_user, p_qop);
f_componentStop();
}
}
 
/**
*
* @desc main default altstep to handle unexpected messages and timeout
* @desc Main default altstep to handle unexpected messages and timeout
* @verdict fail for all unexpected branches
*/
altstep a_altstep_AS() runs on SipComponent
{
var Response v_response;
*/
altstep a_altstep_AS(
) runs on SipComponent {
var Request v_request;
[] any timer.timeout
{
setverdict(fail);
all timer.stop;
[] any timer.timeout {
log("*** " & testcasename() & ": FAIL: Timeout while waiting for message. ***");
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 {
log("*** " & testcasename() & ": FAIL: Unexpected CANCEL message received. ***");
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 {
log("*** " & testcasename() & ": FAIL: Unexpected BYE message received. ***");
setverdict(fail);
f_setHeadersOnReceiptOfRequest(v_request);
f_setHeadersOnReceiptOfRequest(v_request);
f_send200OK();
}
[] SIPP.receive(mw_Response_Base(? ,vc_callId, vc_cSeq))-> value vc_response
{
log("Response matched in DEFAULT!!!");
}
[] SIPP.receive(mw_Response_Base(?, vc_callId, vc_cSeq)) -> value vc_response {
log("*** " & testcasename() & ": FAIL: Unexpected response message in " & __SCOPE__ & " received. ***");
setverdict(fail);
repeat;
}
// any
[] SIPP.receive
{
setverdict(fail);
all timer.stop;
}
// any
[] SIPP.receive {
log("*** " & testcasename() & ": FAIL: Unexpected message received. ***");
setverdict(fail);
all timer.stop;
}
}
}
}
} // module LibIms_Steps
/trunk/ttcn/LibIms_Templates.ttcn
1,3619 → 1,4610
/*
* @author STF 346, STF366, STF368, STF369, STF450
* @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 STF471
* @version $Id$
* @desc This module provides the templates used by the test component for SIP-IMS tests.
* This module is part of LibImsV3.
*/
module LibIms_Templates {
// LibCommon
import from LibCommon_DataStrings all;
 
module LibIms_Templates
{
import from XSDAUX all;
 
//LibCommon
import from LibCommon_DataStrings all;
//LibSip
// 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
 
// LibIms
import from LibIms_SIPTypesAndValues all;
import from LibIms_PIXITS all;
//LibXMLTypes
 
// LibXMLTypes
import from XSD all;
 
import from urn_ietf_params_xml_ns_resource_lists language "XSD" all
with {
extension "File:../xsd/ResourceList.xsd"
extension "File:../xsd/ResourceList.xsd";
}
 
import from urn_ietf_params_xml_ns_reginfo language "XSD" all except{type Contact}
import from urn_ietf_params_xml_ns_reginfo language "XSD" all except {type Contact;}
with {
extension "File:../xsd/regInfo.xsd"
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"
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"
extension "File:../xsd/MCID.xsd";
}
 
import from NoTargetNamespace language "XSD" all
with {
extension "File:../xsd/Ims3gpp.xsd"
extension "File:../xsd/Ims3gpp.xsd";
}
 
import from urn_ietf_params_xml_ns_conference_info language "XSD" all
with {
extension "File:../xsd/CONF.xsd"
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"
extension "File:../xsd/PSTN.xsd";
}
 
import from urn_ietf_params_xml_ns_common_policy language "XSD" all
with {
extension "File:../xsd/common-policy.xsd"
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"
extension "File:../xsd/CDIVN.xsd";
}
 
import from urn_3gpp_ns_cw_1_0 language "XSD" all
with {
extension "File:../xsd/cw.xsd"
}
extension "File:../xsd/cw.xsd";
}
 
template(present) charstring mw_international_number_format := pattern "\\+\d+";
template charstring m_international_number_format := pattern "\\+\d+";//pattern "\+\d+";
 
template NameAddr mw_SipUrl_SUTinterface(charstring p_host, integer p_port) :=
{
displayName := *,
addrSpec := {
scheme := c_sipScheme,
components := { sip:= {
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 Addr_Union mw_UE1_Addr_display := {nameAddr:={displayName:=PX_IMS_SUT_UE1_DISPLAY,addrSpec:=?}};
template Addr_Union mw_AddrUnion_userInfo(template (present) charstring p_userInfo) :=
{
nameAddr:={displayName := *,
addrSpec := {
scheme := c_sipScheme,
components := { sip:= {
userInfo := {userOrTelephoneSubscriber :=p_userInfo, password :=*},
hostPort := ?}},
urlParameters := *,
headers := *
hostPort := mw_hostPort(p_host, p_port)
}
}
},
urlParameters := *,
headers := *
}
group Subfields{
}
 
template(present) Addr_Union mw_UE1_Addr_display(
template(present) charstring p_displayName
) := {
nameAddr := {
displayName := p_displayName,
addrSpec := ?
}
}
 
template SipUrl m_SipUrl_currIpaddr_CSCF(in 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
}}},
group subfields {
 
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
}
template 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 SemicolonParam_List m_semicolonParams_language (template charstring p_language):=
{{"language",p_language}}
template SemicolonParam_List mw_semicolonParams_language (template charstring p_language):=
{{"language",p_language}}
template SemicolonParam_List m_semicolonParams_isub (template charstring p_address):=
{{"isub",p_address}}
}
}
 
group HeaderFieldTemplates{
template MinSE m_minSE(DeltaSec p_ds):=
{
fieldName := MIN_SE_E,
deltaSec:=p_ds,
minSeParam:=omit
}
template PathValue mw_pathvalue (template SipUrl p_sipUrl):=
{
nameAddr := {displayName := *, // optional charstring
addrSpec := p_sipUrl // SipUrl
template(present) SemicolonParam_List mw_semicolonParams_realm(
template GenValue p_realm
) :=
superset(
{
"realm",
p_realm
},
rrParam := *
{
"nonce",
?
},
{
"algorithm",
{ tokenOrHost := "AKAv1-MD5" }
},
{
"ik",
?
},
{
"ck",
?
}
);
template(value) SemicolonParam_List m_semicolonParams_language(
template(omit) GenValue p_language := omit
) := {
{
"language",
p_language
}
}
 
template(present) SemicolonParam_List mw_semicolonParams_language(
template GenValue p_language
) := {
{
"language",
p_language
}
}
 
template(value) SemicolonParam_List m_semicolonParams_isub(
template(omit) GenValue p_address := omit
) := {
{
"isub",
p_address
}
}
}
 
template Path m_path (template SipUrl p_sipUrl):=
{
fieldName := PATH_E,
pathValues := {
{nameAddr := {
displayName := omit, // optional charstring
addrSpec := p_sipUrl // SipUrl
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) charstring p_host,
template(value) integer p_port,
template(value) SipUrl p_sipUrl
) modifies m_path_TS := {
pathValues := {
{
nameAddr := {
displayName := omit, // optional charstring
addrSpec := p_sipUrl // SipUrl
},
rrParam := omit}
rrParam := omit
}
}
}
template Path m_path_TS := {
fieldName := PATH_E,
pathValues := {
{
nameAddr := {
displayName := omit, // optional charstring
addrSpec := {
scheme := c_sipScheme,
components := { sip:= {
userInfo := omit,
hostPort := {
PX_IMS_TS_PCSCF_HOME_DOMAIN, PX_IMS_TS_PCSCF_PORT
}}},
urlParameters := { { id := "lr", paramValue := omit}},
headers := omit
}
}
 
template(value) Path m_path_TS(
template(value) charstring p_host,
template(value) integer p_port
) := {
fieldName := PATH_E,
pathValues := {
{
nameAddr := {
displayName := omit, // optional charstring
addrSpec := {
scheme := c_sipScheme,
components := {
sip := {
userInfo := {
userOrTelephoneSubscriber := "registrar",
password := omit
},
hostPort := {p_host, p_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 := { tokenOrHost := "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 := { tokenOrHost := "192.1.1.1" }
}, // value is fixed because it is deleted on proxy
{
id := "ecf",
paramValue := { tokenOrHost := "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 := omit
) 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) GenValue p_homeDomain
) modifies m_pChargingVector_icid_TS := {
chargeParams := {
{
id := c_icid_generated_at,
paramValue := { tokenOrHost := "192.1.1.10" }
},
rrParam := omit
{
id := c_orig_ioi,
paramValue := p_homeDomain
}
}
}
}
/*
* @desc Path header field expectation with at least one path value
* @param p_sipUrl value of the last element in the list of path values
*/
template Path mw_path (template SipUrl p_sipUrl):=
{
fieldName := PATH_E,
pathValues := {mw_pathvalue(p_sipUrl)} // any number of SipUrl may occur before p_sipUrl
}
template PAccessNetworkInfo m_pAccessNetworkInfo_IEEE_11a :=
{
fieldName := P_ACCESS_NETWORK_INFO_E,
accessType := "IEEE-802.11a",
genericParams := {{id:="extension-access-info",paramValue :="192.1.1.20"}}
};
template PAssertedService m_pAssertedService (PAssertedServiceValue p_pAssertedServiceValue):=
{
fieldName := P_ASSERTED_SERVICE_E,
pAssertedServiceValue := p_pAssertedServiceValue
};
template PChargingFunctionAddresses m_pChargingFunctionAddresses_fixedValue :=
{
fieldName := P_CHARGING_FUNCTION_ADDRESSES_E,
chargeAddrParams := {{id:="ccf",paramValue :="192.1.1.1"}, // value is fixed because it is deleted on proxy
{id:="ecf",paramValue :="192.1.1.2"}} // value is fixed because it is deleted on proxy
};
 
template PChargingVector m_pChargingVector(template SemicolonParam_List p_chargeParams) :=
{
fieldName := P_CHARGING_VECTOR_E,
chargeParams := p_chargeParams
};
template PChargingVector m_pChargingVector_icid_TS :=
{
fieldName := P_CHARGING_VECTOR_E,
chargeParams := {{id:=c_icid, paramValue :=c_icid_value}}
};
template PChargingVector m_pChargingVector_origIoi_fixedValue(charstring p_homeDomain) :=
{
fieldName := P_CHARGING_VECTOR_E,
chargeParams := {{id:=c_icid, paramValue :=c_icid_value},
{id:=c_icid_generated_at, paramValue :="192.1.1.10"},
{id:=c_orig_ioi, paramValue := p_homeDomain}}
};
template PChargingVector m_pChargingVector_termIoi_fixedValue(charstring p_homeDomain) :=
{
fieldName := P_CHARGING_VECTOR_E,
chargeParams := {{id:=c_icid, paramValue :=c_icid_value},
{id:=c_icid_generated_at, paramValue :="192.1.1.10"},
{id:=c_term_ioi, paramValue := p_homeDomain}}
};
template PChargingVector m_pChargingVector_origIoi_fixedValue1(charstring p_homeDomain) :=
{
fieldName := P_CHARGING_VECTOR_E,
chargeParams := {
{id:=c_icid_generated_at, paramValue :="192.1.1.10"},
{id:=c_orig_ioi, paramValue := p_homeDomain}}
};
template PChargingVector m_pChargingVector_accessNetwInfo(charstring p_homeDomain) :=
{
fieldName := P_CHARGING_VECTOR_E,
chargeParams := {{id:=c_icid, paramValue :=c_icid_value},
{id:=c_term_ioi, paramValue := p_homeDomain},
{id:=c_access_network_charging_info, paramValue := "192.1.1.10"}}
};
template PChargingVector mw_pChargingVector(template charstring p_id, template charstring p_paramValue) :=
{
fieldName := P_CHARGING_VECTOR_E,
chargeParams := superset({id := p_id, paramValue := p_paramValue})
};
template(value) PChargingVector m_pChargingVector_termIoi_fixedValue(
template(value) GenValue p_homeDomain
) modifies m_pChargingVector_icid_TS := {
chargeParams := {
{
id := c_icid_generated_at,
paramValue := { tokenOrHost := "192.1.1.10" }
},
{
id := c_term_ioi,
paramValue := p_homeDomain
}
}
}
 
template PMediaAuthorization m_pMediaAuthorization_fixedValue :=
{
fieldName := P_MEDIA_AUTHORIZATION_E,
pMediaAuthorizations := {"A"} // example
};
template(value) PChargingVector m_pChargingVector_accessNetwInfo(
template(value) GenValue p_homeDomain
) modifies m_pChargingVector_icid_TS := {
chargeParams := {
{
id := c_term_ioi,
paramValue := p_homeDomain
},
{
id := c_access_network_charging_info,
paramValue := { tokenOrHost := "192.1.1.10" }
}
}
}
 
// NOTE STF471 change: icidValue added
template(present) PChargingVector mw_pChargingVector(
template(present) charstring p_id := ?,
template GenValue p_paramValue
) := {
fieldName := P_CHARGING_VECTOR_E,
icidValue := ?,
chargeParams :=
superset(
{
id := p_id,
paramValue := p_paramValue
}
)
}
 
template PEarlyMedia m_pEarlyMedia_sup :=
{fieldName := P_EARLY_MEDIA_E, em_param := {"supported"}};
template ProxyRequire m_proxyRequire_secAgree :=
{
fieldName := PROXY_REQUIRE_E,
optionsTags := {"sec-agree"}
};
template PVisitedNetworkID m_pVisitedNetworkID_TS :=
{
fieldName := P_VISITED_NETWORK_E,
vNetWorkSpec := {{vNetworkSpecToken := PX_IMS_SUT_ICSCF_VisitedNetworkID,
genericParams := omit}}
}
template PVisitedNetworkID mw_pVisitedNetworkID :=
{
fieldName := P_VISITED_NETWORK_E,
vNetWorkSpec := {{vNetworkSpecToken := PX_IMS_SUT_PCSCF_VisitedNetworkID,
genericParams := *}}
}
template(value) PMediaAuthorization m_pMediaAuthorization_fixedValue := {
fieldName := P_MEDIA_AUTHORIZATION_E,
pMediaAuthorizations := {"A"} // example
}
 
template RecordRoute m_recordRoute_notmatching:=
{
fieldName := RECORD_ROUTE_E,
routeBody :=
{{
nameAddr :=
{
displayName := omit,
addrSpec :=
 
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 := {
{
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
vNetworkSpecToken := "Visited ETSI 1",
genericParams := omit
}
},
rrParam := omit
} }
};
template Require m_require_secAgree :=
{
fieldName := REQUIRE_E,
optionsTags := {"sec-agree"}
};
template Require mw_require_path :=
{
fieldName := REQUIRE_E,
optionsTags := superset("path")
};
}
}
 
template Route m_route_interface (in ImsInterfaceProfile p_interfaceprofile):=
{
fieldName := ROUTE_E,
routeBody := {{nameAddr := {displayName := omit,
addrSpec := {scheme := c_sipScheme, // contains "sip"
components := { sip:= {
userInfo := omit,
hostPort := {host:=p_interfaceprofile.SUTHomeDomain, portField:= omit}}},
urlParameters := omit,
headers := omit}
},
rrParam := omit}
}};
template(present) PVisitedNetworkID mw_pVisitedNetworkID(
template(present) charstring p_vNetworkSpecToken
) modifies m_pVisitedNetworkID_TS := {
vNetWorkSpec := {
{
vNetworkSpecToken := p_vNetworkSpecToken,
genericParams := *
}
}
}
 
template Route m_route_notmatching:=
{
fieldName := ROUTE_E,
routeBody :=
{{
nameAddr :=
{
displayName := omit,
addrSpec :=
template(value) RecordRoute m_recordRoute_notmatching := {
fieldName := RECORD_ROUTE_E,
routeBody := {
{
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,
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
}
},
rrParam := omit
} }
};
}
}
 
template SessionExpires m_se(DeltaSec p_ds):=
{
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:=p_ds,
seParam:=omit
}
template SessionExpires mw_se:=
{
fieldName := SESSION_EXPIRES_E,
deltaSec:=?,
seParam:=omit
}
template Supported m_supported_timer:=
{
deltaSec := ?,
seParam := omit
}
 
template(value) Supported m_supported := {
fieldName := SUPPORTED_E,
optionsTags := {}
}
 
template(value) Supported m_supported_timer
modifies m_supported := {
optionsTags := {"timer"}
}
template Supported m_supported_histinfo:=
{
fieldName := SUPPORTED_E,
}
 
template(value) Supported m_supported_histinfo
modifies m_supported := {
optionsTags := {"histinfo"}
}
template Supported m_supported_fromChange:=
{
fieldName := SUPPORTED_E,
}
 
 
template(value) Supported m_supported_fromChange
modifies m_supported := {
optionsTags := {"from-change"}
}
template To m_To_targetRefreshRequest(template To p_To) :=
{
fieldName := TO_E,
addressField :=
{nameAddr := {
displayName := p_To.addressField.nameAddr.displayName,
addrSpec := p_To.addressField.nameAddr.addrSpec
}},//end addressField
toParams := {{id := c_tagId, paramValue := f_getRndTag()}}
};
template ViaBody m_ViaBody_virtualUEinPCSCF(charstring branch_val,in SipUserProfile p_userprofile) :=
{
sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT),
sentBy:={host:=p_userprofile.contactIpaddr, portField:= p_userprofile.contactPort},
viaParams:={{id :=c_branchId,paramValue :=branch_val}}
}
template ViaBody m_ViaBody_virtual_XCSCF(charstring branch_val,in SipUserProfile p_userprofile) :=
{
}
 
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 := { tokenOrHost := 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.currIpaddr, portField:= p_userprofile.currPort},
viaParams:={{id :=c_branchId,paramValue :=branch_val}}
}
sentBy := {
host := p_userprofile.contactIpaddr,
portField := p_userprofile.contactPort
},
viaParams := {
{
id := c_branchId,
paramValue := {
tokenOrHost := p_branch_val
}
}
}
}
 
template Via m_via_notmatching:=
{
fieldName := VIA_E,
viaBody :=
{{
sentProtocol := valueof(m_SentProtocol("UDP")),
sentBy:={host:="unknown.domain.name", portField:= 10000},
viaParams:={{id :=c_branchId,paramValue :="abcd0000"}}
} }
};
/*
* @desc WWW-Authenticate header field
* @param p_challenge value
*/
template WwwAuthenticate m_wwwAuthenticate (Challenge p_challenge):=
{
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 := { tokenOrHost := "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 WwwAuthenticate mw_wwwAuthenticate (template SemicolonParam_List p_semicolonParam_List):=
{
/**
* @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
}
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 SemicolonParam_List mw_challenge := superset(mw_ck,mw_ik);
// template SemicolonParam_List mw_challenge := {mw_ck,mw_ik};
template GenericParam mw_ck := {"ck", *};
template GenericParam mw_ik := {"ik", *}
/*
* @desc AcceptContact header field
* @param p_acValues value
*/
template AcceptContact m_acceptContact (template SemicolonParam_List p_semicolonParam_List):=
{
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 := omit
) := {
fieldName := ACCEPT_CONTACT_E,
acValues := {{wildcard:=c_WILDCARD, acRcParams := p_semicolonParam_List} // set of GenericParam
}
acValues := {
{
wildcard := c_WILDCARD,
acRcParams := p_semicolonParam_List // set of GenericParam
}
}
}
 
/*
* @desc Authenticate header field
* @param p_challenge value
*/
template AcceptContact mw_acceptContact (template SemicolonParam_List p_semicolonParam_List):=
{
/**
* @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
acValues := {
{
wildcard := c_WILDCARD,
acRcParams := p_semicolonParam_List // set of GenericParam
}
}
}
template SubscriptionState mw_subscriptionState(template charstring p_state) := {
 
template(present) SubscriptionState mw_subscriptionState(
template(present) charstring p_state := ?
) := {
fieldName := SUBSCRIPTION_STATE_E,
subState := p_state,
substateParams := omit
}
//[3455/5.1]
template PAssociatedURI m_pAssociatedURI (template NameAddr p_nameAddr) := {
 
// [3455/5.1 ]
template(value) PAssociatedURI m_pAssociatedURI(
template(value) NameAddr p_nameAddr
) := {
fieldName := P_ASSOCIATED_URI_E,
nameAddrList := {{nameAddr:=p_nameAddr, genericParams:=omit}}
nameAddrList := {
{
nameAddr := p_nameAddr,
genericParams := omit
}
}
}
template SecurityServer mw_securityServer (template SecurityMechanism_List p_securityMechanism_List):= {
fieldName := SECURITY_SERVER_E,
securityMech := p_securityMechanism_List
}
 
template SecurityClient m_securityClient (template SecurityMechanism_List p_securityMechanism_List):= {
fieldName := SECURITY_CLIENT_E,
securityMech := p_securityMechanism_List
}
template SecurityVerify m_securityVerify (template SecurityMechanism_List p_securityMechanism_List):= {
fieldName := SECURITY_VERIFY_E,
securityMech := p_securityMechanism_List
}
} // end group HeaderFieldTemplates
template(present) SecurityServer mw_securityServer(
template(present) SecurityMechanism_List p_securityMechanism_List := ?
) := {
fieldName := SECURITY_SERVER_E,
securityMech := p_securityMechanism_List
}
 
group MessageBodyTemplates {
group XMLTemplates {
template XmlBody m_XmlBody_ConfInfo(template Conference_type p_confInfo) :=
{
conference := p_confInfo
};
template XmlBody m_XmlBody_CW(template Ims_cw p_cw) :=
{
cw := p_cw
};
template XmlBody m_XmlBody_CUG(template Cug p_cug) :=
{
cug := p_cug
};
template XmlBody m_XmlBody_MCID(template Mcid p_mcid) :=
{
mcid := p_mcid
};
template XmlBody m_XmlBody_PSTNTransit(template PSTN_transit p_pstn) :=
{
pstnTransit := p_pstn
};
template XmlBody m_XmlBody_simservs(template Simservs p_simservs) :=
{
simservs := p_simservs
};
template XmlBody m_XmlBody_ACR_ICB(template Incoming_communication_barring p_icb) := {
simservs := {
attr := {},
absServiceGroup_list := {},
extensions := {
elem_list := valueof(p_icb.attr)
}
template(value) SecurityClient m_securityClient(
template(value) SecurityMechanism_List p_securityMechanism_List
) := {
fieldName := SECURITY_CLIENT_E,
securityMech := p_securityMechanism_List
}
};
template XmlBody m_XmlBody_ACR_OCB(template Outgoing_communication_barring p_ocb) := {
simservs := {
attr := {},
absServiceGroup_list := {},
extensions := {
elem_list := valueof(p_ocb.attr)
}
 
template(value) SecurityVerify m_securityVerify(
template(value) SecurityMechanism_List p_securityMechanism_List
) := {
fieldName := SECURITY_VERIFY_E,
securityMech := p_securityMechanism_List
}
};
template XmlBody m_XmlBody_CDIVN(template Comm_div_info_type p_cdivn) :=
{
cdivn := p_cdivn
};
template XmlBody m_XmlBody_Reginfo(template Reginfo p_regInfo) :=
{
regInfo := p_regInfo
};
template MessageBody m_messageBodyXML(template XmlBody p_xmlBody) :=
{
xmlBody := p_xmlBody
};
template Reginfo m_reginfo (template XSDAUX.anyURI p_user):= {
full,
0,
{m_registration(p_user)},
{}
};
template Registration m_registration (template XSDAUX.anyURI p_user):= {
p_user, // XSDAUX.anyURI aor
"a7", // XSDAUX.string id
init, //enumerated {active,init,terminated} state,
{}, // record of Contact contact_list optional,
{} // record of anytype elem_list optional
};
template XmlBody mw_XmlBody_ConfInfo(template Conference_type p_confInfo) :=
{
conference := p_confInfo
};
template XmlBody mw_XmlBody_CUG(template Cug p_cug) :=
{
cug := p_cug
};
template XmlBody mw_XmlBody_MCID(template Mcid p_mcid) :=
{
mcid := p_mcid
};
template XmlBody mw_XmlBody_PSTNTransit(template PSTN_transit p_pstn) :=
{
pstnTransit := p_pstn
};
template XmlBody mw_XmlBody_CDIVN(template Comm_div_info_type p_cdivn) :=
{
cdivn := p_cdivn
};
template XmlBody mw_XmlBody_simservs(template Simservs p_simservs) :=
{
simservs := p_simservs
};
template XmlBody mw_XmlBody_ResourceLists(template Resource_lists p_resourceLists) :=
{
resourceLists := p_resourceLists
};
template XmlBody mw_XmlBody_Reginfo(template Reginfo p_regInfo) :=
{
regInfo := p_regInfo
};
}// end group XMLTemplates
 
group ACR_CBTemplates {
template Incoming_communication_barring m_ICB(template RuleType p_ruleType) :=
{
active := omit,
attr := {},
ruleset := {
{p_ruleType}
template(value) RSeq m_rseq9999 := {
fieldName := RSEQ_E,
responseNum := 9999 // Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
}
}
template Outgoing_communication_barring m_OCB(template(present) RuleType p_ruleType) :=
{
active := omit,
attr := {},
ruleset := {
{p_ruleType}
}
}
template RuleType m_ruleType_actionFalse(template ConditionsType p_condition) :=
{
id := "rule66",
conditions := p_condition,
actions := {elem_list:={"<false/>"}},
transformations := omit
}
 
template ConditionsType m_conditionsType_identity(template(present) charstring p_id, template charstring p_scheme) := {
{
{identity_list := {{{{one := {id := p_id, elem := omit}}}}}}
template(value) Expires m_expires(
template(value) integer p_deltaSec
) := {
fieldName := EXPIRES_E,
deltaSec := int2str(valueof(p_deltaSec))
}
}
} //end group ACR_CBTemplates
 
group CUGTemplates {
template Cug m_CUG (
template CugRequestType p_crt,
template NetworkIdentityType p_nit,
template SixteenbitType p_cibc,
template TwoBitType p_cci
):= {
active := omit,
attr := {},
cugCallOperation := p_crt,
networkIndicator := p_nit,
cugInterlockBinaryCode := p_cibc,
cugCommunicationIndicator :=p_cci
}
template Cug mw_CUG (
template CugRequestType p_crt,
template NetworkIdentityType p_nit,
template SixteenbitType p_cibc,
template TwoBitType p_cci
):= {
active := omit,
attr := ?,
cugCallOperation := p_crt,
networkIndicator := p_nit,
cugInterlockBinaryCode := p_cibc,
cugCommunicationIndicator := p_cci
}
template CugRequestType m_cugReqType(boolean p_outAccessRequest, integer p_cugIndex) :=
{
outgoingAccessRequest := p_outAccessRequest,
cugIndex := p_cugIndex
}
 
template CugRequestType mw_cugReqType(template boolean p_outAccessRequest, template integer p_cugIndex) :=
{
outgoingAccessRequest := p_outAccessRequest,
cugIndex := p_cugIndex
}
}//end group CUGTemplates
} // end group headerFieldTemplates
 
group CWTemplates {
group messageBodyTemplates {
 
template Ims_cw m_CW(template TEmptyType p_cwi) := {
attr := {},
communication_waiting_indication := p_cwi,
elem_list := {}
}
template Ims_cw mw_ims_cw(template TEmptyType p_cwi) := {
attr := ?,
communication_waiting_indication := p_cwi,
elem_list := ?
}
template Cug m_CW2 (
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 Cug mw_CW (
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
}
}//end group CWTemplates
group xmlTemplates {
 
group MCIDTemplates {
template Mcid m_mcid_request_mcidIndicatorTrue :=
{
choice := {
request := {mcidRequestIndicator := bit2str('1'B),
holdingIndicator := bit2str('0'B)}
}
}
template Mcid m_mcid_request_mcidIndicatorTrue_holdIndTrue :=
{
choice := {
request := {mcidRequestIndicator := bit2str('1'B),
holdingIndicator := bit2str('1'B)}
}
}
template Mcid m_mcid_response_mcidIndicatorTrue :=
{
choice := {
response := {mcidResponseIndicator := bit2str('1'B),
holdingProvidedIndicator := bit2str('0'B)}
}
}
template Mcid mw_mcid_request_mcidIndicatorTrue :=
{
choice := {
request := {mcidRequestIndicator := bit2str('1'B),
holdingIndicator := ?}
}
}
template Mcid mw_mcid_response_mcidIndicatorTrue :=
{
choice := {
response := {mcidResponseIndicator := bit2str('1'B),
holdingProvidedIndicator := ?}
}
}
template Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndFalse :=
{
choice := {
response := {mcidResponseIndicator := bit2str('1'B),
holdingProvidedIndicator := bit2str('0'B)}
}
}
template Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndTrue :=
{
choice := {
response := {mcidResponseIndicator := bit2str('1'B),
holdingProvidedIndicator := bit2str('1'B)}
}
}
template(value) XmlBody m_XmlBody_ConfInfo(
template(value) Conference_type p_confInfo
) := {
conference := p_confInfo
}
 
} //end group MCIDTemplates
template(value) XmlBody m_XmlBody_CW(
template(value) Ims_cw p_cw
) := {
cw := p_cw
}
 
group PSTNTemplates {
template PSTN_transit m_PSTN_transit_BC1(template BearerCapabilityType p_bct) :=
{
bearerInfomationElement_list := {p_bct},
highLayerCompatibility_list := {},
lowLayerCompatibility := omit,
progressIndicator_list := {},
display_list := {}
}
template(value) XmlBody m_XmlBody_CUG(
template(value) Cug p_cug
) := {
cug := p_cug
}
 
template PSTN_transit m_PSTN_transit_BC2(template BearerCapabilityType p_bct,
template BearerCapabilityType p_bct2) :=
{
bearerInfomationElement_list := {p_bct, p_bct2},
highLayerCompatibility_list := {},
lowLayerCompatibility := omit,
progressIndicator_list := {},
display_list := {}
}
template(value) XmlBody m_XmlBody_MCID(
template(value) Mcid p_mcid
) := {
mcid := p_mcid
}
 
template PSTN_transit m_PSTN_transit_BC1_HLC1(template BearerCapabilityType p_bct,
template HighLayerCompatibilityType p_hlc) :=
{
bearerInfomationElement_list := {p_bct},
highLayerCompatibility_list := {p_hlc},
lowLayerCompatibility := omit,
progressIndicator_list := {},
display_list := {}
}
template(value) XmlBody m_XmlBody_PSTNTransit(
template(value) PSTN_transit p_pstn
) := {
pstnTransit := p_pstn
}
 
template PSTN_transit m_PSTN_transit_BC1_LLC(template BearerCapabilityType p_bct,
template LowLayerCompatibilityType p_llc) :=
{
bearerInfomationElement_list := {p_bct},
highLayerCompatibility_list := {},
lowLayerCompatibility := p_llc,
progressIndicator_list := {},
display_list := {}
}
template(value) XmlBody m_XmlBody_simservs(
template(value) Simservs p_simservs
) := {
simservs := p_simservs
}
 
template PSTN_transit m_PSTN_transit_BC1_PI1(template BearerCapabilityType p_bct,
template ProgressIndicatorType p_pi1) :=
{
bearerInfomationElement_list := {p_bct},
highLayerCompatibility_list := {},
lowLayerCompatibility := omit,
progressIndicator_list := {p_pi1},
display_list := {}
}
template(value) XmlBody m_XmlBody_ACR_ICB(
template(value) Incoming_communication_barring p_icb
) := {
simservs := {
attr := omit,
absServiceGroup_list := {},
extensions := {
elem_list := valueof(p_icb.attr)
}
}
}
 
template PSTN_transit m_PSTN_transit_BC1_PI2(template BearerCapabilityType p_bct,
template ProgressIndicatorType p_pi1,
template ProgressIndicatorType p_pi2) :=
{
bearerInfomationElement_list := {p_bct},
highLayerCompatibility_list := {},
lowLayerCompatibility := omit,
progressIndicator_list := {p_pi1, p_pi2},
display_list := {}
}
template(value) XmlBody m_XmlBody_ACR_OCB(
template(value) Outgoing_communication_barring p_ocb
) := {
simservs := {
attr := omit,
absServiceGroup_list := {},
extensions := {
elem_list := valueof(p_ocb.attr)
}
}
}
 
template PSTN_transit m_PSTN_transit_BC1_PI3(template BearerCapabilityType p_bct,
template ProgressIndicatorType p_pi1,
template ProgressIndicatorType p_pi2,
template ProgressIndicatorType p_pi3) :=
{
bearerInfomationElement_list := {p_bct},
highLayerCompatibility_list := {},
lowLayerCompatibility := omit,
progressIndicator_list := {p_pi1, p_pi2, p_pi3},
display_list := {}
}
template(value) XmlBody m_XmlBody_CDIVN(
template(value) Comm_div_info_type p_cdivn
) := {
cdivn := p_cdivn
}
 
template PSTN_transit m_PSTN_transit_BC1_HLC2(template BearerCapabilityType p_bct,
template HighLayerCompatibilityType p_hlc1,
template HighLayerCompatibilityType p_hlc2) :=
{
bearerInfomationElement_list := {p_bct},
highLayerCompatibility_list := {p_hlc1, p_hlc2},
lowLayerCompatibility := omit,
progressIndicator_list := {},
display_list := {}
}
template(value) XmlBody m_XmlBody_Reginfo(
template(value) Reginfo p_regInfo
) := {
regInfo := p_regInfo
}
 
template PSTN_transit m_PSTN_transit_BC1_HLC1_PI1(template BearerCapabilityType p_bct,
template HighLayerCompatibilityType p_hlc1,
template ProgressIndicatorType p_pi1) :=
{
bearerInfomationElement_list := {p_bct},
highLayerCompatibility_list := {p_hlc1},
lowLayerCompatibility := omit,
progressIndicator_list := {p_pi1},
display_list := {}
}
template PSTN_transit mw_PSTN_transit_bc(template BearerCapabilityType p_bct,
template BearerCapabilityType p_bct2) :=
{
bearerInfomationElement_list := {p_bct, p_bct2},
highLayerCompatibility_list := {*, *},
lowLayerCompatibility := *,
progressIndicator_list := {*},
display_list := {*}
}
template BearerCapabilityType m_BearerCapabilityType (Bit5 p_InfoTrfCap):= {
bCoctet3 := {codingStandard := bit2str('00'B), //Coding standard = CCITT standardized coding
informationTransferCabability := bit2str(p_InfoTrfCap)},//Information transfer capability
bCoctet4 := {transferMode := bit2str('00'B), //Coding standard = CCITT standardized coding
informationTransferRate := bit2str('10000'B)}, //Information transfer rate = 64 kbit/s
bCoctet4_1 := omit,
bCoctet5 := omit,
bCoctet5a := omit,
bCoctet5bV110 := omit,
bCoctet5bV120 := omit,
bCoctet5c := omit,
bCoctet5d := omit,
bCoctet6 := omit,
bCoctet7 := omit,
bCoctet7a := omit,
bCoctet7b := omit
}
template ProgressIndicatorType m_ProgressIndicatorType (Bit7 p_progDesc) := {
progressOctet3 := {codingStandard := bit2str('00'B),
location := bit2str('0000'B)
},
progressOctet4 := {progressDescription := bit2str(p_progDesc)}
}
template LowLayerCompatibilityType m_LowLayerCompatibilityType (Bit5 p_InfoTrfCap) := {
lLOctet3 := {codingStandard := bit2str('00'B), //Coding standard = CCITT standardized coding
informationTransferCapability := bit2str(p_InfoTrfCap)},//Information transfer capability
lLOctet3a := omit,
lLOctet4 := {transferMode := bit2str('00'B), //Coding standard = CCITT standardized coding
informationTransferRate := bit2str('10000'B)}, //Information transfer rate = 64 kbit/s
lLOctet4_1 := omit,
lLOctet5 := omit,
lLOctet5a := omit,
lLOctet5bV110 := omit,
lLOctet5bV120 := omit,
lLOctet5c := omit,
lLOctet5d := omit,
lLOctet6 := omit,
lLOctet6aHDLC := omit,
lLOctet6aUserSpecific := omit,
lLOctet6b := omit,
lLOctet7 := {layer3Identification := bit2str('11'B),
userInfoLayer3Protocol := bit2str('00010'B)},
lLOctet7aUserSpecific := omit,
lLOctet7aX25 := omit,
lLOctet7bX25 := omit,
lLOctet7c := omit,
lLOctet7aTR9577 := omit,
lLOctet7bTR9577 := omit
}
template HighLayerCompatibilityType m_HighLayerCompatibilityType
(Bit7 p_HLOctet4):= {
hLOctet3 := {
codingStandard :=bit2str('00'B),
interpretation :=bit2str('100'B),
presentationMethod := bit2str('01'B)
},
hLOctet4 := {
highLayerCharacteristics := bit2str(p_HLOctet4)
},
hLOctet4aMaintenance := omit,
hLOctet4Audio := omit
}
template(value) MessageBody m_messageBodyXML(
template(value) XmlBody p_xmlBody
) := {
xmlBody := p_xmlBody
}
 
template BearerCapabilityType mw_BearerCapabilityType (template BCOctet3Type p_BCOctet3Type, template BCOctet4Type p_BCOctet4Type):= {
bCoctet3 := p_BCOctet3Type,
bCoctet4 := p_BCOctet4Type,
bCoctet4_1 := * ,
bCoctet5 := * ,
bCoctet5a := * ,
bCoctet5bV110 := * ,
bCoctet5bV120 := * ,
bCoctet5c := * ,
bCoctet5d := * ,
bCoctet6 := * ,
bCoctet7 := * ,
bCoctet7a := * ,
bCoctet7b := *
}
template(value) Reginfo m_reginfo(
template(value) XSD.AnyURI p_user
) := {
full,
0,
{m_registration(p_user)},
{}
}
 
template BearerCapabilityType mw_BearerCapabilityType_TrfCap (Bit5 p_InfoTrfCap):= {
bCoctet3 := {codingStandard := bit2str('00'B), //Coding standard = CCITT standardized coding
informationTransferCabability := bit2str(p_InfoTrfCap)},//Information transfer capability
bCoctet4 := {transferMode := bit2str('00'B), //Coding standard = CCITT standardized coding
informationTransferRate := bit2str('10000'B)}, //Information transfer rate = 64 kbit/s
bCoctet4_1 := * ,
bCoctet5 := * ,
bCoctet5a := * ,
bCoctet5bV110 := * ,
bCoctet5bV120 := * ,
bCoctet5c := * ,
bCoctet5d := * ,
bCoctet6 := * ,
bCoctet7 := * ,
bCoctet7a := * ,
bCoctet7b := *
}
template(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 ProgressIndicatorType mw_ProgressIndicatorType (template ProgressOctet3Type p_ProgressOctet3Type, template ProgressOctet4Type p_ProgressOctet4Type) := {
progressOctet3 := p_ProgressOctet3Type,
progressOctet4 := p_ProgressOctet4Type
}
template LowLayerCompatibilityType mw_LowLayerCompatibilityType
(template LLOctet3Type p_LLOctet3, template LLOctet4Type p_LLOctet4, template LLOctet7Type p_LLOctet7) := {
lLOctet3 := p_LLOctet3,
lLOctet3a := * ,
lLOctet4 := p_LLOctet4,
lLOctet4_1 := * ,
lLOctet5 := * ,
lLOctet5a := * ,
lLOctet5bV110 := * ,
lLOctet5bV120 := * ,
lLOctet5c := * ,
lLOctet5d := * ,
lLOctet6 := * ,
lLOctet6aHDLC := * ,
lLOctet6aUserSpecific := * ,
lLOctet6b := * ,
lLOctet7 := p_LLOctet7,
lLOctet7aUserSpecific := * ,
lLOctet7aX25 := * ,
lLOctet7bX25 := * ,
lLOctet7c := * ,
lLOctet7aTR9577 := * ,
lLOctet7bTR9577 := *
}
template HighLayerCompatibilityType mw_HighLayerCompatibilityType
(template HLOctet3Type p_HLOctet3, template HLOctet4Type p_HLOctet4):= {
hLOctet3 := p_HLOctet3,
hLOctet4 := p_HLOctet4,
hLOctet4aMaintenance := *,
hLOctet4Audio := *
}
template(present) XmlBody mw_XmlBody_ConfInfo(
template(present) Conference_type p_confInfo := ?
) := {
conference := p_confInfo
}
 
} //end group PSTNTemplates
template(present) XmlBody mw_XmlBody_CUG(
template(present) Cug p_cug := ?
) := {
cug := p_cug
}
 
group CDIVNTemplates {
/* general CDIVN subscription */
template Comm_div_info_type m_CDIVN_sub := {
entity := "comm-div-info",
comm_div_subs_info := {
attr := {},
comm_div_selection_criteria := {
attr := {},
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(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
}
 
} // end grouup CDIVNTemplates
template(present) XmlBody mw_XmlBody_CDIVN(
template(present) Comm_div_info_type p_cdivn := ?
) := {
cdivn := p_cdivn
}
 
group ResourceListsTemplates {
template(present) XmlBody mw_XmlBody_simservs(
template(present) Simservs p_simservs := ?
) := {
simservs := p_simservs
}
 
template Resource_lists m_ResourceList_2Users(
template EntryType p_user1,
template EntryType p_user2
) :=
{
sequence_list := {
{
list := {
name := omit,
attr := {},
display_name := omit,
sequence_list := {
{
choice := {
entry := p_user1
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
 
group acrCbTemplates {
 
template(value) Incoming_communication_barring m_ICB(
template(value) RuleType p_ruleType
) := {
active := omit,
attr := omit,
ruleset := {
{p_ruleType}
}
}
 
template(value) Outgoing_communication_barring m_OCB(
template(value) RuleType p_ruleType
) := {
active := omit,
attr := omit,
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(value) ConditionsType m_conditionsType_identity(
template(value) charstring p_id
) := {
{
{
identity_list := {
{
{
{
one := {
id := p_id,
elem := omit
}
}
}
}
},
{
choice := {
entry := p_user2
}
}
},
elem_list := {}
}
}
}
}
}
template EntryType m_EntryUser(SipUrl p_user) := {
uri :=
p_user.components.sip.userInfo.userOrTelephoneSubscriber & "@" &
p_user.components.sip.hostPort.host,
attr := {},
display_name := omit,
elem_list := {}
}
}// end grouup ResourceListsTemplates
 
group Ims3gppTemplates {
template TIMS3GPP mw_Ims_3gpp_CW := {
version := 1.0,
attr := ?,
choice := {
alternative_service := {
attr := ?,
type_ := ?,
reason := ?,
 
} // end group acr_cbTemplates
 
group cugTemplates {
 
template(value) Cug m_CUG(
template(omit) CugRequestType p_crt := omit,
template(omit) NetworkIdentityType p_nit := omit,
template(omit) SixteenbitType p_cibc := omit,
template(omit) TwobitType p_cci := omit
) := {
active := omit,
attr := omit,
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(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,
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 := ?
}
},
elem_list := ?
}
} // end group Ims3gpp
 
group CONFTemplates {
template booleanXSD boolXSD_true:={bool:=true}
template booleanXSD boolXSD_false:={bool:=false}
template anyAttributes m_emptyAnyAttributes:={}
template urn_ietf_params_xml_ns_conference_info.Media_type m_mediatype_status(template Media_status_type p_status):= {
id:="1",
attr := {},
display_text :=omit,
type_ :=omit,
label_ :=omit,
src_id:=omit,
status:= p_status,
elem_list:={}
}
template Endpoint_type m_endpoint(template charstring p_Uri,template Endpoint_status_type p_epStatus,template Joining_type p_joinMethod, template Disconnection_type p_discMethod, template urn_ietf_params_xml_ns_conference_info.Media_type p_mediastatus):= {
entity:=p_Uri,
state:=full,
attr := {},
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 User_type m_1user (template charstring p_Uri,template Endpoint_type p_endpoint) := {
entity:=p_Uri,
state:=full,
attr := {},
display_text:=omit,
associated_aors:=omit,
roles:=omit,
languages :=omit,
cascaded_focus :=omit,
endpoint_list:={p_endpoint},// optional,
elem_list:={}
}
template Users_type m_users_1user_full(template User_type p_user):={
state:=full,
attr := {},
user_list:={p_user},
elem_list:={}
}
template Users_type m_users_2user_full(template User_type p_user1,template User_type p_user2):={
state:=full,
attr := {},
user_list:={p_user1,p_user2},
elem_list:={}
}
template Conference_state_type m_conference_state(template unsignedInt p_nUsers, boolean p_active, boolean p_locked) := {
attr := {},
user_count:=p_nUsers,
active:=p_active,
locked:=p_locked,
elem_list:= {}
}
} // end group cwTemplates
 
template Conference_type m_ci_cUri_cState_userEntity(template charstring p_cUri, template Conference_state_type p_cState, template Users_type p_users ) := {
entity := p_cUri,
state := full,
version := 1,
attr := {},
conference_description := omit,
host_info := omit,
conference_state := p_cState,
users := p_users,
sidebars_by_ref := omit,
sidebars_by_val := omit,
elem_list := {}
}
template 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 := *,
call_info := *,
elem_list := ?
}
},
elem_list := ?
}
},
elem_list := {}
},
sidebars_by_ref := *,
sidebars_by_val := *,
elem_list := ?
}
}
} // end group MessageBodyTemplates
group MessageTemplates {
group mcidTemplates {
 
group modified_templates {
template(value) Mcid m_mcid_request_mcidIndicatorTrue := {
choice := {
request := {
mcidRequestIndicator := "1",
holdingIndicator := "0"
}
}
}
 
group request_send {
template ACK_Request m_ACK_Request_AS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, template Route p_route, template RecordRoute p_recordRoute ) modifies m_ACK_Request_Base :=
{
msgHeader :=
{
route := p_route,
recordRoute := p_recordRoute
}
}
template ACK_Request m_ACK_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, template Route p_route) modifies m_ACK_Request_Base :=
{
msgHeader :=
{
route := p_route
}
}
template ACK_Request m_ACK_Request_sdp_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via,template MessageBody p_mb, template 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_sdpAplication},
route := p_route
},
messageBody := p_mb
}
template(value) Mcid m_mcid_request_mcidIndicatorTrue_holdIndTrue
modifies m_mcid_request_mcidIndicatorTrue := {
choice := {
request := {
holdingIndicator := "1"
}
}
}
 
template ACK_Request m_ACK_Request_Mime_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via,template MessageBody p_mb, template 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 BYE_Request m_BYE_Request_IMS
( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, template Route p_route, template 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
}
}
template BYE_Request m_BYE_Request_Reason_IMS
( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, template Route p_route, charstring p_cause)
modifies m_BYE_Request_Base
:=
{
msgHeader :=
{
reason := mw_Reason(p_cause),
route := p_route
template(present) Mcid mw_mcid_request_mcidIndicatorTrue
modifies m_mcid_request_mcidIndicatorTrue := {
choice := {
request := {
holdingIndicator := ?
}
}
}
}
template BYE_Request m_BYE_Request_UserToUser_IMS
( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, template Route p_route, template charstring p_U2UData)
modifies m_BYE_Request_Base
:=
{
msgHeader :=
{
route := p_route,
userToUser := m_UserToUserData(p_U2UData)
 
template(value) Mcid m_mcid_response_mcidIndicatorTrue := {
choice := {
response := {
mcidResponseIndicator := "1",
holdingProvidedIndicator := "0"
}
}
}
}
template BYE_Request m_BYE_Request_UE
( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, template Route p_route)
modifies m_BYE_Request_Base
:=
{
msgHeader :=
{
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
//securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
route := p_route
}
}
template CANCEL_Request m_CANCEL_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, template Route p_route) modifies m_CANCEL_Request_Base :=
{
msgHeader :=
{
route := p_route
}
}
template CANCEL_Request m_CANCEL_Request_Reason_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, template Route p_route, integer p_cause) modifies m_CANCEL_Request_Base :=
{
msgHeader :=
{
reason := m_Reason(p_cause),
route := p_route
}
}
template CANCEL_Request m_CANCEL_Request_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, template Route p_route) modifies m_CANCEL_Request_Base :=
{
msgHeader :=
{
route := p_route
}
}
/*
*
* @desc INFO message
*
*/
template INFO_Request m_INFO_Request_IMS
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, template MessageBody p_mb )
modifies m_INFO_Request_Base
:=
{
msgHeader :=
{
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}
},
messageBody := p_mb
}
/*
*
* @desc INFO message
*
*/
template INFO_Request m_INFO_Request_Mime_IMS
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, template MessageBody p_mb )
modifies m_INFO_Request_Base
:=
{
msgHeader :=
{
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart}
},
messageBody := p_mb
}
template INFO_Request m_INFO_Request_Xml_IMS
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, template MessageBody p_mb )
modifies m_INFO_Request_Base
:=
{
msgHeader :=
{
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_xmlAplication}
},
messageBody := p_mb
}
template INVITE_Request m_INVITE_Request_UE
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, Contact p_contact, template Require p_require,
template Route p_route, template Supported p_supported, template MessageBody p_mb )
modifies m_INVITE_Request_Base
:=
{
msgHeader :=
{
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
require := p_require,
route := p_route,
//securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
supported := p_supported
},
messageBody := p_mb
}
template INVITE_Request m_INVITE_Request_noBody_UE
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, Contact p_contact, template Require p_require,
template Route p_route, template Supported p_supported )
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 INVITE_Request m_INVITE_Request_Allow_UE
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, Contact p_contact, template Require p_require,
template Route p_route, template Supported p_supported, template MessageBody p_mb, template LibSip_SIPTypesAndValues.Allow p_allow)
modifies m_INVITE_Request_UE
:=
{
msgHeader :=
{
allow := p_allow
}
}
template INVITE_Request m_INVITE_Request_noBody_Allow_UE
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, Contact p_contact, template Require p_require,
template Route p_route, template Supported p_supported, template LibSip_SIPTypesAndValues.Allow p_allow)
modifies m_INVITE_Request_noBody_UE
:=
{
msgHeader :=
{
allow := p_allow
}
}
/*
*
* @desc INVITE message exchanged at Mw
*
*/
template INVITE_Request m_INVITE_Request_IMS (
SipUrl p_requestUri,
CallId p_callId,
CSeq p_cSeq,
From p_from,
To p_to,
Via p_via,
Contact p_contact,
template Require p_require,
template Route p_route,
template RecordRoute p_recordRoute,
template Supported p_supported,
template PChargingVector p_pChargingVector,
template MessageBody p_mb
) modifies m_INVITE_Request_Base := {
msgHeader := {
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
require := p_require,
pChargingVector := p_pChargingVector,
recordRoute := p_recordRoute,
route := p_route,
supported := p_supported
},
messageBody := p_mb
}
/*
*
* @desc INVITE message exchanged at Mw
*
*/
template INVITE_Request m_INVITE_Request_HistoryInfo_IMS
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, Contact p_contact, template Require p_require,
template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb,
template HistoryInfo p_historyInfo)
modifies m_INVITE_Request_IMS
:=
{
msgHeader :=
{
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
historyInfo := p_historyInfo
}
}
/*
*
* @desc INVITE message exchanged at Mw
*
*/
template INVITE_Request m_INVITE_Request_Mime_IMS
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, Contact p_contact, template Require p_require,
template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb )
modifies m_INVITE_Request_IMS
:=
{
msgHeader :=
{
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart}
}
}
/*
*
* @desc INVITE message exchanged at Mw
*
*/
template INVITE_Request m_INVITE_Request_IMS_noBody
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, Contact p_contact, template Require p_require,
template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector)
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
*
*/
template INVITE_Request m_INVITE_Request_Mime_PAsserted_Privacy_IMS
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, Contact p_contact, template Require p_require,
template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb,
template PAssertedID p_pAssertedID, template Privacy p_privacy )
modifies m_INVITE_Request_IMS
:=
{
msgHeader :=
{
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart},
pAssertedID := p_pAssertedID,
privacy := p_privacy
}
}
/*
*
* @desc INVITE message exchanged at Mw
*
*/
template INVITE_Request m_INVITE_Request_PAsserted_AcceptContact_IMS
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, Contact p_contact, template Require p_require,
template Route p_route, template RecordRoute p_recordRoute, template AcceptContact p_acceptContact, template PAssertedID p_pAssertedID, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb )
modifies m_INVITE_Request_Base
:=
{
msgHeader :=
{
acceptContact := p_acceptContact,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
require := p_require,
pAssertedID := p_pAssertedID,
pChargingVector := p_pChargingVector,
recordRoute := p_recordRoute,
route := p_route,
supported := p_supported
},
messageBody := p_mb
}
/*
*
* @desc INVITE message exchanged at Mw
*
*/
template INVITE_Request m_INVITE_Request_PAsserted_Privacy_IMS
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, Contact p_contact, template Require p_require,
template Route p_route, template RecordRoute p_recordRoute, template PAssertedID p_pAssertedID, template Privacy p_privacy, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb )
modifies m_INVITE_Request_Base
:=
{
msgHeader :=
{
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
require := p_require,
pAssertedID := p_pAssertedID,
pChargingVector := p_pChargingVector,
privacy := p_privacy,
recordRoute := p_recordRoute,
route := p_route,
supported := p_supported
},
messageBody := p_mb
}
 
/*
*
* @desc INVITE message exchanged at Mw
*
*/
template INVITE_Request m_INVITE_Request_PAssertedService_IMS
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, Contact p_contact, template Require p_require,
template Route p_route, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template PAssertedService p_pAssertedService)
modifies m_INVITE_Request_Base
:=
{
msgHeader :=
{
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
require := p_require,
pChargingVector := p_pChargingVector,
route := p_route,
supported := p_supported,
pAssertedService := p_pAssertedService
},
messageBody := p_mb
}
/*
*
* @desc INVITE message exchanged at Mw
*
*/
template INVITE_Request m_INVITE_Request_PEarlyMedia_IMS
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, Contact p_contact, template Require p_require,
template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb )
modifies m_INVITE_Request_Base
:=
{
msgHeader :=
{
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
require := p_require,
pChargingVector := p_pChargingVector,
pEarlyMedia := m_pEarlyMedia_sup,
recordRoute := p_recordRoute,
route := p_route,
supported := p_supported
},
messageBody := p_mb
}
template(present) Mcid mw_mcid_response_mcidIndicatorTrue
modifies m_mcid_response_mcidIndicatorTrue := {
choice := {
response := {
holdingProvidedIndicator := ?
}
}
}
 
template INVITE_Request m_INVITE_Request_PPreferred_UE
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, Contact p_contact, template Require p_require,
template Route p_route, template Supported p_supported, template MessageBody p_mb,template PPreferredID p_pPreferredID )
modifies m_INVITE_Request_UE
:=
{
msgHeader :=
{
pPreferredID := p_pPreferredID
}
}
template(present) Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndFalse
modifies mw_mcid_response_mcidIndicatorTrue := {
choice := {
response := {
holdingProvidedIndicator := "0"
}
}
}
 
template INVITE_Request m_INVITE_Request_PPreferred_Privacy_UE
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, Contact p_contact, template Require p_require,
template Route p_route, template Supported p_supported, template MessageBody p_mb,template PPreferredID p_pPreferredID, template Privacy p_privacy)
modifies m_INVITE_Request_UE
:=
{
msgHeader :=
{
pPreferredID := p_pPreferredID,
privacy := p_privacy
template(present) Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndTrue
modifies mw_mcid_response_mcidIndicatorTrue := {
choice := {
response := {
holdingProvidedIndicator := "1"
}
}
}
}
 
template INVITE_Request m_INVITE_Request_SessionExpires_UE
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, Contact p_contact, template Require p_require,
template Route p_route, template Supported p_supported, template MessageBody p_mb, template SessionExpires p_se)
modifies m_INVITE_Request_Base
:=
{
msgHeader :=
{
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
require := p_require,
route := p_route,
//securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
supported := p_supported,
sessionExpires := p_se
},
messageBody := p_mb
}
template INVITE_Request m_INVITE_Request_minSE_UE
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, Contact p_contact, template Require p_require,
template Route p_route, template Supported p_supported, template MessageBody p_mb, template MinSE p_minSE)
modifies m_INVITE_Request_Base
:=
{
msgHeader :=
{
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
require := p_require,
route := p_route,
//securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
supported := p_supported,
minSE := p_minSE
},
messageBody := p_mb
}
/*
*
* @desc INVITE message exchanged at Mw
*
*/
template INVITE_Request m_INVITE_Request_minSE_IMS
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, Contact p_contact, template Require p_require,
template Route p_route, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template MinSE p_minSE)
modifies m_INVITE_Request_Base
:=
{
msgHeader :=
{
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
require := p_require,
pChargingVector := p_pChargingVector,
route := p_route,
supported := p_supported,
minSE := p_minSE
},
messageBody := p_mb
}
template INVITE_Request m_INVITE_Request_User2UserData_IMS
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, Contact p_contact, template Require p_require,
template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template charstring p_U2UData)
modifies m_INVITE_Request_IMS
:=
{
msgHeader :=
{
userToUser := m_UserToUserData(valueof(p_U2UData))
}
}
template MESSAGE_Request m_MESSAGE_Request_MBody_UE
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, template Require p_require,
template Route p_route, template Supported p_supported, template MessageBody p_messageBody)
modifies m_MESSAGE_Request_Base
:=
{
msgHeader :=
{
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(m_MBody_longPlainText))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText},
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
require := p_require,
route := p_route,
//securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
supported := p_supported
},
messageBody := p_messageBody
}
template MESSAGE_Request m_MESSAGE_Request_NoBody_UE
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, template Require p_require,
template Route p_route, template Supported p_supported)
modifies m_MESSAGE_Request_Base
:=
{
msgHeader :=
{
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
require := p_require,
route := p_route,
supported := p_supported
},
messageBody := omit
} // 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 MESSAGE_Request m_MESSAGE_Request_PCharging_UE
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, template Require p_require,
template Route p_route, template Supported p_supported)
modifies m_MESSAGE_Request_Base
:=
{
msgHeader :=
{
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
pChargingVector := m_pChargingVector_origIoi_fixedValue(PX_IMS_SUT_UE1_HOME_DOMAIN),
require := p_require,
route := p_route,
supported := p_supported
},
messageBody := omit
 
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 MESSAGE_Request m_MESSAGE_Request_PCharging_IMS
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, template Require p_require,
template Route p_route, template Supported p_supported,
template PChargingVector p_pChargingVector)
modifies m_MESSAGE_Request_Base
:=
{
msgHeader :=
{
pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
pChargingVector := p_pChargingVector,
require := p_require,
route := p_route,
supported := p_supported
},
messageBody := omit
 
template(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 MESSAGE_Request m_MESSAGE_Request_PMediaAuth_UE
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, template Require p_require,
template Route p_route, template Supported p_supported)
modifies m_MESSAGE_Request_Base
:=
{
msgHeader :=
{
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
pMediaAuthorization := m_pMediaAuthorization_fixedValue,
require := p_require,
route := p_route,
supported := p_supported
},
messageBody := omit
template(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 MESSAGE_Request m_MESSAGE_Request_PPreferred_UE
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, template Require p_require,
template Route p_route, template Supported p_supported, template PPreferredID p_pPreferredID)
modifies m_MESSAGE_Request_Base
:=
{
msgHeader :=
{
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
pPreferredID := p_pPreferredID,
require := p_require,
route := p_route,
supported := p_supported
},
messageBody := omit
template(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 MESSAGE_Request m_MESSAGE_Request_1300Bytes_UE
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, template Require p_require,
template Route p_route, template Supported p_supported)
modifies m_MESSAGE_Request_Base
:=
{
msgHeader :=
{
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(m_MBody_longPlainText))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText},
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
require := p_require,
route := p_route,
//securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
supported := p_supported
},
messageBody := m_MBody_longPlainText
}
template NOTIFY_Request m_NOTIFY_Request_Xml_IMS_Conference
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, template MessageBody p_mb )
modifies m_NOTIFY_Request_Base
:=
{
msgHeader :=
{
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_xmlAplication},
event := {fieldName:=EVENT_E, eventType:="conference",eventParams:=omit},
subscriptionState:={fieldName:=SUBSCRIPTION_STATE_E, subState:="active",substateParams:=omit},
expires:={fieldName:=EXPIRES_E, deltaSec:="3600"}
},
messageBody := p_mb
}
template NOTIFY_Request m_NOTIFY_Request_Xml_IMS_RegInfo
(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
Via p_via, Contact p_contact, template MessageBody p_mb )
modifies m_NOTIFY_Request_Base
:=
{
msgHeader :=
{
contact := p_contact,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_xmlreginfoAplication},
event := m_Event_reg,
subscriptionState:=m_SubscriptionState_active,
expires:={fieldName:=EXPIRES_E, deltaSec:="3600"}
},
messageBody := p_mb
}
template PRACK_Request m_PRACK_Request_sdp (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, RAck p_RAck, template MessageBody p_mb)
modifies m_PRACK_Request_Base :=
{
requestLine :=
{
requestUri := p_requestUri
},
msgHeader :=
{
callId := p_callId,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "PRACK"},
fromField := p_from,
rAck := p_RAck,
toField := p_to,
via := p_via
},
messageBody := p_mb
}
template PUBLISH_Request m_PUBLISH_Request_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, template Event p_event, template RAck p_RAck, template MessageBody p_mb,template Route p_route)
modifies m_PUBLISH_Request_Base :=
{
requestLine :=
{
requestUri := p_requestUri
},
msgHeader :=
{
callId := p_callId,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText/*c_sdpAplication*/},
cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "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 PUBLISH_Request m_PUBLISH_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, template Event p_event, template RAck p_RAck, template MessageBody p_mb,
template Route p_route,template RecordRoute p_recordRoute,template PChargingVector p_pChargingVector)
modifies m_PUBLISH_Request_Base :=
{
requestLine :=
{
requestUri := p_requestUri
},
msgHeader :=
{
callId := p_callId,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText/*c_sdpAplication*/},
cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "PUBLISH"},
event := p_event,
fromField := p_from,
route := p_route,
recordRoute:= p_recordRoute,
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
pChargingVector := p_pChargingVector,
toField := p_to,
via := p_via
},
messageBody := p_mb
}
/*
*
* @desc REFER message exchanged at Mw
*
*/
template REFER_Request m_REFER_Request_IMS(
SipUrl p_requestUri,
CallId p_callId,
CSeq p_cSeq,
Contact p_contact,
From p_from,
template To p_to,
Via p_via,
template ReferTo p_referTo,
template ReferredBy p_referredBy,
template Require p_require,
template Route p_route,
template RecordRoute p_recordRoute,
template Supported p_supported,
template PChargingVector p_pChargingVector,
template MessageBody p_mb
) modifies m_REFER_Request_Base := {
msgHeader := {
contentLength := {
fieldName := CONTENT_LENGTH_E,
len:= f_MessageBodyLength(valueof(p_mb))
},
contentType := {
fieldName := CONTENT_TYPE_E,
mediaType := c_sdpAplication
},
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 REGISTER_Request m_REGISTER_Request_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template Authorization p_authorization,
template ProxyRequire p_proxyRequire, template Require p_require,
template SecurityClient p_securityClient, template SecurityVerify p_securityVerify, template Supported p_supported)
modifies m_REGISTER_Request_Base :=
{
requestLine :=
{
method := REGISTER_E,
requestUri := p_requestUri
},
msgHeader :=
{
authorization := p_authorization,
callId := p_callId,
contact := p_contact,
cSeq := p_cSeq,
fromField := p_from,
proxyRequire := p_proxyRequire,
require := p_require,
securityClient := p_securityClient,
securityVerify := p_securityVerify,
supported := p_supported,
toField := p_to,
via := p_via
 
}
}
template REGISTER_Request m_REGISTER_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template Authorization p_authorization)
modifies m_REGISTER_Request_Base :=
{
requestLine :=
{
method := REGISTER_E,
requestUri := p_requestUri
},
msgHeader :=
{
authorization := p_authorization,
callId := p_callId,
contact := p_contact,
cSeq := p_cSeq,
fromField := p_from,
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) 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 REGISTER_Request m_REGISTER_Request_IMS_3party (
SipUrl p_requestUri,
CallId p_callId,
CSeq p_cSeq,
From p_from,
To p_to,
Via p_via,
Contact p_contact,
template Authorization p_authorization,
template Path p_path
) modifies m_REGISTER_Request_IMS :=
{
msgHeader :=
{
path := p_path
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 REGISTER_Request m_REGISTER_Request_expires_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template Authorization p_authorization, template DeltaSec p_deltaSec)
modifies m_REGISTER_Request_IMS :=
{
msgHeader :=
{
expires := {fieldName := EXPIRES_E, deltaSec := p_deltaSec}
}
}
template SUBSCRIBE_Request m_SUBSCRIBE_Request_UE (SipUrl p_requestUri, CallId p_callId,
CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template 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 := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
event := m_Event_reg,
expires := m_Expires_600000,
route := p_route
}
}
template SUBSCRIBE_Request m_SUBSCRIBE_Request_mb_UE (SipUrl p_requestUri, CallId p_callId,
CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template MessageBody p_mb) modifies m_SUBSCRIBE_Request_Base :=
{
requestLine :=
{
method := SUBSCRIBE_E,
requestUri := p_requestUri
},
msgHeader :=
{
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
contact := p_contact,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
event := m_Event_reg,
expires := m_Expires_600000
},
messageBody := p_mb
}
template SUBSCRIBE_Request m_SUBSCRIBE_Request_mb_event_UE (SipUrl p_requestUri, CallId p_callId,
CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template MessageBody p_mb, Event p_event, charstring p_contentType) modifies m_SUBSCRIBE_Request_mb_UE :=
{
requestLine :=
{
method := SUBSCRIBE_E,
requestUri := p_requestUri
},
msgHeader :=
{
contentType := {fieldName := CONTENT_TYPE_E, mediaType := p_contentType},
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
contact := p_contact,
cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
event := p_event,
expires := m_Expires_600000
},
messageBody := p_mb
}
template SUBSCRIBE_Request m_SUBSCRIBE_Request_IMS (SipUrl p_requestUri, CallId p_callId,
CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact) modifies m_SUBSCRIBE_Request_Base :=
{
requestLine :=
{
method := SUBSCRIBE_E,
requestUri := p_requestUri
},
msgHeader :=
{
contact := p_contact,
cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
event := m_Event_reg,
expires := m_Expires_600000
}
}
template SUBSCRIBE_Request m_SUBSCRIBE_Request_Event (SipUrl p_requestUri, CallId p_callId,
CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Event p_event) modifies m_SUBSCRIBE_Request_Base :=
{
requestLine :=
{
method := SUBSCRIBE_E,
requestUri := p_requestUri
},
msgHeader :=
{
contact := p_contact,
cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
event := p_event,
expires := m_Expires_600000
}
}
template UPDATE_Request m_UPDATE_Request_fromChange (template CallId p_callId, template From p_from) modifies mw_UPDATE_Request_Base :=
{
msgHeader :=
{
fromField := p_from
}
}
}//end group request_send
group request_receive {
template ACK_Request mw_ACK_Request_noPaccessNetworkInfo (template CallId p_callId)
modifies mw_ACK_Request_Base
:=
{
msgHeader := { pAccessNetworkInfo := omit}
}
template(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 ACK_Request mw_ACK_Request_PchargingVector (template CallId p_callId, template PChargingVector p_pChargingVector)
modifies mw_ACK_Request_Base
:=
{
msgHeader := { pChargingVector := p_pChargingVector}
}
template BYE_Request mw_BYE_Request_noPChargingFunction_UE(template CallId p_callId) modifies mw_BYE_Request_Base
:=
{
msgHeader := {pChargingFunctionAddresses := omit,
pChargingVector := omit}
}
template BYE_Request mw_BYE_Request_via_PChargingVector_UE(template CallId p_callId, template PChargingVector p_pChargingVector, template Via p_via) modifies mw_BYE_Request_Base
:=
{
msgHeader := {pChargingVector := p_pChargingVector,
via := p_via}
}
template BYE_Request mw_BYE_Request_via_UE(template CallId p_callId, template Via p_via) modifies mw_BYE_Request_Base
:=
{
msgHeader := { via := p_via }
}
template BYE_Request mw_BYE_Request_route(template CallId p_callId, template Route p_route) modifies mw_BYE_Request_Base
:=
{
msgHeader := {route := p_route}
}
template INVITE_Request mw_INVITE_Request_noPChargingFunction modifies mw_INVITE_Request_Base
:=
{
msgHeader := {pChargingFunctionAddresses := omit}
}
template INVITE_Request mw_INVITE_Request_PChargingFunction modifies mw_INVITE_Request_Base
:=
{
msgHeader := {pChargingFunctionAddresses := ?}
}
template INVITE_Request mw_INVITE_Request_NoPCharging modifies mw_INVITE_Request_Base
:=
{
msgHeader := {pChargingFunctionAddresses := omit,
pChargingVector := omit}
}
template INVITE_Request mw_INVITE_Request_NoPChargingPreferred modifies mw_INVITE_Request_Base
:=
{
msgHeader := {pChargingFunctionAddresses := omit,
pChargingVector := omit,
pPreferredID := omit}
}
template INVITE_Request mw_INVITE_Request_PAsserted_noPPreferred (template PAssertedID p_pAssertedID)modifies mw_INVITE_Request_Base
:=
{
msgHeader := {pAssertedID := p_pAssertedID,
pPreferredID := omit
}
}
template INVITE_Request mw_INVITE_Request_PAsserted_AcceptContact (template PAssertedID p_pAssertedID, template AcceptContact p_acceptContact) modifies mw_INVITE_Request_Base
:=
{
msgHeader := {pAssertedID := p_pAssertedID,
acceptContact := p_acceptContact
}
}
template INVITE_Request mw_INVITE_Request_RecordRoute_Via (template RecordRoute p_recordRoute, template Via p_via) modifies mw_INVITE_Request_Base
:=
{
msgHeader := {recordRoute := p_recordRoute,
via := p_via}
}
template(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 INVITE_Request mw_INVITE_Request_route (template Route p_route) modifies mw_INVITE_Request_Base
:=
{
msgHeader := {route := p_route}
}
template INVITE_Request mw_INVITE_Request_require (
template Require p_require
) modifies mw_INVITE_Request_Base := {
msgHeader := { require := p_require }
}
template INVITE_Request mw_INVITE_Request_supported (
template Supported p_supported
) modifies mw_INVITE_Request_Base := {
msgHeader := { supported := p_supported }
}
template INVITE_Request mw_INVITE_Request_SessionExpires (template SessionExpires p_sessionExpires) modifies mw_INVITE_Request_Base
:=
{
msgHeader := {sessionExpires := p_sessionExpires}
}
template INVITE_Request mw_INVITE_Request_User2UserData (template charstring p_U2UData) modifies mw_INVITE_Request_Base
:=
{
msgHeader := {userToUser := mw_UserToUserData(p_U2UData)}
}
template INVITE_Request mw_INVITE_Request_IMS (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via) modifies mw_INVITE_Request_Base
:=
{
msgHeader := {
pChargingVector := p_pChargingVector,
recordRoute := p_recordRoute,
route := p_route,
via := p_via
template(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 := "11",
userInfoLayer3Protocol := "00010"
},
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,
comm_div_selection_criteria := {
attr := omit,
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 group 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,
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,
display_name := omit,
elem_list := {}
}
 
} // end group 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 ims3gppTemplates
 
group confTemplates {
 
template(value) XSD.Boolean m_boolXSD_true := true;
template(value) XSD.Boolean m_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,
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 := omit,
template(omit) Endpoint_status_type p_epStatus := omit,
template(omit) Joining_type p_joinMethod := omit,
template(omit) Disconnection_type p_discMethod := omit,
template(value) urn_ietf_params_xml_ns_conference_info.Media_type p_mediastatus
) := {
entity := p_Uri,
state := full,
attr := omit,
display_text := omit,
referred := omit,
status := p_epStatus,
joining_method := p_joinMethod,
joining_info := omit,
disconnection_method := p_discMethod,
disconnection_info := omit,
media_list := {p_mediastatus}, // optional,
call_info := omit,
elem_list := {}
}
 
template(value) User_type m_1user(
template(omit) charstring p_Uri := omit,
template(value) Endpoint_type p_endpoint
) := {
entity := p_Uri,
state := full,
attr := omit,
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,
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,
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,
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 := ?,
call_info := *,
elem_list := ?
}
},
elem_list := ?
}
},
elem_list := ?
},
sidebars_by_ref := *,
sidebars_by_val := *,
elem_list := ?
}
}
}
template INVITE_Request mw_INVITE_Request_IMS_requestLine(template PChargingVector p_pChargingVector,
template RecordRoute p_recordRoute,
template Route p_route, template Via p_via, template SipUrl p_requestUri)
modifies mw_INVITE_Request_Base := {
requestLine :=
{
requestUri := p_requestUri
},
msgHeader := {
pChargingVector := p_pChargingVector,
recordRoute := p_recordRoute,
route := p_route,
via := p_via
}
}
template 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 SipUrl p_requestUri, template PAssertedID p_pAssertedID)
modifies mw_INVITE_Request_Base := {
msgHeader := {pAssertedID := p_pAssertedID, pPreferredID := omit}
}
template INVITE_Request mw_INVITE_Request_IMS_mb (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via) modifies mw_INVITE_Request_Base
:=
{
msgHeader := {
pChargingVector := p_pChargingVector,
recordRoute := p_recordRoute,
route := p_route,
via := p_via
},
messageBody := ?
}
template INVITE_Request mw_INVITE_Request_IMS_cug (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via, template Cug p_cug ) modifies mw_INVITE_Request_Base
:=
{
msgHeader := {
pChargingVector := p_pChargingVector,
recordRoute := p_recordRoute,
route := p_route,
via := p_via
},
messageBody := (mw_MBody_XML(mw_XmlBody_CUG(p_cug)),
mw_MBody_MIMESdpXml(?, mw_XmlBody_CUG(p_cug)))
}
template INVITE_Request mw_INVITE_Request_IMS_noCug (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via ) modifies mw_INVITE_Request_Base
:=
{
msgHeader := {
pChargingVector := p_pChargingVector,
recordRoute := p_recordRoute,
route := p_route,
via := p_via
},
messageBody := (mw_MBody_XML(complement(mw_XmlBody_CUG(?))),
mw_MBody_MIMESdpXml(?, complement(mw_XmlBody_CUG(?)) ))
}
template INVITE_Request mw_INVITE_Request_IMS_pstn (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via, template PSTN_transit p_pstn ) modifies mw_INVITE_Request_Base
:=
{
msgHeader := {
pChargingVector := p_pChargingVector,
recordRoute := p_recordRoute,
route := p_route,
via := p_via
},
messageBody := (mw_MBody_XML(mw_XmlBody_PSTNTransit(p_pstn)),
mw_MBody_MIMESdpXml(?, mw_XmlBody_PSTNTransit(p_pstn)))//m_MBody_PSTN(p_pstn)//PSTN_transit
}
 
/*
*
* @desc Await INVITE using topology hiding
*/
template INVITE_Request mw_INVITE_Request_TH modifies mw_INVITE_Request_Base
:=
{
msgHeader := { pChargingFunctionAddresses := omit,
pChargingVector := omit }
}
template INVITE_Request mw_INVITE_Request_TH_R10 modifies mw_INVITE_Request_Base
:=
{
msgHeader := { pChargingFunctionAddresses := omit }
}
/*
*
* @desc Await INVITE without PAsserted and Privacy
*/
template INVITE_Request mw_INVITE_Request_noPasserted_noPrivacy (template From p_from)
modifies mw_INVITE_Request_Base
:=
{
msgHeader := { fromField := p_from,
} // end group messageBodyTemplates
 
group messageTemplates {
 
group modifiedTemplates {
 
group requestSend {
 
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 := omit
) 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 := omit,
template(omit) RecordRoute p_recordRoute := omit
) 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 := omit
) 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(omit) MessageBody p_mb,
template(omit) Route p_route := omit
) 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 := omit,
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 := omit,
template(value) GenValue 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 := omit,
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 := omit
) modifies m_BYE_Request_Base := {
msgHeader := {
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
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 := omit
) 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 := omit,
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 := omit
) 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 := omit,
template(omit) Route p_route := omit,
template(omit) Supported p_supported := omit,
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 := omit,
template(omit) Route p_route := omit,
template(omit) Supported p_supported := omit
) modifies m_INVITE_Request_Base := {
msgHeader := {
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
require := p_require,
route := p_route,
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 := omit,
template(omit) Route p_route := omit,
template(omit) Supported p_supported := omit,
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 := omit,
template(omit) Route p_route := omit,
template(omit) Supported p_supported := omit,
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 := omit,
template(omit) Route p_route := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(omit) Supported p_supported := omit,
template(omit) PChargingVector p_pChargingVector := omit,
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 := omit,
template(omit) Route p_route := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(omit) Supported p_supported := omit,
template(omit) PChargingVector p_pChargingVector := omit,
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 := omit,
template(omit) Route p_route := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(omit) Supported p_supported := omit,
template(omit) PChargingVector p_pChargingVector := omit,
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 := omit,
template(omit) Route p_route := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(omit) Supported p_supported := omit,
template(omit) PChargingVector p_pChargingVector := omit
) 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 := omit,
template(omit) Route p_route := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(omit) Supported p_supported := omit,
template(omit) PChargingVector p_pChargingVector := omit,
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 := omit,
template(omit) Route p_route := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(value) AcceptContact p_acceptContact,
template(value) PAssertedID p_pAssertedID,
template(omit) Supported p_supported := omit,
template(omit) PChargingVector p_pChargingVector := omit,
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 := omit,
template(omit) Route p_route := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(value) PAssertedID p_pAssertedID,
template(value) Privacy p_privacy,
template(omit) Supported p_supported := omit,
template(omit) PChargingVector p_pChargingVector := omit,
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 := omit,
template(omit) Route p_route := omit,
template(omit) Supported p_supported := omit,
template(omit) PChargingVector p_pChargingVector := omit,
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 := omit,
template(omit) Route p_route := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(omit) Supported p_supported := omit,
template(omit) PChargingVector p_pChargingVector := omit,
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 := omit,
template(omit) Route p_route := omit,
template(omit) Supported p_supported := omit,
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 := omit,
template(omit) Route p_route := omit,
template(omit) Supported p_supported := omit,
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 := omit,
template(omit) Route p_route := omit,
template(omit) Supported p_supported := omit,
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 := omit,
template(omit) Route p_route := omit,
template(omit) Supported p_supported := omit,
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 := omit,
template(omit) Route p_route := omit,
template(omit) Supported p_supported := omit,
template(omit) PChargingVector p_pChargingVector := omit,
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 := omit,
template(omit) Route p_route := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(omit) Supported p_supported := omit,
template(omit) PChargingVector p_pChargingVector := omit,
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 := omit,
template(omit) Route p_route := omit,
template(omit) Supported p_supported := omit,
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,
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 := omit,
template(omit) Route p_route := omit,
template(omit) Supported p_supported := omit
) 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 := omit,
template(omit) Route p_route := omit,
template(omit) Supported p_supported := omit,
template(value) GenValue p_homeDomain
) modifies m_MESSAGE_Request_NoBody_UE := {
msgHeader := {
pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
pChargingVector := m_pChargingVector_origIoi_fixedValue(p_homeDomain)
}
}
 
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 := omit,
template(omit) Route p_route := omit,
template(omit) Supported p_supported := omit,
template(omit) PChargingVector p_pChargingVector := omit
) 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 := omit,
template(omit) Route p_route := omit,
template(omit) Supported p_supported := omit
) 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 := omit,
template(omit) Route p_route := omit,
template(omit) Supported p_supported := omit,
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 := omit,
template(omit) Route p_route := omit,
template(omit) Supported p_supported := omit
) modifies m_MESSAGE_Request_NoBody_UE := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(m_MBody_longPlainText)),
contentType := m_contentType(c_plainText)
},
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 := omit,
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 := omit,
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 := omit,
template(omit) RAck p_RAck := omit,
template(value) MessageBody p_mb,
template(omit) Route p_route := omit
) 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 := omit,
template(omit) RAck p_RAck := omit,
template(value) MessageBody p_mb,
template(omit) Route p_route := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(omit) PChargingVector p_pChargingVector := omit
) 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 := omit,
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 := omit,
template(omit) Require p_require := omit,
template(omit) Route p_route := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(omit) Supported p_supported := omit,
template(omit) PChargingVector p_pChargingVector := omit,
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 := omit,
template(omit) Authorization p_authorization := omit,
template(omit) ProxyRequire p_proxyRequire := omit,
template(omit) Require p_require := omit,
template(omit) SecurityClient p_securityClient := omit,
template(omit) SecurityVerify p_securityVerify := omit,
template(omit) Supported p_supported := omit
) 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 := omit,
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 := omit,
template(omit) Authorization p_authorization := omit,
template(value) charstring p_host,
template(value) integer p_port
) 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(p_host, p_port),
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 := omit,
template(omit) Authorization p_authorization := omit,
template(value) charstring p_host,
template(value) integer p_port,
template(omit) Path p_path := omit
) 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 := omit,
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 := omit,
template(omit) Authorization p_authorization := omit,
template(value) charstring p_host,
template(value) integer p_port,
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 := omit,
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 := omit,
template(omit) Route p_route := omit
) 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 := omit,
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 := omit,
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 := omit
) 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 := omit,
template(value) Event p_event
) modifies m_SUBSCRIBE_Request_IMS := {
msgHeader := {
event := p_event
}
}
 
} // end group requestSend
 
group requestReceive {
 
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
}
}
 
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))
)
}
 
/**
* @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}
}
pPreferredID := omit
}
}
 
 
/*
*
* @desc Await INVITE with PAsserted and Privacy
*/
template INVITE_Request mw_INVITE_Request_PassertedPrivacy (template From p_from, template PAssertedID p_pAssertedID, template Privacy p_privacy)
modifies mw_INVITE_Request_Base
:=
{
msgHeader := {
fromField := p_from,
pAssertedID := p_pAssertedID,
privacy := p_privacy}
}
/*
*
* @desc Await INVITE with PAsserted and Privacy
*/
template INVITE_Request mw_INVITE_Request_Passerted_ifPrivacy (template From p_from, template PAssertedID p_pAssertedID, template Privacy p_privacy)
modifies mw_INVITE_Request_Base
:=
{
msgHeader := {
fromField := p_from,
pAssertedID := p_pAssertedID,
privacy := p_privacy ifpresent}
}
/**
* @desc Await INVITE with PAsserted and Privacy
* @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
*/
template INVITE_Request mw_INVITE_Request_HistoryInfo (template HistoryInfo p_historyInfo)
modifies mw_INVITE_Request_Base
:=
{
msgHeader := {
historyInfo := p_historyInfo}
}
template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunction_UE
modifies mw_MESSAGE_Request_Base
:=
{
msgHeader := { pChargingFunctionAddresses := omit,
pChargingVector := omit}
}
template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunctionPrefId_UE
modifies mw_MESSAGE_Request_Base
:=
{
msgHeader := { pChargingFunctionAddresses := omit,
pChargingVector := omit,
pPreferredID := omit}
}
template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunction_IMS
modifies mw_MESSAGE_Request_Base
:=
{
msgHeader := { pChargingFunctionAddresses := omit,
pChargingVector := omit}
}
template MESSAGE_Request mw_MESSAGE_Request_PAsserted_noPPreferred (template CallId p_callId, template PAssertedID p_pAssertedID)modifies mw_MESSAGE_Request_Base
:=
{
msgHeader := {pAssertedID := p_pAssertedID,
/**
* @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 MESSAGE_Request mw_MESSAGE_Request_route (template CallId p_callId, template Route p_route )modifies mw_MESSAGE_Request_Base
:=
{
msgHeader := {route := p_route
}
}
template(present) MESSAGE_Request mw_MESSAGE_Request_noPchargingFunction_IMS :=
mw_MESSAGE_Request_noPchargingFunction_UE;
 
template MESSAGE_Request mw_MESSAGE_Request_via (template CallId p_callId, template Via p_via )modifies mw_MESSAGE_Request_Base
:=
{
msgHeader := {via := p_via
}
}
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 NOTIFY_Request mw_NOTIFY_Request(
template CallId p_callId,
template charstring p_state,
template charstring p_contentType,
template Event p_event,
template MessageBody p_mb
) modifies mw_NOTIFY_Request_Base := {
msgHeader :=
{
subscriptionState := mw_subscriptionState(p_state),
contentType := {fieldName := CONTENT_TYPE_E, mediaType := p_contentType},
event := p_event
},
messageBody := p_mb
}
template 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 MESSAGE_Request mw_MESSAGE_Request_PchargingVector (template charstring p_id, template charstring p_paramValue)
modifies mw_MESSAGE_Request_Base
:=
{
msgHeader := { pChargingVector := mw_pChargingVector(p_id,p_paramValue)}
}
template MESSAGE_Request mw_MESSAGE_Request_noPaccessNetworkInfo
modifies mw_MESSAGE_Request_Base
:=
{
msgHeader := { pAccessNetworkInfo := omit}
}
template(present) 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 MESSAGE_Request mw_MESSAGE_Request_noPMediaAuthorization
modifies mw_MESSAGE_Request_Base
:=
{
msgHeader := { pMediaAuthorization := omit}
}
template PUBLISH_Request mw_PUBLISH_Request_PchargingVector(template CallId p_callId, template PChargingVector p_pChargingVector) modifies mw_PUBLISH_Request_Base :=
{
msgHeader := { pChargingVector := p_pChargingVector}
}
template(present) 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 REGISTER_Request mw_REGISTER_Request_IMS (template Path p_Path, template PChargingVector p_pChargingVector, template PVisitedNetworkID p_pVisitedNetworkID)
modifies mw_REGISTER_Request_Base
:=
{
msgHeader := { authorization := ?,
path := p_Path,
pChargingVector := p_pChargingVector, //mw_pChargingVector(p_id,p_paramValue)
pVisitedNetworkID := p_pVisitedNetworkID,
require := mw_require_path,
securityClient := omit,
securityVerify := omit
}
}
template(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 REGISTER_Request mw_REGISTER_authorizedRequest_IMS (template Authorization p_authorization)
modifies mw_REGISTER_Request_Base
:=
{
msgHeader := { authorization := p_authorization
}
}
template REGISTER_Request mw_REGISTER_authorizedRequest_wo_securityclient_IMS (template Authorization p_authorization)
modifies mw_REGISTER_Request_Base
:=
{
msgHeader := { authorization := p_authorization,
securityClient := omit
}
}
template REGISTER_Request mw_REGISTER_auth_via_nosecclient_IMS (template Authorization p_authorization, Via p_via )
modifies mw_REGISTER_Request_Base := {
msgHeader := {
authorization := p_authorization,
via := p_via,
securityClient := omit
}
}
template REGISTER_Request mw_REGISTER_authorizedRequest_wo_securityheaders_IMS
modifies mw_REGISTER_Request_Base
:=
{
msgHeader := { securityVerify := omit,
securityClient := omit
}
}
template REGISTER_Request mw_REGISTER_unauthorizedRequest_IMS
modifies mw_REGISTER_Request_Base
:=
{
msgHeader := { authorization := *
}
}
template(present) MESSAGE_Request mw_MESSAGE_Request_PchargingVector(
template(present) charstring p_id := ?,
template GenValue p_paramValue
) modifies mw_MESSAGE_Request_Base := {
msgHeader := {
pChargingVector := mw_pChargingVector(p_id, p_paramValue)
}
}
 
template SUBSCRIBE_Request mw_SUBSCRIBE_Request_IMS (
template From p_from,
template 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 UPDATE_Request mw_UPDATE_Request_fromChange (template CallId p_callId, template From p_from) modifies mw_UPDATE_Request_Base :=
{
msgHeader :=
{
fromField := p_from
}
}
}//end group request_receive
group response_send
{
template Response m_Response_2xxonBYE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
maxForwards := omit
}
}
template(present) MESSAGE_Request mw_MESSAGE_Request_noPaccessNetworkInfo
modifies mw_MESSAGE_Request_Base := {
msgHeader := {
pAccessNetworkInfo := omit
}
}
 
template Response m_Response_onCANCEL (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute)
modifies m_Response_Base:=
{
msgHeader :=
{
//contact := p_contact,
maxForwards := omit//,
//recordRoute := p_recordRoute
}
}
template Response m_Response_18XonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact //mandatory field due to 24 229 rel 7.9
//maxForwards := omit,
//rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
}
}
template Response m_Response_18XonINVITE_AlertInfo (
StatusLine p_statusLine,
CallId p_callId,
CSeq p_cSeq,
From p_from,
To p_to,
Via p_via,
AlertInfo p_alertInfo
) modifies m_Response_Base:= {
msgHeader :=
{
alertInfo := p_alertInfo
}
}
template Response m_Response_18XonINVITE_sdp_require (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact,template MessageBody p_mb,template Require p_require ) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
maxForwards := omit,
require := p_require,
rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
},
messageBody := p_mb
}
template Response m_Response_18XonINVITE_AS (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute ) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
recordRoute := p_recordRoute
}
}
template Response m_Response_18XonINVITE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
maxForwards := omit,
rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
}
}
template(present) MESSAGE_Request mw_MESSAGE_Request_noPMediaAuthorization
modifies mw_MESSAGE_Request_Base := {
msgHeader := {
pMediaAuthorization := omit
}
}
 
template Response m_Response_18XonINVITE_HistoryInfo_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template HistoryInfo p_historyInfo) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
historyInfo := p_historyInfo,
rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
}
}
template Response m_Response_18XonINVITE_PchargingVector (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template PChargingVector p_pChargingVector ) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
pChargingVector := p_pChargingVector
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
}
}
 
}
}
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 Response m_Response_18XonINVITE_pEearlyMedia (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, template PEarlyMedia p_pEarlyMedia ) modifies m_Response_Base:=
{
msgHeader :=
{
pEarlyMedia := p_pEarlyMedia
}
}
template(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 Response m_Response_18XonINVITE_pPreferred_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template PPreferredID p_pPreferredID ) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
maxForwards := omit,
pPreferredID := p_pPreferredID,
rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
}
}
template(present) REGISTER_Request mw_REGISTER_auth_via_nosecclient_IMS(
template(present) Authorization p_authorization := ?,
template(present) 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 Response m_Response_18XonINVITE_pAsserted_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID ) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
maxForwards := omit,
pAssertedID := p_pAssertedID,
rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
}
}
template(present) REGISTER_Request mw_REGISTER_unauthorizedRequest_IMS
modifies mw_REGISTER_Request_Base := {
msgHeader := {
authorization := *
}
}
 
template Response m_Response_18XonINVITE_pAsserted_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID, template Privacy p_privacy) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
maxForwards := omit,
pAssertedID := p_pAssertedID,
privacy := p_privacy,
rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
}
}
template Response m_Response_18XonINVITE_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template Privacy p_privacy) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
maxForwards := omit,
privacy := p_privacy,
rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
}
}
template(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 := *,
pAssertedID := p_pAssertedID,
pChargingVector := p_pChargingVector
}
}
 
template Response m_Response_18XonINVITE_supported_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template Supported p_supported, template Privacy p_privacy) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
maxForwards := omit,
supported := p_supported,
privacy := p_privacy,
rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
}
}
template Response m_Response_18XonINVITE_recordRoute_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
maxForwards := omit,
rSeq := {fieldName:=RSEQ_E, responseNum:= 9999},//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
recordRoute := p_recordRoute//for INVITE response
}
}
template Response m_Response_18XonINVITE_Require (
StatusLine p_statusLine,
CallId p_callId,
CSeq p_cSeq,
From p_from,
To p_to,
Via p_via,
Contact p_contact,
Require p_require
) modifies m_Response_Base:= {
msgHeader :=
{
require := p_require
}
}
template Response m_Response_18XonINVITE_Require_ifpresent (
StatusLine p_statusLine,
CallId p_callId,
CSeq p_cSeq,
From p_from,
To p_to,
Via p_via,
Contact p_contact,
Require p_require
) modifies m_Response_Base:= {
msgHeader :=
{
require := p_require
}
}
template Response m_Response_18XonINVITE_UserToUser (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, template charstring p_U2UData) modifies m_Response_Base:=
{
msgHeader :=
{
userToUser := m_UserToUserData(valueof(p_U2UData))
}
}
template Response m_Response_18XonINVITE_Xml (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact,template MessageBody p_mb ) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_xmlAplication},
maxForwards := omit,
rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
},
messageBody := p_mb
}
template Response m_Response_18XonINVITE_sdp_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact,template MessageBody p_mb ) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
maxForwards := omit,
rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
},
messageBody := p_mb
}
template Response m_Response_18XonINVITE_require_sdp_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, Require p_require, template MessageBody p_mb, template LibSip_SIPTypesAndValues.Allow p_allow ) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
maxForwards := omit,
require := p_require,
rSeq := {fieldName:=RSEQ_E, responseNum:= 9999},//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
allow := p_allow
},
messageBody := p_mb
}
template Response m_Response_2xxonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb)
modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
maxForwards := omit,
recordRoute := p_recordRoute//for INVITE response
},
messageBody := p_mb
}
template Response m_Response_2xxonINVITE_HistoryInfo (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template HistoryInfo p_historyInfo, template MessageBody p_mb)
modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
historyInfo := p_historyInfo,
maxForwards := omit,
recordRoute := p_recordRoute//for INVITE response
},
messageBody := p_mb
}
template Response m_Response_2xxonINVITE_Mime (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb)
modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart},
maxForwards := omit,
recordRoute := p_recordRoute//for INVITE response
},
messageBody := p_mb
}
template Response m_Response_2xxonINVITE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb)
modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
maxForwards := omit,
recordRoute := p_recordRoute//for INVITE response
},
messageBody := p_mb
}
template(present) UPDATE_Request mw_UPDATE_Request_fromChange(
template CallId p_callId,
template(present) From p_from := ?
) modifies mw_UPDATE_Request_Base := {
msgHeader := {
callId := p_callId,
fromField := p_from
}
}
 
template Response m_Response_2xxonINVITE_PchargingVector (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, template Route p_route, template RecordRoute p_recordroute, template MessageBody p_mb, template Contact p_contact, template PChargingVector p_pChargingVector ) modifies m_Response_mbody :=
{
msgHeader :=
{
contact := p_contact,
pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
pChargingVector := p_pChargingVector
} // end group requestReceive
 
}
}
template Response m_Response_2XXonINVITE_pPreferred_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template PPreferredID p_pPreferredID, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
maxForwards := omit,
pPreferredID := p_pPreferredID,
recordRoute := p_recordRoute//for INVITE response
},
messageBody := p_mb
}
group responseSend {
group responseSend1xx {
 
template Response m_Response_2XXonINVITE_pAsserted_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
maxForwards := omit,
pAssertedID := p_pAssertedID,
recordRoute := p_recordRoute//for INVITE response
},
messageBody := p_mb
}
template(value) Response m_Response_18x_Base(
template(value) StatusLine_18x p_statusLine,
template(omit) CallId p_callId := omit,
template(omit) CSeq p_cSeq := omit,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via
) modifies m_Response_Dummy := {
statusLine := p_statusLine,
msgHeader := {
callId := p_callId,
cSeq := p_cSeq,
fromField := p_from,
maxForwards := omit,
toField := p_to,
via := p_via
},
messageBody := omit,
payload := omit
}
 
template Response m_Response_2XXonINVITE_pAsserted_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID, template Privacy p_privacy, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
maxForwards := omit,
pAssertedID := p_pAssertedID,
privacy := p_privacy,
recordRoute := p_recordRoute//for INVITE response
},
messageBody := p_mb
}
template(value) Response m_Response_18XonINVITE(
template(value) StatusLine_18x p_statusLine,
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 := omit
) modifies m_Response_18x_Base := {
msgHeader := {
contact := p_contact // mandatory field due to 24 229 rel 7.9
}
}
 
template Response m_Response_2XXonINVITE_supported_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template Supported p_supported, template Privacy p_privacy, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
maxForwards := omit,
supported := p_supported,
privacy := p_privacy,
recordRoute := p_recordRoute//for INVITE response
},
messageBody := p_mb
}
template Response m_Response_2XXonINVITE_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template Privacy p_privacy, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
maxForwards := omit,
privacy := p_privacy,
recordRoute := p_recordRoute//for INVITE response
},
messageBody := p_mb
}
template Response m_Response_2xxonINVITE_UserToUser (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb, template charstring p_U2UData)
modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
maxForwards := omit,
recordRoute := p_recordRoute,//for INVITE response
userToUser := m_UserToUserData(valueof(p_U2UData))
},
messageBody := p_mb
}
template(value) Response m_Response_18XonINVITE_AlertInfo(
template(value) StatusLine_18x p_statusLine,
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) AlertInfo p_alertInfo
) modifies m_Response_18x_Base := {
msgHeader := {
alertInfo := p_alertInfo
}
}
 
template Response m_Response_2xxonREGISTER_IMS (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, SipUrl p_serviceroute_sip_url, SipUrl p_passociated_uri)
modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
serviceRoute := {fieldName:=SERVICE_ROUTE_E,
routeBody:={{ nameAddr:= {displayName:=omit,addrSpec:=p_serviceroute_sip_url},rrParam:=omit}}},
pAssociatedURI := m_pAssociatedURI({displayName:=omit,addrSpec:=p_passociated_uri}) // PAssociatedURI RFC3455
}
}
template(value) Response m_Response_18XonINVITE_sdp_require(
template(value) StatusLine_18x p_statusLine,
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 := omit,
template(value) MessageBody p_mb,
template(omit) Require p_require := omit
) modifies m_Response_18x_Base := {
msgHeader := {
contact := p_contact,
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication),
require := p_require,
rSeq := m_rseq9999
},
messageBody := p_mb
}
 
template Response m_Response_2xxonSUBSCRIBE_IMS (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact)
modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact
}
}
template(value) Response m_Response_18XonINVITE_AS(
template(value) StatusLine_18x p_statusLine,
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 := omit,
template(omit) RecordRoute p_recordRoute := omit
) modifies m_Response_18x_Base := {
msgHeader := {
contact := p_contact,
recordRoute := p_recordRoute
}
}
 
template Response m_Response_2xxonSUBSCRIBE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact)
modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact
}
}
template(value) Response m_Response_18XonINVITE_UE(
template(value) StatusLine_18x p_statusLine,
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 := omit
) modifies m_Response_18x_Base := {
msgHeader := {
contact := p_contact,
rSeq := m_rseq9999
}
}
 
template Response m_Response_onMESSAGE_IMS(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact
}
}
template(value) Response m_Response_18XonINVITE_HistoryInfo_UE(
template(value) StatusLine_18x p_statusLine,
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 := omit,
template(value) HistoryInfo p_historyInfo
) modifies m_Response_18XonINVITE_UE := {
msgHeader := {
historyInfo := p_historyInfo
}
}
 
template Response m_Response_2xxonMESSAGE_PAccessNetwInfo_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via) modifies m_Response_Base:=
{
msgHeader :=
{
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a
}
}
template(value) Response m_Response_18XonINVITE_PchargingVector(
template(value) StatusLine_18x p_statusLine,
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 := omit,
template(value) PChargingVector p_pChargingVector
) modifies m_Response_18x_Base := {
msgHeader := {
contact := p_contact,
pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
pChargingVector := p_pChargingVector
}
}
 
template Response m_Response_2xxonMESSAGE_PCharging_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, template PChargingVector p_pChargingVector) modifies m_Response_Base:=
{
msgHeader :=
{
pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
pChargingVector := p_pChargingVector
}
}
template(value) Response m_Response_18XonINVITE_pEearlyMedia(
template(value) StatusLine_18x p_statusLine,
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) PEarlyMedia p_pEarlyMedia
) modifies m_Response_18x_Base := {
msgHeader := {
pEarlyMedia := p_pEarlyMedia
}
}
 
template(value) Response m_Response_18XonINVITE_pPreferred_UE(
template(value) StatusLine_18x p_statusLine,
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 := omit,
template(value) PPreferredID p_pPreferredID
) modifies m_Response_18XonINVITE_UE := {
msgHeader := {
pPreferredID := p_pPreferredID
}
}
 
template Response m_Response_2xxonMESSAGE_PCharging_IMS(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, template PChargingVector p_pChargingVector) modifies m_Response_Base:=
{
msgHeader :=
{
pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
pChargingVector := p_pChargingVector
}
}
template Response m_Response_2xxonMESSAGE_PMediaAuth_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via) modifies m_Response_Base:=
{
msgHeader :=
{
pMediaAuthorization := m_pMediaAuthorization_fixedValue
}
}
template Response m_Response_2xxonMESSAGE_pPreferredID_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, template PPreferredID p_pPreferredID) modifies m_Response_Base:=
{
msgHeader :=
{
pPreferredID := p_pPreferredID
}
}
template Response m_Response_2xxonUPDATE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb)
modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
maxForwards := omit,
recordRoute := p_recordRoute
},
messageBody := p_mb
}
template(value) Response m_Response_18XonINVITE_pAsserted_UE(
template(value) StatusLine_18x p_statusLine,
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 := omit,
template(value) PAssertedID p_pAssertedID
) modifies m_Response_18XonINVITE_UE := {
msgHeader := {
pAssertedID := p_pAssertedID
}
}
 
template Response m_Response_3XXonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
maxForwards := omit
}
}
template Response m_Response_4XXonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
maxForwards := omit
}
}
template Response m_Response_4XXonINVITE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, template Contact p_contact ) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
maxForwards := omit
}
}
template Response m_Response_onINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
maxForwards := omit
}
}
template Response m_Response_onINVITE_Reason (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, charstring p_cause) modifies m_Response_Base:=
{
msgHeader :=
{
contact := p_contact,
maxForwards := omit,
reason := mw_Reason(p_cause)
}
}
template Response m_Response_WWWauthenticate_IMS(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
From p_from, To p_to, Via p_via, template WwwAuthenticate p_wwwAuthenticate) modifies m_Response_Base:=
{
msgHeader :=
{
wwwAuthenticate := p_wwwAuthenticate
}
}
}//end group response_send
template(value) Response m_Response_18XonINVITE_pAsserted_privacy_UE(
template(value) StatusLine_18x p_statusLine,
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 := omit,
template(value) PAssertedID p_pAssertedID,
template(value) Privacy p_privacy
) modifies m_Response_18XonINVITE_pAsserted_UE := {
msgHeader := {
privacy := p_privacy
}
}
 
group response_receive
{
template(value) Response m_Response_18XonINVITE_privacy_UE(
template(value) StatusLine_18x p_statusLine,
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 := omit,
template(value) Privacy p_privacy
) modifies m_Response_18XonINVITE_UE := {
msgHeader := {
privacy := p_privacy
}
}
 
template Response mw_Response_200onINVITE_noPChargingVector_UE(template StatusLine p_statusLine, template CallId p_callId,
template CSeq p_cSeq) modifies mw_Response_Base:=
{
statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
msgHeader :=
{
pChargingVector := omit
}
}
template Response mw_Response_200onINVITE_SDP_UE(template StatusLine p_statusLine, template CallId p_callId,
template CSeq p_cSeq) modifies mw_Response_Base:=
{
statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
messageBody := {
sdpMessageBody := ?
}
}
// NOTE STF471: changed order of parameter p_supported and p_privacy to be able to modify from m_Response_18XonINVITE_privacy_UE
template(value) Response m_Response_18XonINVITE_supported_privacy_UE(
template(value) StatusLine_18x p_statusLine,
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 := omit,
template(value) Privacy p_privacy,
template(value) Supported p_supported
) modifies m_Response_18XonINVITE_privacy_UE := {
msgHeader := {
supported := p_supported
}
}
 
template Response mw_Response_2xxonMESSAGE_noPCharging_UE(template StatusLine p_statusLine, template CallId p_callId,
template CSeq p_cSeq) modifies mw_Response_Base:=
{
statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
msgHeader :=
{
pChargingFunctionAddresses := omit,
pChargingVector := omit
}
}
template(value) Response m_Response_18XonINVITE_recordRoute_UE(
template(value) StatusLine_18x p_statusLine,
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 := omit,
template(value) RecordRoute p_recordRoute
) modifies m_Response_18XonINVITE_UE := {
msgHeader := {
recordRoute := p_recordRoute // for INVITE response
}
}
 
template Response mw_Response_2xxonMESSAGE_noPCharging_IMS(template StatusLine p_statusLine, template CallId p_callId,
template CSeq p_cSeq) modifies mw_Response_Base:=
{
statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
msgHeader :=
{
pChargingFunctionAddresses := omit,
pChargingVector := omit
}
}
template(value) Response m_Response_18XonINVITE_Require(
template(value) StatusLine_18x p_statusLine,
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) Require p_require
) modifies m_Response_18x_Base := {
msgHeader := {
require := p_require
}
}
 
// NOTE STF471: removed m_Response_18XonINVITE_Require_ifpresent as it is same as m_Response_18XonINVITE_Require
template(value) Response m_Response_18XonINVITE_UserToUser(
template(value) StatusLine_18x p_statusLine,
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) UserToUser.uuiData p_U2UData
) modifies m_Response_18x_Base := {
msgHeader := {
userToUser := m_UserToUserData(p_U2UData)
}
}
 
template Response mw_Response_2xxonMESSAGE_noPAccessNetworkInfo_IMS(template StatusLine p_statusLine, template CallId p_callId,
template CSeq p_cSeq) modifies mw_Response_Base:=
{
statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
msgHeader :=
{
pAccessNetworkInfo := omit
}
}
template(value) Response m_Response_18XonINVITE_Xml(
template(value) StatusLine_18x p_statusLine,
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 := omit,
template(value) MessageBody p_mb
) modifies m_Response_18XonINVITE_UE := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_xmlApplication)
},
messageBody := p_mb
}
 
template Response mw_Response_2xxonMESSAGE_noPMediaAuthorization_IMS(template StatusLine p_statusLine, template CallId p_callId,
template CSeq p_cSeq) modifies mw_Response_Base:=
{
statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
msgHeader :=
{
pMediaAuthorization := omit
}
}
template(value) Response m_Response_18XonINVITE_sdp_UE(
template(value) StatusLine_18x p_statusLine,
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 := omit,
template(value) MessageBody p_mb
) modifies m_Response_18XonINVITE_Xml := {
msgHeader := {
contentType := m_contentType(c_sdpApplication)
}
}
 
template Response mw_Response_401onREGISTER_securityServer_UE(template StatusLine p_statusLine, template CallId p_callId,
template CSeq p_cSeq) modifies mw_Response_Base:=
{
statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
msgHeader :=
{
securityServer := ?,
wwwAuthenticate := ?
}
}
// NOTE STF471: changed order of parameter p_require and p_mb to be able to modify from m_Response_18XonINVITE_sdp_UE
template(value) Response m_Response_18XonINVITE_require_sdp_UE(
template(value) StatusLine_18x p_statusLine,
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 := omit,
template(value) MessageBody p_mb,
template(omit) Require p_require := omit,
template(omit) LibSip_SIPTypesAndValues.Allow p_allow := omit
) modifies m_Response_18XonINVITE_sdp_UE := {
msgHeader := {
require := p_require,
allow := p_allow
}
}
 
} // end group responseSend1xx
 
group responseSend2xx {
 
template(value) Response m_Response_2xx_Base(
template(value) StatusLine_2xx p_statusLine,
template(omit) CallId p_callId := omit,
template(omit) CSeq p_cSeq := omit,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via
) modifies m_Response_Dummy := {
statusLine := p_statusLine,
msgHeader := {
callId := p_callId,
cSeq := p_cSeq,
fromField := p_from,
maxForwards := omit,
toField := p_to,
via := p_via
},
messageBody := omit,
payload := omit
}
 
template(value) Response m_Response_2xx_ext(
template(value) StatusLine_2xx p_statusLine,
template(omit) CallId p_callId := omit,
template(omit) CSeq p_cSeq := omit,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Route p_route := omit,
template(omit) RecordRoute p_recordroute := omit
) modifies m_Response_2xx_Base := {
msgHeader := {
route := p_route, // f_route(),
recordRoute :=
p_recordroute // f_recordroute()
}
}
template Response mw_Response_SecServer_WWWAuth_UE (template StatusLine p_statusLine, template CallId p_callId,
template CSeq p_cSeq, template SecurityServer p_securityServer, template WwwAuthenticate p_wwwAuthenticate) modifies mw_Response_Base:=
{
statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
msgHeader :=
{
securityServer := p_securityServer,
wwwAuthenticate := p_wwwAuthenticate
}
}
template(value) Response m_Response_2xx_mbody(
template(value) StatusLine_2xx p_statusLine,
template(omit) CallId p_callId := omit,
template(omit) CSeq p_cSeq := omit,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(omit) Route p_route := omit,
template(omit) RecordRoute p_recordroute := omit,
template(value) MessageBody p_mb
) modifies m_Response_2xx_ext := {
msgHeader := {
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication)
},
messageBody := p_mb
}
 
template Response mw_Response_401onREGISTER_WWWauthenticate_IMS(template StatusLine p_statusLine, template CallId p_callId,
template CSeq p_cSeq, template WwwAuthenticate p_wwwAuthenticate) modifies mw_Response_Base:=
{
statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
msgHeader :=
{
wwwAuthenticate := p_wwwAuthenticate
}
}
template(value) Response m_Response_2xxonBYE_UE(
template(value) StatusLine_2xx p_statusLine,
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 := omit
) modifies m_Response_2xx_Base := {
msgHeader := {
contact := p_contact
}
}
 
template Response mw_Response_200onREGISTER_IMS(template StatusLine p_statusLine, template CallId p_callId,
template CSeq p_cSeq, template SipUrl p_ue_uri, template Contact p_contact, template SipUrl p_sut_scscf_uri) modifies mw_Response_Base:=
{
statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
msgHeader :=
{
pAssociatedURI := {fieldName := P_ASSOCIATED_URI_E, nameAddrList:={*,{nameAddr:={displayName:=*,addrSpec:=p_ue_uri},genericParams:=*},*}},
path := ?,
serviceRoute := {fieldName := SERVICE_ROUTE_E, routeBody := {{nameAddr:={displayName:=*,addrSpec:=p_sut_scscf_uri},rrParam:=*}}},
pChargingFunctionAddresses := ?,
pChargingVector := ?,
contact := p_contact
}
}
template Response mw_Response_PpreferredID_PassertedID(template StatusLine p_statusLine, template CallId p_callId,
template CSeq p_cSeq, template PPreferredID p_pPreferredID, template PAssertedID p_pAssertedID) modifies mw_Response_Base:=
{
statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
msgHeader :=
{
pAssertedID := p_pAssertedID,
pPreferredID := p_pPreferredID
}
}
template(value) Response m_Response_2xxonINVITE(
template(value) StatusLine_2xx p_statusLine,
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 := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(value) MessageBody p_mb
) modifies m_Response_2xx_Base := {
msgHeader := {
contact := p_contact,
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication),
recordRoute := p_recordRoute // for INVITE response
},
messageBody := p_mb
}
 
template Response mw_Response_PAsserted_Privacy_History (template StatusLine p_statusLine, template CallId p_callId,
template CSeq p_cSeq, template PAssertedID p_pAssertedID, template Privacy p_privacy, template HistoryInfo p_historyInfo) modifies mw_Response_Base:=
{
statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
msgHeader :=
{
pAssertedID := p_pAssertedID,
privacy := p_privacy,
historyInfo := p_historyInfo
}
}
// NOTE STF471: changed order of parameter p_historyInfo and p_mb to be able to modify from m_Response_2xxonINVITE
template(value) Response m_Response_2xxonINVITE_HistoryInfo(
template(value) StatusLine_2xx p_statusLine,
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 := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(value) MessageBody p_mb,
template(value) HistoryInfo p_historyInfo
) modifies m_Response_2xxonINVITE := {
msgHeader := {
historyInfo := p_historyInfo
}
}
 
template Response mw_Response_PAsserted_ContentType (template StatusLine p_statusLine, template CallId p_callId,
template CSeq p_cSeq, template PAssertedID p_pAssertedID, template ContentType p_contentType) modifies mw_Response_Base:=
{
statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
msgHeader :=
{
pAssertedID := p_pAssertedID,
contentType := p_contentType
}
}
template(value) Response m_Response_2xxonINVITE_Mime(
template(value) StatusLine_2xx p_statusLine,
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 := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(value) MessageBody p_mb
) modifies m_Response_2xxonINVITE := {
msgHeader := {
contentType := m_contentType(c_mimeMultipart)
}
}
 
template Response mw_Response_PchargingVector(template StatusLine p_statusLine, template CallId p_callId,
template CSeq p_cSeq, template PChargingVector p_chargingVector) modifies mw_Response_Base:=
{
statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
msgHeader :=
{
pChargingVector := p_chargingVector // mw_pChargingVector(p_id,p_paramValue)
}
}
template Response mw_Response_PchargingVecFctadrId(template StatusLine p_statusLine, template CallId p_callId,
template CSeq p_cSeq, template PChargingVector p_chargingVector,
template PChargingFunctionAddresses p_chargingFunctionAddresses, template PPreferredID p_preferredID) modifies mw_Response_Base:=
{
statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
msgHeader :=
{
pChargingVector := p_chargingVector, // mw_pChargingVector(p_id,p_paramValue)
pChargingFunctionAddresses := p_chargingFunctionAddresses,
pPreferredID := p_preferredID
}
}
template(value) Response m_Response_2xxonINVITE_UE(
template(value) StatusLine_2xx p_statusLine,
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 := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(value) MessageBody p_mb
) modifies m_Response_2xxonINVITE := {
}
 
template Response mw_Response_PchargingFunctionAddr(template StatusLine p_statusLine, template CallId p_callId,
template CSeq p_cSeq, template PChargingFunctionAddresses p_chargingFunctionAddresses) modifies mw_Response_Base:=
{
statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
msgHeader :=
{
pChargingFunctionAddresses := p_chargingFunctionAddresses
}
}
template(value) Response m_Response_2xxonINVITE_PchargingVector(
template(value) StatusLine_2xx p_statusLine,
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 := omit,
template(omit) RecordRoute p_recordroute := omit,
template(value) MessageBody p_mb,
template(omit) Contact p_contact := omit,
template(value) PChargingVector p_pChargingVector
) modifies m_Response_2xx_mbody := {
msgHeader := {
contact := p_contact,
pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
pChargingVector := p_pChargingVector
}
}
 
} // end response_receive
// NOTE STF471: changed order of parameter p_pPreferredID and p_mb to be able to modify from m_Response_2xxonINVITE
template(value) Response m_Response_2XXonINVITE_pPreferred_UE(
template(value) StatusLine_2xx p_statusLine,
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 := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(value) MessageBody p_mb,
template(value) PPreferredID p_pPreferredID
) modifies m_Response_2xxonINVITE := {
msgHeader := {
pPreferredID := p_pPreferredID
}
}
 
}//end modified_templates
// NOTE STF471: changed order of parameter p_pPreferredID and p_mb to be able to modify from m_Response_2xxonINVITE
template(value) Response m_Response_2XXonINVITE_pAsserted_UE(
template(value) StatusLine_2xx p_statusLine,
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 := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(value) MessageBody p_mb,
template(value) PAssertedID p_pAssertedID
) modifies m_Response_2xxonINVITE := {
msgHeader := {
pAssertedID := p_pAssertedID
}
}
 
}//end Message_templates
// NOTE STF471: changed order of parameter p_pAssertedID/p_privacy and p_mb to be able to modify from m_Response_2XXonINVITE_pAsserted_UE
template(value) Response m_Response_2XXonINVITE_pAsserted_privacy_UE(
template(value) StatusLine_2xx p_statusLine,
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 := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(value) MessageBody p_mb,
template(value) PAssertedID p_pAssertedID,
template(value) Privacy p_privacy
) modifies m_Response_2XXonINVITE_pAsserted_UE := {
msgHeader := {
privacy := p_privacy
}
}
 
// NOTE STF471: changed order of parameter p_privacy and p_mb to be able to modify from m_Response_2xxonINVITE
template(value) Response m_Response_2XXonINVITE_privacy_UE(
template(value) StatusLine_2xx p_statusLine,
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 := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(value) MessageBody p_mb,
template(value) Privacy p_privacy
) modifies m_Response_2xxonINVITE := {
msgHeader := {
privacy := p_privacy
}
}
 
// NOTE STF471: changed order of parameter p_supported/p_privacy and p_mb to be able to modify from m_Response_2XXonINVITE_privacy_UE
template(value) Response m_Response_2XXonINVITE_supported_privacy_UE(
template(value) StatusLine_2xx p_statusLine,
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 := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(value) MessageBody p_mb,
template(value) Privacy p_privacy,
template(value) Supported p_supported
) modifies m_Response_2XXonINVITE_privacy_UE := {
msgHeader := {
supported := p_supported
}
}
 
template(value) Response m_Response_2xxonINVITE_UserToUser(
template(value) StatusLine_2xx p_statusLine,
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 := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(value) MessageBody p_mb,
template(value) UserToUser.uuiData p_U2UData
) modifies m_Response_2xxonINVITE := {
msgHeader := {
userToUser := m_UserToUserData(p_U2UData)
}
}
 
template(value) Response m_Response_2xxonREGISTER_IMS(
template(value) StatusLine_2xx p_statusLine,
template(omit) CallId p_callId := omit,
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 := omit,
template(value) SipUrl p_serviceroute_sip_url,
template(value) SipUrl p_passociated_uri
) modifies m_Response_2xx_Base := {
msgHeader := {
contact := p_contact,
serviceRoute := {
fieldName := SERVICE_ROUTE_E,
routeBody := {
{
nameAddr := {
displayName := omit,
addrSpec := p_serviceroute_sip_url
},
rrParam := omit
}
}
},
pAssociatedURI :=
m_pAssociatedURI(
{
displayName := omit,
addrSpec := p_passociated_uri
}
) // PAssociatedURI RFC3455
}
}
 
template(value) Response m_Response_2xxonSUBSCRIBE_IMS(
template(value) StatusLine_2xx p_statusLine,
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 := omit
) modifies m_Response_2xx_Base := {
msgHeader := {
contact := p_contact
}
}
 
template(value) Response m_Response_2xxonSUBSCRIBE_UE(
template(value) StatusLine_2xx p_statusLine,
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 := omit
) modifies m_Response_2xxonSUBSCRIBE_IMS := {
}
 
template(value) Response m_Response_2xxonMESSAGE_PAccessNetwInfo_UE(
template(value) StatusLine_2xx p_statusLine,
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
) modifies m_Response_2xx_Base := {
msgHeader := {
pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a
}
}
 
template(value) Response m_Response_2xxonMESSAGE_PCharging_UE(
template(value) StatusLine_2xx p_statusLine,
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) PChargingVector p_pChargingVector
) modifies m_Response_2xx_Base := {
msgHeader := {
pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
pChargingVector := p_pChargingVector
}
}
 
template(value) Response m_Response_2xxonMESSAGE_PCharging_IMS(
template(value) StatusLine_2xx p_statusLine,
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) PChargingVector p_pChargingVector
) modifies m_Response_2xxonMESSAGE_PCharging_UE := {
}
 
template(value) Response m_Response_2xxonMESSAGE_PMediaAuth_UE(
template(value) StatusLine_2xx p_statusLine,
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
) modifies m_Response_2xx_Base := {
msgHeader := {
pMediaAuthorization := m_pMediaAuthorization_fixedValue
}
}
 
template(value) Response m_Response_2xxonMESSAGE_pPreferredID_UE(
template(value) StatusLine_2xx p_statusLine,
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) PPreferredID p_pPreferredID
) modifies m_Response_2xx_Base := {
msgHeader := {
pPreferredID := p_pPreferredID
}
}
 
template(value) Response m_Response_2xxonUPDATE(
template(value) StatusLine_2xx p_statusLine,
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 := omit,
template(omit) RecordRoute p_recordRoute := omit,
template(value) MessageBody p_mb
) modifies m_Response_2xx_Base := {
msgHeader := {
contact := p_contact,
contentLength := m_contentLength(f_MessageBodyLength(p_mb)),
contentType := m_contentType(c_sdpApplication),
recordRoute := p_recordRoute
},
messageBody := p_mb
}
 
} // end group responseSend2xx
 
group responseSend3xx {
 
template(value) Response m_Response_3xx_Base(
template(value) StatusLine_3xx p_statusLine,
template(omit) CallId p_callId := omit,
template(omit) CSeq p_cSeq := omit,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via
) modifies m_Response_Dummy := {
statusLine := p_statusLine,
msgHeader := {
callId := p_callId,
cSeq := p_cSeq,
fromField := p_from,
maxForwards := omit,
toField := p_to,
via := p_via
},
messageBody := omit,
payload := omit
}
 
template(value) Response m_Response_3XXonINVITE(
template(value) StatusLine_3xx p_statusLine,
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 := omit
) modifies m_Response_3xx_Base := {
msgHeader := {
contact := p_contact
}
}
 
} // end group responseSend3xx
 
group responseSend4xx {
 
template(value) Response m_Response_4xx_Base(
template(value) StatusLine_4xx p_statusLine,
template(omit) CallId p_callId := omit,
template(omit) CSeq p_cSeq := omit,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via
) modifies m_Response_Dummy := {
statusLine := p_statusLine,
msgHeader := {
callId := p_callId,
cSeq := p_cSeq,
fromField := p_from,
maxForwards := omit,
toField := p_to,
via := p_via
},
messageBody := omit,
payload := omit
}
 
template(value) Response m_Response_4XXonINVITE(
template(value) StatusLine_4xx p_statusLine,
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 := omit
) modifies m_Response_4xx_Base := {
msgHeader := {
contact := p_contact
}
}
 
template(value) Response m_Response_4XXonINVITE_UE(
template(value) StatusLine_4xx p_statusLine,
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 := omit
) modifies m_Response_4xx_Base := {
msgHeader := {
contact := p_contact
}
}
 
} // end group responseSend4xx
 
template(value) Response m_Response_onCANCEL(
template(value) StatusLine p_statusLine,
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
) modifies m_Response_Base := {
}
 
template(value) Response m_Response_onMESSAGE_IMS(
template(value) StatusLine p_statusLine,
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 := omit
) modifies m_Response_Base := {
msgHeader := {
contact := p_contact
}
}
 
template(value) Response m_Response_onINVITE(
template(value) StatusLine p_statusLine,
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 := omit
) modifies m_Response_Base := {
msgHeader := {
contact := p_contact
}
}
 
template(value) Response m_Response_onINVITE_Reason(
template(value) StatusLine p_statusLine,
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 := omit,
template(value) GenValue p_cause
) modifies m_Response_onINVITE := {
msgHeader := {
reason := mw_Reason(p_cause)
}
}
 
template(value) Response m_Response_WWWauthenticate_IMS(
template(value) StatusLine p_statusLine,
template(omit) CallId p_callId := omit,
template(value) CSeq p_cSeq,
template(value) From p_from,
template(value) To p_to,
template(value) Via p_via,
template(value) WwwAuthenticate p_wwwAuthenticate
) modifies m_Response_Base := {
msgHeader := {
wwwAuthenticate := p_wwwAuthenticate
}
}
 
} // end group responseSend
 
group responseReceive {
group responseReceive2xx {
 
// NOTE STF471: removed statusline parameter as it is fixed 200 status code
template(present) Response mw_Response_200onINVITE_noPChargingVector_UE(
template CallId p_callId,
template CSeq p_cSeq
) modifies mw_Response_2xx_Base := {
statusLine := {
sipVersion := c_sipNameVersion,
statusCode := 200,
reasonPhrase := ?
},
msgHeader := {
pChargingVector := omit
}
}
 
// NOTE STF471: removed statusline parameter as it is fixed 200 status code
template(present) Response mw_Response_200onINVITE_SDP_UE(
template CallId p_callId,
template CSeq p_cSeq
) modifies mw_Response_2xx_Base := {
statusLine := {
sipVersion := c_sipNameVersion,
statusCode := 200,
reasonPhrase := ?
},
messageBody := {
sdpMessageBody := ?
}
}
 
// NOTE STF471: removed statusline parameter as it is a 200.299 status code
template(present) Response mw_Response_2xxonMESSAGE_noPCharging_UE(
template CallId p_callId,
template CSeq p_cSeq
) modifies mw_Response_2xx_Base := {
msgHeader := {
pChargingFunctionAddresses := omit,
pChargingVector := omit
}
}
 
// NOTE STF471: removed statusline parameter as it is a 200..299 status code
template(present) Response mw_Response_2xxonMESSAGE_noPCharging_IMS(
template CallId p_callId,
template CSeq p_cSeq
) modifies mw_Response_2xxonMESSAGE_noPCharging_UE := {
}
 
// NOTE STF471: removed statusline parameter as it is a 200..299 status code
template(present) Response mw_Response_2xxonMESSAGE_noPAccessNetworkInfo_IMS(
template CallId p_callId,
template CSeq p_cSeq
) modifies mw_Response_2xx_Base := {
msgHeader := {
pAccessNetworkInfo := omit
}
}
 
// NOTE STF471: removed statusline parameter as it is a 200..299 status code
template(present) Response mw_Response_2xxonMESSAGE_noPMediaAuthorization_IMS(
template CallId p_callId,
template CSeq p_cSeq
) modifies mw_Response_2xx_Base := {
msgHeader := {
pMediaAuthorization := omit
}
}
 
// NOTE STF471: removed statusline parameter as it is a fixed 200 status code
template(present) Response mw_Response_200onREGISTER_IMS(
template CallId p_callId,
template CSeq p_cSeq,
template SipUrl p_ue_uri,
template Contact p_contact,
template SipUrl p_sut_scscf_uri
) modifies mw_Response_2xx_Base := {
statusLine := {
sipVersion := c_sipNameVersion,
statusCode := 200,
reasonPhrase := ?
},
msgHeader := {
pAssociatedURI := {
fieldName := P_ASSOCIATED_URI_E,
nameAddrList := {
*,
{
nameAddr := {
displayName := *,
addrSpec := p_ue_uri
},
genericParams := *
},
*
}
},
path := ?,
serviceRoute := {
fieldName := SERVICE_ROUTE_E,
routeBody := {
{
nameAddr := {
displayName := *,
addrSpec := p_sut_scscf_uri
},
rrParam := *
}
}
},
pChargingFunctionAddresses := ?,
pChargingVector := ?,
contact := p_contact
}
}
 
} // end group responseReceive2xx
 
group responseReceive4xx {
 
// NOTE STF471: removed statusline parameter as it is a fixed 401 status code
template(present) Response mw_Response_401onREGISTER_securityServer_UE(
template CallId p_callId,
template CSeq p_cSeq
) modifies mw_Response_4xx_Base := {
statusLine := {
sipVersion := c_sipNameVersion,
statusCode := 401,
reasonPhrase := ?
},
msgHeader := {
securityServer := ?,
wwwAuthenticate := ?
}
}
 
// NOTE STF471: removed statusline parameter as it is a fixed 400 status code
template(present) Response mw_Response_401onREGISTER_WWWauthenticate_IMS(
template CallId p_callId,
template CSeq p_cSeq,
template(present) WwwAuthenticate p_wwwAuthenticate := ?
) modifies mw_Response_4xx_Base := {
statusLine := {
sipVersion := c_sipNameVersion,
statusCode := 401,
reasonPhrase := ?
},
msgHeader := {
wwwAuthenticate := p_wwwAuthenticate
}
}
 
} // end group responseReceive4xx
 
// NOTE STF471: changed statusline parameter to statusCode parameter
template(present) Response mw_Response_SecServer_WWWAuth_UE(
template(present) StatusLine.statusCode p_statusCode := ?,
template CallId p_callId,
template CSeq p_cSeq,
template(present) SecurityServer p_securityServer := ?,
template WwwAuthenticate p_wwwAuthenticate
) modifies mw_Response_StatusCode_Base := {
msgHeader := {
securityServer := p_securityServer,
wwwAuthenticate := p_wwwAuthenticate
}
}
 
// NOTE STF471: changed statusline parameter to statusCode parameter
template(present) Response mw_Response_PpreferredID_PassertedID(
template(present) StatusLine.statusCode p_statusCode := ?,
template CallId p_callId,
template CSeq p_cSeq,
template(present) PPreferredID p_pPreferredID := ?,
template(present) PAssertedID p_pAssertedID := ?
) modifies mw_Response_StatusCode_Base := {
msgHeader := {
pAssertedID := p_pAssertedID,
pPreferredID := p_pPreferredID
}
}
 
// NOTE STF471: changed statusline parameter to statusCode parameter
template(present) Response mw_Response_PAsserted_Privacy_History(
template(present) StatusLine.statusCode p_statusCode := ?,
template CallId p_callId,
template CSeq p_cSeq,
template(present) PAssertedID p_pAssertedID := ?,
template(present) Privacy p_privacy := ?,
template(present) HistoryInfo p_historyInfo := ?
) modifies mw_Response_StatusCode_Base := {
msgHeader := {
pAssertedID := p_pAssertedID,
privacy := p_privacy,
historyInfo := p_historyInfo
}
}
 
// NOTE STF471: changed statusline parameter to statusCode parameter
template(present) Response mw_Response_PAsserted_ContentType(
template(present) StatusLine.statusCode p_statusCode := ?,
template CallId p_callId,
template CSeq p_cSeq,
template(present) PAssertedID p_pAssertedID := ?,
template(present) ContentType p_contentType := ?
) modifies mw_Response_StatusCode_Base := {
msgHeader := {
pAssertedID := p_pAssertedID,
contentType := p_contentType
}
}
 
// NOTE STF471: changed statusline parameter to statusCode parameter
template(present) Response mw_Response_PchargingVector(
template(present) StatusLine.statusCode p_statusCode := ?,
template CallId p_callId,
template CSeq p_cSeq,
template(present) PChargingVector p_chargingVector := ?
) modifies mw_Response_StatusCode_Base := {
msgHeader := {
pChargingVector := p_chargingVector
}
}
 
// NOTE STF471: changed name from mw_Response_PchargingVecFctadrId
// NOTE STF471: changed statusline parameter to statusCode parameter
template(present) Response mw_Response_PchargingVector_PchargingFunctionAddr_PpreferredID(
template(present) StatusLine.statusCode p_statusCode := ?,
template CallId p_callId,
template CSeq p_cSeq,
template(present) PChargingVector p_chargingVector := ?,
template(present) PChargingFunctionAddresses p_chargingFunctionAddresses := ?,
template(present) PPreferredID p_preferredID := ?
) modifies mw_Response_StatusCode_Base := {
msgHeader := {
pChargingVector := p_chargingVector,
pChargingFunctionAddresses := p_chargingFunctionAddresses,
pPreferredID := p_preferredID
}
}
 
// NOTE STF471: changed statusline parameter to statusCode parameter
template(present) Response mw_Response_PchargingFunctionAddr(
template(present) StatusLine.statusCode p_statusCode := ?,
template CallId p_callId,
template CSeq p_cSeq,
template(present) PChargingFunctionAddresses p_chargingFunctionAddresses := ?
) modifies mw_Response_StatusCode_Base := {
msgHeader := {
pChargingFunctionAddresses := p_chargingFunctionAddresses
}
}
 
} // end group responseReceive
 
} // end group modifiedTemplates
 
} // end group messageTemplates
} // end module LibIms_Templates
/trunk/ttcn/LibIms_Library.ttcn
0,0 → 1,16
/**
* @author STF471
* @version $Id: LibSip_Steps.ttcn 614 2014-07-07 10:01:14Z tepelmann $
* @desc This module provides all modules of the LibIms as public imports.
* Importing this module will automatically import all here listed modules,
* no other LibIms_xxx module import needed in this case.
* This module is part of LibImsV3.
*/
module LibIms_Library {
import from LibIms_Interface all;
import from LibIms_SIPTypesAndValues all;
import from LibIms_Steps all;
import from LibIms_Templates all;
}
/trunk/ttcn/LibIms_SIPTypesAndValues.ttcn
1,96 → 1,65
/*
* @author STF 346, STF366, STF368, STF369, STF450
* @version $Id$
* @desc This module provides the types and constants used by the test component
* for SIP tests.
* This module is part of LibImsV2.
/**
* @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 {
 
module LibIms_SIPTypesAndValues
{
// SipAts
import from LibSip_SDPTypes all;
import from LibSip_XMLTypes all;
group otherTypes {
/**
* @desc StatusLine with status code restricted to 18x
* @remark Used TTCN-3 internally
*/
type record StatusLine_18x {
charstring sipVersion,
integer statusCode (180 .. 189) ,
charstring reasonPhrase
}
 
group Constants
{
/**
* @desc StatusLine with status code restricted to 2xx
* @remark Used TTCN-3 internally
*/
type record StatusLine_2xx {
charstring sipVersion,
integer statusCode (200 .. 299) ,
charstring reasonPhrase
}
 
const integer c_ISUP_HOP_COUNT:=31; //TODO replace this value with appropriate PIXIT parameter
/**
* @desc StatusLine with status code restricted to 3xx
* @remark Used TTCN-3 internally
*/
type record StatusLine_3xx {
charstring sipVersion,
integer statusCode (300 .. 399) ,
charstring reasonPhrase
}
 
// URN scheme (RFC 5031)
// TODO NOTE: this definition is for temporary use
// const charstring c_urnScheme := "urn"; // defined in LibSIPTyypesAndValues
/**
* @desc StatusLine with status code restricted to 4xx
* @remark Used TTCN-3 internally
*/
type record StatusLine_4xx {
charstring sipVersion,
integer statusCode (400 .. 499) ,
charstring reasonPhrase
}
 
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
// number of service profile
const integer c_serviceProfile_EMERGENCY := 911;
const integer c_serviceProfile_EMERGENCY_INVALID := 912;
 
// number of SIPURL identifiers
const integer c_interfaceSIPURL_IMS_SUT_PCSCF1_domain := 1101; // c_interfaceProfile_IMS_SUT_PCSCF1
const integer c_interfaceSIPURL_IMS_SUT_PCSCF1_ip := 1102; // c_interfaceProfile_IMS_SUT_PCSCF1
 
} //end group UserProfileConstants
 
 
} //end group Constants
 
 
group otherTypes{
type record ImsInterfaceProfile
{ /** @desc integer for Port number to exchange SIP messages
*/
integer SUTPort,
 
/** @desc charstring for IP address to exchange SIP messages
*/
charstring SUTIpaddr,
/** @desc charstring for home domain to exchange SIP messages
*/
charstring SUTHomeDomain
}
}
 
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