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