<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/16914">View Change</a></p><div style="white-space:pre-wrap">Approvals:
laforge: Looks good to me, approved
Jenkins Builder: Verified
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">hlr: add TC_MSLookup_mDNS_service_other_home<br><br>Send an mslookup mDNS request to the home HLR, asking about a service<br>that is not "gsup.hlr". Hence the "_other" in the test name, service<br>"gsup.hlr" has different code paths, and related tests will be added in<br>follow-up patches.<br><br>This is the first test using MSLookup_mDNS_Emulation, so add related<br>test infrastructure.<br><br>Related: OS#4380<br>Depends: osmo-hlr I2fe453553c90e6ee527ed13a13089900efd488aa<br>Change-Id: Ia7f92d33691f910549353b16a7b0efc18e521719<br>---<br>M hlr/HLR_Tests.cfg<br>M hlr/HLR_Tests.default<br>M hlr/HLR_Tests.ttcn<br>M hlr/gen_links.sh<br>M hlr/regen_makefile.sh<br>A library/MSLookup_mDNS_Emulation.ttcn<br>A library/MSLookup_mDNS_Templates.ttcn<br>A library/MSLookup_mDNS_Types.ttcn<br>8 files changed, 275 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/hlr/HLR_Tests.cfg b/hlr/HLR_Tests.cfg</span><br><span>index 7416362..1ab6e87 100644</span><br><span>--- a/hlr/HLR_Tests.cfg</span><br><span>+++ b/hlr/HLR_Tests.cfg</span><br><span>@@ -12,6 +12,7 @@</span><br><span> </span><br><span> </span><br><span> [MODULE_PARAMETERS]</span><br><span style="color: hsl(120, 100%, 40%);">+HLR_Tests.mp_hlr_supports_dgsm := true</span><br><span> </span><br><span> [MAIN_CONTROLLER]</span><br><span> </span><br><span>diff --git a/hlr/HLR_Tests.default b/hlr/HLR_Tests.default</span><br><span>index 84d4ff3..2e9aac6 100644</span><br><span>--- a/hlr/HLR_Tests.default</span><br><span>+++ b/hlr/HLR_Tests.default</span><br><span>@@ -11,6 +11,11 @@</span><br><span> *.VTY.CTRL_CLIENT_CLEANUP_LINEFEED := "yes"</span><br><span> *.VTY.CTRL_DETECT_CONNECTION_ESTABLISHMENT_RESULT := "yes"</span><br><span> *.VTY.PROMPT1 := "OsmoHLR> "</span><br><span style="color: hsl(120, 100%, 40%);">+*.mDNS_UDP.debugging := "YES"</span><br><span style="color: hsl(120, 100%, 40%);">+*.mDNS_UDP.localPort := "4266"</span><br><span style="color: hsl(120, 100%, 40%);">+*.mDNS_UDP.localIPAddr := "239.192.23.42"</span><br><span style="color: hsl(120, 100%, 40%);">+*.mDNS_UDP.broadcast := "enabled"</span><br><span style="color: hsl(120, 100%, 40%);">+*.mDNS_UDP.reuseAddr := "enabled"</span><br><span> </span><br><span> [MODULE_PARAMETERS]</span><br><span> Osmocom_VTY_Functions.mp_prompt_prefix := "OsmoHLR";</span><br><span>diff --git a/hlr/HLR_Tests.ttcn b/hlr/HLR_Tests.ttcn</span><br><span>index b59f86e..c1cc129 100644</span><br><span>--- a/hlr/HLR_Tests.ttcn</span><br><span>+++ b/hlr/HLR_Tests.ttcn</span><br><span>@@ -31,6 +31,10 @@</span><br><span> import from Osmocom_VTY_Functions all;</span><br><span> import from TELNETasp_PortType all;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+import from MSLookup_mDNS_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from MSLookup_mDNS_Emulation all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from MSLookup_mDNS_Templates all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> type component test_CT extends CTRL_Adapter_CT {</span><br><span> var IPA_Emulation_CT vc_IPA;</span><br><span> var IPA_CCM_Parameters ccm_pars;</span><br><span>@@ -43,6 +47,8 @@</span><br><span> </span><br><span> port TELNETasp_PT VTY;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ var MSLookup_mDNS_Emulation_CT vc_MSLookup_mDNS;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> timer g_Tguard := 10.0;</span><br><span> };</span><br><span> </span><br><span>@@ -53,6 +59,9 @@</span><br><span> /* how many auth tuples are expected</span><br><span> when IE ts_GSUP_IE_NUM_VECTORS_REQ is absent */</span><br><span> integer mp_default_num_auth_tuples := 5;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* drop after osmo-hlr release > 1.2.0 */</span><br><span style="color: hsl(120, 100%, 40%);">+ boolean mp_hlr_supports_dgsm := true;</span><br><span> };</span><br><span> </span><br><span> type record HlrSubscrAud2G {</span><br><span>@@ -80,6 +89,7 @@</span><br><span> timer g_Tguard := 10.0;</span><br><span> var HLR_ConnHdlrPars g_pars;</span><br><span> port TELNETasp_PT VTY;</span><br><span style="color: hsl(120, 100%, 40%);">+ port MSLookup_mDNS_PT mDNS;</span><br><span> }</span><br><span> </span><br><span> type record HLR_ConnHdlrPars {</span><br><span>@@ -116,6 +126,9 @@</span><br><span> map(self:VTY, system:VTY);</span><br><span> f_vty_set_prompts(VTY);</span><br><span> f_vty_transceive(VTY, "enable");</span><br><span style="color: hsl(120, 100%, 40%);">+ if (mp_hlr_supports_dgsm) {</span><br><span style="color: hsl(120, 100%, 40%);">+ f_vty_config(VTY, "mslookup", "no mdns bind");</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> }</span><br><span> </span><br><span> private altstep as_Tguard() runs on test_CT {</span><br><span>@@ -167,6 +180,11 @@</span><br><span> }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+function f_init_mslookup() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ vc_MSLookup_mDNS := MSLookup_mDNS_Emulation_CT.create;</span><br><span style="color: hsl(120, 100%, 40%);">+ vc_MSLookup_mDNS.start(MSLookup_mDNS_Emulation.f_main());</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> function f_init(boolean legacy := true) runs on test_CT {</span><br><span> </span><br><span> /* activate default guard timer to ensure all tests eventually terminate */</span><br><span>@@ -175,6 +193,7 @@</span><br><span> </span><br><span> f_init_gsup("HLR_Test", legacy);</span><br><span> f_init_vty();</span><br><span style="color: hsl(120, 100%, 40%);">+ f_init_mslookup();</span><br><span> </span><br><span> f_ipa_ctrl_start(mp_hlr_ip, mp_hlr_ctrl_port);</span><br><span> }</span><br><span>@@ -186,6 +205,7 @@</span><br><span> vc_conn := HLR_ConnHdlr.create(id);</span><br><span> connect(vc_conn:GSUP, vc_GSUP:GSUP_CLIENT);</span><br><span> connect(vc_conn:GSUP_PROC, vc_GSUP:GSUP_PROC);</span><br><span style="color: hsl(120, 100%, 40%);">+ connect(vc_conn:mDNS, vc_MSLookup_mDNS:mDNS);</span><br><span> </span><br><span> vc_conn.start(f_handler_init(fn, id, pars));</span><br><span> return vc_conn;</span><br><span>@@ -1511,6 +1531,66 @@</span><br><span> vc_conn.done;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Send an mslookup mDNS request to the home HLR, asking about a service that is not "gsup.hlr". (Hence the "_other" in</span><br><span style="color: hsl(120, 100%, 40%);">+ * the test name, service "gsup.hlr" has different code paths, see related tests). */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_MSLookup_mDNS_service_other_home() runs on HLR_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+ timer T;</span><br><span style="color: hsl(120, 100%, 40%);">+ var MSLookup_mDNS vl_rmsg;</span><br><span style="color: hsl(120, 100%, 40%);">+ var integer id := f_rnd_int(65535); /* mDNS packet ID */</span><br><span style="color: hsl(120, 100%, 40%);">+ var hexstring msisdn := '49161'H & f_rnd_hexstring(7, 9);</span><br><span style="color: hsl(120, 100%, 40%);">+ var charstring domain := "sip.voice." & hex2str(msisdn) & ".msisdn.mdns.osmocom.org";</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Create subscriber */</span><br><span style="color: hsl(120, 100%, 40%);">+ g_pars.sub.msisdn := msisdn;</span><br><span style="color: hsl(120, 100%, 40%);">+ f_vty_subscr_create(VTY, g_pars.sub);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Send mDNS query, expect timeout */</span><br><span style="color: hsl(120, 100%, 40%);">+ mDNS.send(ts_MSLookup_mDNS_query(id, domain));</span><br><span style="color: hsl(120, 100%, 40%);">+ T.start(1.0);</span><br><span style="color: hsl(120, 100%, 40%);">+ alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] mDNS.receive(tr_MSLookup_mDNS_result_IPv4(id, domain, '42424242'O, 5060)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ setverdict(fail, "OsmoHLR answered to mDNS query before subscriber did LU");</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ [] mDNS.receive(MSLookup_mDNS:?) -> value vl_rmsg {</span><br><span style="color: hsl(120, 100%, 40%);">+ repeat;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ [] T.timeout {</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Location update */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_perform_UL(g_pars.sub.imsi, msisdn, dom := OSMO_GSUP_CN_DOMAIN_CS);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Send mDNS query again, expect result */</span><br><span style="color: hsl(120, 100%, 40%);">+ mDNS.send(ts_MSLookup_mDNS_query(id, domain));</span><br><span style="color: hsl(120, 100%, 40%);">+ T.start(1.0);</span><br><span style="color: hsl(120, 100%, 40%);">+ alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] mDNS.receive(tr_MSLookup_mDNS_result_IPv4(id, domain, '42424242'O, 5060)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ setverdict(pass);</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ [] mDNS.receive(MSLookup_mDNS:?) -> value vl_rmsg {</span><br><span style="color: hsl(120, 100%, 40%);">+ repeat;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ [] T.timeout {</span><br><span style="color: hsl(120, 100%, 40%);">+ setverdict(fail, "OsmoHLR did not answer to mDNS query");</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ f_vty_subscr_delete(VTY, g_pars.sub);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_MSLookup_mDNS_service_other_home() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ var hexstring imsi := f_rnd_imsi('26242'H);</span><br><span style="color: hsl(120, 100%, 40%);">+ var HLR_ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+ var HLR_ConnHdlrPars pars := valueof(t_Pars(imsi));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ f_init(false);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_vty_config(VTY, "mslookup", "mdns bind");</span><br><span style="color: hsl(120, 100%, 40%);">+ f_vty_config2(VTY, {"mslookup", "server"}, "service sip.voice at 66.66.66.66 5060");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ vc_conn := f_start_handler(refers(f_TC_MSLookup_mDNS_service_other_home), pars);</span><br><span style="color: hsl(120, 100%, 40%);">+ vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* TODO:</span><br><span> * UL with ISD error</span><br><span> * UL with ISD timeout</span><br><span>@@ -1556,6 +1636,10 @@</span><br><span> execute( TC_subscr_create_on_demand_check_imei_early() );</span><br><span> execute( TC_subscr_create_on_demand_ul() );</span><br><span> execute( TC_subscr_create_on_demand_sai() );</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ if (mp_hlr_supports_dgsm) {</span><br><span style="color: hsl(120, 100%, 40%);">+ execute( TC_MSLookup_mDNS_service_other_home() );</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> };</span><br><span> </span><br><span> };</span><br><span>diff --git a/hlr/gen_links.sh b/hlr/gen_links.sh</span><br><span>index 872820d..14a3f8d 100755</span><br><span>--- a/hlr/gen_links.sh</span><br><span>+++ b/hlr/gen_links.sh</span><br><span>@@ -35,11 +35,20 @@</span><br><span> FILES+="SS_DataTypes.asn SS_Errors.asn SS_Operations.asn SS_PDU_Defs.asn SS_Protocol.asn SS_Types.ttcn SS_EncDec.cc"</span><br><span> gen_links $DIR $FILES</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+DIR=$BASEDIR/titan.ProtocolModules.DNS/src</span><br><span style="color: hsl(120, 100%, 40%);">+FILES="DNS_EncDec.cc DNS_Types.ttcn"</span><br><span style="color: hsl(120, 100%, 40%);">+gen_links $DIR $FILES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DIR=$BASEDIR/titan.TestPorts.UDPasp/src</span><br><span style="color: hsl(120, 100%, 40%);">+FILES="UDPasp_PT.cc UDPasp_PT.hh UDPasp_PortType.ttcn UDPasp_Types.ttcn"</span><br><span style="color: hsl(120, 100%, 40%);">+gen_links $DIR $FILES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> DIR=../library</span><br><span> FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp GSUP_Types.ttcn GSUP_Emulation.ttcn "</span><br><span> FILES+="Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn "</span><br><span> FILES+="Osmocom_VTY_Functions.ttcn "</span><br><span> FILES+="SS_Templates.ttcn USSD_Helpers.ttcn "</span><br><span style="color: hsl(120, 100%, 40%);">+FILES+="MSLookup_mDNS_Types.ttcn MSLookup_mDNS_Emulation.ttcn MSLookup_mDNS_Templates.ttcn"</span><br><span> </span><br><span> </span><br><span> gen_links $DIR $FILES</span><br><span>diff --git a/hlr/regen_makefile.sh b/hlr/regen_makefile.sh</span><br><span>index 1a1d812..14b05da 100755</span><br><span>--- a/hlr/regen_makefile.sh</span><br><span>+++ b/hlr/regen_makefile.sh</span><br><span>@@ -2,7 +2,7 @@</span><br><span> </span><br><span> MAIN="HLR_Tests.ttcn"</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-FILES="*.ttcn *.ttcnpp IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc TELNETasp_PT.cc TCCEncoding.cc SS_EncDec.cc MAP_EncDec.cc *.asn"</span><br><span style="color: hsl(120, 100%, 40%);">+FILES="*.ttcn *.ttcnpp DNS_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc TELNETasp_PT.cc TCCEncoding.cc UDPasp_PT.cc SS_EncDec.cc MAP_EncDec.cc *.asn"</span><br><span> </span><br><span> export CPPFLAGS_TTCN3="-DIPA_EMULATION_GSUP -DIPA_EMULATION_CTRL"</span><br><span> </span><br><span>diff --git a/library/MSLookup_mDNS_Emulation.ttcn b/library/MSLookup_mDNS_Emulation.ttcn</span><br><span>new file mode 100644</span><br><span>index 0000000..029091d</span><br><span>--- /dev/null</span><br><span>+++ b/library/MSLookup_mDNS_Emulation.ttcn</span><br><span>@@ -0,0 +1,45 @@</span><br><span style="color: hsl(120, 100%, 40%);">+module MSLookup_mDNS_Emulation {</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* (C) 2020 sysmocom s.f.m.c. GmbH <info@sysmocom.de></span><br><span style="color: hsl(120, 100%, 40%);">+ * All rights reserved.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Released under the terms of GNU General Public License, Version 2 or</span><br><span style="color: hsl(120, 100%, 40%);">+ * (at your option) any later version.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * SPDX-License-Identifier: GPL-2.0-or-later</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+import from DNS_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from UDPasp_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from MSLookup_mDNS_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Transcode between mDNS and UDP:</span><br><span style="color: hsl(120, 100%, 40%);">+ Wait for DNS packets on the mDNS port, encode them as UDP and forward them to the mDNS_UDP port.</span><br><span style="color: hsl(120, 100%, 40%);">+ Wait for UDP packets on mDNS_UDP port, decode them as DNS and forward them to the mDNS port. */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_main() runs on MSLookup_mDNS_Emulation_CT</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ var MSLookup_mDNS vl_dnsmsg;</span><br><span style="color: hsl(120, 100%, 40%);">+ var ASP_UDP vl_udpmsg;</span><br><span style="color: hsl(120, 100%, 40%);">+ map(self:mDNS_UDP, system:UDP);</span><br><span style="color: hsl(120, 100%, 40%);">+ alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] mDNS_UDP.receive(ASP_UDP:?) -> value vl_udpmsg {</span><br><span style="color: hsl(120, 100%, 40%);">+ mDNS.send(MSLookup_mDNS: {</span><br><span style="color: hsl(120, 100%, 40%);">+ dec_PDU_DNS(vl_udpmsg.data),</span><br><span style="color: hsl(120, 100%, 40%);">+ vl_udpmsg.addressf,</span><br><span style="color: hsl(120, 100%, 40%);">+ vl_udpmsg.portf</span><br><span style="color: hsl(120, 100%, 40%);">+ });</span><br><span style="color: hsl(120, 100%, 40%);">+ repeat;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ [] mDNS.receive(MSLookup_mDNS:?) -> value vl_dnsmsg {</span><br><span style="color: hsl(120, 100%, 40%);">+ mDNS_UDP.send(ASP_UDP: {</span><br><span style="color: hsl(120, 100%, 40%);">+ enc_PDU_DNS(vl_dnsmsg.dnsMessage, false, true),</span><br><span style="color: hsl(120, 100%, 40%);">+ vl_dnsmsg.udpAddress,</span><br><span style="color: hsl(120, 100%, 40%);">+ vl_dnsmsg.udpPort</span><br><span style="color: hsl(120, 100%, 40%);">+ });</span><br><span style="color: hsl(120, 100%, 40%);">+ repeat;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ unmap(self:mDNS_UDP, system:UDP);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/library/MSLookup_mDNS_Templates.ttcn b/library/MSLookup_mDNS_Templates.ttcn</span><br><span>new file mode 100644</span><br><span>index 0000000..123ec16</span><br><span>--- /dev/null</span><br><span>+++ b/library/MSLookup_mDNS_Templates.ttcn</span><br><span>@@ -0,0 +1,99 @@</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* (C) 2020 by sysmocom s.f.m.c. GmbH <info@sysmocom.de></span><br><span style="color: hsl(120, 100%, 40%);">+ * All Rights Reserved</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Released under the terms of GNU General Public License, Version 2 or</span><br><span style="color: hsl(120, 100%, 40%);">+ * (at your option) any later version.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * SPDX-License-Identifier: GPL-2.0-or-later</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+module MSLookup_mDNS_Templates {</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+import from DNS_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from MSLookup_mDNS_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+template MSLookup_mDNS ts_MSLookup_mDNS_query(integer id, charstring domain) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ dnsMessage := {</span><br><span style="color: hsl(120, 100%, 40%);">+ header := {</span><br><span style="color: hsl(120, 100%, 40%);">+ id := id,</span><br><span style="color: hsl(120, 100%, 40%);">+ qr := DNS_QUERY,</span><br><span style="color: hsl(120, 100%, 40%);">+ opCode := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ aa := false,</span><br><span style="color: hsl(120, 100%, 40%);">+ tc := false,</span><br><span style="color: hsl(120, 100%, 40%);">+ rd := false,</span><br><span style="color: hsl(120, 100%, 40%);">+ ra := false,</span><br><span style="color: hsl(120, 100%, 40%);">+ z := '000'B,</span><br><span style="color: hsl(120, 100%, 40%);">+ rCode := DNS_NO_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+ qdCount := 1,</span><br><span style="color: hsl(120, 100%, 40%);">+ anCount := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ nsCount := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ arCount := 0</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ queries := {</span><br><span style="color: hsl(120, 100%, 40%);">+ {</span><br><span style="color: hsl(120, 100%, 40%);">+ qName := domain,</span><br><span style="color: hsl(120, 100%, 40%);">+ qType := 255,</span><br><span style="color: hsl(120, 100%, 40%);">+ qClass := DNS_IN</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ answers := {},</span><br><span style="color: hsl(120, 100%, 40%);">+ nameServerRecords := {},</span><br><span style="color: hsl(120, 100%, 40%);">+ additionalRecords := {}</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ udpAddress := "239.192.23.42",</span><br><span style="color: hsl(120, 100%, 40%);">+ udpPort := 4266</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+template MSLookup_mDNS tr_MSLookup_mDNS_result_IPv4(integer id, charstring domain, UInt32 ip_v4, integer port_v4) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ dnsMessage := {</span><br><span style="color: hsl(120, 100%, 40%);">+ header := {</span><br><span style="color: hsl(120, 100%, 40%);">+ id := id,</span><br><span style="color: hsl(120, 100%, 40%);">+ qr := DNS_RESPONSE,</span><br><span style="color: hsl(120, 100%, 40%);">+ opCode := DNS_OP_QUERY,</span><br><span style="color: hsl(120, 100%, 40%);">+ aa := false,</span><br><span style="color: hsl(120, 100%, 40%);">+ tc := false,</span><br><span style="color: hsl(120, 100%, 40%);">+ rd := false,</span><br><span style="color: hsl(120, 100%, 40%);">+ ra := false,</span><br><span style="color: hsl(120, 100%, 40%);">+ z := '000'B,</span><br><span style="color: hsl(120, 100%, 40%);">+ rCode := DNS_NO_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+ qdCount := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ anCount := 3,</span><br><span style="color: hsl(120, 100%, 40%);">+ nsCount := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ arCount := 0</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ queries := {},</span><br><span style="color: hsl(120, 100%, 40%);">+ answers := {</span><br><span style="color: hsl(120, 100%, 40%);">+ {</span><br><span style="color: hsl(120, 100%, 40%);">+ name := domain,</span><br><span style="color: hsl(120, 100%, 40%);">+ rrType := DNS_TXT,</span><br><span style="color: hsl(120, 100%, 40%);">+ rrClass := DNS_IN,</span><br><span style="color: hsl(120, 100%, 40%);">+ ttl := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+ rdLength := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+ rData := {txt := {pattern "age=*"}}</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ {</span><br><span style="color: hsl(120, 100%, 40%);">+ name := domain,</span><br><span style="color: hsl(120, 100%, 40%);">+ rrType := DNS_A,</span><br><span style="color: hsl(120, 100%, 40%);">+ rrClass := DNS_IN,</span><br><span style="color: hsl(120, 100%, 40%);">+ ttl := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+ rdLength := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+ rData := {a := ip_v4}</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ {</span><br><span style="color: hsl(120, 100%, 40%);">+ name := domain,</span><br><span style="color: hsl(120, 100%, 40%);">+ rrType := DNS_TXT,</span><br><span style="color: hsl(120, 100%, 40%);">+ rrClass := DNS_IN,</span><br><span style="color: hsl(120, 100%, 40%);">+ ttl := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+ rdLength := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+ rData := {txt := {"port=" & int2str(port_v4)}}</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ nameServerRecords := {},</span><br><span style="color: hsl(120, 100%, 40%);">+ additionalRecords := {}</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ udpAddress := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+ udpPort := ?</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/library/MSLookup_mDNS_Types.ttcn b/library/MSLookup_mDNS_Types.ttcn</span><br><span>new file mode 100644</span><br><span>index 0000000..dacbb2b</span><br><span>--- /dev/null</span><br><span>+++ b/library/MSLookup_mDNS_Types.ttcn</span><br><span>@@ -0,0 +1,31 @@</span><br><span style="color: hsl(120, 100%, 40%);">+module MSLookup_mDNS_Types {</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* (C) 2020 sysmocom s.f.m.c. GmbH <info@sysmocom.de></span><br><span style="color: hsl(120, 100%, 40%);">+ * All rights reserved.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Released under the terms of GNU General Public License, Version 2 or</span><br><span style="color: hsl(120, 100%, 40%);">+ * (at your option) any later version.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * SPDX-License-Identifier: GPL-2.0-or-later</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+import from DNS_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from UDPasp_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from UDPasp_PortType all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+type record MSLookup_mDNS {</span><br><span style="color: hsl(120, 100%, 40%);">+ PDU_DNS dnsMessage,</span><br><span style="color: hsl(120, 100%, 40%);">+ AddressType udpAddress,</span><br><span style="color: hsl(120, 100%, 40%);">+ PortType udpPort</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+type port MSLookup_mDNS_PT message {</span><br><span style="color: hsl(120, 100%, 40%);">+ inout MSLookup_mDNS</span><br><span style="color: hsl(120, 100%, 40%);">+} with { extension "internal" }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+type component MSLookup_mDNS_Emulation_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ port MSLookup_mDNS_PT mDNS;</span><br><span style="color: hsl(120, 100%, 40%);">+ port UDPasp_PT mDNS_UDP;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/16914">change 16914</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/16914"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ia7f92d33691f910549353b16a7b0efc18e521719 </div>
<div style="display:none"> Gerrit-Change-Number: 16914 </div>
<div style="display:none"> Gerrit-PatchSet: 11 </div>
<div style="display:none"> Gerrit-Owner: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>