Loading LibGtpv2C_Configuration.ttcn +78 −6 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ module LibGtpv2C_Configuration { // Activate sync default for MTC activate(a_mtc_shutdown()); vc_teid := 0; vc_sequenceNumber := 0; vc_restartCounter := 0; vc_teidGreCounter := 0; Loading Loading @@ -85,6 +86,7 @@ module LibGtpv2C_Configuration { activate(a_s1mme_default()); } vc_teid := 0; vc_sequenceNumber := 0; vc_restartCounter := 0; vc_teidGreCounter := 0; Loading Loading @@ -128,6 +130,7 @@ module LibGtpv2C_Configuration { activate(a_s1mmeh_default()); } vc_teid := 0; vc_sequenceNumber := 0; vc_restartCounter := 0; vc_teidGreCounter := 0; Loading Loading @@ -238,6 +241,7 @@ module LibGtpv2C_Configuration { // Activate sync default for MTC activate(a_mtc_shutdown()); vc_teid := 0; vc_sequenceNumber := 0; vc_restartCounter := 0; vc_teidGreCounter := 0; Loading Loading @@ -272,6 +276,7 @@ module LibGtpv2C_Configuration { activate(a_mtc_shutdown()); activate(a_s5_default()); vc_teid := 0; vc_sequenceNumber := 0; vc_restartCounter := 0; vc_teidGreCounter := 0; Loading Loading @@ -310,6 +315,7 @@ module LibGtpv2C_Configuration { activate(a_s4_default()); activate(a_s5_default()); vc_teid := 0; vc_sequenceNumber := 0; vc_restartCounter := 0; vc_teidGreCounter := 0; Loading Loading @@ -344,6 +350,7 @@ module LibGtpv2C_Configuration { activate(a_mtc_shutdown()); activate(a_s4_default()); vc_teid := 0; vc_sequenceNumber := 0; vc_restartCounter := 0; vc_teidGreCounter := 0; Loading Loading @@ -505,6 +512,16 @@ module LibGtpv2C_Configuration { group helperFunctions { /** * @desc Increment and return the sequence number * @return The new sequence number value * @verdict Unchanged */ function f_getNextTeid() runs on Gtpv2CComponent return UInt32 { vc_teid := (vc_teid + 1) mod c_uInt32Max; return vc_teid; } // End of function f_getNextTeid /** * @desc Increment and return the sequence number * @return The new sequence number value Loading Loading @@ -539,10 +556,22 @@ module LibGtpv2C_Configuration { group headers { function f_extract_teid(in Gtpv2CPdu p_gtpv2Pdu) return Oct4 { /** * @desc Extract the TEID IE from extended header * @param The GTPv2-C PDU * @return The TEID value * @verdict Unchanged */ function f_extract_teid(in Gtpv2CPdu p_gtpv2Pdu) return UInt32 { return p_gtpv2Pdu.extHeader.teid; } // End of function f_extract_teid /** * @desc Extract the Sequence Number IE from extended header * @param The GTPv2-C PDU * @return The Sequence Number value * @verdict Unchanged */ function f_extract_sequenceNumber(in Gtpv2CPdu p_gtpv2Pdu) return UInt24 { return p_gtpv2Pdu.extHeader.sequenceNumber; } // End of function f_extract_sequenceNumber Loading @@ -551,15 +580,22 @@ module LibGtpv2C_Configuration { group ieCreateSessionRequest { /** * @desc Extract the Recovery IE from Create Session Request message * @param The GTPv2-C PDU * @return The Recovery value * @verdict Unchanged */ function f_extract_recovery(in Gtpv2CPdu p_gtpv2Pdu) return template (omit) Recovery { // Sanity check // if (not(ispresent(p_gtpv2Pdu.payload.ieCreateSessionRequest.recovery))) { // return omit; // } // return p_gtpv2Pdu.payload.ieCreateSessionRequest.recovery; } // End of function f_extract_recovery /** * @desc Extract the EPS Bearer ID IE from Create Session Request message * @param The GTPv2-C PDU * @return The EPS Bearer ID value * @verdict Unchanged */ function f_extract_epsBearerId_from_createdBearerContext(in Gtpv2CPdu p_gtpv2Pdu) return template (omit) EpsBearerId { return p_gtpv2Pdu.payload.ieCreateSessionRequest.bearerContextsCreated.groupedIes.createdContextWithinCreateSessionRequest.linkedEpsBearerId; } // End of function f_extract_epsBearerId_from_createdBearerContext Loading @@ -568,16 +604,52 @@ module LibGtpv2C_Configuration { group ieCreateSessionResponse { /** * @desc Extract the Charging ID IE from Create Session Response message * @param The GTPv2-C PDU * @return The Charging ID value * @verdict Unchanged */ function f_extract_chargingId_from_createdBearerContext(in Gtpv2CPdu p_gtpv2Pdu) return template (omit) ChargingId { return p_gtpv2Pdu.payload.ieCreateSessionResponse.bearerContextsCreated.groupedIes.createdContextWithinCreateSessionResponse.chargingId; } // End of function f_extract_chargingId_from_createdBearerContext /** * @desc Extract the S5/S8-U PGW F-TEID IE from Create Session Response message * @param The GTPv2-C PDU * @return The S5/S8-U PGW F-TEID value * @verdict Unchanged */ function f_extract_s5_S8UPgw_from_createdBearerContext(in Gtpv2CPdu p_gtpv2Pdu) return template (omit) FullyQualifiedTeid { return p_gtpv2Pdu.payload.ieCreateSessionResponse.bearerContextsCreated.groupedIes.createdContextWithinCreateSessionResponse.s5_S8UPgw; } // End of function f_extract_chargingId_from_createdBearerContext } // End of group ieCreateSessionResponse group ieDeleteBearerRequest { /** * @desc Extract the Cause IE from Delete Bearer Request message * @param The GTPv2-C PDU * @return The Cause value * @verdict Unchanged */ function f_get_ieDeleteBearerRequest_cause(in Gtpv2CPdu p_gtpv2Pdu) return Cause { return p_gtpv2Pdu.payload.ieDeleteBearerRequest.cause; } // End of function f_get_ieDeleteBearerRequest_cause /** * @desc Extract the EPS Bearer ID IE from Delete Bearer Request message * @param The GTPv2-C PDU * @return The EPS Bearer ID value * @verdict Unchanged */ function f_get_ieDeleteBearerRequest_linkedEpsBearerId(in Gtpv2CPdu p_gtpv2Pdu) return EpsBearerId { return p_gtpv2Pdu.payload.ieDeleteBearerRequest.linkedEpsBearerId; } // End of function f_get_ieDeleteBearerRequest_linkedEpsBearerId } // End of group ieDeleteBearerRequest function f_extract_digit(Bit12 p_value, integer p_index) return Bit4 { var Bit12 v_result := (p_value >> (p_index - 1) * 4) and4b '000000001111'B; var Bit4 v_result4bits := int2bit(bit2int(v_result), 4); Loading LibGtpv2C_MME_Functions.ttcn +30 −30 Original line number Diff line number Diff line Loading @@ -310,7 +310,7 @@ module LibGtpv2C_MME_Functions { PX_AMBR_DL ), m_protocolConfigurationOptions( PX_PCO_PAYLOAD // TODO To be refined PX_PCO_PAYLOAD ), f_calculateInformationElementLength_bearerContext( m_BearerContexts( Loading Loading @@ -632,7 +632,7 @@ module LibGtpv2C_MME_Functions { ), -, mw_payload_deleteSessionRequest( mw_deleteSessionRequest_dummy // TODO To be refined mw_deleteSessionRequest_dummy ) ) ) Loading Loading @@ -670,13 +670,13 @@ module LibGtpv2C_MME_Functions { m_pdu( m_header_noteid(e_createSessionRequest), m_extendedHeader_teid( '00000011'O, // FIXME Use a PIXIT f_getNextTeid(), f_getNextSequenceNumber() ), m_payload_deleteBearerRequest( m_deleteBearerRequest_dummy( // TODO To be refined m_deleteBearerRequest_dummy( m_epsBearerId(PX_EBI), m_epsBearerId(PX_EBI) // TODO To be refined m_epsBearerId(PX_EBI) ) ) ) Loading @@ -696,7 +696,7 @@ module LibGtpv2C_MME_Functions { ), -, mw_payload_deleteBearerResponse( mw_deleteBearerResponse_dummy // TODO To be refined mw_deleteBearerResponse_dummy ) ) ) Loading Loading @@ -735,7 +735,7 @@ module LibGtpv2C_MME_Functions { m_pdu( m_header_noteid(e_downlinkDataNotification), m_extendedHeader_teid( '00000011'O, // FIXME Use a PIXIT f_getNextTeid(), f_getNextSequenceNumber() ), m_payload_downlinkDataNotification( Loading Loading @@ -799,7 +799,7 @@ module LibGtpv2C_MME_Functions { m_pdu( m_header_noteid(e_downlinkDataNotification), m_extendedHeader_teid( '00000011'O, // FIXME Use a PIXIT f_getNextTeid(), f_getNextSequenceNumber() ), m_payload_downlinkDataNotification( Loading Loading @@ -1004,7 +1004,7 @@ module LibGtpv2C_MME_Functions { m_pdu( m_header_noteid(e_updateBearerRequest), m_extendedHeader_teid( '00000011'O, // FIXME Use a PIXIT, f_getNextTeid(), f_getNextSequenceNumber() ), m_payload_updateBearerRequest( Loading Loading @@ -1282,7 +1282,7 @@ module LibGtpv2C_MME_Functions { m_pdu( m_header_noteid(e_stopPagingIndication), m_extendedHeader_teid( '00000011'O, // FIXME Use a PIXIT, f_getNextTeid(), f_getNextSequenceNumber() ), m_payload_stopPagingIndication( Loading Loading @@ -1708,14 +1708,14 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Switch on the UE to initiate a NAS-ATTACH-REQUEST event on MME"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_requestMessagesDone, e_success); // 2. Trigger Attch Accept if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Check NAS-ATTACH-ACCEPT event sent by MME"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_tbDone, e_success); Loading @@ -1736,7 +1736,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Switch on the UE"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -1762,7 +1762,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Switch off the UE to initiate a NAS-DETACH-REQUEST event on MME"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_tbDone, e_success); Loading @@ -1782,7 +1782,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Send a data packet from the EPC (Internet) to the UE"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -1805,7 +1805,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Do not accept the incoming call. This will cause the UE to not respond to the Paging message"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -1828,7 +1828,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("The UE performs an S1 handover to the cell of the second eNB"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -1851,7 +1851,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Switch on the UE"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -1874,7 +1874,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_MME_EMULATION)) { action("Via the OAM interface of the P-GW modify the avialiable resources or memory in the P-GW so they are not available"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -1897,7 +1897,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Generate an indication of bearer release from eNodeB"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -1920,7 +1920,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Generate an indication of bearer release from eNodeB indicating an invalid bearer context"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -1943,7 +1943,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Initiate S1-Based handover procedure (eNodeB #1)"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -1966,7 +1966,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Initiate Initiate S1-Based handover procedure (eNodeB #2)"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -1989,7 +1989,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Trigger an UE Context Release Request"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -2014,7 +2014,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Check that MME is sending paging"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_initDone, e_success); // 2. Send Stop Paging on S11 Loading @@ -2025,7 +2025,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Check that MME stops sending paging"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_tbDone, e_success); Loading @@ -2045,7 +2045,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Trigger a successful SRVCC Handover to CDMA2000 1xRTT "); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -2068,7 +2068,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Force the UE back to E-UTRA"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -2091,7 +2091,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Force a handover to the CDMA2000 HRPD network"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -2114,7 +2114,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Trigger a Delete PDN Connection Set Request from the eNodeB"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading LibGtpv2C_SGW_Functions.ttcn +43 −43 File changed.Preview size limit exceeded, changes collapsed. Show changes LibGtpv2C_Templates.ttcn +8 −8 Original line number Diff line number Diff line Loading @@ -209,7 +209,7 @@ module LibGtpv2C_Templates { * @param p_sequenceNumber Sequence number */ template (value) ExtendedHeader m_extendedHeader_teid( in template (value) Oct4 p_teid, in template (value) UInt32 p_teid, in template (value) UInt24 p_sequenceNumber ) := { teid := p_teid, Loading @@ -235,7 +235,7 @@ module LibGtpv2C_Templates { * @param p_sequenceNumber Sequence number */ template (present) ExtendedHeader mw_extendedHeader_teid( template (present) Oct4 p_teid := ?, template (present) UInt32 p_teid := ?, template (present) UInt24 p_sequenceNumber := ? ) := { teid := p_teid, Loading Loading @@ -3471,7 +3471,7 @@ module LibGtpv2C_Templates { /** * @desc GTPv2-C Basic S103PpdDataForwardingInfo receive template * @param p_hsgwAddressLength TODO * @param p_hsgwAddressLength The address length * @param p_greKey Generic Routing Encapsulation (GRE) key * @param p_epsBearerId Number of EPS Bearer IDs * @param p_epsBearerId EPS Bearer ID Loading Loading @@ -3876,7 +3876,7 @@ module LibGtpv2C_Templates { key := p_key, ipv4Address := p_ipv4Address, ipv6Address := omit, moreBytes := omit // FIXME To be refined moreBytes := omit } // End of template m_fullyQualifiedTeid_ipv4_s11_mme /** Loading Loading @@ -4212,9 +4212,9 @@ module LibGtpv2C_Templates { /** * @desc GTPv2-C Basic receive template for Fully qualified PDN Connection Set Identifier IE * @param p_csidsNum TODO * @param p_nodeId TODO * @param p_nodeId TODO * @param p_csidsNum Number of Connection Set Identifier (CSID) * @param p_nodeId Node identifier * @param p_csids Connection Set Identifiers (CSIDs) list */ template (present) FullyQualifiedPdnConnectionSetIdentifier mw_fullyQualifiedPdnConnectionSetIdentifier_ipv4( template (present) Bit4 p_csidsNum := ?, Loading Loading @@ -4259,7 +4259,7 @@ module LibGtpv2C_Templates { /** * @desc GTPv2-C Basic receive template for PrivateExtension IE * @param p_enterpriseID Enterprise ID (refer to http://www.iana.org/assignments/enterprise-numbers). * @param p_value_ TODO * @param p_value_ Proprietary value */ template (present) PrivateExtension mw_privateExtension( template (present) UInt16 p_enterpriseID := ?, Loading LibGtpv2C_TestSystem.ttcn +2 −0 Original line number Diff line number Diff line Loading @@ -88,6 +88,8 @@ module LibGtpv2C_TestSystem { /** Component to trigger on S4 message */ var Gtpv2CComponent vc_s4; /** TEID counter */ var UInt32 vc_teid; /** Sequence number counter */ var UInt24 vc_sequenceNumber; /** Restart counter */ Loading Loading
LibGtpv2C_Configuration.ttcn +78 −6 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ module LibGtpv2C_Configuration { // Activate sync default for MTC activate(a_mtc_shutdown()); vc_teid := 0; vc_sequenceNumber := 0; vc_restartCounter := 0; vc_teidGreCounter := 0; Loading Loading @@ -85,6 +86,7 @@ module LibGtpv2C_Configuration { activate(a_s1mme_default()); } vc_teid := 0; vc_sequenceNumber := 0; vc_restartCounter := 0; vc_teidGreCounter := 0; Loading Loading @@ -128,6 +130,7 @@ module LibGtpv2C_Configuration { activate(a_s1mmeh_default()); } vc_teid := 0; vc_sequenceNumber := 0; vc_restartCounter := 0; vc_teidGreCounter := 0; Loading Loading @@ -238,6 +241,7 @@ module LibGtpv2C_Configuration { // Activate sync default for MTC activate(a_mtc_shutdown()); vc_teid := 0; vc_sequenceNumber := 0; vc_restartCounter := 0; vc_teidGreCounter := 0; Loading Loading @@ -272,6 +276,7 @@ module LibGtpv2C_Configuration { activate(a_mtc_shutdown()); activate(a_s5_default()); vc_teid := 0; vc_sequenceNumber := 0; vc_restartCounter := 0; vc_teidGreCounter := 0; Loading Loading @@ -310,6 +315,7 @@ module LibGtpv2C_Configuration { activate(a_s4_default()); activate(a_s5_default()); vc_teid := 0; vc_sequenceNumber := 0; vc_restartCounter := 0; vc_teidGreCounter := 0; Loading Loading @@ -344,6 +350,7 @@ module LibGtpv2C_Configuration { activate(a_mtc_shutdown()); activate(a_s4_default()); vc_teid := 0; vc_sequenceNumber := 0; vc_restartCounter := 0; vc_teidGreCounter := 0; Loading Loading @@ -505,6 +512,16 @@ module LibGtpv2C_Configuration { group helperFunctions { /** * @desc Increment and return the sequence number * @return The new sequence number value * @verdict Unchanged */ function f_getNextTeid() runs on Gtpv2CComponent return UInt32 { vc_teid := (vc_teid + 1) mod c_uInt32Max; return vc_teid; } // End of function f_getNextTeid /** * @desc Increment and return the sequence number * @return The new sequence number value Loading Loading @@ -539,10 +556,22 @@ module LibGtpv2C_Configuration { group headers { function f_extract_teid(in Gtpv2CPdu p_gtpv2Pdu) return Oct4 { /** * @desc Extract the TEID IE from extended header * @param The GTPv2-C PDU * @return The TEID value * @verdict Unchanged */ function f_extract_teid(in Gtpv2CPdu p_gtpv2Pdu) return UInt32 { return p_gtpv2Pdu.extHeader.teid; } // End of function f_extract_teid /** * @desc Extract the Sequence Number IE from extended header * @param The GTPv2-C PDU * @return The Sequence Number value * @verdict Unchanged */ function f_extract_sequenceNumber(in Gtpv2CPdu p_gtpv2Pdu) return UInt24 { return p_gtpv2Pdu.extHeader.sequenceNumber; } // End of function f_extract_sequenceNumber Loading @@ -551,15 +580,22 @@ module LibGtpv2C_Configuration { group ieCreateSessionRequest { /** * @desc Extract the Recovery IE from Create Session Request message * @param The GTPv2-C PDU * @return The Recovery value * @verdict Unchanged */ function f_extract_recovery(in Gtpv2CPdu p_gtpv2Pdu) return template (omit) Recovery { // Sanity check // if (not(ispresent(p_gtpv2Pdu.payload.ieCreateSessionRequest.recovery))) { // return omit; // } // return p_gtpv2Pdu.payload.ieCreateSessionRequest.recovery; } // End of function f_extract_recovery /** * @desc Extract the EPS Bearer ID IE from Create Session Request message * @param The GTPv2-C PDU * @return The EPS Bearer ID value * @verdict Unchanged */ function f_extract_epsBearerId_from_createdBearerContext(in Gtpv2CPdu p_gtpv2Pdu) return template (omit) EpsBearerId { return p_gtpv2Pdu.payload.ieCreateSessionRequest.bearerContextsCreated.groupedIes.createdContextWithinCreateSessionRequest.linkedEpsBearerId; } // End of function f_extract_epsBearerId_from_createdBearerContext Loading @@ -568,16 +604,52 @@ module LibGtpv2C_Configuration { group ieCreateSessionResponse { /** * @desc Extract the Charging ID IE from Create Session Response message * @param The GTPv2-C PDU * @return The Charging ID value * @verdict Unchanged */ function f_extract_chargingId_from_createdBearerContext(in Gtpv2CPdu p_gtpv2Pdu) return template (omit) ChargingId { return p_gtpv2Pdu.payload.ieCreateSessionResponse.bearerContextsCreated.groupedIes.createdContextWithinCreateSessionResponse.chargingId; } // End of function f_extract_chargingId_from_createdBearerContext /** * @desc Extract the S5/S8-U PGW F-TEID IE from Create Session Response message * @param The GTPv2-C PDU * @return The S5/S8-U PGW F-TEID value * @verdict Unchanged */ function f_extract_s5_S8UPgw_from_createdBearerContext(in Gtpv2CPdu p_gtpv2Pdu) return template (omit) FullyQualifiedTeid { return p_gtpv2Pdu.payload.ieCreateSessionResponse.bearerContextsCreated.groupedIes.createdContextWithinCreateSessionResponse.s5_S8UPgw; } // End of function f_extract_chargingId_from_createdBearerContext } // End of group ieCreateSessionResponse group ieDeleteBearerRequest { /** * @desc Extract the Cause IE from Delete Bearer Request message * @param The GTPv2-C PDU * @return The Cause value * @verdict Unchanged */ function f_get_ieDeleteBearerRequest_cause(in Gtpv2CPdu p_gtpv2Pdu) return Cause { return p_gtpv2Pdu.payload.ieDeleteBearerRequest.cause; } // End of function f_get_ieDeleteBearerRequest_cause /** * @desc Extract the EPS Bearer ID IE from Delete Bearer Request message * @param The GTPv2-C PDU * @return The EPS Bearer ID value * @verdict Unchanged */ function f_get_ieDeleteBearerRequest_linkedEpsBearerId(in Gtpv2CPdu p_gtpv2Pdu) return EpsBearerId { return p_gtpv2Pdu.payload.ieDeleteBearerRequest.linkedEpsBearerId; } // End of function f_get_ieDeleteBearerRequest_linkedEpsBearerId } // End of group ieDeleteBearerRequest function f_extract_digit(Bit12 p_value, integer p_index) return Bit4 { var Bit12 v_result := (p_value >> (p_index - 1) * 4) and4b '000000001111'B; var Bit4 v_result4bits := int2bit(bit2int(v_result), 4); Loading
LibGtpv2C_MME_Functions.ttcn +30 −30 Original line number Diff line number Diff line Loading @@ -310,7 +310,7 @@ module LibGtpv2C_MME_Functions { PX_AMBR_DL ), m_protocolConfigurationOptions( PX_PCO_PAYLOAD // TODO To be refined PX_PCO_PAYLOAD ), f_calculateInformationElementLength_bearerContext( m_BearerContexts( Loading Loading @@ -632,7 +632,7 @@ module LibGtpv2C_MME_Functions { ), -, mw_payload_deleteSessionRequest( mw_deleteSessionRequest_dummy // TODO To be refined mw_deleteSessionRequest_dummy ) ) ) Loading Loading @@ -670,13 +670,13 @@ module LibGtpv2C_MME_Functions { m_pdu( m_header_noteid(e_createSessionRequest), m_extendedHeader_teid( '00000011'O, // FIXME Use a PIXIT f_getNextTeid(), f_getNextSequenceNumber() ), m_payload_deleteBearerRequest( m_deleteBearerRequest_dummy( // TODO To be refined m_deleteBearerRequest_dummy( m_epsBearerId(PX_EBI), m_epsBearerId(PX_EBI) // TODO To be refined m_epsBearerId(PX_EBI) ) ) ) Loading @@ -696,7 +696,7 @@ module LibGtpv2C_MME_Functions { ), -, mw_payload_deleteBearerResponse( mw_deleteBearerResponse_dummy // TODO To be refined mw_deleteBearerResponse_dummy ) ) ) Loading Loading @@ -735,7 +735,7 @@ module LibGtpv2C_MME_Functions { m_pdu( m_header_noteid(e_downlinkDataNotification), m_extendedHeader_teid( '00000011'O, // FIXME Use a PIXIT f_getNextTeid(), f_getNextSequenceNumber() ), m_payload_downlinkDataNotification( Loading Loading @@ -799,7 +799,7 @@ module LibGtpv2C_MME_Functions { m_pdu( m_header_noteid(e_downlinkDataNotification), m_extendedHeader_teid( '00000011'O, // FIXME Use a PIXIT f_getNextTeid(), f_getNextSequenceNumber() ), m_payload_downlinkDataNotification( Loading Loading @@ -1004,7 +1004,7 @@ module LibGtpv2C_MME_Functions { m_pdu( m_header_noteid(e_updateBearerRequest), m_extendedHeader_teid( '00000011'O, // FIXME Use a PIXIT, f_getNextTeid(), f_getNextSequenceNumber() ), m_payload_updateBearerRequest( Loading Loading @@ -1282,7 +1282,7 @@ module LibGtpv2C_MME_Functions { m_pdu( m_header_noteid(e_stopPagingIndication), m_extendedHeader_teid( '00000011'O, // FIXME Use a PIXIT, f_getNextTeid(), f_getNextSequenceNumber() ), m_payload_stopPagingIndication( Loading Loading @@ -1708,14 +1708,14 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Switch on the UE to initiate a NAS-ATTACH-REQUEST event on MME"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_requestMessagesDone, e_success); // 2. Trigger Attch Accept if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Check NAS-ATTACH-ACCEPT event sent by MME"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_tbDone, e_success); Loading @@ -1736,7 +1736,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Switch on the UE"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -1762,7 +1762,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Switch off the UE to initiate a NAS-DETACH-REQUEST event on MME"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_tbDone, e_success); Loading @@ -1782,7 +1782,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Send a data packet from the EPC (Internet) to the UE"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -1805,7 +1805,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Do not accept the incoming call. This will cause the UE to not respond to the Paging message"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -1828,7 +1828,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("The UE performs an S1 handover to the cell of the second eNB"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -1851,7 +1851,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Switch on the UE"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -1874,7 +1874,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_MME_EMULATION)) { action("Via the OAM interface of the P-GW modify the avialiable resources or memory in the P-GW so they are not available"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -1897,7 +1897,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Generate an indication of bearer release from eNodeB"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -1920,7 +1920,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Generate an indication of bearer release from eNodeB indicating an invalid bearer context"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -1943,7 +1943,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Initiate S1-Based handover procedure (eNodeB #1)"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -1966,7 +1966,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Initiate Initiate S1-Based handover procedure (eNodeB #2)"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -1989,7 +1989,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Trigger an UE Context Release Request"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -2014,7 +2014,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Check that MME is sending paging"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_initDone, e_success); // 2. Send Stop Paging on S11 Loading @@ -2025,7 +2025,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Check that MME stops sending paging"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_tbDone, e_success); Loading @@ -2045,7 +2045,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Trigger a successful SRVCC Handover to CDMA2000 1xRTT "); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -2068,7 +2068,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Force the UE back to E-UTRA"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -2091,7 +2091,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Force a handover to the CDMA2000 HRPD network"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading @@ -2114,7 +2114,7 @@ module LibGtpv2C_MME_Functions { if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) { action("Trigger a Delete PDN Connection Set Request from the eNodeB"); } else { // FIXME To be developed // FIXME Trigger to be developed } f_selfOrClientSyncAndVerdict(c_prDone, e_success); Loading
LibGtpv2C_SGW_Functions.ttcn +43 −43 File changed.Preview size limit exceeded, changes collapsed. Show changes
LibGtpv2C_Templates.ttcn +8 −8 Original line number Diff line number Diff line Loading @@ -209,7 +209,7 @@ module LibGtpv2C_Templates { * @param p_sequenceNumber Sequence number */ template (value) ExtendedHeader m_extendedHeader_teid( in template (value) Oct4 p_teid, in template (value) UInt32 p_teid, in template (value) UInt24 p_sequenceNumber ) := { teid := p_teid, Loading @@ -235,7 +235,7 @@ module LibGtpv2C_Templates { * @param p_sequenceNumber Sequence number */ template (present) ExtendedHeader mw_extendedHeader_teid( template (present) Oct4 p_teid := ?, template (present) UInt32 p_teid := ?, template (present) UInt24 p_sequenceNumber := ? ) := { teid := p_teid, Loading Loading @@ -3471,7 +3471,7 @@ module LibGtpv2C_Templates { /** * @desc GTPv2-C Basic S103PpdDataForwardingInfo receive template * @param p_hsgwAddressLength TODO * @param p_hsgwAddressLength The address length * @param p_greKey Generic Routing Encapsulation (GRE) key * @param p_epsBearerId Number of EPS Bearer IDs * @param p_epsBearerId EPS Bearer ID Loading Loading @@ -3876,7 +3876,7 @@ module LibGtpv2C_Templates { key := p_key, ipv4Address := p_ipv4Address, ipv6Address := omit, moreBytes := omit // FIXME To be refined moreBytes := omit } // End of template m_fullyQualifiedTeid_ipv4_s11_mme /** Loading Loading @@ -4212,9 +4212,9 @@ module LibGtpv2C_Templates { /** * @desc GTPv2-C Basic receive template for Fully qualified PDN Connection Set Identifier IE * @param p_csidsNum TODO * @param p_nodeId TODO * @param p_nodeId TODO * @param p_csidsNum Number of Connection Set Identifier (CSID) * @param p_nodeId Node identifier * @param p_csids Connection Set Identifiers (CSIDs) list */ template (present) FullyQualifiedPdnConnectionSetIdentifier mw_fullyQualifiedPdnConnectionSetIdentifier_ipv4( template (present) Bit4 p_csidsNum := ?, Loading Loading @@ -4259,7 +4259,7 @@ module LibGtpv2C_Templates { /** * @desc GTPv2-C Basic receive template for PrivateExtension IE * @param p_enterpriseID Enterprise ID (refer to http://www.iana.org/assignments/enterprise-numbers). * @param p_value_ TODO * @param p_value_ Proprietary value */ template (present) PrivateExtension mw_privateExtension( template (present) UInt16 p_enterpriseID := ?, Loading
LibGtpv2C_TestSystem.ttcn +2 −0 Original line number Diff line number Diff line Loading @@ -88,6 +88,8 @@ module LibGtpv2C_TestSystem { /** Component to trigger on S4 message */ var Gtpv2CComponent vc_s4; /** TEID counter */ var UInt32 vc_teid; /** Sequence number counter */ var UInt24 vc_sequenceNumber; /** Restart counter */ Loading