1// Code generated by "go run msg_generate.go"; DO NOT EDIT.
2
3package dns
4
5// pack*() functions
6
7func (rr *A) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
8	off, err = packDataA(rr.A, msg, off)
9	if err != nil {
10		return off, err
11	}
12	return off, nil
13}
14
15func (rr *AAAA) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
16	off, err = packDataAAAA(rr.AAAA, msg, off)
17	if err != nil {
18		return off, err
19	}
20	return off, nil
21}
22
23func (rr *AFSDB) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
24	off, err = packUint16(rr.Subtype, msg, off)
25	if err != nil {
26		return off, err
27	}
28	off, err = packDomainName(rr.Hostname, msg, off, compression, false)
29	if err != nil {
30		return off, err
31	}
32	return off, nil
33}
34
35func (rr *ANY) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
36	return off, nil
37}
38
39func (rr *APL) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
40	off, err = packDataApl(rr.Prefixes, msg, off)
41	if err != nil {
42		return off, err
43	}
44	return off, nil
45}
46
47func (rr *AVC) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
48	off, err = packStringTxt(rr.Txt, msg, off)
49	if err != nil {
50		return off, err
51	}
52	return off, nil
53}
54
55func (rr *CAA) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
56	off, err = packUint8(rr.Flag, msg, off)
57	if err != nil {
58		return off, err
59	}
60	off, err = packString(rr.Tag, msg, off)
61	if err != nil {
62		return off, err
63	}
64	off, err = packStringOctet(rr.Value, msg, off)
65	if err != nil {
66		return off, err
67	}
68	return off, nil
69}
70
71func (rr *CDNSKEY) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
72	off, err = packUint16(rr.Flags, msg, off)
73	if err != nil {
74		return off, err
75	}
76	off, err = packUint8(rr.Protocol, msg, off)
77	if err != nil {
78		return off, err
79	}
80	off, err = packUint8(rr.Algorithm, msg, off)
81	if err != nil {
82		return off, err
83	}
84	off, err = packStringBase64(rr.PublicKey, msg, off)
85	if err != nil {
86		return off, err
87	}
88	return off, nil
89}
90
91func (rr *CDS) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
92	off, err = packUint16(rr.KeyTag, msg, off)
93	if err != nil {
94		return off, err
95	}
96	off, err = packUint8(rr.Algorithm, msg, off)
97	if err != nil {
98		return off, err
99	}
100	off, err = packUint8(rr.DigestType, msg, off)
101	if err != nil {
102		return off, err
103	}
104	off, err = packStringHex(rr.Digest, msg, off)
105	if err != nil {
106		return off, err
107	}
108	return off, nil
109}
110
111func (rr *CERT) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
112	off, err = packUint16(rr.Type, msg, off)
113	if err != nil {
114		return off, err
115	}
116	off, err = packUint16(rr.KeyTag, msg, off)
117	if err != nil {
118		return off, err
119	}
120	off, err = packUint8(rr.Algorithm, msg, off)
121	if err != nil {
122		return off, err
123	}
124	off, err = packStringBase64(rr.Certificate, msg, off)
125	if err != nil {
126		return off, err
127	}
128	return off, nil
129}
130
131func (rr *CNAME) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
132	off, err = packDomainName(rr.Target, msg, off, compression, compress)
133	if err != nil {
134		return off, err
135	}
136	return off, nil
137}
138
139func (rr *CSYNC) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
140	off, err = packUint32(rr.Serial, msg, off)
141	if err != nil {
142		return off, err
143	}
144	off, err = packUint16(rr.Flags, msg, off)
145	if err != nil {
146		return off, err
147	}
148	off, err = packDataNsec(rr.TypeBitMap, msg, off)
149	if err != nil {
150		return off, err
151	}
152	return off, nil
153}
154
155func (rr *DHCID) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
156	off, err = packStringBase64(rr.Digest, msg, off)
157	if err != nil {
158		return off, err
159	}
160	return off, nil
161}
162
163func (rr *DLV) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
164	off, err = packUint16(rr.KeyTag, msg, off)
165	if err != nil {
166		return off, err
167	}
168	off, err = packUint8(rr.Algorithm, msg, off)
169	if err != nil {
170		return off, err
171	}
172	off, err = packUint8(rr.DigestType, msg, off)
173	if err != nil {
174		return off, err
175	}
176	off, err = packStringHex(rr.Digest, msg, off)
177	if err != nil {
178		return off, err
179	}
180	return off, nil
181}
182
183func (rr *DNAME) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
184	off, err = packDomainName(rr.Target, msg, off, compression, false)
185	if err != nil {
186		return off, err
187	}
188	return off, nil
189}
190
191func (rr *DNSKEY) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
192	off, err = packUint16(rr.Flags, msg, off)
193	if err != nil {
194		return off, err
195	}
196	off, err = packUint8(rr.Protocol, msg, off)
197	if err != nil {
198		return off, err
199	}
200	off, err = packUint8(rr.Algorithm, msg, off)
201	if err != nil {
202		return off, err
203	}
204	off, err = packStringBase64(rr.PublicKey, msg, off)
205	if err != nil {
206		return off, err
207	}
208	return off, nil
209}
210
211func (rr *DS) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
212	off, err = packUint16(rr.KeyTag, msg, off)
213	if err != nil {
214		return off, err
215	}
216	off, err = packUint8(rr.Algorithm, msg, off)
217	if err != nil {
218		return off, err
219	}
220	off, err = packUint8(rr.DigestType, msg, off)
221	if err != nil {
222		return off, err
223	}
224	off, err = packStringHex(rr.Digest, msg, off)
225	if err != nil {
226		return off, err
227	}
228	return off, nil
229}
230
231func (rr *EID) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
232	off, err = packStringHex(rr.Endpoint, msg, off)
233	if err != nil {
234		return off, err
235	}
236	return off, nil
237}
238
239func (rr *EUI48) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
240	off, err = packUint48(rr.Address, msg, off)
241	if err != nil {
242		return off, err
243	}
244	return off, nil
245}
246
247func (rr *EUI64) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
248	off, err = packUint64(rr.Address, msg, off)
249	if err != nil {
250		return off, err
251	}
252	return off, nil
253}
254
255func (rr *GID) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
256	off, err = packUint32(rr.Gid, msg, off)
257	if err != nil {
258		return off, err
259	}
260	return off, nil
261}
262
263func (rr *GPOS) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
264	off, err = packString(rr.Longitude, msg, off)
265	if err != nil {
266		return off, err
267	}
268	off, err = packString(rr.Latitude, msg, off)
269	if err != nil {
270		return off, err
271	}
272	off, err = packString(rr.Altitude, msg, off)
273	if err != nil {
274		return off, err
275	}
276	return off, nil
277}
278
279func (rr *HINFO) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
280	off, err = packString(rr.Cpu, msg, off)
281	if err != nil {
282		return off, err
283	}
284	off, err = packString(rr.Os, msg, off)
285	if err != nil {
286		return off, err
287	}
288	return off, nil
289}
290
291func (rr *HIP) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
292	off, err = packUint8(rr.HitLength, msg, off)
293	if err != nil {
294		return off, err
295	}
296	off, err = packUint8(rr.PublicKeyAlgorithm, msg, off)
297	if err != nil {
298		return off, err
299	}
300	off, err = packUint16(rr.PublicKeyLength, msg, off)
301	if err != nil {
302		return off, err
303	}
304	off, err = packStringHex(rr.Hit, msg, off)
305	if err != nil {
306		return off, err
307	}
308	off, err = packStringBase64(rr.PublicKey, msg, off)
309	if err != nil {
310		return off, err
311	}
312	off, err = packDataDomainNames(rr.RendezvousServers, msg, off, compression, false)
313	if err != nil {
314		return off, err
315	}
316	return off, nil
317}
318
319func (rr *KEY) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
320	off, err = packUint16(rr.Flags, msg, off)
321	if err != nil {
322		return off, err
323	}
324	off, err = packUint8(rr.Protocol, msg, off)
325	if err != nil {
326		return off, err
327	}
328	off, err = packUint8(rr.Algorithm, msg, off)
329	if err != nil {
330		return off, err
331	}
332	off, err = packStringBase64(rr.PublicKey, msg, off)
333	if err != nil {
334		return off, err
335	}
336	return off, nil
337}
338
339func (rr *KX) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
340	off, err = packUint16(rr.Preference, msg, off)
341	if err != nil {
342		return off, err
343	}
344	off, err = packDomainName(rr.Exchanger, msg, off, compression, false)
345	if err != nil {
346		return off, err
347	}
348	return off, nil
349}
350
351func (rr *L32) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
352	off, err = packUint16(rr.Preference, msg, off)
353	if err != nil {
354		return off, err
355	}
356	off, err = packDataA(rr.Locator32, msg, off)
357	if err != nil {
358		return off, err
359	}
360	return off, nil
361}
362
363func (rr *L64) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
364	off, err = packUint16(rr.Preference, msg, off)
365	if err != nil {
366		return off, err
367	}
368	off, err = packUint64(rr.Locator64, msg, off)
369	if err != nil {
370		return off, err
371	}
372	return off, nil
373}
374
375func (rr *LOC) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
376	off, err = packUint8(rr.Version, msg, off)
377	if err != nil {
378		return off, err
379	}
380	off, err = packUint8(rr.Size, msg, off)
381	if err != nil {
382		return off, err
383	}
384	off, err = packUint8(rr.HorizPre, msg, off)
385	if err != nil {
386		return off, err
387	}
388	off, err = packUint8(rr.VertPre, msg, off)
389	if err != nil {
390		return off, err
391	}
392	off, err = packUint32(rr.Latitude, msg, off)
393	if err != nil {
394		return off, err
395	}
396	off, err = packUint32(rr.Longitude, msg, off)
397	if err != nil {
398		return off, err
399	}
400	off, err = packUint32(rr.Altitude, msg, off)
401	if err != nil {
402		return off, err
403	}
404	return off, nil
405}
406
407func (rr *LP) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
408	off, err = packUint16(rr.Preference, msg, off)
409	if err != nil {
410		return off, err
411	}
412	off, err = packDomainName(rr.Fqdn, msg, off, compression, false)
413	if err != nil {
414		return off, err
415	}
416	return off, nil
417}
418
419func (rr *MB) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
420	off, err = packDomainName(rr.Mb, msg, off, compression, compress)
421	if err != nil {
422		return off, err
423	}
424	return off, nil
425}
426
427func (rr *MD) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
428	off, err = packDomainName(rr.Md, msg, off, compression, compress)
429	if err != nil {
430		return off, err
431	}
432	return off, nil
433}
434
435func (rr *MF) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
436	off, err = packDomainName(rr.Mf, msg, off, compression, compress)
437	if err != nil {
438		return off, err
439	}
440	return off, nil
441}
442
443func (rr *MG) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
444	off, err = packDomainName(rr.Mg, msg, off, compression, compress)
445	if err != nil {
446		return off, err
447	}
448	return off, nil
449}
450
451func (rr *MINFO) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
452	off, err = packDomainName(rr.Rmail, msg, off, compression, compress)
453	if err != nil {
454		return off, err
455	}
456	off, err = packDomainName(rr.Email, msg, off, compression, compress)
457	if err != nil {
458		return off, err
459	}
460	return off, nil
461}
462
463func (rr *MR) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
464	off, err = packDomainName(rr.Mr, msg, off, compression, compress)
465	if err != nil {
466		return off, err
467	}
468	return off, nil
469}
470
471func (rr *MX) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
472	off, err = packUint16(rr.Preference, msg, off)
473	if err != nil {
474		return off, err
475	}
476	off, err = packDomainName(rr.Mx, msg, off, compression, compress)
477	if err != nil {
478		return off, err
479	}
480	return off, nil
481}
482
483func (rr *NAPTR) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
484	off, err = packUint16(rr.Order, msg, off)
485	if err != nil {
486		return off, err
487	}
488	off, err = packUint16(rr.Preference, msg, off)
489	if err != nil {
490		return off, err
491	}
492	off, err = packString(rr.Flags, msg, off)
493	if err != nil {
494		return off, err
495	}
496	off, err = packString(rr.Service, msg, off)
497	if err != nil {
498		return off, err
499	}
500	off, err = packString(rr.Regexp, msg, off)
501	if err != nil {
502		return off, err
503	}
504	off, err = packDomainName(rr.Replacement, msg, off, compression, false)
505	if err != nil {
506		return off, err
507	}
508	return off, nil
509}
510
511func (rr *NID) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
512	off, err = packUint16(rr.Preference, msg, off)
513	if err != nil {
514		return off, err
515	}
516	off, err = packUint64(rr.NodeID, msg, off)
517	if err != nil {
518		return off, err
519	}
520	return off, nil
521}
522
523func (rr *NIMLOC) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
524	off, err = packStringHex(rr.Locator, msg, off)
525	if err != nil {
526		return off, err
527	}
528	return off, nil
529}
530
531func (rr *NINFO) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
532	off, err = packStringTxt(rr.ZSData, msg, off)
533	if err != nil {
534		return off, err
535	}
536	return off, nil
537}
538
539func (rr *NS) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
540	off, err = packDomainName(rr.Ns, msg, off, compression, compress)
541	if err != nil {
542		return off, err
543	}
544	return off, nil
545}
546
547func (rr *NSAPPTR) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
548	off, err = packDomainName(rr.Ptr, msg, off, compression, false)
549	if err != nil {
550		return off, err
551	}
552	return off, nil
553}
554
555func (rr *NSEC) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
556	off, err = packDomainName(rr.NextDomain, msg, off, compression, false)
557	if err != nil {
558		return off, err
559	}
560	off, err = packDataNsec(rr.TypeBitMap, msg, off)
561	if err != nil {
562		return off, err
563	}
564	return off, nil
565}
566
567func (rr *NSEC3) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
568	off, err = packUint8(rr.Hash, msg, off)
569	if err != nil {
570		return off, err
571	}
572	off, err = packUint8(rr.Flags, msg, off)
573	if err != nil {
574		return off, err
575	}
576	off, err = packUint16(rr.Iterations, msg, off)
577	if err != nil {
578		return off, err
579	}
580	off, err = packUint8(rr.SaltLength, msg, off)
581	if err != nil {
582		return off, err
583	}
584	// Only pack salt if value is not "-", i.e. empty
585	if rr.Salt != "-" {
586		off, err = packStringHex(rr.Salt, msg, off)
587		if err != nil {
588			return off, err
589		}
590	}
591	off, err = packUint8(rr.HashLength, msg, off)
592	if err != nil {
593		return off, err
594	}
595	off, err = packStringBase32(rr.NextDomain, msg, off)
596	if err != nil {
597		return off, err
598	}
599	off, err = packDataNsec(rr.TypeBitMap, msg, off)
600	if err != nil {
601		return off, err
602	}
603	return off, nil
604}
605
606func (rr *NSEC3PARAM) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
607	off, err = packUint8(rr.Hash, msg, off)
608	if err != nil {
609		return off, err
610	}
611	off, err = packUint8(rr.Flags, msg, off)
612	if err != nil {
613		return off, err
614	}
615	off, err = packUint16(rr.Iterations, msg, off)
616	if err != nil {
617		return off, err
618	}
619	off, err = packUint8(rr.SaltLength, msg, off)
620	if err != nil {
621		return off, err
622	}
623	// Only pack salt if value is not "-", i.e. empty
624	if rr.Salt != "-" {
625		off, err = packStringHex(rr.Salt, msg, off)
626		if err != nil {
627			return off, err
628		}
629	}
630	return off, nil
631}
632
633func (rr *NULL) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
634	off, err = packStringAny(rr.Data, msg, off)
635	if err != nil {
636		return off, err
637	}
638	return off, nil
639}
640
641func (rr *OPENPGPKEY) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
642	off, err = packStringBase64(rr.PublicKey, msg, off)
643	if err != nil {
644		return off, err
645	}
646	return off, nil
647}
648
649func (rr *OPT) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
650	off, err = packDataOpt(rr.Option, msg, off)
651	if err != nil {
652		return off, err
653	}
654	return off, nil
655}
656
657func (rr *PTR) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
658	off, err = packDomainName(rr.Ptr, msg, off, compression, compress)
659	if err != nil {
660		return off, err
661	}
662	return off, nil
663}
664
665func (rr *PX) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
666	off, err = packUint16(rr.Preference, msg, off)
667	if err != nil {
668		return off, err
669	}
670	off, err = packDomainName(rr.Map822, msg, off, compression, false)
671	if err != nil {
672		return off, err
673	}
674	off, err = packDomainName(rr.Mapx400, msg, off, compression, false)
675	if err != nil {
676		return off, err
677	}
678	return off, nil
679}
680
681func (rr *RFC3597) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
682	off, err = packStringHex(rr.Rdata, msg, off)
683	if err != nil {
684		return off, err
685	}
686	return off, nil
687}
688
689func (rr *RKEY) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
690	off, err = packUint16(rr.Flags, msg, off)
691	if err != nil {
692		return off, err
693	}
694	off, err = packUint8(rr.Protocol, msg, off)
695	if err != nil {
696		return off, err
697	}
698	off, err = packUint8(rr.Algorithm, msg, off)
699	if err != nil {
700		return off, err
701	}
702	off, err = packStringBase64(rr.PublicKey, msg, off)
703	if err != nil {
704		return off, err
705	}
706	return off, nil
707}
708
709func (rr *RP) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
710	off, err = packDomainName(rr.Mbox, msg, off, compression, false)
711	if err != nil {
712		return off, err
713	}
714	off, err = packDomainName(rr.Txt, msg, off, compression, false)
715	if err != nil {
716		return off, err
717	}
718	return off, nil
719}
720
721func (rr *RRSIG) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
722	off, err = packUint16(rr.TypeCovered, msg, off)
723	if err != nil {
724		return off, err
725	}
726	off, err = packUint8(rr.Algorithm, msg, off)
727	if err != nil {
728		return off, err
729	}
730	off, err = packUint8(rr.Labels, msg, off)
731	if err != nil {
732		return off, err
733	}
734	off, err = packUint32(rr.OrigTtl, msg, off)
735	if err != nil {
736		return off, err
737	}
738	off, err = packUint32(rr.Expiration, msg, off)
739	if err != nil {
740		return off, err
741	}
742	off, err = packUint32(rr.Inception, msg, off)
743	if err != nil {
744		return off, err
745	}
746	off, err = packUint16(rr.KeyTag, msg, off)
747	if err != nil {
748		return off, err
749	}
750	off, err = packDomainName(rr.SignerName, msg, off, compression, false)
751	if err != nil {
752		return off, err
753	}
754	off, err = packStringBase64(rr.Signature, msg, off)
755	if err != nil {
756		return off, err
757	}
758	return off, nil
759}
760
761func (rr *RT) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
762	off, err = packUint16(rr.Preference, msg, off)
763	if err != nil {
764		return off, err
765	}
766	off, err = packDomainName(rr.Host, msg, off, compression, false)
767	if err != nil {
768		return off, err
769	}
770	return off, nil
771}
772
773func (rr *SIG) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
774	off, err = packUint16(rr.TypeCovered, msg, off)
775	if err != nil {
776		return off, err
777	}
778	off, err = packUint8(rr.Algorithm, msg, off)
779	if err != nil {
780		return off, err
781	}
782	off, err = packUint8(rr.Labels, msg, off)
783	if err != nil {
784		return off, err
785	}
786	off, err = packUint32(rr.OrigTtl, msg, off)
787	if err != nil {
788		return off, err
789	}
790	off, err = packUint32(rr.Expiration, msg, off)
791	if err != nil {
792		return off, err
793	}
794	off, err = packUint32(rr.Inception, msg, off)
795	if err != nil {
796		return off, err
797	}
798	off, err = packUint16(rr.KeyTag, msg, off)
799	if err != nil {
800		return off, err
801	}
802	off, err = packDomainName(rr.SignerName, msg, off, compression, false)
803	if err != nil {
804		return off, err
805	}
806	off, err = packStringBase64(rr.Signature, msg, off)
807	if err != nil {
808		return off, err
809	}
810	return off, nil
811}
812
813func (rr *SMIMEA) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
814	off, err = packUint8(rr.Usage, msg, off)
815	if err != nil {
816		return off, err
817	}
818	off, err = packUint8(rr.Selector, msg, off)
819	if err != nil {
820		return off, err
821	}
822	off, err = packUint8(rr.MatchingType, msg, off)
823	if err != nil {
824		return off, err
825	}
826	off, err = packStringHex(rr.Certificate, msg, off)
827	if err != nil {
828		return off, err
829	}
830	return off, nil
831}
832
833func (rr *SOA) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
834	off, err = packDomainName(rr.Ns, msg, off, compression, compress)
835	if err != nil {
836		return off, err
837	}
838	off, err = packDomainName(rr.Mbox, msg, off, compression, compress)
839	if err != nil {
840		return off, err
841	}
842	off, err = packUint32(rr.Serial, msg, off)
843	if err != nil {
844		return off, err
845	}
846	off, err = packUint32(rr.Refresh, msg, off)
847	if err != nil {
848		return off, err
849	}
850	off, err = packUint32(rr.Retry, msg, off)
851	if err != nil {
852		return off, err
853	}
854	off, err = packUint32(rr.Expire, msg, off)
855	if err != nil {
856		return off, err
857	}
858	off, err = packUint32(rr.Minttl, msg, off)
859	if err != nil {
860		return off, err
861	}
862	return off, nil
863}
864
865func (rr *SPF) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
866	off, err = packStringTxt(rr.Txt, msg, off)
867	if err != nil {
868		return off, err
869	}
870	return off, nil
871}
872
873func (rr *SRV) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
874	off, err = packUint16(rr.Priority, msg, off)
875	if err != nil {
876		return off, err
877	}
878	off, err = packUint16(rr.Weight, msg, off)
879	if err != nil {
880		return off, err
881	}
882	off, err = packUint16(rr.Port, msg, off)
883	if err != nil {
884		return off, err
885	}
886	off, err = packDomainName(rr.Target, msg, off, compression, false)
887	if err != nil {
888		return off, err
889	}
890	return off, nil
891}
892
893func (rr *SSHFP) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
894	off, err = packUint8(rr.Algorithm, msg, off)
895	if err != nil {
896		return off, err
897	}
898	off, err = packUint8(rr.Type, msg, off)
899	if err != nil {
900		return off, err
901	}
902	off, err = packStringHex(rr.FingerPrint, msg, off)
903	if err != nil {
904		return off, err
905	}
906	return off, nil
907}
908
909func (rr *TA) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
910	off, err = packUint16(rr.KeyTag, msg, off)
911	if err != nil {
912		return off, err
913	}
914	off, err = packUint8(rr.Algorithm, msg, off)
915	if err != nil {
916		return off, err
917	}
918	off, err = packUint8(rr.DigestType, msg, off)
919	if err != nil {
920		return off, err
921	}
922	off, err = packStringHex(rr.Digest, msg, off)
923	if err != nil {
924		return off, err
925	}
926	return off, nil
927}
928
929func (rr *TALINK) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
930	off, err = packDomainName(rr.PreviousName, msg, off, compression, false)
931	if err != nil {
932		return off, err
933	}
934	off, err = packDomainName(rr.NextName, msg, off, compression, false)
935	if err != nil {
936		return off, err
937	}
938	return off, nil
939}
940
941func (rr *TKEY) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
942	off, err = packDomainName(rr.Algorithm, msg, off, compression, false)
943	if err != nil {
944		return off, err
945	}
946	off, err = packUint32(rr.Inception, msg, off)
947	if err != nil {
948		return off, err
949	}
950	off, err = packUint32(rr.Expiration, msg, off)
951	if err != nil {
952		return off, err
953	}
954	off, err = packUint16(rr.Mode, msg, off)
955	if err != nil {
956		return off, err
957	}
958	off, err = packUint16(rr.Error, msg, off)
959	if err != nil {
960		return off, err
961	}
962	off, err = packUint16(rr.KeySize, msg, off)
963	if err != nil {
964		return off, err
965	}
966	off, err = packStringHex(rr.Key, msg, off)
967	if err != nil {
968		return off, err
969	}
970	off, err = packUint16(rr.OtherLen, msg, off)
971	if err != nil {
972		return off, err
973	}
974	off, err = packStringHex(rr.OtherData, msg, off)
975	if err != nil {
976		return off, err
977	}
978	return off, nil
979}
980
981func (rr *TLSA) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
982	off, err = packUint8(rr.Usage, msg, off)
983	if err != nil {
984		return off, err
985	}
986	off, err = packUint8(rr.Selector, msg, off)
987	if err != nil {
988		return off, err
989	}
990	off, err = packUint8(rr.MatchingType, msg, off)
991	if err != nil {
992		return off, err
993	}
994	off, err = packStringHex(rr.Certificate, msg, off)
995	if err != nil {
996		return off, err
997	}
998	return off, nil
999}
1000
1001func (rr *TSIG) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
1002	off, err = packDomainName(rr.Algorithm, msg, off, compression, false)
1003	if err != nil {
1004		return off, err
1005	}
1006	off, err = packUint48(rr.TimeSigned, msg, off)
1007	if err != nil {
1008		return off, err
1009	}
1010	off, err = packUint16(rr.Fudge, msg, off)
1011	if err != nil {
1012		return off, err
1013	}
1014	off, err = packUint16(rr.MACSize, msg, off)
1015	if err != nil {
1016		return off, err
1017	}
1018	off, err = packStringHex(rr.MAC, msg, off)
1019	if err != nil {
1020		return off, err
1021	}
1022	off, err = packUint16(rr.OrigId, msg, off)
1023	if err != nil {
1024		return off, err
1025	}
1026	off, err = packUint16(rr.Error, msg, off)
1027	if err != nil {
1028		return off, err
1029	}
1030	off, err = packUint16(rr.OtherLen, msg, off)
1031	if err != nil {
1032		return off, err
1033	}
1034	off, err = packStringHex(rr.OtherData, msg, off)
1035	if err != nil {
1036		return off, err
1037	}
1038	return off, nil
1039}
1040
1041func (rr *TXT) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
1042	off, err = packStringTxt(rr.Txt, msg, off)
1043	if err != nil {
1044		return off, err
1045	}
1046	return off, nil
1047}
1048
1049func (rr *UID) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
1050	off, err = packUint32(rr.Uid, msg, off)
1051	if err != nil {
1052		return off, err
1053	}
1054	return off, nil
1055}
1056
1057func (rr *UINFO) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
1058	off, err = packString(rr.Uinfo, msg, off)
1059	if err != nil {
1060		return off, err
1061	}
1062	return off, nil
1063}
1064
1065func (rr *URI) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
1066	off, err = packUint16(rr.Priority, msg, off)
1067	if err != nil {
1068		return off, err
1069	}
1070	off, err = packUint16(rr.Weight, msg, off)
1071	if err != nil {
1072		return off, err
1073	}
1074	off, err = packStringOctet(rr.Target, msg, off)
1075	if err != nil {
1076		return off, err
1077	}
1078	return off, nil
1079}
1080
1081func (rr *X25) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) {
1082	off, err = packString(rr.PSDNAddress, msg, off)
1083	if err != nil {
1084		return off, err
1085	}
1086	return off, nil
1087}
1088
1089// unpack*() functions
1090
1091func (rr *A) unpack(msg []byte, off int) (off1 int, err error) {
1092	rdStart := off
1093	_ = rdStart
1094
1095	rr.A, off, err = unpackDataA(msg, off)
1096	if err != nil {
1097		return off, err
1098	}
1099	return off, nil
1100}
1101
1102func (rr *AAAA) unpack(msg []byte, off int) (off1 int, err error) {
1103	rdStart := off
1104	_ = rdStart
1105
1106	rr.AAAA, off, err = unpackDataAAAA(msg, off)
1107	if err != nil {
1108		return off, err
1109	}
1110	return off, nil
1111}
1112
1113func (rr *AFSDB) unpack(msg []byte, off int) (off1 int, err error) {
1114	rdStart := off
1115	_ = rdStart
1116
1117	rr.Subtype, off, err = unpackUint16(msg, off)
1118	if err != nil {
1119		return off, err
1120	}
1121	if off == len(msg) {
1122		return off, nil
1123	}
1124	rr.Hostname, off, err = UnpackDomainName(msg, off)
1125	if err != nil {
1126		return off, err
1127	}
1128	return off, nil
1129}
1130
1131func (rr *ANY) unpack(msg []byte, off int) (off1 int, err error) {
1132	rdStart := off
1133	_ = rdStart
1134
1135	return off, nil
1136}
1137
1138func (rr *APL) unpack(msg []byte, off int) (off1 int, err error) {
1139	rdStart := off
1140	_ = rdStart
1141
1142	rr.Prefixes, off, err = unpackDataApl(msg, off)
1143	if err != nil {
1144		return off, err
1145	}
1146	return off, nil
1147}
1148
1149func (rr *AVC) unpack(msg []byte, off int) (off1 int, err error) {
1150	rdStart := off
1151	_ = rdStart
1152
1153	rr.Txt, off, err = unpackStringTxt(msg, off)
1154	if err != nil {
1155		return off, err
1156	}
1157	return off, nil
1158}
1159
1160func (rr *CAA) unpack(msg []byte, off int) (off1 int, err error) {
1161	rdStart := off
1162	_ = rdStart
1163
1164	rr.Flag, off, err = unpackUint8(msg, off)
1165	if err != nil {
1166		return off, err
1167	}
1168	if off == len(msg) {
1169		return off, nil
1170	}
1171	rr.Tag, off, err = unpackString(msg, off)
1172	if err != nil {
1173		return off, err
1174	}
1175	if off == len(msg) {
1176		return off, nil
1177	}
1178	rr.Value, off, err = unpackStringOctet(msg, off)
1179	if err != nil {
1180		return off, err
1181	}
1182	return off, nil
1183}
1184
1185func (rr *CDNSKEY) unpack(msg []byte, off int) (off1 int, err error) {
1186	rdStart := off
1187	_ = rdStart
1188
1189	rr.Flags, off, err = unpackUint16(msg, off)
1190	if err != nil {
1191		return off, err
1192	}
1193	if off == len(msg) {
1194		return off, nil
1195	}
1196	rr.Protocol, off, err = unpackUint8(msg, off)
1197	if err != nil {
1198		return off, err
1199	}
1200	if off == len(msg) {
1201		return off, nil
1202	}
1203	rr.Algorithm, off, err = unpackUint8(msg, off)
1204	if err != nil {
1205		return off, err
1206	}
1207	if off == len(msg) {
1208		return off, nil
1209	}
1210	rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
1211	if err != nil {
1212		return off, err
1213	}
1214	return off, nil
1215}
1216
1217func (rr *CDS) unpack(msg []byte, off int) (off1 int, err error) {
1218	rdStart := off
1219	_ = rdStart
1220
1221	rr.KeyTag, off, err = unpackUint16(msg, off)
1222	if err != nil {
1223		return off, err
1224	}
1225	if off == len(msg) {
1226		return off, nil
1227	}
1228	rr.Algorithm, off, err = unpackUint8(msg, off)
1229	if err != nil {
1230		return off, err
1231	}
1232	if off == len(msg) {
1233		return off, nil
1234	}
1235	rr.DigestType, off, err = unpackUint8(msg, off)
1236	if err != nil {
1237		return off, err
1238	}
1239	if off == len(msg) {
1240		return off, nil
1241	}
1242	rr.Digest, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
1243	if err != nil {
1244		return off, err
1245	}
1246	return off, nil
1247}
1248
1249func (rr *CERT) unpack(msg []byte, off int) (off1 int, err error) {
1250	rdStart := off
1251	_ = rdStart
1252
1253	rr.Type, off, err = unpackUint16(msg, off)
1254	if err != nil {
1255		return off, err
1256	}
1257	if off == len(msg) {
1258		return off, nil
1259	}
1260	rr.KeyTag, off, err = unpackUint16(msg, off)
1261	if err != nil {
1262		return off, err
1263	}
1264	if off == len(msg) {
1265		return off, nil
1266	}
1267	rr.Algorithm, off, err = unpackUint8(msg, off)
1268	if err != nil {
1269		return off, err
1270	}
1271	if off == len(msg) {
1272		return off, nil
1273	}
1274	rr.Certificate, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
1275	if err != nil {
1276		return off, err
1277	}
1278	return off, nil
1279}
1280
1281func (rr *CNAME) unpack(msg []byte, off int) (off1 int, err error) {
1282	rdStart := off
1283	_ = rdStart
1284
1285	rr.Target, off, err = UnpackDomainName(msg, off)
1286	if err != nil {
1287		return off, err
1288	}
1289	return off, nil
1290}
1291
1292func (rr *CSYNC) unpack(msg []byte, off int) (off1 int, err error) {
1293	rdStart := off
1294	_ = rdStart
1295
1296	rr.Serial, off, err = unpackUint32(msg, off)
1297	if err != nil {
1298		return off, err
1299	}
1300	if off == len(msg) {
1301		return off, nil
1302	}
1303	rr.Flags, off, err = unpackUint16(msg, off)
1304	if err != nil {
1305		return off, err
1306	}
1307	if off == len(msg) {
1308		return off, nil
1309	}
1310	rr.TypeBitMap, off, err = unpackDataNsec(msg, off)
1311	if err != nil {
1312		return off, err
1313	}
1314	return off, nil
1315}
1316
1317func (rr *DHCID) unpack(msg []byte, off int) (off1 int, err error) {
1318	rdStart := off
1319	_ = rdStart
1320
1321	rr.Digest, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
1322	if err != nil {
1323		return off, err
1324	}
1325	return off, nil
1326}
1327
1328func (rr *DLV) unpack(msg []byte, off int) (off1 int, err error) {
1329	rdStart := off
1330	_ = rdStart
1331
1332	rr.KeyTag, off, err = unpackUint16(msg, off)
1333	if err != nil {
1334		return off, err
1335	}
1336	if off == len(msg) {
1337		return off, nil
1338	}
1339	rr.Algorithm, off, err = unpackUint8(msg, off)
1340	if err != nil {
1341		return off, err
1342	}
1343	if off == len(msg) {
1344		return off, nil
1345	}
1346	rr.DigestType, off, err = unpackUint8(msg, off)
1347	if err != nil {
1348		return off, err
1349	}
1350	if off == len(msg) {
1351		return off, nil
1352	}
1353	rr.Digest, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
1354	if err != nil {
1355		return off, err
1356	}
1357	return off, nil
1358}
1359
1360func (rr *DNAME) unpack(msg []byte, off int) (off1 int, err error) {
1361	rdStart := off
1362	_ = rdStart
1363
1364	rr.Target, off, err = UnpackDomainName(msg, off)
1365	if err != nil {
1366		return off, err
1367	}
1368	return off, nil
1369}
1370
1371func (rr *DNSKEY) unpack(msg []byte, off int) (off1 int, err error) {
1372	rdStart := off
1373	_ = rdStart
1374
1375	rr.Flags, off, err = unpackUint16(msg, off)
1376	if err != nil {
1377		return off, err
1378	}
1379	if off == len(msg) {
1380		return off, nil
1381	}
1382	rr.Protocol, off, err = unpackUint8(msg, off)
1383	if err != nil {
1384		return off, err
1385	}
1386	if off == len(msg) {
1387		return off, nil
1388	}
1389	rr.Algorithm, off, err = unpackUint8(msg, off)
1390	if err != nil {
1391		return off, err
1392	}
1393	if off == len(msg) {
1394		return off, nil
1395	}
1396	rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
1397	if err != nil {
1398		return off, err
1399	}
1400	return off, nil
1401}
1402
1403func (rr *DS) unpack(msg []byte, off int) (off1 int, err error) {
1404	rdStart := off
1405	_ = rdStart
1406
1407	rr.KeyTag, off, err = unpackUint16(msg, off)
1408	if err != nil {
1409		return off, err
1410	}
1411	if off == len(msg) {
1412		return off, nil
1413	}
1414	rr.Algorithm, off, err = unpackUint8(msg, off)
1415	if err != nil {
1416		return off, err
1417	}
1418	if off == len(msg) {
1419		return off, nil
1420	}
1421	rr.DigestType, off, err = unpackUint8(msg, off)
1422	if err != nil {
1423		return off, err
1424	}
1425	if off == len(msg) {
1426		return off, nil
1427	}
1428	rr.Digest, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
1429	if err != nil {
1430		return off, err
1431	}
1432	return off, nil
1433}
1434
1435func (rr *EID) unpack(msg []byte, off int) (off1 int, err error) {
1436	rdStart := off
1437	_ = rdStart
1438
1439	rr.Endpoint, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
1440	if err != nil {
1441		return off, err
1442	}
1443	return off, nil
1444}
1445
1446func (rr *EUI48) unpack(msg []byte, off int) (off1 int, err error) {
1447	rdStart := off
1448	_ = rdStart
1449
1450	rr.Address, off, err = unpackUint48(msg, off)
1451	if err != nil {
1452		return off, err
1453	}
1454	return off, nil
1455}
1456
1457func (rr *EUI64) unpack(msg []byte, off int) (off1 int, err error) {
1458	rdStart := off
1459	_ = rdStart
1460
1461	rr.Address, off, err = unpackUint64(msg, off)
1462	if err != nil {
1463		return off, err
1464	}
1465	return off, nil
1466}
1467
1468func (rr *GID) unpack(msg []byte, off int) (off1 int, err error) {
1469	rdStart := off
1470	_ = rdStart
1471
1472	rr.Gid, off, err = unpackUint32(msg, off)
1473	if err != nil {
1474		return off, err
1475	}
1476	return off, nil
1477}
1478
1479func (rr *GPOS) unpack(msg []byte, off int) (off1 int, err error) {
1480	rdStart := off
1481	_ = rdStart
1482
1483	rr.Longitude, off, err = unpackString(msg, off)
1484	if err != nil {
1485		return off, err
1486	}
1487	if off == len(msg) {
1488		return off, nil
1489	}
1490	rr.Latitude, off, err = unpackString(msg, off)
1491	if err != nil {
1492		return off, err
1493	}
1494	if off == len(msg) {
1495		return off, nil
1496	}
1497	rr.Altitude, off, err = unpackString(msg, off)
1498	if err != nil {
1499		return off, err
1500	}
1501	return off, nil
1502}
1503
1504func (rr *HINFO) unpack(msg []byte, off int) (off1 int, err error) {
1505	rdStart := off
1506	_ = rdStart
1507
1508	rr.Cpu, off, err = unpackString(msg, off)
1509	if err != nil {
1510		return off, err
1511	}
1512	if off == len(msg) {
1513		return off, nil
1514	}
1515	rr.Os, off, err = unpackString(msg, off)
1516	if err != nil {
1517		return off, err
1518	}
1519	return off, nil
1520}
1521
1522func (rr *HIP) unpack(msg []byte, off int) (off1 int, err error) {
1523	rdStart := off
1524	_ = rdStart
1525
1526	rr.HitLength, off, err = unpackUint8(msg, off)
1527	if err != nil {
1528		return off, err
1529	}
1530	if off == len(msg) {
1531		return off, nil
1532	}
1533	rr.PublicKeyAlgorithm, off, err = unpackUint8(msg, off)
1534	if err != nil {
1535		return off, err
1536	}
1537	if off == len(msg) {
1538		return off, nil
1539	}
1540	rr.PublicKeyLength, off, err = unpackUint16(msg, off)
1541	if err != nil {
1542		return off, err
1543	}
1544	if off == len(msg) {
1545		return off, nil
1546	}
1547	rr.Hit, off, err = unpackStringHex(msg, off, off+int(rr.HitLength))
1548	if err != nil {
1549		return off, err
1550	}
1551	rr.PublicKey, off, err = unpackStringBase64(msg, off, off+int(rr.PublicKeyLength))
1552	if err != nil {
1553		return off, err
1554	}
1555	rr.RendezvousServers, off, err = unpackDataDomainNames(msg, off, rdStart+int(rr.Hdr.Rdlength))
1556	if err != nil {
1557		return off, err
1558	}
1559	return off, nil
1560}
1561
1562func (rr *KEY) unpack(msg []byte, off int) (off1 int, err error) {
1563	rdStart := off
1564	_ = rdStart
1565
1566	rr.Flags, off, err = unpackUint16(msg, off)
1567	if err != nil {
1568		return off, err
1569	}
1570	if off == len(msg) {
1571		return off, nil
1572	}
1573	rr.Protocol, off, err = unpackUint8(msg, off)
1574	if err != nil {
1575		return off, err
1576	}
1577	if off == len(msg) {
1578		return off, nil
1579	}
1580	rr.Algorithm, off, err = unpackUint8(msg, off)
1581	if err != nil {
1582		return off, err
1583	}
1584	if off == len(msg) {
1585		return off, nil
1586	}
1587	rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
1588	if err != nil {
1589		return off, err
1590	}
1591	return off, nil
1592}
1593
1594func (rr *KX) unpack(msg []byte, off int) (off1 int, err error) {
1595	rdStart := off
1596	_ = rdStart
1597
1598	rr.Preference, off, err = unpackUint16(msg, off)
1599	if err != nil {
1600		return off, err
1601	}
1602	if off == len(msg) {
1603		return off, nil
1604	}
1605	rr.Exchanger, off, err = UnpackDomainName(msg, off)
1606	if err != nil {
1607		return off, err
1608	}
1609	return off, nil
1610}
1611
1612func (rr *L32) unpack(msg []byte, off int) (off1 int, err error) {
1613	rdStart := off
1614	_ = rdStart
1615
1616	rr.Preference, off, err = unpackUint16(msg, off)
1617	if err != nil {
1618		return off, err
1619	}
1620	if off == len(msg) {
1621		return off, nil
1622	}
1623	rr.Locator32, off, err = unpackDataA(msg, off)
1624	if err != nil {
1625		return off, err
1626	}
1627	return off, nil
1628}
1629
1630func (rr *L64) unpack(msg []byte, off int) (off1 int, err error) {
1631	rdStart := off
1632	_ = rdStart
1633
1634	rr.Preference, off, err = unpackUint16(msg, off)
1635	if err != nil {
1636		return off, err
1637	}
1638	if off == len(msg) {
1639		return off, nil
1640	}
1641	rr.Locator64, off, err = unpackUint64(msg, off)
1642	if err != nil {
1643		return off, err
1644	}
1645	return off, nil
1646}
1647
1648func (rr *LOC) unpack(msg []byte, off int) (off1 int, err error) {
1649	rdStart := off
1650	_ = rdStart
1651
1652	rr.Version, off, err = unpackUint8(msg, off)
1653	if err != nil {
1654		return off, err
1655	}
1656	if off == len(msg) {
1657		return off, nil
1658	}
1659	rr.Size, off, err = unpackUint8(msg, off)
1660	if err != nil {
1661		return off, err
1662	}
1663	if off == len(msg) {
1664		return off, nil
1665	}
1666	rr.HorizPre, off, err = unpackUint8(msg, off)
1667	if err != nil {
1668		return off, err
1669	}
1670	if off == len(msg) {
1671		return off, nil
1672	}
1673	rr.VertPre, off, err = unpackUint8(msg, off)
1674	if err != nil {
1675		return off, err
1676	}
1677	if off == len(msg) {
1678		return off, nil
1679	}
1680	rr.Latitude, off, err = unpackUint32(msg, off)
1681	if err != nil {
1682		return off, err
1683	}
1684	if off == len(msg) {
1685		return off, nil
1686	}
1687	rr.Longitude, off, err = unpackUint32(msg, off)
1688	if err != nil {
1689		return off, err
1690	}
1691	if off == len(msg) {
1692		return off, nil
1693	}
1694	rr.Altitude, off, err = unpackUint32(msg, off)
1695	if err != nil {
1696		return off, err
1697	}
1698	return off, nil
1699}
1700
1701func (rr *LP) unpack(msg []byte, off int) (off1 int, err error) {
1702	rdStart := off
1703	_ = rdStart
1704
1705	rr.Preference, off, err = unpackUint16(msg, off)
1706	if err != nil {
1707		return off, err
1708	}
1709	if off == len(msg) {
1710		return off, nil
1711	}
1712	rr.Fqdn, off, err = UnpackDomainName(msg, off)
1713	if err != nil {
1714		return off, err
1715	}
1716	return off, nil
1717}
1718
1719func (rr *MB) unpack(msg []byte, off int) (off1 int, err error) {
1720	rdStart := off
1721	_ = rdStart
1722
1723	rr.Mb, off, err = UnpackDomainName(msg, off)
1724	if err != nil {
1725		return off, err
1726	}
1727	return off, nil
1728}
1729
1730func (rr *MD) unpack(msg []byte, off int) (off1 int, err error) {
1731	rdStart := off
1732	_ = rdStart
1733
1734	rr.Md, off, err = UnpackDomainName(msg, off)
1735	if err != nil {
1736		return off, err
1737	}
1738	return off, nil
1739}
1740
1741func (rr *MF) unpack(msg []byte, off int) (off1 int, err error) {
1742	rdStart := off
1743	_ = rdStart
1744
1745	rr.Mf, off, err = UnpackDomainName(msg, off)
1746	if err != nil {
1747		return off, err
1748	}
1749	return off, nil
1750}
1751
1752func (rr *MG) unpack(msg []byte, off int) (off1 int, err error) {
1753	rdStart := off
1754	_ = rdStart
1755
1756	rr.Mg, off, err = UnpackDomainName(msg, off)
1757	if err != nil {
1758		return off, err
1759	}
1760	return off, nil
1761}
1762
1763func (rr *MINFO) unpack(msg []byte, off int) (off1 int, err error) {
1764	rdStart := off
1765	_ = rdStart
1766
1767	rr.Rmail, off, err = UnpackDomainName(msg, off)
1768	if err != nil {
1769		return off, err
1770	}
1771	if off == len(msg) {
1772		return off, nil
1773	}
1774	rr.Email, off, err = UnpackDomainName(msg, off)
1775	if err != nil {
1776		return off, err
1777	}
1778	return off, nil
1779}
1780
1781func (rr *MR) unpack(msg []byte, off int) (off1 int, err error) {
1782	rdStart := off
1783	_ = rdStart
1784
1785	rr.Mr, off, err = UnpackDomainName(msg, off)
1786	if err != nil {
1787		return off, err
1788	}
1789	return off, nil
1790}
1791
1792func (rr *MX) unpack(msg []byte, off int) (off1 int, err error) {
1793	rdStart := off
1794	_ = rdStart
1795
1796	rr.Preference, off, err = unpackUint16(msg, off)
1797	if err != nil {
1798		return off, err
1799	}
1800	if off == len(msg) {
1801		return off, nil
1802	}
1803	rr.Mx, off, err = UnpackDomainName(msg, off)
1804	if err != nil {
1805		return off, err
1806	}
1807	return off, nil
1808}
1809
1810func (rr *NAPTR) unpack(msg []byte, off int) (off1 int, err error) {
1811	rdStart := off
1812	_ = rdStart
1813
1814	rr.Order, off, err = unpackUint16(msg, off)
1815	if err != nil {
1816		return off, err
1817	}
1818	if off == len(msg) {
1819		return off, nil
1820	}
1821	rr.Preference, off, err = unpackUint16(msg, off)
1822	if err != nil {
1823		return off, err
1824	}
1825	if off == len(msg) {
1826		return off, nil
1827	}
1828	rr.Flags, off, err = unpackString(msg, off)
1829	if err != nil {
1830		return off, err
1831	}
1832	if off == len(msg) {
1833		return off, nil
1834	}
1835	rr.Service, off, err = unpackString(msg, off)
1836	if err != nil {
1837		return off, err
1838	}
1839	if off == len(msg) {
1840		return off, nil
1841	}
1842	rr.Regexp, off, err = unpackString(msg, off)
1843	if err != nil {
1844		return off, err
1845	}
1846	if off == len(msg) {
1847		return off, nil
1848	}
1849	rr.Replacement, off, err = UnpackDomainName(msg, off)
1850	if err != nil {
1851		return off, err
1852	}
1853	return off, nil
1854}
1855
1856func (rr *NID) unpack(msg []byte, off int) (off1 int, err error) {
1857	rdStart := off
1858	_ = rdStart
1859
1860	rr.Preference, off, err = unpackUint16(msg, off)
1861	if err != nil {
1862		return off, err
1863	}
1864	if off == len(msg) {
1865		return off, nil
1866	}
1867	rr.NodeID, off, err = unpackUint64(msg, off)
1868	if err != nil {
1869		return off, err
1870	}
1871	return off, nil
1872}
1873
1874func (rr *NIMLOC) unpack(msg []byte, off int) (off1 int, err error) {
1875	rdStart := off
1876	_ = rdStart
1877
1878	rr.Locator, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
1879	if err != nil {
1880		return off, err
1881	}
1882	return off, nil
1883}
1884
1885func (rr *NINFO) unpack(msg []byte, off int) (off1 int, err error) {
1886	rdStart := off
1887	_ = rdStart
1888
1889	rr.ZSData, off, err = unpackStringTxt(msg, off)
1890	if err != nil {
1891		return off, err
1892	}
1893	return off, nil
1894}
1895
1896func (rr *NS) unpack(msg []byte, off int) (off1 int, err error) {
1897	rdStart := off
1898	_ = rdStart
1899
1900	rr.Ns, off, err = UnpackDomainName(msg, off)
1901	if err != nil {
1902		return off, err
1903	}
1904	return off, nil
1905}
1906
1907func (rr *NSAPPTR) unpack(msg []byte, off int) (off1 int, err error) {
1908	rdStart := off
1909	_ = rdStart
1910
1911	rr.Ptr, off, err = UnpackDomainName(msg, off)
1912	if err != nil {
1913		return off, err
1914	}
1915	return off, nil
1916}
1917
1918func (rr *NSEC) unpack(msg []byte, off int) (off1 int, err error) {
1919	rdStart := off
1920	_ = rdStart
1921
1922	rr.NextDomain, off, err = UnpackDomainName(msg, off)
1923	if err != nil {
1924		return off, err
1925	}
1926	if off == len(msg) {
1927		return off, nil
1928	}
1929	rr.TypeBitMap, off, err = unpackDataNsec(msg, off)
1930	if err != nil {
1931		return off, err
1932	}
1933	return off, nil
1934}
1935
1936func (rr *NSEC3) unpack(msg []byte, off int) (off1 int, err error) {
1937	rdStart := off
1938	_ = rdStart
1939
1940	rr.Hash, off, err = unpackUint8(msg, off)
1941	if err != nil {
1942		return off, err
1943	}
1944	if off == len(msg) {
1945		return off, nil
1946	}
1947	rr.Flags, off, err = unpackUint8(msg, off)
1948	if err != nil {
1949		return off, err
1950	}
1951	if off == len(msg) {
1952		return off, nil
1953	}
1954	rr.Iterations, off, err = unpackUint16(msg, off)
1955	if err != nil {
1956		return off, err
1957	}
1958	if off == len(msg) {
1959		return off, nil
1960	}
1961	rr.SaltLength, off, err = unpackUint8(msg, off)
1962	if err != nil {
1963		return off, err
1964	}
1965	if off == len(msg) {
1966		return off, nil
1967	}
1968	rr.Salt, off, err = unpackStringHex(msg, off, off+int(rr.SaltLength))
1969	if err != nil {
1970		return off, err
1971	}
1972	rr.HashLength, off, err = unpackUint8(msg, off)
1973	if err != nil {
1974		return off, err
1975	}
1976	if off == len(msg) {
1977		return off, nil
1978	}
1979	rr.NextDomain, off, err = unpackStringBase32(msg, off, off+int(rr.HashLength))
1980	if err != nil {
1981		return off, err
1982	}
1983	rr.TypeBitMap, off, err = unpackDataNsec(msg, off)
1984	if err != nil {
1985		return off, err
1986	}
1987	return off, nil
1988}
1989
1990func (rr *NSEC3PARAM) unpack(msg []byte, off int) (off1 int, err error) {
1991	rdStart := off
1992	_ = rdStart
1993
1994	rr.Hash, off, err = unpackUint8(msg, off)
1995	if err != nil {
1996		return off, err
1997	}
1998	if off == len(msg) {
1999		return off, nil
2000	}
2001	rr.Flags, off, err = unpackUint8(msg, off)
2002	if err != nil {
2003		return off, err
2004	}
2005	if off == len(msg) {
2006		return off, nil
2007	}
2008	rr.Iterations, off, err = unpackUint16(msg, off)
2009	if err != nil {
2010		return off, err
2011	}
2012	if off == len(msg) {
2013		return off, nil
2014	}
2015	rr.SaltLength, off, err = unpackUint8(msg, off)
2016	if err != nil {
2017		return off, err
2018	}
2019	if off == len(msg) {
2020		return off, nil
2021	}
2022	rr.Salt, off, err = unpackStringHex(msg, off, off+int(rr.SaltLength))
2023	if err != nil {
2024		return off, err
2025	}
2026	return off, nil
2027}
2028
2029func (rr *NULL) unpack(msg []byte, off int) (off1 int, err error) {
2030	rdStart := off
2031	_ = rdStart
2032
2033	rr.Data, off, err = unpackStringAny(msg, off, rdStart+int(rr.Hdr.Rdlength))
2034	if err != nil {
2035		return off, err
2036	}
2037	return off, nil
2038}
2039
2040func (rr *OPENPGPKEY) unpack(msg []byte, off int) (off1 int, err error) {
2041	rdStart := off
2042	_ = rdStart
2043
2044	rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
2045	if err != nil {
2046		return off, err
2047	}
2048	return off, nil
2049}
2050
2051func (rr *OPT) unpack(msg []byte, off int) (off1 int, err error) {
2052	rdStart := off
2053	_ = rdStart
2054
2055	rr.Option, off, err = unpackDataOpt(msg, off)
2056	if err != nil {
2057		return off, err
2058	}
2059	return off, nil
2060}
2061
2062func (rr *PTR) unpack(msg []byte, off int) (off1 int, err error) {
2063	rdStart := off
2064	_ = rdStart
2065
2066	rr.Ptr, off, err = UnpackDomainName(msg, off)
2067	if err != nil {
2068		return off, err
2069	}
2070	return off, nil
2071}
2072
2073func (rr *PX) unpack(msg []byte, off int) (off1 int, err error) {
2074	rdStart := off
2075	_ = rdStart
2076
2077	rr.Preference, off, err = unpackUint16(msg, off)
2078	if err != nil {
2079		return off, err
2080	}
2081	if off == len(msg) {
2082		return off, nil
2083	}
2084	rr.Map822, off, err = UnpackDomainName(msg, off)
2085	if err != nil {
2086		return off, err
2087	}
2088	if off == len(msg) {
2089		return off, nil
2090	}
2091	rr.Mapx400, off, err = UnpackDomainName(msg, off)
2092	if err != nil {
2093		return off, err
2094	}
2095	return off, nil
2096}
2097
2098func (rr *RFC3597) unpack(msg []byte, off int) (off1 int, err error) {
2099	rdStart := off
2100	_ = rdStart
2101
2102	rr.Rdata, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
2103	if err != nil {
2104		return off, err
2105	}
2106	return off, nil
2107}
2108
2109func (rr *RKEY) unpack(msg []byte, off int) (off1 int, err error) {
2110	rdStart := off
2111	_ = rdStart
2112
2113	rr.Flags, off, err = unpackUint16(msg, off)
2114	if err != nil {
2115		return off, err
2116	}
2117	if off == len(msg) {
2118		return off, nil
2119	}
2120	rr.Protocol, off, err = unpackUint8(msg, off)
2121	if err != nil {
2122		return off, err
2123	}
2124	if off == len(msg) {
2125		return off, nil
2126	}
2127	rr.Algorithm, off, err = unpackUint8(msg, off)
2128	if err != nil {
2129		return off, err
2130	}
2131	if off == len(msg) {
2132		return off, nil
2133	}
2134	rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
2135	if err != nil {
2136		return off, err
2137	}
2138	return off, nil
2139}
2140
2141func (rr *RP) unpack(msg []byte, off int) (off1 int, err error) {
2142	rdStart := off
2143	_ = rdStart
2144
2145	rr.Mbox, off, err = UnpackDomainName(msg, off)
2146	if err != nil {
2147		return off, err
2148	}
2149	if off == len(msg) {
2150		return off, nil
2151	}
2152	rr.Txt, off, err = UnpackDomainName(msg, off)
2153	if err != nil {
2154		return off, err
2155	}
2156	return off, nil
2157}
2158
2159func (rr *RRSIG) unpack(msg []byte, off int) (off1 int, err error) {
2160	rdStart := off
2161	_ = rdStart
2162
2163	rr.TypeCovered, off, err = unpackUint16(msg, off)
2164	if err != nil {
2165		return off, err
2166	}
2167	if off == len(msg) {
2168		return off, nil
2169	}
2170	rr.Algorithm, off, err = unpackUint8(msg, off)
2171	if err != nil {
2172		return off, err
2173	}
2174	if off == len(msg) {
2175		return off, nil
2176	}
2177	rr.Labels, off, err = unpackUint8(msg, off)
2178	if err != nil {
2179		return off, err
2180	}
2181	if off == len(msg) {
2182		return off, nil
2183	}
2184	rr.OrigTtl, off, err = unpackUint32(msg, off)
2185	if err != nil {
2186		return off, err
2187	}
2188	if off == len(msg) {
2189		return off, nil
2190	}
2191	rr.Expiration, off, err = unpackUint32(msg, off)
2192	if err != nil {
2193		return off, err
2194	}
2195	if off == len(msg) {
2196		return off, nil
2197	}
2198	rr.Inception, off, err = unpackUint32(msg, off)
2199	if err != nil {
2200		return off, err
2201	}
2202	if off == len(msg) {
2203		return off, nil
2204	}
2205	rr.KeyTag, off, err = unpackUint16(msg, off)
2206	if err != nil {
2207		return off, err
2208	}
2209	if off == len(msg) {
2210		return off, nil
2211	}
2212	rr.SignerName, off, err = UnpackDomainName(msg, off)
2213	if err != nil {
2214		return off, err
2215	}
2216	if off == len(msg) {
2217		return off, nil
2218	}
2219	rr.Signature, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
2220	if err != nil {
2221		return off, err
2222	}
2223	return off, nil
2224}
2225
2226func (rr *RT) unpack(msg []byte, off int) (off1 int, err error) {
2227	rdStart := off
2228	_ = rdStart
2229
2230	rr.Preference, off, err = unpackUint16(msg, off)
2231	if err != nil {
2232		return off, err
2233	}
2234	if off == len(msg) {
2235		return off, nil
2236	}
2237	rr.Host, off, err = UnpackDomainName(msg, off)
2238	if err != nil {
2239		return off, err
2240	}
2241	return off, nil
2242}
2243
2244func (rr *SIG) unpack(msg []byte, off int) (off1 int, err error) {
2245	rdStart := off
2246	_ = rdStart
2247
2248	rr.TypeCovered, off, err = unpackUint16(msg, off)
2249	if err != nil {
2250		return off, err
2251	}
2252	if off == len(msg) {
2253		return off, nil
2254	}
2255	rr.Algorithm, off, err = unpackUint8(msg, off)
2256	if err != nil {
2257		return off, err
2258	}
2259	if off == len(msg) {
2260		return off, nil
2261	}
2262	rr.Labels, off, err = unpackUint8(msg, off)
2263	if err != nil {
2264		return off, err
2265	}
2266	if off == len(msg) {
2267		return off, nil
2268	}
2269	rr.OrigTtl, off, err = unpackUint32(msg, off)
2270	if err != nil {
2271		return off, err
2272	}
2273	if off == len(msg) {
2274		return off, nil
2275	}
2276	rr.Expiration, off, err = unpackUint32(msg, off)
2277	if err != nil {
2278		return off, err
2279	}
2280	if off == len(msg) {
2281		return off, nil
2282	}
2283	rr.Inception, off, err = unpackUint32(msg, off)
2284	if err != nil {
2285		return off, err
2286	}
2287	if off == len(msg) {
2288		return off, nil
2289	}
2290	rr.KeyTag, off, err = unpackUint16(msg, off)
2291	if err != nil {
2292		return off, err
2293	}
2294	if off == len(msg) {
2295		return off, nil
2296	}
2297	rr.SignerName, off, err = UnpackDomainName(msg, off)
2298	if err != nil {
2299		return off, err
2300	}
2301	if off == len(msg) {
2302		return off, nil
2303	}
2304	rr.Signature, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
2305	if err != nil {
2306		return off, err
2307	}
2308	return off, nil
2309}
2310
2311func (rr *SMIMEA) unpack(msg []byte, off int) (off1 int, err error) {
2312	rdStart := off
2313	_ = rdStart
2314
2315	rr.Usage, off, err = unpackUint8(msg, off)
2316	if err != nil {
2317		return off, err
2318	}
2319	if off == len(msg) {
2320		return off, nil
2321	}
2322	rr.Selector, off, err = unpackUint8(msg, off)
2323	if err != nil {
2324		return off, err
2325	}
2326	if off == len(msg) {
2327		return off, nil
2328	}
2329	rr.MatchingType, off, err = unpackUint8(msg, off)
2330	if err != nil {
2331		return off, err
2332	}
2333	if off == len(msg) {
2334		return off, nil
2335	}
2336	rr.Certificate, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
2337	if err != nil {
2338		return off, err
2339	}
2340	return off, nil
2341}
2342
2343func (rr *SOA) unpack(msg []byte, off int) (off1 int, err error) {
2344	rdStart := off
2345	_ = rdStart
2346
2347	rr.Ns, off, err = UnpackDomainName(msg, off)
2348	if err != nil {
2349		return off, err
2350	}
2351	if off == len(msg) {
2352		return off, nil
2353	}
2354	rr.Mbox, off, err = UnpackDomainName(msg, off)
2355	if err != nil {
2356		return off, err
2357	}
2358	if off == len(msg) {
2359		return off, nil
2360	}
2361	rr.Serial, off, err = unpackUint32(msg, off)
2362	if err != nil {
2363		return off, err
2364	}
2365	if off == len(msg) {
2366		return off, nil
2367	}
2368	rr.Refresh, off, err = unpackUint32(msg, off)
2369	if err != nil {
2370		return off, err
2371	}
2372	if off == len(msg) {
2373		return off, nil
2374	}
2375	rr.Retry, off, err = unpackUint32(msg, off)
2376	if err != nil {
2377		return off, err
2378	}
2379	if off == len(msg) {
2380		return off, nil
2381	}
2382	rr.Expire, off, err = unpackUint32(msg, off)
2383	if err != nil {
2384		return off, err
2385	}
2386	if off == len(msg) {
2387		return off, nil
2388	}
2389	rr.Minttl, off, err = unpackUint32(msg, off)
2390	if err != nil {
2391		return off, err
2392	}
2393	return off, nil
2394}
2395
2396func (rr *SPF) unpack(msg []byte, off int) (off1 int, err error) {
2397	rdStart := off
2398	_ = rdStart
2399
2400	rr.Txt, off, err = unpackStringTxt(msg, off)
2401	if err != nil {
2402		return off, err
2403	}
2404	return off, nil
2405}
2406
2407func (rr *SRV) unpack(msg []byte, off int) (off1 int, err error) {
2408	rdStart := off
2409	_ = rdStart
2410
2411	rr.Priority, off, err = unpackUint16(msg, off)
2412	if err != nil {
2413		return off, err
2414	}
2415	if off == len(msg) {
2416		return off, nil
2417	}
2418	rr.Weight, off, err = unpackUint16(msg, off)
2419	if err != nil {
2420		return off, err
2421	}
2422	if off == len(msg) {
2423		return off, nil
2424	}
2425	rr.Port, off, err = unpackUint16(msg, off)
2426	if err != nil {
2427		return off, err
2428	}
2429	if off == len(msg) {
2430		return off, nil
2431	}
2432	rr.Target, off, err = UnpackDomainName(msg, off)
2433	if err != nil {
2434		return off, err
2435	}
2436	return off, nil
2437}
2438
2439func (rr *SSHFP) unpack(msg []byte, off int) (off1 int, err error) {
2440	rdStart := off
2441	_ = rdStart
2442
2443	rr.Algorithm, off, err = unpackUint8(msg, off)
2444	if err != nil {
2445		return off, err
2446	}
2447	if off == len(msg) {
2448		return off, nil
2449	}
2450	rr.Type, off, err = unpackUint8(msg, off)
2451	if err != nil {
2452		return off, err
2453	}
2454	if off == len(msg) {
2455		return off, nil
2456	}
2457	rr.FingerPrint, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
2458	if err != nil {
2459		return off, err
2460	}
2461	return off, nil
2462}
2463
2464func (rr *TA) unpack(msg []byte, off int) (off1 int, err error) {
2465	rdStart := off
2466	_ = rdStart
2467
2468	rr.KeyTag, off, err = unpackUint16(msg, off)
2469	if err != nil {
2470		return off, err
2471	}
2472	if off == len(msg) {
2473		return off, nil
2474	}
2475	rr.Algorithm, off, err = unpackUint8(msg, off)
2476	if err != nil {
2477		return off, err
2478	}
2479	if off == len(msg) {
2480		return off, nil
2481	}
2482	rr.DigestType, off, err = unpackUint8(msg, off)
2483	if err != nil {
2484		return off, err
2485	}
2486	if off == len(msg) {
2487		return off, nil
2488	}
2489	rr.Digest, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
2490	if err != nil {
2491		return off, err
2492	}
2493	return off, nil
2494}
2495
2496func (rr *TALINK) unpack(msg []byte, off int) (off1 int, err error) {
2497	rdStart := off
2498	_ = rdStart
2499
2500	rr.PreviousName, off, err = UnpackDomainName(msg, off)
2501	if err != nil {
2502		return off, err
2503	}
2504	if off == len(msg) {
2505		return off, nil
2506	}
2507	rr.NextName, off, err = UnpackDomainName(msg, off)
2508	if err != nil {
2509		return off, err
2510	}
2511	return off, nil
2512}
2513
2514func (rr *TKEY) unpack(msg []byte, off int) (off1 int, err error) {
2515	rdStart := off
2516	_ = rdStart
2517
2518	rr.Algorithm, off, err = UnpackDomainName(msg, off)
2519	if err != nil {
2520		return off, err
2521	}
2522	if off == len(msg) {
2523		return off, nil
2524	}
2525	rr.Inception, off, err = unpackUint32(msg, off)
2526	if err != nil {
2527		return off, err
2528	}
2529	if off == len(msg) {
2530		return off, nil
2531	}
2532	rr.Expiration, off, err = unpackUint32(msg, off)
2533	if err != nil {
2534		return off, err
2535	}
2536	if off == len(msg) {
2537		return off, nil
2538	}
2539	rr.Mode, off, err = unpackUint16(msg, off)
2540	if err != nil {
2541		return off, err
2542	}
2543	if off == len(msg) {
2544		return off, nil
2545	}
2546	rr.Error, off, err = unpackUint16(msg, off)
2547	if err != nil {
2548		return off, err
2549	}
2550	if off == len(msg) {
2551		return off, nil
2552	}
2553	rr.KeySize, off, err = unpackUint16(msg, off)
2554	if err != nil {
2555		return off, err
2556	}
2557	if off == len(msg) {
2558		return off, nil
2559	}
2560	rr.Key, off, err = unpackStringHex(msg, off, off+int(rr.KeySize))
2561	if err != nil {
2562		return off, err
2563	}
2564	rr.OtherLen, off, err = unpackUint16(msg, off)
2565	if err != nil {
2566		return off, err
2567	}
2568	if off == len(msg) {
2569		return off, nil
2570	}
2571	rr.OtherData, off, err = unpackStringHex(msg, off, off+int(rr.OtherLen))
2572	if err != nil {
2573		return off, err
2574	}
2575	return off, nil
2576}
2577
2578func (rr *TLSA) unpack(msg []byte, off int) (off1 int, err error) {
2579	rdStart := off
2580	_ = rdStart
2581
2582	rr.Usage, off, err = unpackUint8(msg, off)
2583	if err != nil {
2584		return off, err
2585	}
2586	if off == len(msg) {
2587		return off, nil
2588	}
2589	rr.Selector, off, err = unpackUint8(msg, off)
2590	if err != nil {
2591		return off, err
2592	}
2593	if off == len(msg) {
2594		return off, nil
2595	}
2596	rr.MatchingType, off, err = unpackUint8(msg, off)
2597	if err != nil {
2598		return off, err
2599	}
2600	if off == len(msg) {
2601		return off, nil
2602	}
2603	rr.Certificate, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
2604	if err != nil {
2605		return off, err
2606	}
2607	return off, nil
2608}
2609
2610func (rr *TSIG) unpack(msg []byte, off int) (off1 int, err error) {
2611	rdStart := off
2612	_ = rdStart
2613
2614	rr.Algorithm, off, err = UnpackDomainName(msg, off)
2615	if err != nil {
2616		return off, err
2617	}
2618	if off == len(msg) {
2619		return off, nil
2620	}
2621	rr.TimeSigned, off, err = unpackUint48(msg, off)
2622	if err != nil {
2623		return off, err
2624	}
2625	if off == len(msg) {
2626		return off, nil
2627	}
2628	rr.Fudge, off, err = unpackUint16(msg, off)
2629	if err != nil {
2630		return off, err
2631	}
2632	if off == len(msg) {
2633		return off, nil
2634	}
2635	rr.MACSize, off, err = unpackUint16(msg, off)
2636	if err != nil {
2637		return off, err
2638	}
2639	if off == len(msg) {
2640		return off, nil
2641	}
2642	rr.MAC, off, err = unpackStringHex(msg, off, off+int(rr.MACSize))
2643	if err != nil {
2644		return off, err
2645	}
2646	rr.OrigId, off, err = unpackUint16(msg, off)
2647	if err != nil {
2648		return off, err
2649	}
2650	if off == len(msg) {
2651		return off, nil
2652	}
2653	rr.Error, off, err = unpackUint16(msg, off)
2654	if err != nil {
2655		return off, err
2656	}
2657	if off == len(msg) {
2658		return off, nil
2659	}
2660	rr.OtherLen, off, err = unpackUint16(msg, off)
2661	if err != nil {
2662		return off, err
2663	}
2664	if off == len(msg) {
2665		return off, nil
2666	}
2667	rr.OtherData, off, err = unpackStringHex(msg, off, off+int(rr.OtherLen))
2668	if err != nil {
2669		return off, err
2670	}
2671	return off, nil
2672}
2673
2674func (rr *TXT) unpack(msg []byte, off int) (off1 int, err error) {
2675	rdStart := off
2676	_ = rdStart
2677
2678	rr.Txt, off, err = unpackStringTxt(msg, off)
2679	if err != nil {
2680		return off, err
2681	}
2682	return off, nil
2683}
2684
2685func (rr *UID) unpack(msg []byte, off int) (off1 int, err error) {
2686	rdStart := off
2687	_ = rdStart
2688
2689	rr.Uid, off, err = unpackUint32(msg, off)
2690	if err != nil {
2691		return off, err
2692	}
2693	return off, nil
2694}
2695
2696func (rr *UINFO) unpack(msg []byte, off int) (off1 int, err error) {
2697	rdStart := off
2698	_ = rdStart
2699
2700	rr.Uinfo, off, err = unpackString(msg, off)
2701	if err != nil {
2702		return off, err
2703	}
2704	return off, nil
2705}
2706
2707func (rr *URI) unpack(msg []byte, off int) (off1 int, err error) {
2708	rdStart := off
2709	_ = rdStart
2710
2711	rr.Priority, off, err = unpackUint16(msg, off)
2712	if err != nil {
2713		return off, err
2714	}
2715	if off == len(msg) {
2716		return off, nil
2717	}
2718	rr.Weight, off, err = unpackUint16(msg, off)
2719	if err != nil {
2720		return off, err
2721	}
2722	if off == len(msg) {
2723		return off, nil
2724	}
2725	rr.Target, off, err = unpackStringOctet(msg, off)
2726	if err != nil {
2727		return off, err
2728	}
2729	return off, nil
2730}
2731
2732func (rr *X25) unpack(msg []byte, off int) (off1 int, err error) {
2733	rdStart := off
2734	_ = rdStart
2735
2736	rr.PSDNAddress, off, err = unpackString(msg, off)
2737	if err != nil {
2738		return off, err
2739	}
2740	return off, nil
2741}
2742