pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35358?usp=email )
Change subject: library/GTPv2_Emulation: Patch SeqNr only on outbound initial messages ...................................................................... library/GTPv2_Emulation: Patch SeqNr only on outbound initial messages Change-Id: I0f13074ccee2bf2d00d2dc2af491b9effc142f22 --- M library/GTPv2_Emulation.ttcn 1 file changed, 86 insertions(+), 8 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/58/35358/1 diff --git a/library/GTPv2_Emulation.ttcn b/library/GTPv2_Emulation.ttcn index 736dd03..0b2cb4f 100644 --- a/library/GTPv2_Emulation.ttcn +++ b/library/GTPv2_Emulation.ttcn @@ -340,6 +340,73 @@ return omit; } +private function f_gtp2c_is_initial_msg(PDU_GTPCv2 msg) return boolean +{ + if (ischosen(msg.gtpcv2_pdu.echoRequest) or + ischosen(msg.gtpcv2_pdu.versionNotSupported) or + ischosen(msg.gtpcv2_pdu.createSessionRequest) or + ischosen(msg.gtpcv2_pdu.createBearerRequest) or + ischosen(msg.gtpcv2_pdu.bearerResourceCommand) or + ischosen(msg.gtpcv2_pdu.bearerResourceFailureIndication) or + ischosen(msg.gtpcv2_pdu.modifyBearerRequest) or + ischosen(msg.gtpcv2_pdu.deleteSessionRequest) or + ischosen(msg.gtpcv2_pdu.deleteBearerRequest) or + ischosen(msg.gtpcv2_pdu.downlinkDataNotification) or + ischosen(msg.gtpcv2_pdu.downlinkDataNotificationAcknowledgement) or + ischosen(msg.gtpcv2_pdu.downlinkDataNotificationFailureIndication) or + ischosen(msg.gtpcv2_pdu.deleteIndirectDataForwardingTunnelRequest) or + ischosen(msg.gtpcv2_pdu.modifyBearerCommand) or + ischosen(msg.gtpcv2_pdu.modifyBearerFailureIndication) or + ischosen(msg.gtpcv2_pdu.updateBearerRequest) or + ischosen(msg.gtpcv2_pdu.deleteBearerCommand) or + ischosen(msg.gtpcv2_pdu.createIndirectDataForwardingTunnelRequest) or + ischosen(msg.gtpcv2_pdu.releaseAccessBearersRequest) or + ischosen(msg.gtpcv2_pdu.stopPagingIndication) or + ischosen(msg.gtpcv2_pdu.modifyAccessBearersRequest) or + ischosen(msg.gtpcv2_pdu.remoteUEReportNotification) or + ischosen(msg.gtpcv2_pdu.remoteUEReportAcknowledge) or + ischosen(msg.gtpcv2_pdu.forwardRelocationRequest) or + ischosen(msg.gtpcv2_pdu.forwardRelocationCompleteNotification) or + ischosen(msg.gtpcv2_pdu.forwardRelocationCompleteAcknowledge) or + ischosen(msg.gtpcv2_pdu.contextRequest) or + ischosen(msg.gtpcv2_pdu.contextAcknowledge) or + ischosen(msg.gtpcv2_pdu.identificationRequest) or + ischosen(msg.gtpcv2_pdu.forwardAccessContextNotification) or + ischosen(msg.gtpcv2_pdu.forwardAccessContextAcknowledge) or + ischosen(msg.gtpcv2_pdu.detachNotification) or + ischosen(msg.gtpcv2_pdu.detachAcknowledge) or + ischosen(msg.gtpcv2_pdu.changeNotificationRequest) or + ischosen(msg.gtpcv2_pdu.relocationCancelRequest) or + ischosen(msg.gtpcv2_pdu.configurationTransferTunnel) or + ischosen(msg.gtpcv2_pdu.rAN_InformationRelay) or + ischosen(msg.gtpcv2_pdu.suspendNotification) or + ischosen(msg.gtpcv2_pdu.suspendAcknowledge) or + ischosen(msg.gtpcv2_pdu.resumeNotification) or + ischosen(msg.gtpcv2_pdu.resumeAcknowledge) or + ischosen(msg.gtpcv2_pdu.cSPagingIndication) or + ischosen(msg.gtpcv2_pdu.createForwardingTunnelRequest) or + ischosen(msg.gtpcv2_pdu.deletePDN_ConnectionSetRequest) or + ischosen(msg.gtpcv2_pdu.traceSessionActivation) or + ischosen(msg.gtpcv2_pdu.traceSessionDeactivation) or + ischosen(msg.gtpcv2_pdu.updatePDN_ConnectionSetRequest) or + ischosen(msg.gtpcv2_pdu.pGW_RestartNotification) or + ischosen(msg.gtpcv2_pdu.pGW_RestartNotificationAcknowledge) or + ischosen(msg.gtpcv2_pdu.pGW_DownlinkTriggeringNotification) or + ischosen(msg.gtpcv2_pdu.pGW_DownlinkTriggeringAcknowledge) or + ischosen(msg.gtpcv2_pdu.alertMMENotification) or + ischosen(msg.gtpcv2_pdu.alertMMEAcknowledge) or + ischosen(msg.gtpcv2_pdu.uEActivityNotification) or + ischosen(msg.gtpcv2_pdu.uEActivityAcknowledge) or + ischosen(msg.gtpcv2_pdu.mBMSSessionStartRequest) or + ischosen(msg.gtpcv2_pdu.mBMSSessionUpdateRequest) or + ischosen(msg.gtpcv2_pdu.mBMSSessionStopRequest) or + ischosen(msg.gtpcv2_pdu.iSR_StatusIndication) or + ischosen(msg.gtpcv2_pdu.uE_RegistrationQueryRequest)) { + return true; + } + return false; +} + private template (value) SctpTuple ts_SCTP(template (omit) integer ppid := omit) := { sinfo_stream := omit, sinfo_ppid := ppid, @@ -507,10 +574,11 @@ } [] TEID0.receive(PDU_GTPCv2:?) -> value g2c sender vc_conn { - /* patch in the next sequence number */ - /* FIXME: do this only for outbound requests */ - g2c.sequenceNumber := int2oct(g_c_seq_nr, 3); - g_c_seq_nr := g_c_seq_nr + 1; + /* patch in the next sequence number on outbound Initial message */ + if (f_gtp2c_is_initial_msg(g2c)) { + g2c.sequenceNumber := int2oct(g_c_seq_nr, 3); + g_c_seq_nr := g_c_seq_nr + 1; + } /* build Gtp2cUnitdata */ g2c_ud := { peer := g_peer, gtpc := g2c }; GTP2C.send(g2c_ud); @@ -520,10 +588,11 @@ } [] CLIENT.receive(PDU_GTPCv2:?) -> value g2c sender vc_conn { - /* patch in the next sequence number */ - /* FIXME: do this only for outbound requests */ - g2c.sequenceNumber := int2oct(g_c_seq_nr, 3); - g_c_seq_nr := g_c_seq_nr + 1; + /* patch in the next sequence number on outbound Initial message */ + if (f_gtp2c_is_initial_msg(g2c)) { + g2c.sequenceNumber := int2oct(g_c_seq_nr, 3); + g_c_seq_nr := g_c_seq_nr + 1; + } /* build Gtp2cUnitdata */ g2c_ud := { peer := g_peer, gtpc := g2c }; GTP2C.send(g2c_ud); -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35358?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I0f13074ccee2bf2d00d2dc2af491b9effc142f22 Gerrit-Change-Number: 35358 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pes...@sysmocom.de> Gerrit-MessageType: newchange