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

}
