diff --git a/ttcn/LibIms_Steps.ttcn b/ttcn/LibIms_Steps.ttcn index 46d88dbe5dc2b9dc805c3ff8478eb2ecf882f648..6f597cd0df7d030df2081cbfd3d6c3c52cdf5a02 100644 --- a/ttcn/LibIms_Steps.ttcn +++ b/ttcn/LibIms_Steps.ttcn @@ -86,6 +86,33 @@ module LibIms_Steps vc_recordRoute := p_message.msgHeader.recordRoute; } } + + /** + * + * @desc functions add new recordRoute parameter + * @param p_message (request) SIP message to be used to prepair via header + * @param p_userprofile user profile + */ + function f_addNewRecordRouteIMS(in RecordRoute p_rr) runs on ImsComponent return template RecordRoute + { + template RecordRoute v_recordRoute := omit; + var integer v_intRecordRoute; + var integer i := 1; + var integer j := 0; + + v_intRecordRoute := sizeof(p_rr.routeBody); + if (v_intRecordRoute>0){ + while (j < v_intRecordRoute) { + p_rr.routeBody[v_intRecordRoute] := p_rr.routeBody[v_intRecordRoute-1]; + v_intRecordRoute := v_intRecordRoute - 1; + } + p_rr.routeBody[0] := valueof(m_routeBody_currIpAddr(vc_userprofile)); + vc_recordRoute := p_rr; + return vc_recordRoute; + } + else {return(v_recordRoute)} + } + }//end group parameterOperations group fieldOperations { @@ -338,7 +365,9 @@ module LibIms_Steps */ function f_setHeadersReINVITE (inout CSeq p_cSeq_s, in boolean p_orginatingSide, in integer p_to_user) runs on ImsComponent { - var integer v_tmp; + var integer v_tmp, v_i, v_j, v_nbroute; + var Request v_request; + v_request := vc_request; f_setHeadersGeneral(p_cSeq_s, "INVITE"); // cseq, contact, branch, via @@ -353,6 +382,29 @@ module LibIms_Steps else { vc_to := vc_callee_To; vc_from := vc_callee_From; + + //get route from previous ACK request + // Route Management + if (ispresent(v_request.msgHeader.recordRoute)) + { + vc_recordRoute := v_request.msgHeader.recordRoute; + v_nbroute := sizeof(vc_recordRoute.routeBody); + // copy and reverse the order of the routes in route header + for (v_i:=0; v_i<=(v_nbroute - 1); v_i:=v_i+1) + { + v_j:= v_nbroute - 1 - v_i; + vc_route.routeBody[v_j]:=vc_recordRoute.routeBody[v_i]; + } + vc_route.fieldName := ROUTE_E; + vc_boo_recordRoute := true; + vc_boo_route := true; + } + else + { + vc_boo_recordRoute := false; + vc_boo_route := false; + } + } v_tmp := str2int(vc_sdp_local.origin.session_id); @@ -886,6 +938,10 @@ module LibIms_Steps v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_IMS1UE_PUBLIC_USER, password:=omit}; v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_PCSCF_IPADDR, portField :=omit} } + case (c_userProfile_PCSCFwithVisitingUE) { + v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_IMS1UE_PUBLIC_USER, password:=omit}; + v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_PCSCF_IPADDR, portField :=omit} + } case (c_userProfile_SCSCFwithHomeUE) { v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE4_PUBLIC_USER, password:=omit}; v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_SCSCF_HOME_DOMAIN, portField :=PX_IMS_TS_SCSCF_PORT} @@ -928,8 +984,12 @@ module LibIms_Steps } case (c_interfaceSIPURL_IMS_SUT_PCSCF1_ip) { v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:="", password:=omit}; - v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_PCSCF1_IPADDR, portField :=PX_IMS_SUT_PCSCF1_PORT} - } + v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_PCSCF1_IPADDR, portField :=PX_IMS_TS_SCSCF_PORT} + } + case (c_interfaceProfile_IMS_SUT_SCSCF) { + v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:="", password:=omit}; + v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_SCSCF_HOME_DOMAIN, portField :=PX_IMS_SUT_PCSCF1_PORT} + } case (c_conferenceProfile_factoryURI) { v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_CONF_FACTORY_NAME, password:=omit}; v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_CONF_HOME_DOMAIN, portField := omit} @@ -1274,7 +1334,7 @@ module LibIms_Steps f_setHeaders_SUBSCRIBE(p_cSeq_s); f_Subscription(p_cSeq_s, m_SUBSCRIBE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, vc_route_REG)); - } + } /* * diff --git a/ttcn/LibIms_Templates.ttcn b/ttcn/LibIms_Templates.ttcn index 6fbeacf0bb6b8e06e5357dbd70b85cd307aab757..9c18c8de6257d7145037691582dd61f7c334ee00 100644 --- a/ttcn/LibIms_Templates.ttcn +++ b/ttcn/LibIms_Templates.ttcn @@ -204,7 +204,7 @@ 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 }; @@ -224,16 +224,16 @@ group HeaderFieldTemplates{ template PChargingVector m_pChargingVector_origIoi_fixedValue(charstring p_homeDomain) := { fieldName := P_CHARGING_VECTOR_E, - chargeParams := {{id:=c_icid, paramValue :=c_icid_value &";"}, - {id:=c_icid_generated_at, paramValue :="192.1.1.10;"}, + chargeParams := {{id:=c_icid, paramValue :=c_icid_value}, + {id:=c_icid_generated_at, paramValue :="192.1.1.10"}, {id:=c_orig_ioi, paramValue := p_homeDomain}} }; template PChargingVector m_pChargingVector_termIoi_fixedValue(charstring p_homeDomain) := { fieldName := P_CHARGING_VECTOR_E, - chargeParams := {{id:=c_icid, paramValue :=c_icid_value&";"}, - {id:=c_icid_generated_at, paramValue :="192.1.1.10;"}, + chargeParams := {{id:=c_icid, paramValue :=c_icid_value}, + {id:=c_icid_generated_at, paramValue :="192.1.1.10"}, {id:=c_term_ioi, paramValue := p_homeDomain}} }; @@ -241,7 +241,7 @@ group HeaderFieldTemplates{ { fieldName := P_CHARGING_VECTOR_E, chargeParams := { - {id:=c_icid_generated_at, paramValue :="192.1.1.10;"}, + {id:=c_icid_generated_at, paramValue :="192.1.1.10"}, {id:=c_orig_ioi, paramValue := p_homeDomain}} }; @@ -279,7 +279,7 @@ group HeaderFieldTemplates{ template PVisitedNetworkID m_pVisitedNetworkID_TS := { fieldName := P_VISITED_NETWORK_E, - vNetWorkSpec := {{vNetworkSpecToken := "Viseted ETSI 1", + vNetWorkSpec := {{vNetworkSpecToken := "Visited ETSI 1", genericParams := omit}} } @@ -2382,6 +2382,12 @@ group request_receive { { msgHeader := { via := p_via } } + + template BYE_Request mw_BYE_Request_route(template CallId p_callId, template Route p_route) modifies mw_BYE_Request_Base + := + { + msgHeader := {route := p_route} + } template INVITE_Request mw_INVITE_Request_noPChargingFunction modifies mw_INVITE_Request_Base := @@ -2650,6 +2656,13 @@ group request_receive { } } + template MESSAGE_Request mw_MESSAGE_Request_route (template CallId p_callId, template Route p_route )modifies mw_MESSAGE_Request_Base + := + { + msgHeader := {route := p_route + } + } + template MESSAGE_Request mw_MESSAGE_Request_via (template CallId p_callId, template Via p_via )modifies mw_MESSAGE_Request_Base := {