Loading DiameterRx/ttcn/DiameterRx_ImsGm_TCFunctions.ttcn +36 −12 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ module DiameterRx_ImsGm_TCFunctions { var template REGISTER_Request v_register; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, Loading @@ -42,16 +44,14 @@ module DiameterRx_ImsGm_TCFunctions { // 200 OK and user profile setting f_IMS_preamble_withRegistration(c_userProfile_UE1atSUThome, p_cSeq_s, v_register); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // point // preamble // done f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync point preamble done // TESTBODY // prepare and send INVITE UE2 // @SUT LibIms_Steps .f_setHeadersINVITE(p_cSeq_s, c_userProfile_UE2atSUThome); f_SendINVITE(m_INVITE_Request_UE(vc_requestUri, vc_callId, f_SendINVITE(m_INVITE_Request_UE_Diameter(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, vc_route_REG, omit, Loading Loading @@ -93,6 +93,8 @@ module DiameterRx_ImsGm_TCFunctions { var template REGISTER_Request v_register; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, Loading @@ -106,10 +108,8 @@ module DiameterRx_ImsGm_TCFunctions { f_IMS_preamble_withRegistration(c_userProfile_UE2atSUThome, p_cSeq_s, v_register); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // point // preamble // done f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync point preamble done // TESTBODY // Awaiting INVITE f_awaitingINVITE(mw_INVITE_Request_Base); Loading Loading @@ -173,7 +173,7 @@ module DiameterRx_ImsGm_TCFunctions { // @SUT LibIms_Steps .f_setHeadersINVITE(p_cSeq_s, c_userProfile_UE2atSUThome); f_SendINVITE(m_INVITE_Request_UE(vc_requestUri, vc_callId, f_SendINVITE(m_INVITE_Request_UE_Diameter(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, vc_route_REG, omit, Loading Loading @@ -300,7 +300,7 @@ module DiameterRx_ImsGm_TCFunctions { // @SUT LibIms_Steps .f_setHeadersINVITE(p_cSeq_s, c_userProfile_UE2atSUThome); f_SendINVITE(m_INVITE_Request_UE(vc_requestUri, vc_callId, f_SendINVITE(m_INVITE_Request_UE_Diameter(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, vc_route_REG, omit, Loading @@ -322,7 +322,7 @@ module DiameterRx_ImsGm_TCFunctions { // Check function to set headers for reinvite on // originating side LibIms_Steps.f_setHeadersReINVITE(p_cSeq_s, true); f_SendINVITE(m_INVITE_Request_UE(vc_requestUri, vc_callId, f_SendINVITE(m_INVITE_Request_UE_Diameter(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, vc_route, omit, Loading Loading @@ -428,4 +428,28 @@ module DiameterRx_ImsGm_TCFunctions { } //end group TP_TargetRefresh group IMSTemplates { template INVITE_Request m_INVITE_Request_UE_Diameter (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}, require := p_require, route := p_route, supported := p_supported }, messageBody := p_mb } } } // end module DiameterRx_ImsGm_TCFunctions No newline at end of file DiameterRx/ttcn/DiameterRx_PIXITS.ttcn +41 −4 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ module DiameterRx_PIXITS /** @desc octetstring , PIXIT item A-1/7 (This is an operator option, not a protocol option), UE IP address: UE1 IP address: The Framed-IP-Address AVP (AVP Code 8) [RADIUS] is of type OctetString and contains an IPv4 address of the type specified in the Loading @@ -61,11 +61,48 @@ module DiameterRx_PIXITS Ref: TS 129 214 5-4, table 5-4-1 */ modulepar octetstring PX_UE_framedIpAddress := 'ffffffff'O; modulepar octetstring PX_UE1_framedIpAddress := 'ffffffff'O; /** @desc octetstring , PIXIT item A-1/7 (This is an operator option, not a protocol option), UE2 IP address: The Framed-IP-Address AVP (AVP Code 8) [RADIUS] is of type OctetString and contains an IPv4 address of the type specified in the attribute value to be configured for the user; It MAY be used in an authorization request as a hint to the server that a specific address is desired, but the server is not required to honor the hint in the corresponding response; Two values have special significance: 0xFFFFFFFF and 0xFFFFFFFE; The value 0xFFFFFFFF indicates that the NAS should allow the user to select an address (i.e., negotiated); The value 0xFFFFFFFE indicates that the NAS should select an address for the user (eg, assigned from a pool of addresses kept by the NAS); Ref: TS 129 214 5-4, table 5-4-1 */ modulepar octetstring PX_UE2_framedIpAddress := 'ffffffff'O; /** @desc octetstring, PIXIT item A-1/8 (This is an operator option, not a protocol option), UE1 IP6 address: The Framed-IPv6-Prefix AVP (AVP Code 97) is of type OctetString and contains the IPv6 prefix to be configured for the user; One or more AVPs MAY be used in authorization requests as a hint to the server that specific IPv6 prefixes are desired, but the server is not required to honor the hint in the corresponding response; Ref: TS 129 214 5-4, table 5-4-1 */ modulepar octetstring PX_UE1_framedIp6Address := 'ffffffff'O; /** @desc octetstring, PIXIT item A-1/8 (This is an operator option, not a protocol option), UE IP6 address: UE2 IP6 address: The Framed-IPv6-Prefix AVP (AVP Code 97) is of type OctetString and contains the IPv6 prefix to be configured for the user; One or more Loading @@ -76,7 +113,7 @@ module DiameterRx_PIXITS Ref: TS 129 214 5-4, table 5-4-1 */ modulepar octetstring PX_UE_framedIp6Address := 'ffffffff'O; modulepar octetstring PX_UE2_framedIp6Address := 'ffffffff'O; Loading DiameterRx/ttcn/DiameterRx_Rx_TCFunctions.ttcn +697 −432 File changed.Preview size limit exceeded, changes collapsed. Show changes DiameterRx/ttcn/DiameterRx_Steps.ttcn3 +83 −11 Original line number Diff line number Diff line Loading @@ -80,14 +80,14 @@ * @desc This is a test step that initiate session establishment by the ETS * @param */ function f_ETS_session_establishment() function f_ETS_session_establishment(template Framed_IP_Address_AVP p_framedIpAddress4, template Framed_IPv6_Prefix_AVP p_framedIpAddress6) runs on DiameterComponent { f_send_AAR(m_AAR_FIP_Media1(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, vc_destinationHost, f_framedIpAddress4_send(), f_framedIpAddress6_send(), p_framedIpAddress4, p_framedIpAddress6, m_mediaComponentDescription_flowStatus(m_flowStatus(ENABLED_E)))); f_awaiting_AAA(mw_AAA_modified_ResultCode_ANCA(?, ?, ?, Loading Loading @@ -128,36 +128,108 @@ group AVPOperations { function f_framedIpAddress4 () function f_framedIpAddress4 (template octetstring p_framedIpAddress) return template Framed_IP_Address_AVP { if (PX_IPv6) {return(omit)} else {return(mw_framedIpAddress(PX_UE_framedIpAddress))} else {return(mw_framedIpAddress(p_framedIpAddress))} } function f_framedIpAddress6 () function f_framedIpAddress6 (template octetstring p_framedIpAddress) return template Framed_IPv6_Prefix_AVP { if (PX_IPv6) {return(mw_framedIp6Address(PX_UE_framedIp6Address))} {return(mw_framedIp6Address(p_framedIpAddress))} else {return(omit)} } function f_framedIpAddress4_send () function f_framedIpAddress4_send (octetstring p_framedIpAddress) return template Framed_IP_Address_AVP { if (PX_IPv6) {return(omit)} else {return(m_framedIpAddress(PX_UE_framedIpAddress))} else {return(m_framedIpAddress(p_framedIpAddress))} } function f_framedIpAddress6_send () function f_framedIpAddress6_send (octetstring p_framedIpAddress) return template Framed_IPv6_Prefix_AVP { if (PX_IPv6) {return(m_framedIp6Address(PX_UE_framedIp6Address))} {return(m_framedIp6Address(p_framedIpAddress))} else {return(omit)} } }//end group AVPOperations group twoSessionRelatedFunctions{ function f_awaitAAR_sendAAAandSaveSessionIds() runs on DiameterComponent { var DIAMETER_MSG v_MSG; if (PX_DIAM_LLP_ENABLED and f_gtZero(vc_ETS_conn)) { tc_wait.start(2.0); interleave { []DIAMP.receive (DIAMETER_MSG:{aAR_MSG:=mw_AAR_basic(?,?,?,?,*)}) -> value v_MSG { tc_wait.stop; vc_recvDiamMsg := v_MSG; // store specific parameter for AAR if needed vc_recv_hopid:= vc_recvDiamMsg.aAR_MSG.header.hopid; vc_recv_endid:= vc_recvDiamMsg.aAR_MSG.header.endid; vc_sessionId := vc_recvDiamMsg.aAR_MSG.session_Id; //TODO store session1 f_send_AAA(m_AAA_basic(vc_sessionId, vc_originHost, vc_originRealm)); } []DIAMP.receive (DIAMETER_MSG:{aAR_MSG:=mw_AAR_basic(?,?,?,?,*)}) -> value v_MSG { tc_wait.stop; vc_recvDiamMsg := v_MSG; // store specific parameter for AAR if needed vc_recv_hopid:= vc_recvDiamMsg.aAR_MSG.header.hopid; vc_recv_endid:= vc_recvDiamMsg.aAR_MSG.header.endid; vc_sessionId := vc_recvDiamMsg.aAR_MSG.session_Id; //TODO store session2 f_send_AAA(m_AAA_basic(vc_sessionId, vc_originHost, vc_originRealm)); } } } else { tc_wait.start; interleave { []DIAMP.receive (DIAMETER_MSG:{aAR_MSG:=mw_AAR_basic(?,?,?,?,*)}) -> value v_MSG { tc_wait.stop; vc_recvDiamMsg := v_MSG; // store specific parameter for AAR if needed vc_recv_hopid:= vc_recvDiamMsg.aAR_MSG.header.hopid; vc_recv_endid:= vc_recvDiamMsg.aAR_MSG.header.endid; vc_sessionId := vc_recvDiamMsg.aAR_MSG.session_Id; //TODO store session1 f_send_AAA(m_AAA_basic(vc_sessionId, vc_originHost, vc_originRealm)); } []DIAMP.receive (DIAMETER_MSG:{aAR_MSG:=mw_AAR_basic(?,?,?,?,*)}) -> value v_MSG { tc_wait.stop; vc_recvDiamMsg := v_MSG; // store specific parameter for AAR if needed vc_recv_hopid:= vc_recvDiamMsg.aAR_MSG.header.hopid; vc_recv_endid:= vc_recvDiamMsg.aAR_MSG.header.endid; vc_sessionId := vc_recvDiamMsg.aAR_MSG.session_Id; //TODO store session2 f_send_AAA(m_AAA_basic(vc_sessionId, vc_originHost, vc_originRealm)); } } } } //end function f_awaitAAR_sendAAAandSaveSessionIds() } //end group twoSessionRelatedFunctions } // end module DiameterRx_Steps No newline at end of file DiameterRx/ttcn/DiameterRx_Templates.ttcn +2 −1 Original line number Diff line number Diff line Loading @@ -672,7 +672,8 @@ module DiameterRx_Templates { session_Id := p_sessionId, origin_Host := p_originHost, origin_Realm := p_originRealm, auth_Application_Id := m_authApplicationId(c_applIdRx) auth_Application_Id := m_authApplicationId(c_applIdRx), result_Code := m_resultCode(m_resultCode_diameterSuccess) } template ASA_MSG m_ASA_basic(template (value) Session_Id_AVP p_sessionId, Loading Loading
DiameterRx/ttcn/DiameterRx_ImsGm_TCFunctions.ttcn +36 −12 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ module DiameterRx_ImsGm_TCFunctions { var template REGISTER_Request v_register; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, Loading @@ -42,16 +44,14 @@ module DiameterRx_ImsGm_TCFunctions { // 200 OK and user profile setting f_IMS_preamble_withRegistration(c_userProfile_UE1atSUThome, p_cSeq_s, v_register); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // point // preamble // done f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync point preamble done // TESTBODY // prepare and send INVITE UE2 // @SUT LibIms_Steps .f_setHeadersINVITE(p_cSeq_s, c_userProfile_UE2atSUThome); f_SendINVITE(m_INVITE_Request_UE(vc_requestUri, vc_callId, f_SendINVITE(m_INVITE_Request_UE_Diameter(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, vc_route_REG, omit, Loading Loading @@ -93,6 +93,8 @@ module DiameterRx_ImsGm_TCFunctions { var template REGISTER_Request v_register; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, Loading @@ -106,10 +108,8 @@ module DiameterRx_ImsGm_TCFunctions { f_IMS_preamble_withRegistration(c_userProfile_UE2atSUThome, p_cSeq_s, v_register); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // point // preamble // done f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync point preamble done // TESTBODY // Awaiting INVITE f_awaitingINVITE(mw_INVITE_Request_Base); Loading Loading @@ -173,7 +173,7 @@ module DiameterRx_ImsGm_TCFunctions { // @SUT LibIms_Steps .f_setHeadersINVITE(p_cSeq_s, c_userProfile_UE2atSUThome); f_SendINVITE(m_INVITE_Request_UE(vc_requestUri, vc_callId, f_SendINVITE(m_INVITE_Request_UE_Diameter(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, vc_route_REG, omit, Loading Loading @@ -300,7 +300,7 @@ module DiameterRx_ImsGm_TCFunctions { // @SUT LibIms_Steps .f_setHeadersINVITE(p_cSeq_s, c_userProfile_UE2atSUThome); f_SendINVITE(m_INVITE_Request_UE(vc_requestUri, vc_callId, f_SendINVITE(m_INVITE_Request_UE_Diameter(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, vc_route_REG, omit, Loading @@ -322,7 +322,7 @@ module DiameterRx_ImsGm_TCFunctions { // Check function to set headers for reinvite on // originating side LibIms_Steps.f_setHeadersReINVITE(p_cSeq_s, true); f_SendINVITE(m_INVITE_Request_UE(vc_requestUri, vc_callId, f_SendINVITE(m_INVITE_Request_UE_Diameter(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, vc_route, omit, Loading Loading @@ -428,4 +428,28 @@ module DiameterRx_ImsGm_TCFunctions { } //end group TP_TargetRefresh group IMSTemplates { template INVITE_Request m_INVITE_Request_UE_Diameter (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}, require := p_require, route := p_route, supported := p_supported }, messageBody := p_mb } } } // end module DiameterRx_ImsGm_TCFunctions No newline at end of file
DiameterRx/ttcn/DiameterRx_PIXITS.ttcn +41 −4 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ module DiameterRx_PIXITS /** @desc octetstring , PIXIT item A-1/7 (This is an operator option, not a protocol option), UE IP address: UE1 IP address: The Framed-IP-Address AVP (AVP Code 8) [RADIUS] is of type OctetString and contains an IPv4 address of the type specified in the Loading @@ -61,11 +61,48 @@ module DiameterRx_PIXITS Ref: TS 129 214 5-4, table 5-4-1 */ modulepar octetstring PX_UE_framedIpAddress := 'ffffffff'O; modulepar octetstring PX_UE1_framedIpAddress := 'ffffffff'O; /** @desc octetstring , PIXIT item A-1/7 (This is an operator option, not a protocol option), UE2 IP address: The Framed-IP-Address AVP (AVP Code 8) [RADIUS] is of type OctetString and contains an IPv4 address of the type specified in the attribute value to be configured for the user; It MAY be used in an authorization request as a hint to the server that a specific address is desired, but the server is not required to honor the hint in the corresponding response; Two values have special significance: 0xFFFFFFFF and 0xFFFFFFFE; The value 0xFFFFFFFF indicates that the NAS should allow the user to select an address (i.e., negotiated); The value 0xFFFFFFFE indicates that the NAS should select an address for the user (eg, assigned from a pool of addresses kept by the NAS); Ref: TS 129 214 5-4, table 5-4-1 */ modulepar octetstring PX_UE2_framedIpAddress := 'ffffffff'O; /** @desc octetstring, PIXIT item A-1/8 (This is an operator option, not a protocol option), UE1 IP6 address: The Framed-IPv6-Prefix AVP (AVP Code 97) is of type OctetString and contains the IPv6 prefix to be configured for the user; One or more AVPs MAY be used in authorization requests as a hint to the server that specific IPv6 prefixes are desired, but the server is not required to honor the hint in the corresponding response; Ref: TS 129 214 5-4, table 5-4-1 */ modulepar octetstring PX_UE1_framedIp6Address := 'ffffffff'O; /** @desc octetstring, PIXIT item A-1/8 (This is an operator option, not a protocol option), UE IP6 address: UE2 IP6 address: The Framed-IPv6-Prefix AVP (AVP Code 97) is of type OctetString and contains the IPv6 prefix to be configured for the user; One or more Loading @@ -76,7 +113,7 @@ module DiameterRx_PIXITS Ref: TS 129 214 5-4, table 5-4-1 */ modulepar octetstring PX_UE_framedIp6Address := 'ffffffff'O; modulepar octetstring PX_UE2_framedIp6Address := 'ffffffff'O; Loading
DiameterRx/ttcn/DiameterRx_Rx_TCFunctions.ttcn +697 −432 File changed.Preview size limit exceeded, changes collapsed. Show changes
DiameterRx/ttcn/DiameterRx_Steps.ttcn3 +83 −11 Original line number Diff line number Diff line Loading @@ -80,14 +80,14 @@ * @desc This is a test step that initiate session establishment by the ETS * @param */ function f_ETS_session_establishment() function f_ETS_session_establishment(template Framed_IP_Address_AVP p_framedIpAddress4, template Framed_IPv6_Prefix_AVP p_framedIpAddress6) runs on DiameterComponent { f_send_AAR(m_AAR_FIP_Media1(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, vc_destinationHost, f_framedIpAddress4_send(), f_framedIpAddress6_send(), p_framedIpAddress4, p_framedIpAddress6, m_mediaComponentDescription_flowStatus(m_flowStatus(ENABLED_E)))); f_awaiting_AAA(mw_AAA_modified_ResultCode_ANCA(?, ?, ?, Loading Loading @@ -128,36 +128,108 @@ group AVPOperations { function f_framedIpAddress4 () function f_framedIpAddress4 (template octetstring p_framedIpAddress) return template Framed_IP_Address_AVP { if (PX_IPv6) {return(omit)} else {return(mw_framedIpAddress(PX_UE_framedIpAddress))} else {return(mw_framedIpAddress(p_framedIpAddress))} } function f_framedIpAddress6 () function f_framedIpAddress6 (template octetstring p_framedIpAddress) return template Framed_IPv6_Prefix_AVP { if (PX_IPv6) {return(mw_framedIp6Address(PX_UE_framedIp6Address))} {return(mw_framedIp6Address(p_framedIpAddress))} else {return(omit)} } function f_framedIpAddress4_send () function f_framedIpAddress4_send (octetstring p_framedIpAddress) return template Framed_IP_Address_AVP { if (PX_IPv6) {return(omit)} else {return(m_framedIpAddress(PX_UE_framedIpAddress))} else {return(m_framedIpAddress(p_framedIpAddress))} } function f_framedIpAddress6_send () function f_framedIpAddress6_send (octetstring p_framedIpAddress) return template Framed_IPv6_Prefix_AVP { if (PX_IPv6) {return(m_framedIp6Address(PX_UE_framedIp6Address))} {return(m_framedIp6Address(p_framedIpAddress))} else {return(omit)} } }//end group AVPOperations group twoSessionRelatedFunctions{ function f_awaitAAR_sendAAAandSaveSessionIds() runs on DiameterComponent { var DIAMETER_MSG v_MSG; if (PX_DIAM_LLP_ENABLED and f_gtZero(vc_ETS_conn)) { tc_wait.start(2.0); interleave { []DIAMP.receive (DIAMETER_MSG:{aAR_MSG:=mw_AAR_basic(?,?,?,?,*)}) -> value v_MSG { tc_wait.stop; vc_recvDiamMsg := v_MSG; // store specific parameter for AAR if needed vc_recv_hopid:= vc_recvDiamMsg.aAR_MSG.header.hopid; vc_recv_endid:= vc_recvDiamMsg.aAR_MSG.header.endid; vc_sessionId := vc_recvDiamMsg.aAR_MSG.session_Id; //TODO store session1 f_send_AAA(m_AAA_basic(vc_sessionId, vc_originHost, vc_originRealm)); } []DIAMP.receive (DIAMETER_MSG:{aAR_MSG:=mw_AAR_basic(?,?,?,?,*)}) -> value v_MSG { tc_wait.stop; vc_recvDiamMsg := v_MSG; // store specific parameter for AAR if needed vc_recv_hopid:= vc_recvDiamMsg.aAR_MSG.header.hopid; vc_recv_endid:= vc_recvDiamMsg.aAR_MSG.header.endid; vc_sessionId := vc_recvDiamMsg.aAR_MSG.session_Id; //TODO store session2 f_send_AAA(m_AAA_basic(vc_sessionId, vc_originHost, vc_originRealm)); } } } else { tc_wait.start; interleave { []DIAMP.receive (DIAMETER_MSG:{aAR_MSG:=mw_AAR_basic(?,?,?,?,*)}) -> value v_MSG { tc_wait.stop; vc_recvDiamMsg := v_MSG; // store specific parameter for AAR if needed vc_recv_hopid:= vc_recvDiamMsg.aAR_MSG.header.hopid; vc_recv_endid:= vc_recvDiamMsg.aAR_MSG.header.endid; vc_sessionId := vc_recvDiamMsg.aAR_MSG.session_Id; //TODO store session1 f_send_AAA(m_AAA_basic(vc_sessionId, vc_originHost, vc_originRealm)); } []DIAMP.receive (DIAMETER_MSG:{aAR_MSG:=mw_AAR_basic(?,?,?,?,*)}) -> value v_MSG { tc_wait.stop; vc_recvDiamMsg := v_MSG; // store specific parameter for AAR if needed vc_recv_hopid:= vc_recvDiamMsg.aAR_MSG.header.hopid; vc_recv_endid:= vc_recvDiamMsg.aAR_MSG.header.endid; vc_sessionId := vc_recvDiamMsg.aAR_MSG.session_Id; //TODO store session2 f_send_AAA(m_AAA_basic(vc_sessionId, vc_originHost, vc_originRealm)); } } } } //end function f_awaitAAR_sendAAAandSaveSessionIds() } //end group twoSessionRelatedFunctions } // end module DiameterRx_Steps No newline at end of file
DiameterRx/ttcn/DiameterRx_Templates.ttcn +2 −1 Original line number Diff line number Diff line Loading @@ -672,7 +672,8 @@ module DiameterRx_Templates { session_Id := p_sessionId, origin_Host := p_originHost, origin_Realm := p_originRealm, auth_Application_Id := m_authApplicationId(c_applIdRx) auth_Application_Id := m_authApplicationId(c_applIdRx), result_Code := m_resultCode(m_resultCode_diameterSuccess) } template ASA_MSG m_ASA_basic(template (value) Session_Id_AVP p_sessionId, Loading