aboutsummaryrefslogtreecommitdiffstats
path: root/library/MSLookup_mDNS_Templates.ttcn
blob: e2426fab004c0b834a01521ea399f3d189967968 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/* (C) 2020 by 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
 */

module MSLookup_mDNS_Templates {

import from DNS_Types all;
import from MSLookup_mDNS_Types all;

template MSLookup_mDNS t_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_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 := ?
}

}