46 lines
1.2 KiB
Plaintext
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);
|
|
}
|
|
|
|
}
|