Loading LibIms_PIXITS.ttcn +1 −1 Original line number Diff line number Diff line Loading @@ -170,7 +170,7 @@ group SUT_UE3 { } } // end group SUT_UE3 group SUT_UE4 { group SUT_UE4 {//UE4 can be used as UE1Visited modulepar { /** @desc charstring for SUT - PCSCF4 IP address to exchange SIP messages - connection point for UE4 */ Loading LibIms_Steps.ttcn +98 −33 Original line number Diff line number Diff line Loading @@ -437,18 +437,18 @@ module LibIms_Steps vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_REGISTRAR; } case (c_userProfile_UE1atSUTvisiting) { //variant c_userProfile_UE1atSUTvisiting vc_userprofile.currPort := PX_IMS_TS_UE1_PORT; vc_userprofile.currIpaddr := PX_IMS_TS_UE1_IPADDR; vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; vc_userprofile.registrarDomain := PX_IMS_TS_UE1_REGISTRAR; case (c_userProfile_UE1atSUTvisiting) { //variant c_userProfile_UE1atSUTvisiting - UE4 parameters vc_userprofile.currPort := PX_IMS_TS_UE4_PORT; vc_userprofile.currIpaddr := PX_IMS_TS_UE4_IPADDR; vc_userprofile.contactPort := PX_IMS_TS_UE4_PORT; vc_userprofile.contactIpaddr := PX_IMS_TS_UE4_IPADDR; vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE4_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN; vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; vc_userprofile.qop := PX_IMS_SUT_UE4_QOP; vc_userprofile.privUsername := PX_IMS_SUT_UE4_PRIVAT_USERNAME; vc_userprofile.passwd := PX_IMS_SUT_UE4_PRIVAT_PASSWD; vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_REGISTRAR; } // //temporary not used and it can be deleted during validation Loading @@ -471,6 +471,7 @@ module LibIms_Steps vc_userprofile.currIpaddr := PX_IMS_TS_IBCF_IPADDR; // via vc_userprofile.contactPort := PX_IMS_TS_IBCF_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_IBCF_IPADDR; // contact vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization Loading @@ -484,7 +485,7 @@ module LibIms_Steps vc_userprofile.currIpaddr := PX_IMS_TS_IBCF_IPADDR; // via vc_userprofile.contactPort := PX_IMS_TS_IBCF_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_IBCF_IPADDR; // contact //vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization Loading @@ -496,14 +497,15 @@ module LibIms_Steps case (c_userProfile_ICSCFwithHomeUE) { //variant c_userProfile_ICSCFwithHomeUE vc_userprofile.currPort := PX_IMS_TS_ICSCF_PORT; // via (Mw interface of TS) vc_userprofile.currIpaddr := PX_IMS_TS_ICSCF_IPADDR; // via vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization vc_userprofile.contactPort := PX_IMS_TS_UE4_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE4_IPADDR; // contact vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE4_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE4_QOP; // Authorization vc_userprofile.privUsername := PX_IMS_SUT_UE4_PRIVAT_USERNAME; // Authorization vc_userprofile.passwd := PX_IMS_SUT_UE4_PRIVAT_PASSWD; // Authorization vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_REGISTRAR; // Authorization } case (c_userProfile_IBCFwithUnknownUE) { //variant Loading @@ -511,6 +513,7 @@ module LibIms_Steps vc_userprofile.currIpaddr := PX_IMS_TS_ICSCF_IPADDR; // via vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_unknownUE_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization Loading @@ -524,7 +527,8 @@ module LibIms_Steps vc_userprofile.currIpaddr := PX_IMS_TS_PCSCF_IPADDR; // via vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact vc_userprofile.homeDomain := PX_IMS_TS_IMS1UE_HOME_DOMAIN; // From, To (register) vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization Loading @@ -537,7 +541,8 @@ module LibIms_Steps vc_userprofile.currIpaddr := PX_IMS_TS_PCSCF_IPADDR; // via vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE1_REGISTRAR; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization Loading @@ -551,6 +556,7 @@ module LibIms_Steps vc_userprofile.currIpaddr := PX_IMS_TS_PCSCF_IPADDR; // via vc_userprofile.contactPort := PX_IMS_TS_UE2_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE2_IPADDR; // contact vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE2_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE2_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization Loading @@ -565,6 +571,7 @@ module LibIms_Steps vc_userprofile.currIpaddr := PX_IMS_TS_PCSCF_IPADDR; // via vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE2_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_unknownUE_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization Loading @@ -576,14 +583,15 @@ module LibIms_Steps case (c_userProfile_SCSCFwithHomeUE) { //variant c_userProfile_SCSCFwithHomeUE vc_userprofile.currPort := PX_IMS_TS_SCSCF_PORT; // via (Mw interface of TS) vc_userprofile.currIpaddr := PX_IMS_TS_SCSCF_IPADDR; // via vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization vc_userprofile.contactPort := PX_IMS_TS_UE4_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE4_IPADDR; // contact vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE4_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE4_QOP; // Authorization vc_userprofile.privUsername := PX_IMS_SUT_UE4_PRIVAT_USERNAME; // Authorization vc_userprofile.passwd := PX_IMS_SUT_UE4_PRIVAT_PASSWD; // Authorization vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_REGISTRAR; // Authorization } case (c_userProfile_AS1) { //variant c_userProfile_AS1 Loading Loading @@ -670,7 +678,7 @@ module LibIms_Steps } case (c_userProfile_SCSCFwithHomeUE) { p_sipUrl.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_IMS1UE_PUBLIC_USER, password:=omit}; p_sipUrl.hostPort := {host := PX_IMS_TS_SCSCF_IPADDR, portField :=omit} p_sipUrl.hostPort := {host := PX_IMS_TS_IMS1UE_HOME_DOMAIN, portField :=omit} } case (c_userProfile_ISUP) { p_sipUrl.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_ISUP_PUBLIC_USER, password:=omit}; Loading Loading @@ -875,6 +883,63 @@ module LibIms_Steps }//end function f_awaitingRegistration_IMS /** * * @desc remove registration * @param p_cSeq_s cseq parameter */ function f_RemoveRegistration_IMS(inout CSeq p_cSeq) runs on SipComponent { var CommaParam_List v_challenge; var Credentials v_credentials; var template REGISTER_Request v_request; if (PX_SIP_REGISTRATION) { f_setHeaders_deREGISTER(p_cSeq); v_request := m_REGISTER_Request_expires_IMS(vc_requestUri, vc_callIdReg, p_cSeq, vc_from, vc_to, vc_via, vc_contact, vc_authorization, "0"); v_request.msgHeader.route := f_route(); f_SendREGISTER(v_request); if (PX_SIP_REGISTER_AUTHENTICATION_ENABLED) { // receiving 401 Unauthorized response. // and Re-send REGISTER request with Authorization header tc_ack.start(PX_SIP_TACK); alt { [] SIPP.receive (mw_Response_Base(c_statusLine401, vc_callIdReg, p_cSeq)) -> value vc_response { tc_ack.stop; // set headers via, cseq and authorization f_setHeaders_2ndREGISTER(p_cSeq); v_request := m_REGISTER_Request_expires_IMS(vc_requestUri, vc_callIdReg, p_cSeq, vc_from, vc_to, vc_via, vc_contact, vc_authorization, "0"); v_request.msgHeader.route := f_route(); // Re-send protected REGISTER f_SendREGISTER(v_request);//LibSip // awaiting 200 OK REGISTER f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq)); } [] SIPP.receive (mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq))-> value vc_response { tc_ack.stop; f_setHeadersOnReceiptOfResponse(vc_cSeq, vc_response); log ("Authorization was not requested as expected"); } } } else { f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq)); } } } // end f_RemoveRegistration_IMS } // end group registration group preambles { Loading Loading @@ -908,7 +973,7 @@ module LibIms_Steps //Preamble f_init_userprofile(p_userprofile); // assignment of PIXIT values to component variable vc_sdp_local := valueof(m_SDP_bandwidth(valueof(m_media_dynPT(PX_SIP_SDP_dyn, PX_SIP_SDP_encoding)), vc_userprofile)); vc_contact := valueof(m_Contact(m_SipUrl_contactIpaddr(vc_userprofile))); } /* Loading LibIms_Templates.ttcn +68 −16 Original line number Diff line number Diff line Loading @@ -64,12 +64,12 @@ group HeaderFieldTemplates{ minSeParam:=omit } template PathValue m_pathvalue (SipUrl p_sipUrl):= template PathValue mw_pathvalue (SipUrl p_sipUrl):= { nameAddr := {displayName := omit, // optional charstring nameAddr := {displayName := *, // optional charstring addrSpec := p_sipUrl // SipUrl }, rrParam := omit rrParam := * } template Path m_path (SipUrl p_sipUrl):= Loading @@ -84,6 +84,21 @@ group HeaderFieldTemplates{ } } template Path m_path_TS := { fieldName := PATH_E, pathValues := { {nameAddr := { displayName := omit, // optional charstring addrSpec := { scheme := "sip", userInfo := {userOrTelephoneSubscriber:="registrar"}, hostPort := {PX_IMS_TS_PCSCF_HOME_DOMAIN, PX_IMS_TS_PCSCF_PORT}, urlParameters := omit, headers := omit}}, rrParam := omit} } } /* * @desc Path header field expectation with at least one path value * @param p_sipUrl value of the last element in the list of path values Loading @@ -91,7 +106,7 @@ group HeaderFieldTemplates{ template Path mw_path (SipUrl p_sipUrl):= { fieldName := PATH_E, pathValues := {*,m_pathvalue(p_sipUrl)} // any number of SipUrl may occur before p_sipUrl pathValues := {mw_pathvalue(p_sipUrl)} // any number of SipUrl may occur before p_sipUrl } template PAccessNetworkInfo m_pAccessNetworkInfo_IEEE_11a := Loading @@ -110,23 +125,36 @@ group HeaderFieldTemplates{ 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 chargeAddrParams := {{id:="ccf",paramValue :="192.1.1.1;"}, // value is fixed because it is deleted on proxy {id:="ecf",paramValue :="192.1.1.2"}} // value is fixed because it is deleted on proxy }; template PChargingVector m_pChargingVector(template SemicolonParam_List p_chargeParams) := { fieldName := P_CHARGING_VECTOR_E, chargeParams := p_chargeParams }; template PChargingVector m_pChargingVector_icid_TS := { fieldName := P_CHARGING_VECTOR_E, chargeParams := {{id:="icid-value", paramValue :="012345"}} }; 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"}, 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:="icid-generated-at", paramValue :="192.1.1.10;"}, {id:="orig-ioi", paramValue := p_homeDomain}} }; Loading @@ -153,6 +181,13 @@ group HeaderFieldTemplates{ optionsTags := {"sec-agree"} }; template PVisitedNetworkID m_pVisitedNetworkID_TS := { fieldName := P_VISITED_NETWORK_E, vNetWorkSpec := {{vNetworkSpecToken := "Viseted ETSI 1", genericParams := omit}} } template PVisitedNetworkID mw_pVisitedNetworkID := { fieldName := P_VISITED_NETWORK_E, Loading Loading @@ -1452,6 +1487,26 @@ group request_send { } } template MESSAGE_Request m_MESSAGE_Request_MBody_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template Require p_require, template Route p_route, template Supported p_supported, template MessageBody p_messageBody) modifies m_MESSAGE_Request_Base := { msgHeader := { contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(m_MBody_longPlainText))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText}, pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, require := p_require, route := p_route, //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation supported := p_supported }, messageBody := p_messageBody } template MESSAGE_Request m_MESSAGE_Request_NoBody_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template Require p_require, Loading Loading @@ -1667,6 +1722,10 @@ group request_send { contact := p_contact, cSeq := p_cSeq, fromField := p_from, path := m_path_TS, pChargingVector := m_pChargingVector_icid_TS, pVisitedNetworkID := m_pVisitedNetworkID_TS, require := {fieldName := REQUIRE_E,optionsTags := {"path"}}, toField := p_to, via := p_via Loading Loading @@ -2586,7 +2645,6 @@ group response_send 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 Loading @@ -2596,7 +2654,6 @@ group response_send 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 Loading @@ -2606,7 +2663,6 @@ group response_send 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, Loading @@ -2618,7 +2674,6 @@ group response_send 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, Loading @@ -2629,7 +2684,6 @@ group response_send 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 Loading @@ -2639,7 +2693,6 @@ group response_send 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 Loading Loading @@ -2717,7 +2770,6 @@ group response_send 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 Loading Loading
LibIms_PIXITS.ttcn +1 −1 Original line number Diff line number Diff line Loading @@ -170,7 +170,7 @@ group SUT_UE3 { } } // end group SUT_UE3 group SUT_UE4 { group SUT_UE4 {//UE4 can be used as UE1Visited modulepar { /** @desc charstring for SUT - PCSCF4 IP address to exchange SIP messages - connection point for UE4 */ Loading
LibIms_Steps.ttcn +98 −33 Original line number Diff line number Diff line Loading @@ -437,18 +437,18 @@ module LibIms_Steps vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_REGISTRAR; } case (c_userProfile_UE1atSUTvisiting) { //variant c_userProfile_UE1atSUTvisiting vc_userprofile.currPort := PX_IMS_TS_UE1_PORT; vc_userprofile.currIpaddr := PX_IMS_TS_UE1_IPADDR; vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; vc_userprofile.registrarDomain := PX_IMS_TS_UE1_REGISTRAR; case (c_userProfile_UE1atSUTvisiting) { //variant c_userProfile_UE1atSUTvisiting - UE4 parameters vc_userprofile.currPort := PX_IMS_TS_UE4_PORT; vc_userprofile.currIpaddr := PX_IMS_TS_UE4_IPADDR; vc_userprofile.contactPort := PX_IMS_TS_UE4_PORT; vc_userprofile.contactIpaddr := PX_IMS_TS_UE4_IPADDR; vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE4_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN; vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; vc_userprofile.qop := PX_IMS_SUT_UE4_QOP; vc_userprofile.privUsername := PX_IMS_SUT_UE4_PRIVAT_USERNAME; vc_userprofile.passwd := PX_IMS_SUT_UE4_PRIVAT_PASSWD; vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_REGISTRAR; } // //temporary not used and it can be deleted during validation Loading @@ -471,6 +471,7 @@ module LibIms_Steps vc_userprofile.currIpaddr := PX_IMS_TS_IBCF_IPADDR; // via vc_userprofile.contactPort := PX_IMS_TS_IBCF_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_IBCF_IPADDR; // contact vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization Loading @@ -484,7 +485,7 @@ module LibIms_Steps vc_userprofile.currIpaddr := PX_IMS_TS_IBCF_IPADDR; // via vc_userprofile.contactPort := PX_IMS_TS_IBCF_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_IBCF_IPADDR; // contact //vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization Loading @@ -496,14 +497,15 @@ module LibIms_Steps case (c_userProfile_ICSCFwithHomeUE) { //variant c_userProfile_ICSCFwithHomeUE vc_userprofile.currPort := PX_IMS_TS_ICSCF_PORT; // via (Mw interface of TS) vc_userprofile.currIpaddr := PX_IMS_TS_ICSCF_IPADDR; // via vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization vc_userprofile.contactPort := PX_IMS_TS_UE4_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE4_IPADDR; // contact vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE4_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE4_QOP; // Authorization vc_userprofile.privUsername := PX_IMS_SUT_UE4_PRIVAT_USERNAME; // Authorization vc_userprofile.passwd := PX_IMS_SUT_UE4_PRIVAT_PASSWD; // Authorization vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_REGISTRAR; // Authorization } case (c_userProfile_IBCFwithUnknownUE) { //variant Loading @@ -511,6 +513,7 @@ module LibIms_Steps vc_userprofile.currIpaddr := PX_IMS_TS_ICSCF_IPADDR; // via vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_unknownUE_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization Loading @@ -524,7 +527,8 @@ module LibIms_Steps vc_userprofile.currIpaddr := PX_IMS_TS_PCSCF_IPADDR; // via vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact vc_userprofile.homeDomain := PX_IMS_TS_IMS1UE_HOME_DOMAIN; // From, To (register) vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization Loading @@ -537,7 +541,8 @@ module LibIms_Steps vc_userprofile.currIpaddr := PX_IMS_TS_PCSCF_IPADDR; // via vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE1_REGISTRAR; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization Loading @@ -551,6 +556,7 @@ module LibIms_Steps vc_userprofile.currIpaddr := PX_IMS_TS_PCSCF_IPADDR; // via vc_userprofile.contactPort := PX_IMS_TS_UE2_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE2_IPADDR; // contact vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE2_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE2_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization Loading @@ -565,6 +571,7 @@ module LibIms_Steps vc_userprofile.currIpaddr := PX_IMS_TS_PCSCF_IPADDR; // via vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE2_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_unknownUE_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization Loading @@ -576,14 +583,15 @@ module LibIms_Steps case (c_userProfile_SCSCFwithHomeUE) { //variant c_userProfile_SCSCFwithHomeUE vc_userprofile.currPort := PX_IMS_TS_SCSCF_PORT; // via (Mw interface of TS) vc_userprofile.currIpaddr := PX_IMS_TS_SCSCF_IPADDR; // via vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization vc_userprofile.contactPort := PX_IMS_TS_UE4_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE4_IPADDR; // contact vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE4_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE4_QOP; // Authorization vc_userprofile.privUsername := PX_IMS_SUT_UE4_PRIVAT_USERNAME; // Authorization vc_userprofile.passwd := PX_IMS_SUT_UE4_PRIVAT_PASSWD; // Authorization vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_REGISTRAR; // Authorization } case (c_userProfile_AS1) { //variant c_userProfile_AS1 Loading Loading @@ -670,7 +678,7 @@ module LibIms_Steps } case (c_userProfile_SCSCFwithHomeUE) { p_sipUrl.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_IMS1UE_PUBLIC_USER, password:=omit}; p_sipUrl.hostPort := {host := PX_IMS_TS_SCSCF_IPADDR, portField :=omit} p_sipUrl.hostPort := {host := PX_IMS_TS_IMS1UE_HOME_DOMAIN, portField :=omit} } case (c_userProfile_ISUP) { p_sipUrl.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_ISUP_PUBLIC_USER, password:=omit}; Loading Loading @@ -875,6 +883,63 @@ module LibIms_Steps }//end function f_awaitingRegistration_IMS /** * * @desc remove registration * @param p_cSeq_s cseq parameter */ function f_RemoveRegistration_IMS(inout CSeq p_cSeq) runs on SipComponent { var CommaParam_List v_challenge; var Credentials v_credentials; var template REGISTER_Request v_request; if (PX_SIP_REGISTRATION) { f_setHeaders_deREGISTER(p_cSeq); v_request := m_REGISTER_Request_expires_IMS(vc_requestUri, vc_callIdReg, p_cSeq, vc_from, vc_to, vc_via, vc_contact, vc_authorization, "0"); v_request.msgHeader.route := f_route(); f_SendREGISTER(v_request); if (PX_SIP_REGISTER_AUTHENTICATION_ENABLED) { // receiving 401 Unauthorized response. // and Re-send REGISTER request with Authorization header tc_ack.start(PX_SIP_TACK); alt { [] SIPP.receive (mw_Response_Base(c_statusLine401, vc_callIdReg, p_cSeq)) -> value vc_response { tc_ack.stop; // set headers via, cseq and authorization f_setHeaders_2ndREGISTER(p_cSeq); v_request := m_REGISTER_Request_expires_IMS(vc_requestUri, vc_callIdReg, p_cSeq, vc_from, vc_to, vc_via, vc_contact, vc_authorization, "0"); v_request.msgHeader.route := f_route(); // Re-send protected REGISTER f_SendREGISTER(v_request);//LibSip // awaiting 200 OK REGISTER f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq)); } [] SIPP.receive (mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq))-> value vc_response { tc_ack.stop; f_setHeadersOnReceiptOfResponse(vc_cSeq, vc_response); log ("Authorization was not requested as expected"); } } } else { f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq)); } } } // end f_RemoveRegistration_IMS } // end group registration group preambles { Loading Loading @@ -908,7 +973,7 @@ module LibIms_Steps //Preamble f_init_userprofile(p_userprofile); // assignment of PIXIT values to component variable vc_sdp_local := valueof(m_SDP_bandwidth(valueof(m_media_dynPT(PX_SIP_SDP_dyn, PX_SIP_SDP_encoding)), vc_userprofile)); vc_contact := valueof(m_Contact(m_SipUrl_contactIpaddr(vc_userprofile))); } /* Loading
LibIms_Templates.ttcn +68 −16 Original line number Diff line number Diff line Loading @@ -64,12 +64,12 @@ group HeaderFieldTemplates{ minSeParam:=omit } template PathValue m_pathvalue (SipUrl p_sipUrl):= template PathValue mw_pathvalue (SipUrl p_sipUrl):= { nameAddr := {displayName := omit, // optional charstring nameAddr := {displayName := *, // optional charstring addrSpec := p_sipUrl // SipUrl }, rrParam := omit rrParam := * } template Path m_path (SipUrl p_sipUrl):= Loading @@ -84,6 +84,21 @@ group HeaderFieldTemplates{ } } template Path m_path_TS := { fieldName := PATH_E, pathValues := { {nameAddr := { displayName := omit, // optional charstring addrSpec := { scheme := "sip", userInfo := {userOrTelephoneSubscriber:="registrar"}, hostPort := {PX_IMS_TS_PCSCF_HOME_DOMAIN, PX_IMS_TS_PCSCF_PORT}, urlParameters := omit, headers := omit}}, rrParam := omit} } } /* * @desc Path header field expectation with at least one path value * @param p_sipUrl value of the last element in the list of path values Loading @@ -91,7 +106,7 @@ group HeaderFieldTemplates{ template Path mw_path (SipUrl p_sipUrl):= { fieldName := PATH_E, pathValues := {*,m_pathvalue(p_sipUrl)} // any number of SipUrl may occur before p_sipUrl pathValues := {mw_pathvalue(p_sipUrl)} // any number of SipUrl may occur before p_sipUrl } template PAccessNetworkInfo m_pAccessNetworkInfo_IEEE_11a := Loading @@ -110,23 +125,36 @@ group HeaderFieldTemplates{ 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 chargeAddrParams := {{id:="ccf",paramValue :="192.1.1.1;"}, // value is fixed because it is deleted on proxy {id:="ecf",paramValue :="192.1.1.2"}} // value is fixed because it is deleted on proxy }; template PChargingVector m_pChargingVector(template SemicolonParam_List p_chargeParams) := { fieldName := P_CHARGING_VECTOR_E, chargeParams := p_chargeParams }; template PChargingVector m_pChargingVector_icid_TS := { fieldName := P_CHARGING_VECTOR_E, chargeParams := {{id:="icid-value", paramValue :="012345"}} }; 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"}, 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:="icid-generated-at", paramValue :="192.1.1.10;"}, {id:="orig-ioi", paramValue := p_homeDomain}} }; Loading @@ -153,6 +181,13 @@ group HeaderFieldTemplates{ optionsTags := {"sec-agree"} }; template PVisitedNetworkID m_pVisitedNetworkID_TS := { fieldName := P_VISITED_NETWORK_E, vNetWorkSpec := {{vNetworkSpecToken := "Viseted ETSI 1", genericParams := omit}} } template PVisitedNetworkID mw_pVisitedNetworkID := { fieldName := P_VISITED_NETWORK_E, Loading Loading @@ -1452,6 +1487,26 @@ group request_send { } } template MESSAGE_Request m_MESSAGE_Request_MBody_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template Require p_require, template Route p_route, template Supported p_supported, template MessageBody p_messageBody) modifies m_MESSAGE_Request_Base := { msgHeader := { contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(m_MBody_longPlainText))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText}, pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, require := p_require, route := p_route, //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation supported := p_supported }, messageBody := p_messageBody } template MESSAGE_Request m_MESSAGE_Request_NoBody_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template Require p_require, Loading Loading @@ -1667,6 +1722,10 @@ group request_send { contact := p_contact, cSeq := p_cSeq, fromField := p_from, path := m_path_TS, pChargingVector := m_pChargingVector_icid_TS, pVisitedNetworkID := m_pVisitedNetworkID_TS, require := {fieldName := REQUIRE_E,optionsTags := {"path"}}, toField := p_to, via := p_via Loading Loading @@ -2586,7 +2645,6 @@ group response_send 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 Loading @@ -2596,7 +2654,6 @@ group response_send 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 Loading @@ -2606,7 +2663,6 @@ group response_send 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, Loading @@ -2618,7 +2674,6 @@ group response_send 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, Loading @@ -2629,7 +2684,6 @@ group response_send 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 Loading @@ -2639,7 +2693,6 @@ group response_send 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 Loading Loading @@ -2717,7 +2770,6 @@ group response_send 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 Loading