Send an mslookup mDNS request to the home HLR, asking about a service that is not "gsup.hlr". Hence the "_other" in the test name, service "gsup.hlr" has different code paths, and related tests will be added in follow-up patches. This is the first test using MSLookup_mDNS_Emulation, so add related test infrastructure. Related: OS#4380 Depends: osmo-hlr I2fe453553c90e6ee527ed13a13089900efd488aa Change-Id: Ia7f92d33691f910549353b16a7b0efc18e521719changes/14/16914/11
parent
39ca7c3fe8
commit
deb80a6a82
@ -0,0 +1,45 @@ |
||||
module MSLookup_mDNS_Emulation { |
||||
|
||||
/* (C) 2020 sysmocom s.f.m.c. GmbH <info@sysmocom.de> |
||||
* All rights reserved. |
||||
* |
||||
* Released under the terms of GNU General Public License, Version 2 or |
||||
* (at your option) any later version. |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0-or-later |
||||
*/ |
||||
|
||||
import from DNS_Types all; |
||||
import from UDPasp_Types all; |
||||
import from MSLookup_mDNS_Types all; |
||||
|
||||
/* Transcode between mDNS and UDP: |
||||
Wait for DNS packets on the mDNS port, encode them as UDP and forward them to the mDNS_UDP port. |
||||
Wait for UDP packets on mDNS_UDP port, decode them as DNS and forward them to the mDNS port. */ |
||||
function f_main() runs on MSLookup_mDNS_Emulation_CT |
||||
{ |
||||
var MSLookup_mDNS vl_dnsmsg; |
||||
var ASP_UDP vl_udpmsg; |
||||
map(self:mDNS_UDP, system:UDP); |
||||
alt { |
||||
[] mDNS_UDP.receive(ASP_UDP:?) -> value vl_udpmsg { |
||||
mDNS.send(MSLookup_mDNS: { |
||||
dec_PDU_DNS(vl_udpmsg.data), |
||||
vl_udpmsg.addressf, |
||||
vl_udpmsg.portf |
||||
}); |
||||
repeat; |
||||
} |
||||
[] mDNS.receive(MSLookup_mDNS:?) -> value vl_dnsmsg { |
||||
mDNS_UDP.send(ASP_UDP: { |
||||
enc_PDU_DNS(vl_dnsmsg.dnsMessage, false, true), |
||||
vl_dnsmsg.udpAddress, |
||||
vl_dnsmsg.udpPort |
||||
}); |
||||
repeat; |
||||
} |
||||
} |
||||
unmap(self:mDNS_UDP, system:UDP); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,99 @@ |
||||
|
||||
/* (C) 2020 by sysmocom s.f.m.c. GmbH <info@sysmocom.de> |
||||
* All Rights Reserved |
||||
* |
||||
* Released under the terms of GNU General Public License, Version 2 or |
||||
* (at your option) any later version. |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0-or-later |
||||
*/ |
||||
|
||||
module MSLookup_mDNS_Templates { |
||||
|
||||
import from DNS_Types all; |
||||
import from MSLookup_mDNS_Types all; |
||||
|
||||
template MSLookup_mDNS ts_MSLookup_mDNS_query(integer id, charstring domain) := { |
||||
dnsMessage := { |
||||
header := { |
||||
id := id, |
||||
qr := DNS_QUERY, |
||||
opCode := 0, |
||||
aa := false, |
||||
tc := false, |
||||
rd := false, |
||||
ra := false, |
||||
z := '000'B, |
||||
rCode := DNS_NO_ERROR, |
||||
qdCount := 1, |
||||
anCount := 0, |
||||
nsCount := 0, |
||||
arCount := 0 |
||||
}, |
||||
queries := { |
||||
{ |
||||
qName := domain, |
||||
qType := 255, |
||||
qClass := DNS_IN |
||||
} |
||||
}, |
||||
answers := {}, |
||||
nameServerRecords := {}, |
||||
additionalRecords := {} |
||||
}, |
||||
udpAddress := "239.192.23.42", |
||||
udpPort := 4266 |
||||
} |
||||
|
||||
template MSLookup_mDNS tr_MSLookup_mDNS_result_IPv4(integer id, charstring domain, UInt32 ip_v4, integer port_v4) := { |
||||
dnsMessage := { |
||||
header := { |
||||
id := id, |
||||
qr := DNS_RESPONSE, |
||||
opCode := DNS_OP_QUERY, |
||||
aa := false, |
||||
tc := false, |
||||
rd := false, |
||||
ra := false, |
||||
z := '000'B, |
||||
rCode := DNS_NO_ERROR, |
||||
qdCount := 0, |
||||
anCount := 3, |
||||
nsCount := 0, |
||||
arCount := 0 |
||||
}, |
||||
queries := {}, |
||||
answers := { |
||||
{ |
||||
name := domain, |
||||
rrType := DNS_TXT, |
||||
rrClass := DNS_IN, |
||||
ttl := ?, |
||||
rdLength := ?, |
||||
rData := {txt := {pattern "age=*"}} |
||||
}, |
||||
{ |
||||
name := domain, |
||||
rrType := DNS_A, |
||||
rrClass := DNS_IN, |
||||
ttl := ?, |
||||
rdLength := ?, |
||||
rData := {a := ip_v4} |
||||
}, |
||||
{ |
||||
name := domain, |
||||
rrType := DNS_TXT, |
||||
rrClass := DNS_IN, |
||||
ttl := ?, |
||||
rdLength := ?, |
||||
rData := {txt := {"port=" & int2str(port_v4)}} |
||||
} |
||||
}, |
||||
nameServerRecords := {}, |
||||
additionalRecords := {} |
||||
}, |
||||
udpAddress := ?, |
||||
udpPort := ? |
||||
} |
||||
|
||||
} |
@ -0,0 +1,31 @@ |
||||
module MSLookup_mDNS_Types { |
||||
|
||||
/* (C) 2020 sysmocom s.f.m.c. GmbH <info@sysmocom.de> |
||||
* All rights reserved. |
||||
* |
||||
* Released under the terms of GNU General Public License, Version 2 or |
||||
* (at your option) any later version. |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0-or-later |
||||
*/ |
||||
|
||||
import from DNS_Types all; |
||||
import from UDPasp_Types all; |
||||
import from UDPasp_PortType all; |
||||
|
||||
type record MSLookup_mDNS { |
||||
PDU_DNS dnsMessage, |
||||
AddressType udpAddress, |
||||
PortType udpPort |
||||
} |
||||
|
||||
type port MSLookup_mDNS_PT message { |
||||
inout MSLookup_mDNS |
||||
} with { extension "internal" } |
||||
|
||||
type component MSLookup_mDNS_Emulation_CT { |
||||
port MSLookup_mDNS_PT mDNS; |
||||
port UDPasp_PT mDNS_UDP; |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue