pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/36137?usp=email )
Change subject: epdg: Introduce test TC_mt_ipv4_echo_req ...................................................................... epdg: Introduce test TC_mt_ipv4_echo_req Change-Id: Ie5dc1bd995262f9253cc067c97a82c801b0080e1 --- M epdg/EPDG_Tests.ttcn A epdg/ICMP_Types.ttcn M epdg/gen_links.sh M epdg/regen_makefile.sh 4 files changed, 68 insertions(+), 0 deletions(-) Approvals: pespin: Looks good to me, approved laforge: Looks good to me, but someone else must approve osmith: Looks good to me, but someone else must approve Jenkins Builder: Verified diff --git a/epdg/EPDG_Tests.ttcn b/epdg/EPDG_Tests.ttcn index 0d1b10f..fb9f98b 100644 --- a/epdg/EPDG_Tests.ttcn +++ b/epdg/EPDG_Tests.ttcn @@ -6,6 +6,9 @@ import from Osmocom_Types all; import from L3_Common all; import from DNS_Helpers all; +import from IP_Types all; +import from ICMP_Types all; +import from ICMP_Templates all; import from IPA_Emulation all; import from PCO_Types all; @@ -692,6 +695,31 @@ GTP2.send(ts_GTPU_PING(peer, seq := seq_nr)); GTP2.receive(tr_GTPU_PONG(peer)); } +private altstep as_GTPU_rx_icmp4(template (present) PDU_ICMP expected := ?) runs on EPDG_ConnHdlr { + var Gtp1uUnitdata rx_msg; + var template (value) Gtp1uPeer peer := ts_GtpPeerU(f_inet_addr(g_pars.bearer.gtpu_addr_remote)); + + [] GTP2.receive(tr_GTPU_GPDU(peer, g_pars.bearer.teid_local)) -> value rx_msg { + /*TODO: verify gtpu txseq: + if (f_verify_gtpu_txseq(ud.gtpu, use_gtpu_txseq) == false) { + setverdict(fail); + stop; + } + */ + var octetstring gpdu := rx_msg.gtpu.gtpu_IEs.g_PDU_IEs.data; + var IPv4_packet ip4 := f_IPv4_dec(gpdu); + if (ip4.header.ver != 4) { + repeat; + } + var PDU_ICMP icmp4 := f_dec_PDU_ICMP(ip4.payload); + if (not match(icmp4, expected)) { + repeat; + } + } + [] GTP2.receive(Gtp1uUnitdata:?) -> value rx_msg { + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Unexpected GTP msg rx: ", rx_msg)); + } +} /* GSUP AuthInfo Req + Resp, triggers SWx MAR + MAA. */ private function f_GSUP_AI_success() runs on EPDG_ConnHdlr { @@ -942,6 +970,24 @@ setverdict(pass); } +private function f_TC_mt_ipv4_echo_req(charstring id) runs on EPDG_ConnHdlr { + f_initial_attach(); + /* Dispatch Echo Resp to this component: */ + f_gtp2_register_teid('00000000'O); + var octetstring echo_req := f_gen_icmpv4_echo(f_inet_addr(mp_upf_gtpu_local_ip), f_inet_addr(g_pars.ue_ip)); + f_GTP1U_send(echo_req); + as_GTPU_rx_icmp4((tr_ICMPv4_ERP, tr_ICMPv4_DU)); + f_GSUP_PurgeMS_success(); +} +testcase TC_mt_ipv4_echo_req() runs on MTC_CT { + var EPDG_ConnHdlrPars pars := f_init_pars(); + var EPDG_ConnHdlr vc_conn; + f_init(); + vc_conn := f_start_handler(refers(f_TC_mt_ipv4_echo_req), pars); + vc_conn.done; + setverdict(pass); +} + control { execute ( TC_authinfo_normal() ); execute ( TC_ho_lte_to_wifi() ); @@ -950,6 +996,7 @@ execute ( TC_concurrent_ues2() ); execute ( TC_concurrent_ues100() ); execute ( TC_upf_echo_req() ); + execute ( TC_mt_ipv4_echo_req() ); } } diff --git a/epdg/ICMP_Types.ttcn b/epdg/ICMP_Types.ttcn new file mode 120000 index 0000000..361cad1 --- /dev/null +++ b/epdg/ICMP_Types.ttcn @@ -0,0 +1 @@ +../deps/titan.ProtocolModules.ICMP/src/ICMP_Types.ttcn \ No newline at end of file diff --git a/epdg/gen_links.sh b/epdg/gen_links.sh index ed4209c..7a4e60d 100755 --- a/epdg/gen_links.sh +++ b/epdg/gen_links.sh @@ -17,6 +17,14 @@ FILES="IPL4asp_Functions.ttcn IPL4asp_PT.cc IPL4asp_PT.hh IPL4asp_PortType.ttcn IPL4asp_Types.ttcn IPL4asp_discovery.cc IPL4asp_protocol_L234.hh" gen_links $DIR $FILES +DIR=$BASEDIR/titan.ProtocolModules.IP/src +FILES="IP_EncDec.cc IP_Types.ttcn" +gen_links $DIR $FILES + +DIR=$BASEDIR/titan.ProtocolModules.ICMP/src +FILES="ICMP_EncDec.cc ICMP_Types.ttcn" +gen_links $DIR $FILES + DIR=$BASEDIR/titan.TestPorts.TELNETasp/src FILES="TELNETasp_PT.cc TELNETasp_PT.hh TELNETasp_PortType.ttcn" gen_links $DIR $FILES @@ -54,6 +62,7 @@ FILES+="GTPv1U_CodecPort.ttcn GTPv1U_CodecPort_CtrlFunct.ttcn GTPv1U_CodecPort_CtrlFunctDef.cc GTPv1U_Templates.ttcn " FILES+="GTPv2_PrivateExtensions.ttcn GTPv2_Templates.ttcn " FILES+="GTPv2_CodecPort.ttcn GTPv2_CodecPort_CtrlFunctDef.cc GTPv2_CodecPort_CtrlFunct.ttcn GTPv2_Emulation.ttcn " +FILES+="ICMP_Templates.ttcn " gen_links $DIR $FILES ignore_pp_results diff --git a/epdg/regen_makefile.sh b/epdg/regen_makefile.sh index eb5935e..9aa83b4 100755 --- a/epdg/regen_makefile.sh +++ b/epdg/regen_makefile.sh @@ -9,6 +9,8 @@ IPL4asp_PT.cc IPL4asp_discovery.cc Native_FunctionDefs.cc + IP_EncDec.cc + ICMP_EncDec.cc TCCConversion.cc TCCEncoding.cc TCCInterface.cc -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/36137?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: Ie5dc1bd995262f9253cc067c97a82c801b0080e1 Gerrit-Change-Number: 36137 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pes...@sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <lafo...@osmocom.org> Gerrit-Reviewer: osmith <osm...@sysmocom.de> Gerrit-Reviewer: pespin <pes...@sysmocom.de> Gerrit-MessageType: merged