/* (C) 2020 by sysmocom s.f.m.c. GmbH * 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_query(charstring domain) := { dnsMessage := { header := { 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 := ?, udpPort := ? } template MSLookup_mDNS ts_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 := '00000000'O, rdLength := 6, rData := {txt := {"age=0"}} }, { name := domain, rrType := DNS_A, rrClass := DNS_IN, ttl := '00000000'O, rdLength := 4, rData := {a := ip_v4} }, { name := domain, rrType := DNS_TXT, rrClass := DNS_IN, ttl := '00000000'O, rdLength := 1 + lengthof("port=" & int2str(port_v4)), rData := {txt := {"port=" & int2str(port_v4)}} } }, 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 := ? } }