blob: 3d4fafe7a2e8cb185ca1edd57e4f21eed9407894 [file] [log] [blame]
Oliver Smithdeb80a62019-11-29 16:01:54 +01001
2/* (C) 2020 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
3 * All Rights Reserved
4 *
5 * Released under the terms of GNU General Public License, Version 2 or
6 * (at your option) any later version.
7 *
8 * SPDX-License-Identifier: GPL-2.0-or-later
9 */
10
11module MSLookup_mDNS_Templates {
12
13import from DNS_Types all;
14import from MSLookup_mDNS_Types all;
15
16template MSLookup_mDNS ts_MSLookup_mDNS_query(integer id, charstring domain) := {
17 dnsMessage := {
18 header := {
19 id := id,
20 qr := DNS_QUERY,
21 opCode := 0,
22 aa := false,
23 tc := false,
24 rd := false,
25 ra := false,
26 z := '000'B,
27 rCode := DNS_NO_ERROR,
28 qdCount := 1,
29 anCount := 0,
30 nsCount := 0,
31 arCount := 0
32 },
33 queries := {
34 {
35 qName := domain,
36 qType := 255,
37 qClass := DNS_IN
38 }
39 },
40 answers := {},
41 nameServerRecords := {},
42 additionalRecords := {}
43 },
44 udpAddress := "239.192.23.42",
45 udpPort := 4266
46}
47
Oliver Smithb51a53f2020-01-29 15:06:54 +010048template MSLookup_mDNS tr_MSLookup_mDNS_query(charstring domain) := {
49 dnsMessage := {
50 header := {
51 id := ?,
52 qr := DNS_QUERY,
53 opCode := 0,
54 aa := false,
55 tc := false,
56 rd := false,
57 ra := false,
58 z := '000'B,
59 rCode := DNS_NO_ERROR,
60 qdCount := 1,
61 anCount := 0,
62 nsCount := 0,
63 arCount := 0
64 },
65 queries := {
66 {
67 qName := domain,
68 qType := 255,
69 qClass := DNS_IN
70 }
71 },
72 answers := {},
73 nameServerRecords := {},
74 additionalRecords := {}
75 },
76 udpAddress := ?,
77 udpPort := ?
78}
79
80template MSLookup_mDNS ts_MSLookup_mDNS_result_IPv4(integer id, charstring domain, UInt32 ip_v4, integer port_v4) := {
81 dnsMessage := {
82 header := {
83 id := id,
84 qr := DNS_RESPONSE,
85 opCode := DNS_OP_QUERY,
86 aa := false,
87 tc := false,
88 rd := false,
89 ra := false,
90 z := '000'B,
91 rCode := DNS_NO_ERROR,
92 qdCount := 0,
93 anCount := 3,
94 nsCount := 0,
95 arCount := 0
96 },
97 queries := {},
98 answers := {
99 {
100 name := domain,
101 rrType := DNS_TXT,
102 rrClass := DNS_IN,
103 ttl := '00000000'O,
104 rdLength := 6,
105 rData := {txt := {"age=0"}}
106 },
107 {
108 name := domain,
109 rrType := DNS_A,
110 rrClass := DNS_IN,
111 ttl := '00000000'O,
112 rdLength := 4,
113 rData := {a := ip_v4}
114 },
115 {
116 name := domain,
117 rrType := DNS_TXT,
118 rrClass := DNS_IN,
119 ttl := '00000000'O,
120 rdLength := 1 + lengthof("port=" & int2str(port_v4)),
121 rData := {txt := {"port=" & int2str(port_v4)}}
122 }
123 },
124 nameServerRecords := {},
125 additionalRecords := {}
126 },
127 udpAddress := "239.192.23.42",
128 udpPort := 4266
129}
130
Oliver Smithdeb80a62019-11-29 16:01:54 +0100131template MSLookup_mDNS tr_MSLookup_mDNS_result_IPv4(integer id, charstring domain, UInt32 ip_v4, integer port_v4) := {
132 dnsMessage := {
133 header := {
134 id := id,
135 qr := DNS_RESPONSE,
136 opCode := DNS_OP_QUERY,
137 aa := false,
138 tc := false,
139 rd := false,
140 ra := false,
141 z := '000'B,
142 rCode := DNS_NO_ERROR,
143 qdCount := 0,
144 anCount := 3,
145 nsCount := 0,
146 arCount := 0
147 },
148 queries := {},
149 answers := {
150 {
151 name := domain,
152 rrType := DNS_TXT,
153 rrClass := DNS_IN,
154 ttl := ?,
155 rdLength := ?,
156 rData := {txt := {pattern "age=*"}}
157 },
158 {
159 name := domain,
160 rrType := DNS_A,
161 rrClass := DNS_IN,
162 ttl := ?,
163 rdLength := ?,
164 rData := {a := ip_v4}
165 },
166 {
167 name := domain,
168 rrType := DNS_TXT,
169 rrClass := DNS_IN,
170 ttl := ?,
171 rdLength := ?,
172 rData := {txt := {"port=" & int2str(port_v4)}}
173 }
174 },
175 nameServerRecords := {},
176 additionalRecords := {}
177 },
178 udpAddress := ?,
179 udpPort := ?
180}
181
182}