/* * @author STF 346 * @version $Id$ * @desc This module provides the types used by the test component * for SIP-IMS tests. Module become from STF306 and STF334-336 */ module LibIms_Templates { //LibCommon import from LibCommon_DataStrings all; //LibSip import from LibSip_SIPTypesAndValues all; import from LibSip_SDPTypes all; import from LibSip_Templates all; import from LibSip_Steps all; import from LibSip_PIXITS all; import from LibSip_XMLTypes all; //LibIms import from LibIms_SIPTypesAndValues all; import from LibIms_PIXITS all; template charstring m_international_number_format := pattern "\\+\d+";//pattern "\+\d+"; template NameAddr mw_SipUrl_SUTinterface(charstring p_host, integer p_port) := { displayName := *, addrSpec := { scheme := "sip:", userInfo := *, hostPort := {p_host, p_port}, urlParameters := *, headers := * } } template Addr_Union mw_UE1_Addr_display := {nameAddr:={displayName:=PX_IMS_SUT_UE1_DISPLAY,addrSpec:=?}}; group Subfields{ template SemicolonParam_List mw_semicolonParams_realm (template charstring p_realm) := ?; //superset({"realm",p_realm},{"rand",?},{"autn",?},{"algorithm","AKAv1-MD5"},{"ik",?},{"ck",?}) // ERROR HERE! Superset operation must contain value list - no templates! template SemicolonParam_List m_semicolonParams_language (template charstring p_language):= {{"language",p_language}} template SemicolonParam_List mw_semicolonParams_language (template charstring p_language):= {{"language",p_language}} } group HeaderFieldTemplates{ template MinSE m_minSE(DeltaSec p_ds):= { fieldName := MIN_SE_E, deltaSec:=p_ds, minSeParam:=omit } template PathValue m_pathvalue (SipUrl p_sipUrl):= { nameAddr := {displayName := omit, // optional charstring addrSpec := p_sipUrl // SipUrl }, rrParam := omit } template Path m_path (SipUrl p_sipUrl):= { fieldName := PATH_E, pathValues := { {nameAddr := { displayName := omit, // optional charstring addrSpec := p_sipUrl // SipUrl }, rrParam := omit} } } /* * @desc Path header field expectation with at least one path value * @param p_sipUrl value of the last element in the list of path values */ template Path mw_path (SipUrl p_sipUrl):= { fieldName := PATH_E, pathValues := {*,m_pathvalue(p_sipUrl)} // any number of SipUrl may occur before p_sipUrl } template PAccessNetworkInfo m_pAccessNetworkInfo_IEEE_11a := { fieldName := P_ACCESS_NETWORK_INFO_E, accessType := "IEEE-802.11a", genericParams := {{id:="extension-access-info",paramValue :="192.1.1.20"}} }; template PAssertedService m_pAssertedService (PAssertedServiceValue p_pAssertedServiceValue):= { fieldName := P_ASSERTED_SERVICE_E, pAssertedServiceValue := p_pAssertedServiceValue }; template PChargingFunctionAddresses m_pChargingFunctionAddresses_fixedValue := { fieldName := P_CHARGING_FUNCTION_ADDRESSES_E, chargeAddrParams := {{id:="ccf",paramValue :="192.1.1.1"}, // value is fixed because it is deleted on proxy {id:="ecf",paramValue :="192.1.1.2"}} // value is fixed because it is deleted on proxy }; template PChargingVector m_pChargingVector_fixedValue(charstring p_homeDomain) := { fieldName := P_CHARGING_VECTOR_E, chargeParams := {{id:="icid-value", paramValue :="123abc"}, {id:="icid-generated-at", paramValue :="192.1.1.10"}, {id:="orig-ioi", paramValue := p_homeDomain}} }; template PChargingVector m_pChargingVector_fixedValue1(charstring p_homeDomain) := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { {id:="icid-generated-at", paramValue :="192.1.1.10"}, {id:="orig-ioi", paramValue := p_homeDomain}} }; template PChargingVector mw_pChargingVector(template charstring p_id, template charstring p_paramValue) := { fieldName := P_CHARGING_VECTOR_E, chargeParams := superset({id := valueof(p_id), paramValue := p_paramValue}) }; template PMediaAuthorization m_pMediaAuthorization_fixedValue := { fieldName := P_MEDIA_AUTHORIZATION_E, pMediaAuthorizations := {"A"} // example }; template PEarlyMedia m_pEarlyMedia_sup := {fieldName := P_EARLY_MEDIA_E, em_param := {"supported"}}; template ProxyRequire m_proxyRequire_secAgree := { fieldName := PROXY_REQUIRE_E, optionsTags := {"sec-agree"} }; template PVisitedNetworkID mw_pVisitedNetworkID := { fieldName := P_VISITED_NETWORK_E, vNetWorkSpec := {{vNetworkSpecToken := PX_IMS_SUT_PCSCF_VisitedNetworkID, genericParams := *}} } template RecordRoute m_recordRoute_notmatching:= { fieldName := RECORD_ROUTE_E, routeBody := {{ nameAddr := { displayName := omit, addrSpec := { scheme := c_sipScheme, // contains "sip" userInfo := {userOrTelephoneSubscriber := "unknown", password := omit}, hostPort := { host := "unknown.domain.name", // hostname, IPv4 or IPv6 as a charstring portField := omit }, urlParameters := omit, headers := omit } }, rrParam := omit } } }; template Require m_require_secAgree := { fieldName := REQUIRE_E, optionsTags := {"sec-agree"} }; template Require mw_require_path := { fieldName := REQUIRE_E, optionsTags := superset("path") }; template Route m_route_interface (in ImsInterfaceProfile p_interfaceprofile):= { fieldName := ROUTE_E, routeBody := {{nameAddr := {displayName := omit, addrSpec := {scheme := c_sipScheme, // contains "sip" userInfo := omit, hostPort := {host:=p_interfaceprofile.SUTIpaddr, portField:= p_interfaceprofile.SUTPort}, urlParameters := omit, headers := omit} }, rrParam := omit} }}; template Route m_route_notmatching:= { fieldName := ROUTE_E, routeBody := {{ nameAddr := { displayName := omit, addrSpec := { scheme := c_sipScheme, // contains "sip" userInfo := {userOrTelephoneSubscriber := "unknown", password := omit}, hostPort := { host := "unknown.domain.name", // hostname, IPv4 or IPv6 as a charstring portField := omit }, urlParameters := omit, headers := omit } }, rrParam := omit } } }; template SessionExpires m_se(DeltaSec p_ds):= { fieldName := SESSION_EXPIRES_E, deltaSec:=p_ds, seParam:=omit } template SessionExpires mw_se:= { fieldName := SESSION_EXPIRES_E, deltaSec:=?, seParam:=omit } template Supported m_supported_timer:= { fieldName := SUPPORTED_E, optionsTags := {"timer"} } template To m_To_targetRefreshRequest(template To p_To) := { fieldName := TO_E, addressField := {nameAddr := { displayName := p_To.addressField.nameAddr.displayName, addrSpec := p_To.addressField.nameAddr.addrSpec }},//end addressField toParams := {{id := c_tagId, paramValue := f_getRndTag()}} }; template ViaBody m_ViaBody_virtualUEinPCSCF(charstring branch_val,in SipUserProfile p_userprofile) := { sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT), sentBy:={host:=p_userprofile.contactIpaddr, portField:= p_userprofile.contactPort}, viaParams:={{id :=c_branchId,paramValue :=branch_val}} } template Via m_via_notmatching:= { fieldName := VIA_E, viaBody := {{ sentProtocol := valueof(m_SentProtocol("UDP")), sentBy:={host:="unknown.domain.name", portField:= 10000}, viaParams:={{id :=c_branchId,paramValue :="abcd0000"}} } } }; /* * @desc WWW-Authenticate header field * @param p_challenge value */ template WwwAuthenticate m_wwwAuthenticate (Challenge p_challenge):= { fieldName := WWW_AUTHENTICATE_E, challenge := p_challenge } /* * @desc WWW-Authenticate header field * @param p_challenge value */ template WwwAuthenticate mw_wwwAuthenticate (template SemicolonParam_List p_semicolonParam_List):= { fieldName := WWW_AUTHENTICATE_E, challenge := {digestCln := p_semicolonParam_List // set of GenericParam } } /* * @desc AcceptContact header field * @param p_acValues value */ template AcceptContact m_acceptContact (template SemicolonParam_List p_semicolonParam_List):= { fieldName := ACCEPT_CONTACT_E, acValues := {{wildcard:=c_WILDCARD, acRcParams := p_semicolonParam_List} // set of GenericParam } } /* * @desc Authenticate header field * @param p_challenge value */ template AcceptContact mw_acceptContact (template SemicolonParam_List p_semicolonParam_List):= { fieldName := ACCEPT_CONTACT_E, acValues := {{wildcard:=c_WILDCARD, acRcParams := p_semicolonParam_List} // set of GenericParam } } } // end group HeaderFieldTemplates group MessageBodyTemplates { group XMLTemplates { template XmlBody m_XmlBody_ConfInfo(template Conference_info p_confInfo) := { conferenceInfo := p_confInfo }; template XmlBody m_XmlBody_CUG(template Cug p_cug) := { cug := p_cug }; template XmlBody m_XmlBody_PSTNTransit(template PSTN_transit p_pstn) := { pstnTransit := p_pstn }; template XmlBody mw_XmlBody_ConfInfo(template Conference_info p_confInfo) := { conferenceInfo := p_confInfo }; template XmlBody mw_XmlBody_CUG(template Cug p_cug) := { cug := p_cug }; template XmlBody mw_XmlBody_PSTNTransit(template PSTN_transit p_pstn) := { pstnTransit := p_pstn }; }// end group XMLTemplates group CUGTemplates { template Cug m_CUG (template CugRequestType p_crt, template NetworkIdentityType p_nit, template SixteenbitType p_cibc, template TwoBitType p_cci):= { cugCallOperation := p_crt, networkIndicator := p_nit, cugInterlockBinaryCode := p_cibc, cugCommunicationIndicator :=p_cci } template Cug mw_CUG (template CugRequestType p_crt, template NetworkIdentityType p_nit, template SixteenbitType p_cibc, template TwoBitType p_cci):= { cugCallOperation := p_crt, networkIndicator := p_nit, cugInterlockBinaryCode := p_cibc, cugCommunicationIndicator := p_cci } } group PSTNTemplates { template PSTN_transit m_PSTN_transit(template BearerCapabilityType p_bct, template BearerCapabilityType p_bct2, template HighLayerCompatibilityType p_hlc, template HighLayerCompatibilityType p_hlc2, template LowLayerCompatibilityType p_llc, template ProgressIndicatorType p_pi, template DisplayType p_d) := { BearerInfomationElement := {p_bct, p_bct2}, HighLayerCompatibility := {p_hlc, p_hlc2}, LowLayerCompatibility := p_llc, ProgressIndicator := {p_pi}, Display := {p_d} } template PSTN_transit m_PSTN_transit_2PI(template BearerCapabilityType p_bct, template BearerCapabilityType p_bct2, template HighLayerCompatibilityType p_hlc, template HighLayerCompatibilityType p_hlc2, template LowLayerCompatibilityType p_llc, template ProgressIndicatorType p_pi, template ProgressIndicatorType p_pi2, template DisplayType p_d) := { BearerInfomationElement := {p_bct, p_bct2}, HighLayerCompatibility := {p_hlc, p_hlc2}, LowLayerCompatibility := p_llc, ProgressIndicator := {p_pi, p_pi2}, Display := {p_d} } template PSTN_transit m_PSTN_transit_3PI(template BearerCapabilityType p_bct, template BearerCapabilityType p_bct2, template HighLayerCompatibilityType p_hlc, template HighLayerCompatibilityType p_hlc2, template LowLayerCompatibilityType p_llc, template ProgressIndicatorType p_pi, template ProgressIndicatorType p_pi2, template ProgressIndicatorType p_pi3, template DisplayType p_d) := { BearerInfomationElement := {p_bct, p_bct2}, HighLayerCompatibility := {p_hlc, p_hlc2}, LowLayerCompatibility := p_llc, ProgressIndicator := {p_pi, p_pi2, p_pi3}, Display := {p_d} } template PSTN_transit mw_PSTN_transit_bc(template BearerCapabilityType p_bct, template BearerCapabilityType p_bct2) := { BearerInfomationElement := {p_bct, p_bct2}, HighLayerCompatibility := {*, *}, LowLayerCompatibility := *, ProgressIndicator := {*}, Display := {*} } template BearerCapabilityType m_BearerCapabilityType (template Bit5 p_InfoTrfCap):= { BCoctet3 := {CodingStandard := bit2str('00'B), //Coding standard = CCITT standardized coding InformationTransferCapability := bit2str(p_InfoTrfCap)},//Information transfer capability BCoctet4 := {TransferMode := bit2str('00'B), //Coding standard = CCITT standardized coding InformationTransferRate := bit2str('10000'B)}, //Information transfer rate = 64 kbit/s BCoctet4_1 := omit, BCoctet5 := omit, BCoctet5a := omit, BCoctet5bV110 := omit, BCoctet5bV120 := omit, BCoctet5c := omit, BCoctet5d := omit, BCoctet6 := omit, BCoctet7 := omit, BCoctet7a := omit, BCoctet7b := omit } template ProgressIndicatorType m_ProgressIndicatorType (template Bit7 p_progDesc) := { ProgressOctet3 := {CodingStandard := bit2str('00'B), Location := bit2str('0000'B) }, ProgressOctet4 := {ProgressDescription := bit2str(p_progDesc)} } template LowLayerCompatibilityType m_LowLayerCompatibilityType (template Bit5 p_InfoTrfCap) := { LLOctet3 := {CodingStandard := bit2str('00'B), //Coding standard = CCITT standardized coding InformationTransferCapability := bit2str(p_InfoTrfCap)},//Information transfer capability LLOctet3a := omit, LLOctet4 := {TransferMode := bit2str('00'B), //Coding standard = CCITT standardized coding InformationTransferRate := bit2str('10000'B)}, //Information transfer rate = 64 kbit/s LLOctet4_1 := omit, LLOctet5 := omit, LLOctet5a := omit, LLOctet5bV110 := omit, LLOctet5bV120 := omit, LLOctet5c := omit, LLOctet5d := omit, LLOctet6 := omit, LLOctet6aHDLC := omit, LLOctet6aUserSpecific := omit, LLOctet6b := omit, LLOctet7 := omit, LLOctet7aUserSpecific := omit, LLOctet7aX25 := omit, LLOctet7bX25 := omit, LLOctet7c := omit, LLOctet7aTR9577 := omit, LLOctet7bTR9577 := omit } template HighLayerCompatibilityType m_HighLayerCompatibilityType (template Bit7 p_HLOctet4):= { HLOctet3 := { CodingStandard :=bit2str('00'B), Interpretation :=bit2str('100'B), PresentationMethod := bit2str('01'B) }, HLOctet4 := { HighLayerCharacteristics := bit2str(p_HLOctet4) }, HLOctet4aMaintenance := omit, HLOctet4Audio := omit } template BearerCapabilityType mw_BearerCapabilityType (template BCOctet3Type p_BCOctet3Type, template BCOctet4Type p_BCOctet4Type):= { BCoctet3 := p_BCOctet3Type, BCoctet4 := p_BCOctet4Type, BCoctet4_1 := * , BCoctet5 := * , BCoctet5a := * , BCoctet5bV110 := * , BCoctet5bV120 := * , BCoctet5c := * , BCoctet5d := * , BCoctet6 := * , BCoctet7 := * , BCoctet7a := * , BCoctet7b := * } template BearerCapabilityType mw_BearerCapabilityType_TrfCap (template Bit5 p_InfoTrfCap):= { BCoctet3 := {CodingStandard := bit2str('00'B), //Coding standard = CCITT standardized coding InformationTransferCapability := bit2str(p_InfoTrfCap)},//Information transfer capability BCoctet4 := {TransferMode := bit2str('00'B), //Coding standard = CCITT standardized coding InformationTransferRate := bit2str('10000'B)}, //Information transfer rate = 64 kbit/s BCoctet4_1 := * , BCoctet5 := * , BCoctet5a := * , BCoctet5bV110 := * , BCoctet5bV120 := * , BCoctet5c := * , BCoctet5d := * , BCoctet6 := * , BCoctet7 := * , BCoctet7a := * , BCoctet7b := * } template ProgressIndicatorType mw_ProgressIndicatorType (template ProgressOctet3Type p_ProgressOctet3Type, template ProgressOctet4Type p_ProgressOctet4Type) := { ProgressOctet3 := p_ProgressOctet3Type, ProgressOctet4 := p_ProgressOctet4Type } template LowLayerCompatibilityType mw_LowLayerCompatibilityType (template LLOctet3Type p_LLOctet3, template LLOctet4Type p_LLOctet4, template LLOctet7Type p_LLOctet7) := { LLOctet3 := p_LLOctet3, LLOctet3a := * , LLOctet4 := p_LLOctet4, LLOctet4_1 := * , LLOctet5 := * , LLOctet5a := * , LLOctet5bV110 := * , LLOctet5bV120 := * , LLOctet5c := * , LLOctet5d := * , LLOctet6 := * , LLOctet6aHDLC := * , LLOctet6aUserSpecific := * , LLOctet6b := * , LLOctet7 := p_LLOctet7, LLOctet7aUserSpecific := * , LLOctet7aX25 := * , LLOctet7bX25 := * , LLOctet7c := * , LLOctet7aTR9577 := * , LLOctet7bTR9577 := * } template HighLayerCompatibilityType mw_HighLayerCompatibilityType (template HLOctet3Type p_HLOctet3, template HLOctet4Type p_HLOctet4):= { HLOctet3 := p_HLOctet3, HLOctet4 := p_HLOctet4, HLOctet4aMaintenance := *, HLOctet4Audio := * } } //end group PSTNTemplates } // end group MessageBodyTemplates group MessageTemplates { group modified_templates { group request_send { template BYE_Request m_BYE_Request_IMS ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template Route p_route) modifies m_BYE_Request_Base := { msgHeader := { route := p_route } } template BYE_Request m_BYE_Request_Reason_IMS ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template Route p_route, integer p_cause) modifies m_BYE_Request_Base := { msgHeader := { reason := mw_Reason(p_cause), route := p_route } } template BYE_Request m_BYE_Request_UE ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template Route p_route) modifies m_BYE_Request_Base := { msgHeader := { pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation route := p_route } } template CANCEL_Request m_CANCEL_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template Route p_route) modifies m_CANCEL_Request_Base := { msgHeader := { route := p_route } } template CANCEL_Request m_CANCEL_Request_Reason_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template Route p_route, integer p_cause) modifies m_CANCEL_Request_Base := { msgHeader := { reason := mw_Reason(p_cause), route := p_route } } template CANCEL_Request m_CANCEL_Request_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template Route p_route) modifies m_CANCEL_Request_Base := { msgHeader := { route := p_route } } 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 } /* * * @desc INVITE message exchanged at Mw * */ template INVITE_Request m_INVITE_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Require p_require, template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb ) modifies m_INVITE_Request_Base := { msgHeader := { contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, require := p_require, pChargingVector := p_pChargingVector, recordRoute := p_recordRoute, route := p_route, supported := p_supported }, messageBody := p_mb } /* * * @desc INVITE message exchanged at Mw * */ template INVITE_Request m_INVITE_Request_Mime_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Require p_require, template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb ) modifies m_INVITE_Request_IMS := { msgHeader := { contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart} } } /* * * @desc INVITE message exchanged at Mw * */ template INVITE_Request m_INVITE_Request_PAsserted_AcceptContact_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Require p_require, template Route p_route, template RecordRoute p_recordRoute, template AcceptContact p_acceptContact, template PAssertedID p_pAssertedID, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb ) modifies m_INVITE_Request_Base := { msgHeader := { acceptContact := p_acceptContact, contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, require := p_require, pAssertedID := p_pAssertedID, pChargingVector := p_pChargingVector, recordRoute := p_recordRoute, route := p_route, supported := p_supported }, messageBody := p_mb } /* * * @desc INVITE message exchanged at Mw * */ template INVITE_Request m_INVITE_Request_PAsserted_Privacy_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Require p_require, template Route p_route, template RecordRoute p_recordRoute, template PAssertedID p_pAssertedID, template Privacy p_privacy, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb ) modifies m_INVITE_Request_Base := { msgHeader := { contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, require := p_require, pAssertedID := p_pAssertedID, pChargingVector := p_pChargingVector, privacy := p_privacy, recordRoute := p_recordRoute, route := p_route, supported := p_supported }, messageBody := p_mb } /* * * @desc INVITE message exchanged at Mw * */ template INVITE_Request m_INVITE_Request_PAssertedService_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Require p_require, template Route p_route, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template PAssertedService p_pAssertedService) modifies m_INVITE_Request_Base := { msgHeader := { contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, require := p_require, pChargingVector := p_pChargingVector, route := p_route, supported := p_supported, pAssertedService := p_pAssertedService }, messageBody := p_mb } /* * * @desc INVITE message exchanged at Mw * */ template INVITE_Request m_INVITE_Request_PEarlyMedia_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Require p_require, template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb ) modifies m_INVITE_Request_Base := { msgHeader := { contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, require := p_require, pChargingVector := p_pChargingVector, pEarlyMedia := m_pEarlyMedia_sup, recordRoute := p_recordRoute, route := p_route, supported := p_supported }, messageBody := p_mb } template INVITE_Request m_INVITE_Request_PPreferred_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Require p_require, template Route p_route, template Supported p_supported, template MessageBody p_mb,template PPreferredID p_pPreferredID ) modifies m_INVITE_Request_UE := { msgHeader := { pPreferredID := p_pPreferredID } } template INVITE_Request m_INVITE_Request_PPreferred_Privacy_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Require p_require, template Route p_route, template Supported p_supported, template MessageBody p_mb,template PPreferredID p_pPreferredID, template Privacy p_privacy) modifies m_INVITE_Request_UE := { msgHeader := { pPreferredID := p_pPreferredID, privacy := p_privacy } } template INVITE_Request m_INVITE_Request_SessionExpires_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Require p_require, template Route p_route, template Supported p_supported, template MessageBody p_mb, template SessionExpires p_se) modifies m_INVITE_Request_Base := { msgHeader := { contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, require := p_require, route := p_route, //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation supported := p_supported, sessionExpires := p_se }, messageBody := p_mb } template INVITE_Request m_INVITE_Request_minSE_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Require p_require, template Route p_route, template Supported p_supported, template MessageBody p_mb, template MinSE p_minSE) modifies m_INVITE_Request_Base := { msgHeader := { contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, require := p_require, route := p_route, //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation supported := p_supported, minSE := p_minSE }, messageBody := p_mb } /* * * @desc INVITE message exchanged at Mw * */ template INVITE_Request m_INVITE_Request_minSE_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Require p_require, template Route p_route, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template MinSE p_minSE) modifies m_INVITE_Request_Base := { msgHeader := { contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, require := p_require, pChargingVector := p_pChargingVector, route := p_route, supported := p_supported, minSE := p_minSE }, messageBody := p_mb } template MESSAGE_Request m_MESSAGE_Request_NoBody_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template Require p_require, template Route p_route, template Supported p_supported) modifies m_MESSAGE_Request_Base := { msgHeader := { pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, require := p_require, route := p_route, supported := p_supported }, messageBody := omit } template MESSAGE_Request m_MESSAGE_Request_PCharging_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template Require p_require, template Route p_route, template Supported p_supported) modifies m_MESSAGE_Request_Base := { msgHeader := { pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue, pChargingVector := m_pChargingVector_fixedValue(PX_IMS_SUT_UE1_HOME_DOMAIN), require := p_require, route := p_route, supported := p_supported }, messageBody := omit } template MESSAGE_Request m_MESSAGE_Request_PCharging_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template Require p_require, template Route p_route, template Supported p_supported, template PChargingVector p_pChargingVector) modifies m_MESSAGE_Request_Base := { msgHeader := { pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue, pChargingVector := p_pChargingVector, require := p_require, route := p_route, supported := p_supported }, messageBody := omit } template MESSAGE_Request m_MESSAGE_Request_PMediaAuth_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template Require p_require, template Route p_route, template Supported p_supported) modifies m_MESSAGE_Request_Base := { msgHeader := { pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, pMediaAuthorization := m_pMediaAuthorization_fixedValue, require := p_require, route := p_route, supported := p_supported }, messageBody := omit } template MESSAGE_Request m_MESSAGE_Request_PPreferred_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template Require p_require, template Route p_route, template Supported p_supported, template PPreferredID p_pPreferredID) modifies m_MESSAGE_Request_Base := { msgHeader := { pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, pPreferredID := p_pPreferredID, require := p_require, route := p_route, supported := p_supported }, messageBody := omit } template MESSAGE_Request m_MESSAGE_Request_1300Bytes_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template Require p_require, template Route p_route, template Supported p_supported) modifies m_MESSAGE_Request_Base := { msgHeader := { contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_TextPlainLength(valueof(m_MBody_longPlainText))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText}, pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, require := p_require, route := p_route, //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation supported := p_supported }, messageBody := m_MBody_longPlainText } template REGISTER_Request m_REGISTER_Request_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Authorization p_authorization, template ProxyRequire p_proxyRequire, template Require p_require, template SecurityClient p_securityClient, template SecurityVerify p_securityVerify, template Supported p_supported) modifies m_REGISTER_Request_Base := { requestLine := { method := REGISTER_E, requestUri := p_requestUri }, msgHeader := { authorization := p_authorization, callId := p_callId, contact := p_contact, cSeq := p_cSeq, fromField := p_from, proxyRequire := p_proxyRequire, require := p_require, securityClient := p_securityClient, securityVerify := p_securityVerify, supported := p_supported, toField := p_to, via := p_via } } template REGISTER_Request m_REGISTER_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Authorization p_authorization) modifies m_REGISTER_Request_Base := { requestLine := { method := REGISTER_E, requestUri := p_requestUri }, msgHeader := { authorization := p_authorization, callId := p_callId, contact := p_contact, cSeq := p_cSeq, fromField := p_from, toField := p_to, via := p_via } } template REGISTER_Request m_REGISTER_Request_expires_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Authorization p_authorization, template DeltaSec p_deltaSec) modifies m_REGISTER_Request_IMS := { msgHeader := { expires := {fieldName := EXPIRES_E, deltaSec := p_deltaSec} } } template SUBSCRIBE_Request m_SUBSCRIBE_Request_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact) modifies m_SUBSCRIBE_Request_Base := { requestLine := { method := SUBSCRIBE_E, requestUri := p_requestUri }, msgHeader := { pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, contact := p_contact, cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"}, event := m_Event_reg, expires := m_Expires_600000 } } template SUBSCRIBE_Request m_SUBSCRIBE_Request_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 } } }//end group request_send group request_receive { template ACK_Request mw_ACK_Request_noPaccessNetworkInfo (template CallId p_callId) modifies mw_MESSAGE_Request_Base := { msgHeader := { pAccessNetworkInfo := omit} } template ACK_Request mw_ACK_Request_PchargingVector (template CallId p_callId, template PChargingVector p_pChargingVector) modifies mw_ACK_Request_Base := { msgHeader := { pChargingVector := p_pChargingVector} } template BYE_Request mw_BYE_Request_noPChargingFunction_UE(template CallId p_callId) modifies mw_BYE_Request_Base := { msgHeader := {pChargingFunctionAddresses := omit, pChargingVector := omit} } template BYE_Request mw_BYE_Request_via_PChargingVector_UE(template CallId p_callId, template PChargingVector p_pChargingVector, template Via p_via) modifies mw_BYE_Request_Base := { msgHeader := {pChargingVector := p_pChargingVector, via := p_via} } template INVITE_Request mw_INVITE_Request_noPChargingFunction modifies mw_INVITE_Request_Base := { msgHeader := {pChargingFunctionAddresses := omit} } template INVITE_Request mw_INVITE_Request_PChargingFunction modifies mw_INVITE_Request_Base := { msgHeader := {pChargingFunctionAddresses := ?} } template INVITE_Request mw_INVITE_Request_PAsserted_noPPreferred (template PAssertedID p_pAssertedID)modifies mw_INVITE_Request_Base := { msgHeader := {pAssertedID := p_pAssertedID, pPreferredID := omit } } template INVITE_Request mw_INVITE_Request_PAsserted_AcceptContact (template PAssertedID p_pAssertedID, template AcceptContact p_acceptContact) modifies mw_INVITE_Request_Base := { msgHeader := {pAssertedID := p_pAssertedID, acceptContact := p_acceptContact } } template INVITE_Request mw_INVITE_Request_RecordRoute_Via (template RecordRoute p_recordRoute, template Via p_via) modifies mw_INVITE_Request_Base := { msgHeader := {recordRoute := p_recordRoute, via := p_via} } template INVITE_Request mw_INVITE_Request_route (template Route p_route) modifies mw_INVITE_Request_Base := { msgHeader := {route := p_route} } template INVITE_Request mw_INVITE_Request_SessionExpires (template SessionExpires p_sessionExpires) modifies mw_INVITE_Request_Base := { msgHeader := {sessionExpires := p_sessionExpires} } template INVITE_Request mw_INVITE_Request_IMS (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via) modifies mw_INVITE_Request_Base := { msgHeader := { pChargingVector := p_pChargingVector, recordRoute := p_recordRoute, route := p_route, via := p_via } } template INVITE_Request mw_INVITE_Request_IMS_mb (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via) modifies mw_INVITE_Request_Base := { msgHeader := { pChargingVector := p_pChargingVector, recordRoute := p_recordRoute, route := p_route, via := p_via }, messageBody := ? } template INVITE_Request mw_INVITE_Request_IMS_pstn (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via, template PSTN_transit p_pstn ) modifies mw_INVITE_Request_Base := { msgHeader := { pChargingVector := p_pChargingVector, recordRoute := p_recordRoute, route := p_route, via := p_via }, messageBody := (mw_MBody_XML(mw_XmlBody_PSTNTransit(p_pstn)), mw_MBody_MIMESdpXml(?, mw_XmlBody_PSTNTransit(p_pstn)))//m_MBody_PSTN(p_pstn)//PSTN_transit } /* * * @desc Await INVITE using topology hiding */ template INVITE_Request mw_INVITE_Request_TH modifies mw_INVITE_Request_Base := { msgHeader := { pChargingFunctionAddresses := omit, pChargingVector := omit} } /* * * @desc Await INVITE without PAsserted and Privacy */ template INVITE_Request mw_INVITE_Request_noPasserted_noPrivacy (template From p_from) modifies mw_INVITE_Request_Base := { msgHeader := { fromField := p_from, pAssertedID := omit, pPreferredID := omit} } /* * * @desc Await INVITE with PAsserted and Privacy */ template INVITE_Request mw_INVITE_Request_PassertedPrivacy (template From p_from, template PAssertedID p_pAssertedID, template Privacy p_privacy) modifies mw_INVITE_Request_Base := { msgHeader := { fromField := p_from, pAssertedID := p_pAssertedID, privacy := p_privacy} } /* * * @desc Await INVITE with PAsserted and Privacy */ template INVITE_Request mw_INVITE_Request_Passerted_ifPrivacy (template From p_from, template PAssertedID p_pAssertedID, template Privacy p_privacy) modifies mw_INVITE_Request_Base := { msgHeader := { fromField := p_from, pAssertedID := p_pAssertedID, privacy := p_privacy ifpresent} } template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunction_UE (template CallId p_callId) modifies mw_MESSAGE_Request_Base := { msgHeader := { pChargingFunctionAddresses := omit, pChargingVector := omit} } template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunction_IMS (template CallId p_callId) modifies mw_MESSAGE_Request_Base := { msgHeader := { pChargingFunctionAddresses := omit, pChargingVector := omit} } template MESSAGE_Request mw_MESSAGE_Request_PAsserted_noPPreferred (template CallId p_callId, template PAssertedID p_pAssertedID)modifies mw_MESSAGE_Request_Base := { msgHeader := {pAssertedID := p_pAssertedID, pPreferredID := omit } } template MESSAGE_Request mw_MESSAGE_Request_PchargingVector (template CallId p_callId,template charstring p_id, template charstring p_paramValue) modifies mw_MESSAGE_Request_Base := { msgHeader := { pChargingVector := mw_pChargingVector(p_id,p_paramValue)} } template MESSAGE_Request mw_MESSAGE_Request_noPaccessNetworkInfo (template CallId p_callId) modifies mw_MESSAGE_Request_Base := { msgHeader := { pAccessNetworkInfo := omit} } template MESSAGE_Request mw_MESSAGE_Request_noPMediaAuthorization (template CallId p_callId) modifies mw_MESSAGE_Request_Base := { msgHeader := { pMediaAuthorization := omit} } template PUBLISH_Request mw_PUBLISH_Request_PchargingVector(template CallId p_callId, template PChargingVector p_pChargingVector) modifies mw_PUBLISH_Request_Base := { msgHeader := { pChargingVector := p_pChargingVector} } template REGISTER_Request mw_REGISTER_Request_IMS (template Path p_Path, template PChargingVector p_pChargingVector, template PVisitedNetworkID p_pVisitedNetworkID) modifies mw_REGISTER_Request_Base := { msgHeader := { authorization := ?, path := p_Path, pChargingVector := p_pChargingVector, //mw_pChargingVector(p_id,p_paramValue) pVisitedNetworkID := p_pVisitedNetworkID, require := mw_require_path, securityClient := omit, securityVerify := omit } } template REGISTER_Request mw_REGISTER_authorizedRequest_IMS (template Authorization p_authorization) modifies mw_REGISTER_Request_Base := { msgHeader := { authorization := p_authorization } } template REGISTER_Request mw_REGISTER_authorizedRequest_wo_securityclient_IMS (template Authorization p_authorization) modifies mw_REGISTER_Request_Base := { msgHeader := { authorization := p_authorization, securityClient := omit } } template REGISTER_Request mw_REGISTER_authorizedRequest_wo_securityheaders_IMS modifies mw_REGISTER_Request_Base := { msgHeader := { securityVerify := omit, securityClient := omit } } template REGISTER_Request mw_REGISTER_unauthorizedRequest_IMS modifies mw_REGISTER_Request_Base := { msgHeader := { authorization := omit } } template SUBSCRIBE_Request mw_SUBSCRIBE_Request_IMS (template From p_from, To p_to, template PAssertedID p_pAssertedID, template PChargingVector p_pChargingVector) modifies mw_SUBSCRIBE_Request_Base := { requestLine := { method := SUBSCRIBE_E }, msgHeader := { fromField := p_from, toField := p_to, event := m_Event_reg, pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, pChargingVector := p_pChargingVector } } }//end group request_receive group response_send { template Response m_Response_2xxonBYE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:= { msgHeader := { contact := p_contact, maxForwards := omit } } template Response m_Response_onCANCEL (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute) modifies m_Response_Base:= { msgHeader := { //contact := p_contact, maxForwards := omit//, //recordRoute := p_recordRoute } } template Response m_Response_18XonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:= { msgHeader := { //contact := p_contact, //maxForwards := omit, //rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 } } template Response m_Response_18XonINVITE_sdp_require (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact,template MessageBody p_mb,template Require p_require ) modifies m_Response_Base:= { msgHeader := { contact := p_contact, contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, maxForwards := omit, require := p_require, rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 }, messageBody := p_mb } template Response m_Response_18XonINVITE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:= { msgHeader := { contact := p_contact, maxForwards := omit, rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 } } template Response m_Response_18XonINVITE_PchargingVector (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via ) modifies m_Response_Base:= { msgHeader := { pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue, pChargingVector := m_pChargingFunctionAddresses_fixedValue } } template Response m_Response_18XonINVITE_pEearlyMedia (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template PEarlyMedia p_pEarlyMedia ) modifies m_Response_Base:= { msgHeader := { pEarlyMedia := p_pEarlyMedia } } template Response m_Response_18XonINVITE_pPreferred_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template PPreferredID p_pPreferredID ) modifies m_Response_Base:= { msgHeader := { contact := p_contact, maxForwards := omit, pPreferredID := p_pPreferredID, rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 } } template Response m_Response_18XonINVITE_pAsserted_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID ) modifies m_Response_Base:= { msgHeader := { contact := p_contact, maxForwards := omit, pAssertedID := p_pAssertedID, rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 } } template Response m_Response_18XonINVITE_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_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_2xxonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:= { msgHeader := { contact := p_contact, contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, maxForwards := omit, recordRoute := p_recordRoute//for INVITE response }, messageBody := p_mb } template Response m_Response_2xxonINVITE_Mime (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:= { msgHeader := { contact := p_contact, contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart}, maxForwards := omit, recordRoute := p_recordRoute//for INVITE response }, messageBody := p_mb } template Response m_Response_2xxonINVITE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:= { msgHeader := { contact := p_contact, contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, maxForwards := omit, recordRoute := p_recordRoute//for INVITE response }, messageBody := p_mb } template Response m_Response_2xxonINVITE_PchargingVector (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via,MessageBody p_mb ) modifies m_Response_mbody := { msgHeader := { pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue, pChargingVector := m_pChargingFunctionAddresses_fixedValue } } template Response m_Response_2XXonINVITE_pPreferred_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template PPreferredID p_pPreferredID, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:= { msgHeader := { contact := p_contact, contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, maxForwards := omit, pPreferredID := p_pPreferredID, recordRoute := p_recordRoute//for INVITE response }, messageBody := p_mb } template Response m_Response_2XXonINVITE_pAsserted_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:= { msgHeader := { contact := p_contact, contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, maxForwards := omit, pAssertedID := p_pAssertedID, recordRoute := p_recordRoute//for INVITE response }, messageBody := p_mb } template Response m_Response_2xxonREGISTER_IMS (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, SipUrl p_serviceroute_sip_url) modifies m_Response_Base:= { msgHeader := { contact := p_contact, serviceRoute := {fieldName:=SERVICE_ROUTE_E, routeBody:={{ nameAddr:= {displayName:=omit,addrSpec:=p_serviceroute_sip_url},rrParam:=omit}}} } } template Response m_Response_2xxonSUBSCRIBE_IMS (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact) modifies m_Response_Base:= { msgHeader := { contact := p_contact } } template Response m_Response_2xxonSUBSCRIBE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact) modifies m_Response_Base:= { msgHeader := { contact := p_contact } } template Response m_Response_onMESSAGE_IMS(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact) modifies m_Response_Base:= { statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, msgHeader := { contact := p_contact } } template Response m_Response_2xxonMESSAGE_PAccessNetwInfo_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via) modifies m_Response_Base:= { statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, msgHeader := { pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a } } template Response m_Response_2xxonMESSAGE_PCharging_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template PChargingVector p_pChargingVector) modifies m_Response_Base:= { statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, msgHeader := { pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue, pChargingVector := m_pChargingFunctionAddresses_fixedValue } } template Response m_Response_2xxonMESSAGE_PCharging_IMS(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template PChargingVector p_pChargingVector) modifies m_Response_Base:= { statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, msgHeader := { pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue, pChargingVector := p_pChargingVector } } template Response m_Response_2xxonMESSAGE_PMediaAuth_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via) modifies m_Response_Base:= { statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, msgHeader := { pMediaAuthorization := m_pMediaAuthorization_fixedValue } } template Response m_Response_2xxonMESSAGE_pPreferredID_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template PPreferredID p_pPreferredID) modifies m_Response_Base:= { statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, msgHeader := { pPreferredID := p_pPreferredID } } template Response m_Response_2xxonUPDATE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:= { msgHeader := { contact := p_contact, contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, maxForwards := omit, recordRoute := p_recordRoute }, messageBody := p_mb } template Response m_Response_4XXonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:= { msgHeader := { contact := p_contact, maxForwards := omit } } template Response m_Response_4XXonINVITE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:= { msgHeader := { contact := p_contact, maxForwards := omit } } template Response m_Response_onINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute) modifies m_Response_Base:= { msgHeader := { contact := p_contact, maxForwards := omit } } template Response m_Response_onINVITE_Reason (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, integer p_cause) modifies m_Response_Base:= { msgHeader := { contact := p_contact, maxForwards := omit, reason := mw_Reason(p_cause) } } template Response m_Response_WWWauthenticate_IMS(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template WwwAuthenticate p_wwwAuthenticate) modifies m_Response_Base:= { statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, msgHeader := { wwwAuthenticate := p_wwwAuthenticate } } }//end group response_send group response_receive { template Response mw_Response_200onINVITE_noPChargingVector_UE(template StatusLine p_statusLine, template CallId p_callId, template CSeq p_cSeq) modifies mw_Response_Base:= { statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, msgHeader := { pChargingVector := omit } } template Response mw_Response_2xxonMESSAGE_noPCharging_UE(template StatusLine p_statusLine, template CallId p_callId, template CSeq p_cSeq) modifies mw_Response_Base:= { statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, msgHeader := { pChargingFunctionAddresses := omit, pChargingVector := omit } } template Response mw_Response_2xxonMESSAGE_noPCharging_IMS(template StatusLine p_statusLine, template CallId p_callId, template CSeq p_cSeq) modifies mw_Response_Base:= { statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, msgHeader := { pChargingFunctionAddresses := omit, pChargingVector := omit } } template Response mw_Response_2xxonMESSAGE_noPAccessNetworkInfo_IMS(template StatusLine p_statusLine, template CallId p_callId, template CSeq p_cSeq) modifies mw_Response_Base:= { statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, msgHeader := { pAccessNetworkInfo := omit } } template Response mw_Response_2xxonMESSAGE_noPMediaAuthorization_IMS(template StatusLine p_statusLine, template CallId p_callId, template CSeq p_cSeq) modifies mw_Response_Base:= { statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, msgHeader := { pMediaAuthorization := omit } } template Response mw_Response_401onREGISTER_securityServer_UE(template StatusLine p_statusLine, template CallId p_callId, template CSeq p_cSeq) modifies mw_Response_Base:= { statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, msgHeader := { securityServer := ?, wwwAuthenticate := ? } } template Response mw_Response_401onREGISTER_WWWauthenticate_IMS(template StatusLine p_statusLine, template CallId p_callId, template CSeq p_cSeq, template WwwAuthenticate p_wwwAuthenticate) modifies mw_Response_Base:= { statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, msgHeader := { wwwAuthenticate := p_wwwAuthenticate } } template Response mw_Response_200onREGISTER_IMS(template StatusLine p_statusLine, template CallId p_callId, template CSeq p_cSeq, template SipUrl p_ue_uri, template Contact p_contact, template SipUrl p_sut_scscf_uri) modifies mw_Response_Base:= { statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, msgHeader := { pAssociatedURI := {fieldName := P_ASSOCIATED_URI_E, nameAddrList:={*,{nameAddr:={displayName:=*,addrSpec:=p_ue_uri},genericParams:=*},*}}, path := ?, serviceRoute := {fieldName := SERVICE_ROUTE_E, routeBody := {{nameAddr:={displayName:=*,addrSpec:=p_sut_scscf_uri},rrParam:=*}}}, pChargingFunctionAddresses := ?, pChargingVector := ?, contact := p_contact } } template Response mw_Response_PpreferredID_PassertedID(template StatusLine p_statusLine, template CallId p_callId, template CSeq p_cSeq, template PPreferredID p_pPreferredID, template PAssertedID p_pAssertedID) modifies mw_Response_Base:= { statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, msgHeader := { pAssertedID := p_pAssertedID, pPreferredID := p_pPreferredID } } template Response mw_Response_PchargingVector(template StatusLine p_statusLine, template CallId p_callId, template CSeq p_cSeq, template PChargingVector p_chargingVector) modifies mw_Response_Base:= { statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, msgHeader := { pChargingVector := p_chargingVector // mw_pChargingVector(p_id,p_paramValue) } } } // end response_receive }//end modified_templates }//end Message_templates } // end module LibIms_Templates