/* * @author STF 370 * @version $Id: $ * @desc This module provides the templates for Interoperability tests. */ module AtsImsIot_Templates { import from LibCommon_BasicTypesAndValues {type UInt16;} import from LibCommon_VerdictControl {type FncRetCode;} import from LibIot_TypesAndValues { type InterfaceInfoList, ProtocolFilter, GeneralConfigurationReq, GeneralConfigurationRsp, SetFilterReq, SetFilterRsp, StartTrafficCaptureReq, StartTrafficCaptureRsp, StopTrafficCaptureReq, StopTrafficCaptureRsp, IpAddress, Status; } import from AtsImsIot_TypesAndValues {type SipMessage;} import from LibSip_SIPTypesAndValues all; import from LibSip_Templates all; import from LibIot_PIXITS { modulepar PX_IOT_TIMESTAMP_OFFSET, PX_IOT_PCAP_SESSIONS_PATH, PX_IOT_RECORD_MODE, PX_IOT_EUTs_IFACE_INFO_LIST, PX_IOT_FILE_MERGE_LIST, PX_IOT_FILE_MERGE_PATH, PX_IOT_MERGE_TOOL_PATH, PX_IOT_IFACES; } group adapterMsgTemplates { template SetFilterReq m_SetFilterReq(ProtocolFilter p_protocol, InterfaceInfoList p_iterfaces) := { protocol := p_protocol, interfaceInfos := p_iterfaces } template SetFilterRsp mw_SetFilterRsp(template Status p_status) := { status := p_status } } group sipTemplates { /** * @desc SIP request template * @param p_request SIP request */ template SipMessage mw_SipRequest(in template (present) Request p_request) := { request := p_request } /** * @desc SIP response template * @param p_response SIP response */ template SipMessage mw_SipResponse(in template (present) Response p_response) := { response := p_response } }//end group group modifiedSIPBaseTemplates { /** * * @desc Message Request containing a message body greater than 1500 bytes. */ template MESSAGE_Request mdw_TP_IMS_4002_01(template CallId p_callId) modifies mw_MESSAGE_Request_Base := { msgHeader := { contact := * }, messageBody := { textplain := pattern "?#(1500,)" } } /** * * @desc REGISTER Request containing secuity client header. */ template REGISTER_Request mdw_TP_IMS_5011_01_gm modifies mw_REGISTER_Request_Base := { msgHeader := { securityClient := ? } } /** * * @desc REGISTER Request containing secuity client header. */ template REGISTER_Request mdw_TP_IMS_5011_02_gm modifies mw_REGISTER_Request_Base := { msgHeader := { securityClient := ? } } /** * * @desc REGISTER Request checking TP_IMS_5011_01. */ template REGISTER_Request mdw_TP_IMS_5011_01p_ic ( charstring p_EUTHostname ) modifies mw_REGISTER_Request_Base := { msgHeader := { path := mw_PathDef (p_EUTHostname), require := mw_Require ({"path", *}), pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { {id := "icid-value", paramValue := ?}, {id := "orig-ioi", paramValue := ?}, * } }, authorization := m_Authorization(mw_credentialIntegrityNo), securityClient := omit, securityVerify :=omit, pVisitedNetworkID := mw_PVisitedNetworkIDAny } } /** * * @desc REGISTER Request checking TP_IMS_5011_01. */ template REGISTER_Request mdw_TP_IMS_5011_01f_ic modifies mw_REGISTER_Request_Base := { msgHeader := { pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { {id := "term-ioi", paramValue := ?}, * } } } } /** * * @desc REGISTER Request checking TP_IMS_5134_01. */ template REGISTER_Request mdw_TP_IMS_5134_01_ic ( charstring p_EUTHostname ) modifies mw_REGISTER_Request_Base := { msgHeader := { path := mw_PathDef (p_EUTHostname) } } /** * * @desc REGISTER Request checking TP_IMS_5011_02. */ template REGISTER_Request mdw_TP_IMS_5011_02p_ic ( charstring p_EUTHostname ) modifies mw_REGISTER_Request_Base := { msgHeader := { path := mw_PathDef (p_EUTHostname), require := mw_Require ({"path", *}), pChargingVector := mw_PChargingVector({ {id := "icid-value", paramValue := ?}, {id := "orig-ioi", paramValue := ?}, * }), authorization := m_Authorization(mw_credentialIntegrityYes), securityClient := omit, securityVerify :=omit, pVisitedNetworkID := mw_PVisitedNetworkIDAny } } /** * * @desc REGISTER Request checking TP_IMS_5011_02. */ template REGISTER_Request mdw_TP_IMS_5011_02f_ic modifies mw_REGISTER_Request_Base := { msgHeader := { pChargingVector := mw_PChargingVector({ {id := "term-ioi", paramValue := ?}, * }) } } /** * * @desc REGISTER Request checking TP_IMS_5089_01. */ template REGISTER_Request mdw_TP_IMS_5089_01_ic_when modifies mw_REGISTER_Request_Base := { msgHeader := { authorization := m_Authorization(mw_credentialIntegrityNo) } } /** * * @desc REGISTER Request checking TP_IMS_5092_01. */ template REGISTER_Request mdw_TP_IMS_5092_01_ic_when modifies mw_REGISTER_Request_Base := { msgHeader := { authorization := m_Authorization(mw_credentialIntegrityNo) } } /** * * @desc 200 OK message for TP_IMS_5092_01 */ template Response mdw_TP_IMS_5092_01_ic (charstring p_EUTHostname, template SipUrl p_eutBUri) modifies mw_200OK_Base := { msgHeader := { path := mw_PathDef (p_EUTHostname), pAssociatedURI := { fieldName := P_ASSOCIATED_URI_E, nameAddrList := ? }, pChargingVector := mw_PChargingVector({ // @TODO indicating operator_identifier of IMS_? (IUT_?)? {id := "term-ioi", paramValue := ?}, * }), serviceRoute := mw_ServiceRoute (p_eutBUri), contact := { fieldName := CONTACT_E, contactBody := { contactAddresses := ? } } } } /** * * @desc 401 Unauthorized message checking f_mtc_check_TP_IMS_5089_01_ic. */ template Response mdw_TP_IMS_5089_01_ic modifies mw_401Unauthorized_Base := { msgHeader := { wwwAuthenticate := mw_WwwAuthenticate } } /** * * @desc SUBSCRIBE checking TP_IMS_5044_01. */ template SUBSCRIBE_Request mdw_TP_IMS_5044_01_ic( template SipUrl p_subscribe_uri, template SipUrl p_eutAUri, template charstring p_EUTB_PublicId ) modifies mw_SUBSCRIBE_Request_Base := { requestLine := { method := SUBSCRIBE_E, requestUri := p_subscribe_uri, // @TODO sipVersion := c_sipNameVersion }, msgHeader := { fromField := mw_From (p_eutAUri), toField := mw_To_NameAddr_SipUrl (p_EUTB_PublicId, ?, ?), event := m_Event_reg, expires := ?, // checked outside the template pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(p_eutAUri)), pChargingVector := mw_PChargingVector({ {id := "icid-value", paramValue := *}, * }) } } template SUBSCRIBE_Request mdw_TP_IMS_5405_01_ic modifies mw_SUBSCRIBE_Request_Base := { requestLine := { method := SUBSCRIBE_E, requestUri := ?, sipVersion := c_sipNameVersion }, msgHeader := { via := mw_Via (?), // TODO recordRoute := mw_recordroute(?), // @TODO route := mw_route(?), // TODO pChargingVector := omit } } /** * * @desc INVITE Request checking TP_IMS_5046_01 */ template INVITE_Request mdw_TP_IMS_5046_01_ic (template SipUrl p_pcscfEutAUri, template SipUrl p_userEutBUrl) modifies mw_INVITE_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := ? // complement (mw_routeBody(p_pcscfEutAUri)) // to be checked outside template }, via := { fieldName := VIA_E, viaBody := ? // superset(mw_ViaBody_interface(p_pcscfEutAUri.hostPort)) // to be checked outside template }, recordRoute := { fieldName := RECORD_ROUTE_E, routeBody := {mw_routeBody(p_pcscfEutAUri), *} }, pPreferredID := omit, pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(p_userEutBUrl)), pChargingVector := mw_PChargingVector({ {id := "icid-value", paramValue := *}, * }) } } /** * * @desc INVITE Request checking TP_IMS_5048_01 */ template INVITE_Request mdw_TP_IMS_5048_01_ic (template SipUrl p_pcscfEutAUri) modifies mw_INVITE_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := { *, complement(mw_routeBody(p_pcscfEutAUri)), * } }, via := { fieldName := VIA_E, viaBody := ? // superset(mw_ViaBody_interface(p_pcscfEutAUri.hostPort)) // to be checked outside template }, recordRoute := { fieldName := RECORD_ROUTE_E, routeBody := {mw_routeBody(p_pcscfEutAUri), *} } } } /** * * @desc BYE Request checking TP_IMS_5052_01 on MW */ template BYE_Request mdw_TP_IMS_5052_01_p_ic(template CallId p_callId, template RecordRoute p_route) modifies mw_BYE_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := * }, recordRoute := p_route } } template BYE_Request mdw_TP_IMS_5052_01_f_ic( template CallId p_callId, template SipUrl p_pcscfEutAUri) modifies mw_BYE_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := { *, mw_routeBody(p_pcscfEutAUri), * } } } } /** * * @desc 180 Ringing Response checking TP_IMS_5055_01 on MW */ template Response mdw_TP_IMS_5055_01_ic(template SipUrl p_pcscfEutAUri, template SipUrl p_userEutAUri) modifies mw_180Ringing_Base := { msgHeader := { recordRoute := { fieldName := RECORD_ROUTE_E, routeBody := {mw_routeBody(p_pcscfEutAUri), *} }, pPreferredID := omit, pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(p_userEutAUri))//TODO containing public identitiy sent in P-Called_Party-ID header in the initial request } } /** * * @desc 200 OK Response checking TP_IMS_5055_02 on MW */ template Response mdw_TP_IMS_5055_02_ic(template SipUrl p_pcscfEutAUri, template SipUrl p_userEutAUri) modifies mw_200OK_Base := { msgHeader := { recordRoute := { fieldName := RECORD_ROUTE_E, routeBody := {mw_routeBody(p_pcscfEutAUri), *} }, pPreferredID := omit, pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(p_userEutAUri))//TODO containing public identitiy sent in P-Called_Party-ID header in the initial request } } /** * * @desc INVITE Request checking TP_IMS_5067_01 on MW */ template INVITE_Request mdw_TP_IMS_5067_01_ic modifies mw_INVITE_Request_Base := { msgHeader := { pChargingVector := mw_PChargingVector({ {id := "access-network-charging-info", paramValue := ?}, * }) } } /** * * @desc CANCEL Request checking TP_IMS_572_02 on gm */ template CANCEL_Request mdw_TP_IMS_5072_02_gm (template CallId p_callId) modifies mw_CANCEL_Request_Base := { msgHeader := { reason := { fieldName := REASON_E, reasonValues := { { token := "503 Service Unavailable", reasonParams := * }, * } } } } /** * * @desc INVITE Request checking TP_IMS_5080_01 on MW */ template INVITE_Request mdw_TP_IMS_5080_01_ic modifies mw_INVITE_Request_Base := { msgHeader := { pChargingVector := mw_PChargingVector({ {id := "access-network-charging-info", paramValue := ?}, //note access-network-charging-info should be updated * }) } } /** * * @desc 200 OK Response checking TP_IMS_5082_01 on MW */ template Response mdw_TP_IMS_5082_01_ic modifies mw_200OK_Base := { msgHeader := { pChargingVector := mw_PChargingVector({ {id := "access-network-charging-info", paramValue := ?}, * }) } } /** * * @desc SUBSCRIBE checking TP_IMS_5096_01. */ template SUBSCRIBE_Request mdw_TP_IMS_5096_01_ic_when modifies mw_SUBSCRIBE_Request_Base := { msgHeader := { event := m_Event_reg } } /** * @desc INVITE Request checking TP_IMS_5097_01 */ template INVITE_Request mdw_TP_IMS_5097_01_ic (template SipUrl p_SCSCF_SIP_URI) modifies mw_INVITE_Request_Base := { msgHeader := { route := ({ fieldName := ROUTE_E, routeBody := { *, complement(mw_routeBody(p_SCSCF_SIP_URI)), * } }, omit), recordRoute := { fieldName := RECORD_ROUTE_E, routeBody := {mw_routeBody(p_SCSCF_SIP_URI), *} }, pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { *, {id := "icid-value", paramValue := ?}, *, {id := "orig-ioi", paramValue := ?}, *, complement({id := "term-ioi", paramValue := ?}), *, complement({id := "access-network-charging-info", paramValue := ?}), * } } } } /** * @desc INVITE Request checking TP_IMS_5097_02 */ template INVITE_Request mdw_TP_IMS_5097_02_ic ( template SipUrl p_SIP_URI, template SipUrl p_TEL_URI) modifies mw_INVITE_Request_Base := { msgHeader := { pAssertedID := { fieldName := P_ASSERTED_ID_E, pAssertedIDValueList := { *, ({ nameAddr := mw_NameAddr(p_SIP_URI)}, {addrSpecUnion := mw_SIP_URI_Base}), *, ({nameAddr := mw_NameAddr(p_TEL_URI)}, {addrSpecUnion := mw_TEL_URI_Base}), * } } } } /** * @desc INVITE Request checking TP_IMS_5097_04 */ template INVITE_Request mdw_TP_IMS_5097_04_gm(template SipUrl p_requestUri) modifies mw_INVITE_Request_Base := { requestLine := { requestUri := p_requestUri } } /** * @desc INVITE Request checking TP_IMS_5097_04 */ template INVITE_Request mdw_TP_IMS_5097_04_ic(template SipUrl p_requestUri) modifies mw_INVITE_Request_Base := { requestLine := { requestUri := p_requestUri }, msgHeader := { pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { *, complement({id := "access-network-charging-info", paramValue := ?}), * } } } } /** * * @desc BYE Request checking TP_IMS_5107_01 on MW */ template BYE_Request mdw_TP_IMS_5107_01_ic(template CallId p_callId, template SipUrl p_SCSCF_SIP_URI) modifies mw_BYE_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := { *, complement(mw_routeBody(p_SCSCF_SIP_URI)), * } } } } /** * * @desc ACK Request checking TP_IMS_5107_02 on MW */ template ACK_Request mdw_TP_IMS_5107_02_ic(template CallId p_callId, template SipUrl p_SCSCF_SIP_URI) modifies mw_ACK_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := { *, complement(mw_routeBody(p_SCSCF_SIP_URI)), * } } } } /** * * @desc CANCEL Request checking TP_IMS_5107_03 on MW */ template CANCEL_Request mdw_TP_IMS_5107_03_ic (template CallId p_callId, template SipUrl p_SCSCF_SIP_URI) modifies mw_CANCEL_Request_Base := { msgHeader := { route := ( omit, { fieldName := ROUTE_E, routeBody := { *, complement(mw_routeBody(p_SCSCF_SIP_URI)), * } } ) } } /** * * @desc INVITE Request checking TP_IMS_5108_01 on MW */ template INVITE_Request mdw_TP_IMS_5108_01_ic( template SipUrl p_SCSCF_Uri, template GenericParam p_param ) modifies mw_INVITE_Request_Base := { msgHeader := { route := (omit, { fieldName := ROUTE_E, routeBody := { *, complement(mw_routeBody(p_SCSCF_Uri)), * } } ), recordRoute := { fieldName := RECORD_ROUTE_E, routeBody := {{ nameAddr := { displayName := *, addrSpec := p_SCSCF_Uri }, rrParam := * }, *} }, pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { p_param, * } } } } /** * * @desc INVITE Request checking TP_IMS_5108_01_f on MW * ifpresent ioi params than fail */ template INVITE_Request mdw_TP_IMS_5108_01_f_ic modifies mw_INVITE_Request_Base := { msgHeader := { pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { {id := "orig-ioi", paramValue := ?}, {id := "term-ioi", paramValue := ?}, * } } } } /** * * @desc INVITE Request checking TP_IMS_5108_03 on ISC */ template INVITE_Request mdw_TP_IMS_5108_03_isc( template SipUrl p_ASB_Uri, template SipUrl p_SCSCF_Uri ) modifies mw_INVITE_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := { { nameAddr := { displayName := *, addrSpec := p_ASB_Uri }, rrParam := * }, { nameAddr := { displayName := *, addrSpec := p_SCSCF_Uri }, rrParam := * }, * } }, pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { {id := "orig-ioi", paramValue := ?}, * } } } } /** * * @desc INVITE Request checking TP_IMS_5108_03_f on ISC * ifpresent ioi params than fail */ template INVITE_Request mdw_TP_IMS_5108_03_f_isc modifies mw_INVITE_Request_Base := { msgHeader := { pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { {id := "term-ioi", paramValue := *}, * } } } } /** * * @desc 180 Ringing Response checking TP_IMS_5115_01 on MW */ template Response mdw_TP_IMS_5115_01_ic modifies mw_180Ringing_Base := { msgHeader := { pChargingVector := mw_PChargingVector({ {id := "orig-ioi", paramValue := ?}, {id := "term-ioi", paramValue := ?}, * }) } } /** * * @desc 200 OK Response checking TP_IMS_5115_02 on MW */ template Response mdw_TP_IMS_5115_02_ic modifies mw_200OK_Base := { msgHeader := { pChargingVector := mw_PChargingVector({ {id := "orig-ioi", paramValue := ?}, {id := "term-ioi", paramValue := ?}, * }) } } /** * * @desc 180 Ringing Response checking TP_IMS_5115_03 on MW */ template Response mdw_TP_IMS_5115_03_ic( template SipUrl p_SIP_URI, template SipUrl p_TEL_URI) modifies mw_180Ringing_Base := { msgHeader := { pAssertedID := { fieldName := P_ASSERTED_ID_E, pAssertedIDValueList := { *, { nameAddr := mw_NameAddr(p_SIP_URI)}, *, {nameAddr := mw_NameAddr(p_TEL_URI)}, * } } } } /** * * @desc 200 OK Response checking TP_IMS_5115_04 on MW */ template Response mdw_TP_IMS_5115_04_ic( template SipUrl p_SIP_URI, template SipUrl p_TEL_URI) modifies mw_200OK_Base := { msgHeader := { pAssertedID := { fieldName := P_ASSERTED_ID_E, pAssertedIDValueList := { *, { nameAddr := mw_NameAddr(p_SIP_URI)}, *, {nameAddr := mw_NameAddr(p_TEL_URI)}, * } } } } /** * * @desc 200 OK Response checking TP_IMS_5115_08 on MW */ template Response mdw_TP_IMS_5115_08_ic modifies mw_200OK_Base := { msgHeader := { pChargingVector := mw_PChargingVector({ {id := "orig-ioi", paramValue := ?}, {id := "term-ioi", paramValue := ?}, * }) } } /** * * @desc 180 Ringing Response checking TP_IMS_5131_01 on MW */ template Response mdw_TP_IMS_5131_01_ic modifies mw_180Ringing_Base := { msgHeader := { pChargingFunctionAddresses := omit } } /** * * @desc 200 OK Response checking TP_IMS_5131_02 on MW */ template Response mdw_TP_IMS_5131_02_ic modifies mw_200OK_Base := { msgHeader := { pChargingFunctionAddresses := omit } } /** * * @desc INVITE Request checking TP_IMS_5135_01 */ template INVITE_Request mdw_TP_IMS_5135_01_ic (template SipUrl p_ibcfEutAUri) modifies mw_INVITE_Request_Base := { msgHeader := { recordRoute := { fieldName := RECORD_ROUTE_E, routeBody := {mw_routeBody(p_ibcfEutAUri), *} } } } /** * * @desc INVITE Request checking TP_IMS_5137_01 */ template INVITE_Request mdw_TP_IMS_5137_01_ic (template SipUrl p_ibcfEutAUri) modifies mw_INVITE_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := { mw_routeBodyTH(p_ibcfEutAUri), * } }, via := { fieldName := VIA_E, viaBody := {{ sentProtocol := *, sentBy := *, viaParams :={{ id:="tokenized-by", paramValue := * }} }} }, recordRoute := { fieldName := RECORD_ROUTE_E, routeBody := {mw_routeBodyTH(*), *} } } } /** * * @desc 180 Ringing Response checking TP_IMS_5137_02 on MW */ template Response mdw_TP_IMS_5137_02_ic modifies mw_180Ringing_Base := { msgHeader := { via := { fieldName := VIA_E, viaBody := {{ sentProtocol := *, sentBy := *, viaParams :={{ id:="tokenized-by", paramValue := * }} }} }, recordRoute := { fieldName := RECORD_ROUTE_E, routeBody := {mw_routeBodyTH(*), *} } } } /** * * @desc 200 OK Response checking TP_IMS_5137_03 on MW */ template Response mdw_TP_IMS_5137_03_ic modifies mw_200OK_Base := { msgHeader := { via := { fieldName := VIA_E, viaBody := {{ sentProtocol := *, sentBy := *, viaParams :={{ id:="tokenized-by", paramValue := * }} }} }, recordRoute := { fieldName := RECORD_ROUTE_E, routeBody := {mw_routeBodyTH(*), *} } } } /** * * @desc BYE Request checking TP_IMS_5139_01 on MW */ template BYE_Request mdw_TP_IMS_5139_01_ic( template CallId p_callId, template SipUrl p_UE_URI, template To p_to, template From p_from, template CSeq p_cSeq, template Route p_route ) modifies mw_BYE_Request_Base := { requestLine := { requestUri := p_UE_URI }, msgHeader := { callId := p_callId, cSeq := p_cSeq, fromField := p_from, reason := ?, route := p_route, toField := p_to } } /** * * @desc BYE Request checking TP_IMS_5301_01 on MW */ template BYE_Request mdw_TP_IMS_5301_01_ic(template CallId p_callId, template SipUrl p_SCSCF_SIP_URI) modifies mw_BYE_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := { *, complement(mw_routeBody(p_SCSCF_SIP_URI)), * } }, recordRoute := { fieldName := RECORD_ROUTE_E, routeBody := {mw_routeBody(p_SCSCF_SIP_URI), *} } } } /** * * @desc 180 Ringing Response checking TP_IMS_5308_01 on GM */ template Response mdw_TP_IMS_5308_01_gm modifies mw_180Ringing_Base := { msgHeader := { pChargingFunctionAddresses := ? } } /** * * @desc 180 Ringing Response checking TP_IMS_5308_01 on ISC */ template Response mdw_TP_IMS_5308_01_isc modifies mw_180Ringing_Base := { msgHeader := { pChargingFunctionAddresses :=? } } /** * * @desc 200 OK Response checking TP_IMS_5308_02 on GM */ template Response mdw_TP_IMS_5308_02_gm modifies mw_200OK_Base := { msgHeader := { pChargingFunctionAddresses := ? } } /** * * @desc 200 OK Response checking TP_IMS_5308_02 on ISC */ template Response mdw_TP_IMS_5308_02_isc modifies mw_200OK_Base := { msgHeader := { pChargingFunctionAddresses := ? } } /** * * @desc INVITE Request checking TP_IMS_5310_01 on GM */ template INVITE_Request mdw_TP_IMS_5310_01_gm modifies mw_INVITE_Request_Base := { msgHeader := { pChargingVector := mw_PChargingVector({ {id := "access-network-charging-info", paramValue := ?}, * }) } } /** * * @desc INVITE Request checking TP_IMS_5310_01 on AS */ template INVITE_Request mdw_TP_IMS_5310_01_isc modifies mw_INVITE_Request_Base := { msgHeader := { pChargingVector := mw_PChargingVector({ {id := "access-network-charging-info", paramValue := ?}, * }) } } /** * * @desc 200 OK Response checking TP_IMS_5312_01 on MW */ template Response mdw_TP_IMS_5312_01_ic modifies mw_200OK_Base := { msgHeader := { pChargingVector := mw_PChargingVector({ {id := "access-network-charging-info", paramValue := ?}, * }) } } /** * * @desc 200 OK Response checking TP_IMS_5312_01 on AS */ template Response mdw_TP_IMS_5312_01_isc modifies mw_200OK_Base := { msgHeader := { pChargingVector := mw_PChargingVector({ {id := "access-network-charging-info", paramValue := ?}, * }) } } /** * * @desc 433 Anonymity Disallowe Response checking TP_IMS_5313_01 on MW */ template Response mdw_TP_IMS_5313_01_ic modifies mw_433Anony_Base := { msgHeader := { pChargingVector := mw_PChargingVector({ {id := "access-network-charging-info", paramValue := ?}, * }) } } /** * * @desc 433 Anonymity Disallowe Response checking TP_IMS_5313_01 on AS */ template Response mdw_TP_IMS_5313_01_isc modifies mw_433Anony_Base := { msgHeader := { pChargingVector := mw_PChargingVector({ {id := "access-network-charging-info", paramValue := ?}, * }) } } /** * * @desc INVITE Request checking TP_IMS_5404_01 on GM */ template INVITE_Request mdw_TP_IMS_5404_01_gm modifies mw_INVITE_Request_Base := { msgHeader := { pChargingFunctionAddresses := ? } } /** * * @desc INVITE Request checking TP_IMS_5404_01 on MW */ template INVITE_Request mdw_TP_IMS_5404_01_ic modifies mw_INVITE_Request_Base := { msgHeader := { pChargingFunctionAddresses := omit } } /** * * @desc ACK Request checking TP_IMS_5408_01 on MW */ template ACK_Request mdw_TP_IMS_5408_01_ic(template CallId p_callId, template SipUrl p_IBCF_SIP_URI) modifies mw_ACK_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := { mw_routeBodyTH(p_IBCF_SIP_URI), * } }, via := { fieldName := VIA_E, viaBody := {{ sentProtocol := *, sentBy := *, viaParams :={{ id:="tokenized-by", paramValue := * }} }} } } } /** * * @desc BYE Request checking TP_IMS_5408_02 on MW */ template CANCEL_Request mdw_TP_IMS_5408_02_ic(template CallId p_callId, template SipUrl p_IBCF_SIP_URI) modifies mw_CANCEL_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := { mw_routeBodyTH(p_IBCF_SIP_URI), * } }, via := { fieldName := VIA_E, viaBody := {{ sentProtocol := *, sentBy := *, viaParams :={{ id:="tokenized-by", paramValue := * }} }} }, recordRoute := { fieldName := RECORD_ROUTE_E, routeBody := {mw_routeBodyTH(*), *} } } } /** * * @desc BYE Request checking TP_IMS_5408_03 on MW */ template BYE_Request mdw_TP_IMS_5408_03_ic(template CallId p_callId, template SipUrl p_IBCF_SIP_URI) modifies mw_BYE_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := { mw_routeBodyTH(p_IBCF_SIP_URI), * } }, via := { fieldName := VIA_E, viaBody := {{ sentProtocol := *, sentBy := *, viaParams :={{ id:="tokenized-by", paramValue := * }} }} }, recordRoute := { fieldName := RECORD_ROUTE_E, routeBody := {mw_routeBodyTH(*), *} } } } /** * * @desc INVITE Request checking TP_IMS_5408_04 */ template INVITE_Request mdw_TP_IMS_5408_04_ic (template SipUrl p_ibcfEutAUri) modifies mw_INVITE_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := { mw_routeBodyTH(p_ibcfEutAUri), * } }, via := { fieldName := VIA_E, viaBody := {{ sentProtocol := *, sentBy := *, viaParams :={{ id:="tokenized-by", paramValue := * }} }} }, recordRoute := { fieldName := RECORD_ROUTE_E, routeBody := {mw_routeBodyTH(*), *} } } } /** * * @desc INVITE Request checking TP_IMS_5097_09 */ template INVITE_Request mdw_TP_IMS_5097_09_isc (template SipUrl p_EutB_ASUri) modifies mw_INVITE_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := {mw_routeBody(p_EutB_ASUri), *} }, pChargingFunctionAddresses := ?, pChargingVector := mw_PChargingVector({ {id := "orig-ioi", paramValue := *}, // NOTE indicating also operator identifier for IMSA * }) } } /** * @desc INVITE Request checking TP_IMS_5097_09 false */ template INVITE_Request mdw_TP_IMS_5097_09_f_isc modifies mw_INVITE_Request_Base := { msgHeader := { pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { {id := "term-ioi", paramValue := *}, * } } } } template MESSAGE_Request mdw_TP_IMS_5097_05_p_ic( template CallId p_callId ) modifies mw_MESSAGE_Request_Base := { msgHeader := { pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { {id := "icid-value", paramValue := ?}, {id := "orig-ioi", paramValue := ?}, * } }, pAccessNetworkInfo := omit } } template MESSAGE_Request mdw_TP_IMS_5097_05_f2_ic( template CallId p_callId, template SipUrl p_SCSCF_SIP_URI ) modifies mw_MESSAGE_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := { mw_routeBody(p_SCSCF_SIP_URI), * } } } } template MESSAGE_Request mdw_TP_IMS_5097_05_f_ic( template CallId p_callId ) modifies mw_MESSAGE_Request_Base := { msgHeader := { pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { {id := "term-ioi", paramValue := ?}, {id := "access-network-charging-info", paramValue := ?}, * } } } } template MESSAGE_Request mdw_TP_IMS_5097_08_gm( template CallId p_callId ) modifies mw_MESSAGE_Request_Base := { requestLine := { requestUri := mw_TEL_URI_Base } } template MESSAGE_Request mdw_TP_IMS_5097_08_ic( template CallId p_callId ) modifies mw_MESSAGE_Request_Base := { requestLine := { requestUri := mw_SIP_URI_Base }, msgHeader := { pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { complement({id := "access-network-charging-info", paramValue := ?}), * } } } } template MESSAGE_Request mdw_TP_IMS_5097_07_ic( template CallId p_callId, template SipUrl p_SIP_URI, template SipUrl p_TEL_URI) modifies mw_MESSAGE_Request_Base := { msgHeader := { pAssertedID := { fieldName := P_ASSERTED_ID_E, pAssertedIDValueList := { ({nameAddr := mw_NameAddr(p_SIP_URI)}, {addrSpecUnion := mw_SIP_URI_Base}), ({nameAddr := mw_NameAddr(p_TEL_URI)}, {addrSpecUnion := mw_TEL_URI_Base}), * } } } } template MESSAGE_Request mdw_TP_IMS_5108_02a_ic( template CallId p_callId ) modifies mw_MESSAGE_Request_Base := { msgHeader := { pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { {id := "icid-value", paramValue := ?}, * } } } } template MESSAGE_Request mdw_TP_IMS_5108_02b_p_ic( template CallId p_callId, template SipUrl p_SCSCF_Uri, template GenericParam p_param ) modifies mw_MESSAGE_Request_Base := { msgHeader := { route := omit, // TODO TP is not clear please double check recordRoute := { fieldName := RECORD_ROUTE_E, routeBody := {{ nameAddr := { displayName := *, addrSpec := p_SCSCF_Uri }, rrParam := * }} }, pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { p_param, * } } } } template MESSAGE_Request mdw_TP_IMS_5108_02b_f_ic( template CallId p_callId ) modifies mw_MESSAGE_Request_Base := { msgHeader := { pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { {id := "orig-ioi", paramValue := ?}, {id := "term-ioi", paramValue := ?}, * } } } } /** * @desc INVITE Request checking TP_IMS_5120_01 */ template INVITE_Request mdw_TP_IMS_5120_01_ic( template SipUrl p_SCSCF_URI ) modifies mw_INVITE_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := { complement(mw_routeBody(p_SCSCF_URI)), * } }, recordRoute := { fieldName := RECORD_ROUTE_E, routeBody := { mw_routeBody(p_SCSCF_URI), * } } } } template Response mw_TP_IMS_5121_02_ic modifies mdw_2XX_Base := { msgHeader := { pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { complement({id := "access-network-charging-info", paramValue := ?}), * } } } } template Response mw_TP_IMS_5117_02_ic modifies mdw_2XX_Base := { msgHeader := { pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { complement({id := "access-network-charging-info", paramValue := ?}), * } } } } template Response mw_TP_IMS_5117_06_ic modifies mdw_2XX_Base := { msgHeader := { pAssertedID := { fieldName := P_ASSERTED_ID_E, pAssertedIDValueList := { {nameAddr := mw_NameAddr(mw_SIP_URI_Base)}, {nameAddr := mw_NameAddr(mw_TEL_URI_Base)}, * } } } } template Response mw_TP_IMS_5118_01_ic modifies mw_200OK_Base := { msgHeader := { pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { {id := "orig-ioi", paramValue := ?}, {id := "term-ioi", paramValue := ?}, * } } } } template MESSAGE_Request mdw_TP_IMS_5050_01_ic( template CallId p_callId, template SipUrl p_PCSCF_URI, template SipUrl p_UE_A_URI ) modifies mw_MESSAGE_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := { { nameAddr := { displayName := *, addrSpec := complement(p_PCSCF_URI) }, rrParam := * },* } }, pPreferredID := omit, pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(p_UE_A_URI)), pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { {id := "icid-value", paramValue := ?}, * } } } } template Response mdw_2XX_Base modifies m_Response_Dummy := { statusLine := {c_sipNameVersion, (200..299), *}, msgHeader := ?, messageBody := *, payload := * } template Response mw_100Trying_Base modifies m_Response_Dummy := { statusLine := c_statusLine100, msgHeader := ?, messageBody := *, payload := * } template Response mw_180Ringing_Base modifies m_Response_Dummy := { statusLine := c_statusLine180, msgHeader := ?, messageBody := *, payload := * } template Response mw_200OK_Base modifies m_Response_Dummy := { statusLine := c_statusLine200, msgHeader := ?, messageBody := *, payload := * } template Response mw_202Accepted_Base modifies m_Response_Dummy := { statusLine := c_statusLine202, msgHeader := ?, messageBody := *, payload := * } template Response mw_401Unauthorized_Base modifies m_Response_Dummy := { statusLine := {c_sipNameVersion, 401, ?}, msgHeader := ?, messageBody := *, payload := * } template Response mdw_4XX_Base modifies m_Response_Dummy := { statusLine := {c_sipNameVersion, (400..499), *}, msgHeader := ?, messageBody := *, payload := * } template Response mw_403Forbidden_Base modifies m_Response_Dummy := { statusLine := {c_sipNameVersion, 403, ?}, msgHeader := ?, messageBody := *, payload := * } template Response mw_404NotFound_Base modifies m_Response_Dummy := { statusLine := {c_sipNameVersion, 404, ?}, msgHeader := ?, messageBody := *, payload := * } template Response mdw_404Or604NotFound_Base modifies m_Response_Dummy := { statusLine := ({c_sipNameVersion, 404, ?}, {c_sipNameVersion, 604, ?}), msgHeader := ?, messageBody := *, payload := * } template Response mdw_408Or5XX_Base modifies m_Response_Dummy := { statusLine := {c_sipNameVersion, (408,(500..599)), *}, msgHeader := ?, messageBody := *, payload := * } template Response mw_433Anony_Base modifies m_Response_Dummy := { statusLine := c_statusLine433, msgHeader := ?, messageBody := *, payload := * } template REGISTER_Request mdw_TP_IMS_5088_01_gm modifies mw_REGISTER_Request_Base := { msgHeader := {authorization := m_Authorization(mw_credentialIntegrityYes)} } template NOTIFY_Request mdw_TP_IMS_5088_01_ic(template CallId p_callId, template SipUrl p_PCSCF_SIP_URI) modifies mw_NOTIFY_Request_Base := { requestLine := { requestUri := p_PCSCF_SIP_URI }, msgHeader := { event := { fieldName := EVENT_E, eventType := pattern "*reg*", eventParams := *}, route := ? }, // TODO route header indicating the original Route_header from SUBSCRIBE (SUBSCRIBE not defined in the test description) messageBody := ? // TODO } template NOTIFY_Request mdw_TP_IMS_5093_01_UE_ic(template CallId p_callId, template SipUrl p_UE_SIP_URI) modifies mw_NOTIFY_Request_Base := { requestLine := { requestUri := p_UE_SIP_URI }, msgHeader := { event := { fieldName := EVENT_E, eventType := pattern "*reg*", eventParams := *}, route := ? }, // TODO route header indicating the original Route_header from SUBSCRIBE (SUBSCRIBE not defined in the test description) messageBody := ? // TODO } template NOTIFY_Request mdw_TP_IMS_5093_01_IMS_ic(template CallId p_callId, template SipUrl p_PCSCF_SIP_URI) modifies mw_NOTIFY_Request_Base := { requestLine := { requestUri := p_PCSCF_SIP_URI }, msgHeader := { event := { fieldName := EVENT_E, eventType := pattern "*reg*", eventParams := *}, route := ? }, // TODO route header indicating the original Route_header from SUBSCRIBE (SUBSCRIBE not defined in the test description) messageBody := ? // TODO } template NOTIFY_Request mdw_TP_IMS_5094_01_UE(template CallId p_callId, template SipUrl p_UE_SIP_URI) modifies mw_NOTIFY_Request_Base := { requestLine := { requestUri := p_UE_SIP_URI }, msgHeader := { event := { fieldName := EVENT_E, eventType := pattern "*reg*", eventParams := *}, route := ? }, // TODO route header indicating the original Route_header from SUBSCRIBE (SUBSCRIBE not defined in the test description) messageBody := ? // TODO } template NOTIFY_Request mdw_TP_IMS_5094_01_IMS_ic(template CallId p_callId, template SipUrl p_PCSCF_SIP_URI) modifies mw_NOTIFY_Request_Base := { requestLine := { requestUri := p_PCSCF_SIP_URI }, msgHeader := { event := { fieldName := EVENT_E, eventType := pattern "*reg*", eventParams := *}, route := ? }, // TODO route header indicating the original Route_header from SUBSCRIBE (SUBSCRIBE not defined in the test description) messageBody := ? // TODO } /** * @desc INVITE Request checking TP_IMS_5106_01 */ template INVITE_Request mdw_TP_IMS_5106_01_ic( template SipUrl p_SCSCF_URI ) modifies mw_INVITE_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := { complement(mw_routeBody(p_SCSCF_URI)), * } }, recordRoute := { fieldName := RECORD_ROUTE_E, routeBody := { mw_routeBody(p_SCSCF_URI), * } }, pAccessNetworkInfo := omit, pChargingVector := mw_PChargingVector({ {id := "icid-value", paramValue := *}, * }) } } /** * @desc VYE Request checking TP_IMS_5074_01 */ template BYE_Request mdw_TP_IMS_5074_01_ic( template CallId p_callId, template SipUrl p_UE_URI // must be the IP address ) modifies mw_BYE_Request_Base := { requestLine := { requestUri := p_UE_URI }, msgHeader := { toField := ?, fromField := ?, cSeq := ?, route := ?, reason := { fieldName := REASON_E, reasonValues := { { token := "503 Service Unavailable", reasonParams := * }, * } } } } /** * @desc UPDATE Request checking TP_IMS_5106_02 */ template UPDATE_Request mdw_TP_IMS_5106_02_p_ic( template CallId p_callId, template SipUrl p_SCSCF_URI ) modifies mw_UPDATE_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := * }, recordRoute := { fieldName := RECORD_ROUTE_E, routeBody := { *, mw_routeBody(p_SCSCF_URI), * } }, pChargingVector := mw_PChargingVector({ {id := "icid-value", paramValue := *}, * }) } } template UPDATE_Request mdw_TP_IMS_5106_02_f_ic( template CallId p_callId, template SipUrl p_SCSCF_URI ) modifies mw_UPDATE_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := { mw_routeBody(p_SCSCF_URI), * } } } } }//end group group HeaderTemplates { template Path mw_PathDef (charstring p_Host) := { fieldName := PATH_E, pathValues := {{ nameAddr:= { displayName := *, addrSpec := { scheme := "sip", userInfo := *, hostPort := { host := p_Host, portField := *}, urlParameters := *, headers := omit} }, rrParam := omit }} } // template template Require mw_Require (template OptionTag_List p_optionsList) := { fieldName := REQUIRE_E, optionsTags := p_optionsList } // template template PChargingVector mw_PChargingVector (template SemicolonParam_List p_List) := { fieldName := P_CHARGING_VECTOR_E, chargeParams := p_List } // template template ServiceRoute mw_ServiceRoute (template SipUrl p_eutAddr) := { fieldName := SERVICE_ROUTE_E, routeBody := { { nameAddr := { displayName := *, addrSpec := p_eutAddr }, rrParam := * }, * } } // template template PVisitedNetworkID mw_PVisitedNetworkIDAny := { fieldName := P_VISITED_NETWORK_E, vNetWorkSpec := ? } // template template PAssociatedURI mw_PAssociatedURI (template SemicolonParam_List p_SemicolonParam_List):= { fieldName := P_ASSOCIATED_URI_E, nameAddrList:= { {nameAddr := *, genericParams := p_SemicolonParam_List }, * } } template WwwAuthenticate mw_WwwAuthenticate := { fieldName := WWW_AUTHENTICATE_E, challenge := { digestCln := { //{id := "username", paramValue := ?}, {id := "realm", paramValue := ?}, // TODO containing operator ID {id := "nonce", paramValue := ?}, {id := "rand", paramValue := ?}, {id := "autn", paramValue := ?}, {id := "ik", paramValue := ?}, {id := "ck", paramValue := ?}, {id := "algorithm", paramValue := "AKAv1-MD5"}, *} } } // template } // end group HeaderTemplates group AuxiliaryInformationElementTemplates { template Credentials mw_credentialIntegrityYes := { otherResponse := {authScheme := ?, authParams := { {"integrity-protected", "yes"},*} // TODO }} template Credentials mw_credentialIntegrityNo := { otherResponse := {authScheme := ?, authParams := { {"integrity-protected", "no"},*} // TODO }} template RouteBody mw_routeBodyTH (template SipUrl p_sipurl):= { nameAddr := { displayName := *, addrSpec := p_sipurl }, rrParam := {{ id:="tokenized-by", paramValue := * }} } template NameAddr mw_NameAddr(template SipUrl p_URI) := { displayName := *, addrSpec := p_URI } template SipUrl mw_SIP_URI_Base := { scheme := "sip", // meaning "not tel" userInfo := ?, hostPort := ?, urlParameters := *, headers := * } template SipUrl mw_TEL_URI_Base := { scheme := "tel", userInfo := ?, hostPort := *, urlParameters := *, headers := * } } //end group group adapterTemplates { template GeneralConfigurationReq m_generalConfigurationReq_offline := { captureProcessIpAddress := "127.0.0.1", captureProcessPort := 5501, captureMode := { offlineCapture := { offset := PX_IOT_TIMESTAMP_OFFSET, captureSource := { sessionsPath := PX_IOT_PCAP_SESSIONS_PATH, mergeFileList := { mergeFileList := { }, mergeFilePath := "", mergeToolPath := "" } } } }, eutInfoList := omit } template GeneralConfigurationReq m_generalConfigurationReq_online := { captureProcessIpAddress := "127.0.0.1", captureProcessPort := 5501, captureMode := { liveCpature := { physicalInterfaces := { PX_IOT_IFACES }, recordMode := PX_IOT_RECORD_MODE } }, eutInfoList := PX_IOT_EUTs_IFACE_INFO_LIST } template GeneralConfigurationReq m_generalConfigurationReq_merge := { captureProcessIpAddress := "127.0.0.1", captureProcessPort := 5501, captureMode := { offlineCapture := { offset := PX_IOT_TIMESTAMP_OFFSET, captureSource := { sessionsPath := "", mergeFileList := { mergeFileList := PX_IOT_FILE_MERGE_LIST, mergeFilePath := PX_IOT_FILE_MERGE_PATH, mergeToolPath := PX_IOT_MERGE_TOOL_PATH } } } }, eutInfoList := omit } template GeneralConfigurationRsp m_generalConfigurationRsp_success := { status := { code := e_success, reason := * } } template GeneralConfigurationRsp m_generalConfigurationRsp_timeout := { status := { code := e_timeout, reason := * } } template GeneralConfigurationRsp m_generalConfigurationRsp_error := { status := { code := e_error, reason := * } } template GeneralConfigurationRsp m_generalConfigurationRsp_any := { status := { code := *, reason := * } } template StartTrafficCaptureReq m_startTrafficCaptureReq := { } template StartTrafficCaptureRsp m_startTrafficCaptureRsp_any := { status := { code := *, reason := * } } template StopTrafficCaptureReq m_stopTrafficCaptureReq :={ } template StopTrafficCaptureRsp m_stopTrafficCaptureRsp_any := { status := { code := *, reason := * } } template SetFilterReq m_setFilterReq (ProtocolFilter p_proto, IpAddress p_addr1, IpAddress p_addr2, UInt16 p_port) :={ protocol := p_proto, interfaceInfos := { { IpInterfaceInfo := { { domainName := omit, IpAddress := p_addr1, portNumbers := { p_port } }, { domainName := omit, IpAddress := p_addr2, portNumbers := { p_port } } } } } } template SetFilterRsp m_setFilterRspAny := { status := { code := *, reason := * } } } // adapterTemplates }//end module