osmo-ttcn3-hacks/library/MSLookup_mDNS_Emulation.ttcn

46 lines
1.2 KiB
Plaintext

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);
}
}