1// *** DO NOT MODIFY ***
2// AUTOGENERATED BY go generate from msg_generate.go
3
4package dns
5
6// pack*() functions
7
8func (rr *A) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
9	off, err := rr.Hdr.pack(msg, off, compression, compress)
10	if err != nil {
11		return off, err
12	}
13	headerEnd := off
14	off, err = packDataA(rr.A, msg, off)
15	if err != nil {
16		return off, err
17	}
18	rr.Header().Rdlength = uint16(off - headerEnd)
19	return off, nil
20}
21
22func (rr *AAAA) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
23	off, err := rr.Hdr.pack(msg, off, compression, compress)
24	if err != nil {
25		return off, err
26	}
27	headerEnd := off
28	off, err = packDataAAAA(rr.AAAA, msg, off)
29	if err != nil {
30		return off, err
31	}
32	rr.Header().Rdlength = uint16(off - headerEnd)
33	return off, nil
34}
35
36func (rr *AFSDB) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
37	off, err := rr.Hdr.pack(msg, off, compression, compress)
38	if err != nil {
39		return off, err
40	}
41	headerEnd := off
42	off, err = packUint16(rr.Subtype, msg, off)
43	if err != nil {
44		return off, err
45	}
46	off, err = PackDomainName(rr.Hostname, msg, off, compression, compress)
47	if err != nil {
48		return off, err
49	}
50	rr.Header().Rdlength = uint16(off - headerEnd)
51	return off, nil
52}
53
54func (rr *ANY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
55	off, err := rr.Hdr.pack(msg, off, compression, compress)
56	if err != nil {
57		return off, err
58	}
59	headerEnd := off
60	rr.Header().Rdlength = uint16(off - headerEnd)
61	return off, nil
62}
63
64func (rr *CAA) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
65	off, err := rr.Hdr.pack(msg, off, compression, compress)
66	if err != nil {
67		return off, err
68	}
69	headerEnd := off
70	off, err = packUint8(rr.Flag, msg, off)
71	if err != nil {
72		return off, err
73	}
74	off, err = packString(rr.Tag, msg, off)
75	if err != nil {
76		return off, err
77	}
78	off, err = packStringOctet(rr.Value, msg, off)
79	if err != nil {
80		return off, err
81	}
82	rr.Header().Rdlength = uint16(off - headerEnd)
83	return off, nil
84}
85
86func (rr *CDNSKEY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
87	off, err := rr.Hdr.pack(msg, off, compression, compress)
88	if err != nil {
89		return off, err
90	}
91	headerEnd := off
92	off, err = packUint16(rr.Flags, msg, off)
93	if err != nil {
94		return off, err
95	}
96	off, err = packUint8(rr.Protocol, msg, off)
97	if err != nil {
98		return off, err
99	}
100	off, err = packUint8(rr.Algorithm, msg, off)
101	if err != nil {
102		return off, err
103	}
104	off, err = packStringBase64(rr.PublicKey, msg, off)
105	if err != nil {
106		return off, err
107	}
108	rr.Header().Rdlength = uint16(off - headerEnd)
109	return off, nil
110}
111
112func (rr *CDS) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
113	off, err := rr.Hdr.pack(msg, off, compression, compress)
114	if err != nil {
115		return off, err
116	}
117	headerEnd := off
118	off, err = packUint16(rr.KeyTag, msg, off)
119	if err != nil {
120		return off, err
121	}
122	off, err = packUint8(rr.Algorithm, msg, off)
123	if err != nil {
124		return off, err
125	}
126	off, err = packUint8(rr.DigestType, msg, off)
127	if err != nil {
128		return off, err
129	}
130	off, err = packStringHex(rr.Digest, msg, off)
131	if err != nil {
132		return off, err
133	}
134	rr.Header().Rdlength = uint16(off - headerEnd)
135	return off, nil
136}
137
138func (rr *CERT) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
139	off, err := rr.Hdr.pack(msg, off, compression, compress)
140	if err != nil {
141		return off, err
142	}
143	headerEnd := off
144	off, err = packUint16(rr.Type, msg, off)
145	if err != nil {
146		return off, err
147	}
148	off, err = packUint16(rr.KeyTag, msg, off)
149	if err != nil {
150		return off, err
151	}
152	off, err = packUint8(rr.Algorithm, msg, off)
153	if err != nil {
154		return off, err
155	}
156	off, err = packStringBase64(rr.Certificate, msg, off)
157	if err != nil {
158		return off, err
159	}
160	rr.Header().Rdlength = uint16(off - headerEnd)
161	return off, nil
162}
163
164func (rr *CNAME) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
165	off, err := rr.Hdr.pack(msg, off, compression, compress)
166	if err != nil {
167		return off, err
168	}
169	headerEnd := off
170	off, err = PackDomainName(rr.Target, msg, off, compression, compress)
171	if err != nil {
172		return off, err
173	}
174	rr.Header().Rdlength = uint16(off - headerEnd)
175	return off, nil
176}
177
178func (rr *DHCID) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
179	off, err := rr.Hdr.pack(msg, off, compression, compress)
180	if err != nil {
181		return off, err
182	}
183	headerEnd := off
184	off, err = packStringBase64(rr.Digest, msg, off)
185	if err != nil {
186		return off, err
187	}
188	rr.Header().Rdlength = uint16(off - headerEnd)
189	return off, nil
190}
191
192func (rr *DLV) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
193	off, err := rr.Hdr.pack(msg, off, compression, compress)
194	if err != nil {
195		return off, err
196	}
197	headerEnd := off
198	off, err = packUint16(rr.KeyTag, msg, off)
199	if err != nil {
200		return off, err
201	}
202	off, err = packUint8(rr.Algorithm, msg, off)
203	if err != nil {
204		return off, err
205	}
206	off, err = packUint8(rr.DigestType, msg, off)
207	if err != nil {
208		return off, err
209	}
210	off, err = packStringHex(rr.Digest, msg, off)
211	if err != nil {
212		return off, err
213	}
214	rr.Header().Rdlength = uint16(off - headerEnd)
215	return off, nil
216}
217
218func (rr *DNAME) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
219	off, err := rr.Hdr.pack(msg, off, compression, compress)
220	if err != nil {
221		return off, err
222	}
223	headerEnd := off
224	off, err = PackDomainName(rr.Target, msg, off, compression, compress)
225	if err != nil {
226		return off, err
227	}
228	rr.Header().Rdlength = uint16(off - headerEnd)
229	return off, nil
230}
231
232func (rr *DNSKEY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
233	off, err := rr.Hdr.pack(msg, off, compression, compress)
234	if err != nil {
235		return off, err
236	}
237	headerEnd := off
238	off, err = packUint16(rr.Flags, msg, off)
239	if err != nil {
240		return off, err
241	}
242	off, err = packUint8(rr.Protocol, msg, off)
243	if err != nil {
244		return off, err
245	}
246	off, err = packUint8(rr.Algorithm, msg, off)
247	if err != nil {
248		return off, err
249	}
250	off, err = packStringBase64(rr.PublicKey, msg, off)
251	if err != nil {
252		return off, err
253	}
254	rr.Header().Rdlength = uint16(off - headerEnd)
255	return off, nil
256}
257
258func (rr *DS) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
259	off, err := rr.Hdr.pack(msg, off, compression, compress)
260	if err != nil {
261		return off, err
262	}
263	headerEnd := off
264	off, err = packUint16(rr.KeyTag, msg, off)
265	if err != nil {
266		return off, err
267	}
268	off, err = packUint8(rr.Algorithm, msg, off)
269	if err != nil {
270		return off, err
271	}
272	off, err = packUint8(rr.DigestType, msg, off)
273	if err != nil {
274		return off, err
275	}
276	off, err = packStringHex(rr.Digest, msg, off)
277	if err != nil {
278		return off, err
279	}
280	rr.Header().Rdlength = uint16(off - headerEnd)
281	return off, nil
282}
283
284func (rr *EID) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
285	off, err := rr.Hdr.pack(msg, off, compression, compress)
286	if err != nil {
287		return off, err
288	}
289	headerEnd := off
290	off, err = packStringHex(rr.Endpoint, msg, off)
291	if err != nil {
292		return off, err
293	}
294	rr.Header().Rdlength = uint16(off - headerEnd)
295	return off, nil
296}
297
298func (rr *EUI48) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
299	off, err := rr.Hdr.pack(msg, off, compression, compress)
300	if err != nil {
301		return off, err
302	}
303	headerEnd := off
304	off, err = packUint48(rr.Address, msg, off)
305	if err != nil {
306		return off, err
307	}
308	rr.Header().Rdlength = uint16(off - headerEnd)
309	return off, nil
310}
311
312func (rr *EUI64) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
313	off, err := rr.Hdr.pack(msg, off, compression, compress)
314	if err != nil {
315		return off, err
316	}
317	headerEnd := off
318	off, err = packUint64(rr.Address, msg, off)
319	if err != nil {
320		return off, err
321	}
322	rr.Header().Rdlength = uint16(off - headerEnd)
323	return off, nil
324}
325
326func (rr *GID) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
327	off, err := rr.Hdr.pack(msg, off, compression, compress)
328	if err != nil {
329		return off, err
330	}
331	headerEnd := off
332	off, err = packUint32(rr.Gid, msg, off)
333	if err != nil {
334		return off, err
335	}
336	rr.Header().Rdlength = uint16(off - headerEnd)
337	return off, nil
338}
339
340func (rr *GPOS) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
341	off, err := rr.Hdr.pack(msg, off, compression, compress)
342	if err != nil {
343		return off, err
344	}
345	headerEnd := off
346	off, err = packString(rr.Longitude, msg, off)
347	if err != nil {
348		return off, err
349	}
350	off, err = packString(rr.Latitude, msg, off)
351	if err != nil {
352		return off, err
353	}
354	off, err = packString(rr.Altitude, msg, off)
355	if err != nil {
356		return off, err
357	}
358	rr.Header().Rdlength = uint16(off - headerEnd)
359	return off, nil
360}
361
362func (rr *HINFO) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
363	off, err := rr.Hdr.pack(msg, off, compression, compress)
364	if err != nil {
365		return off, err
366	}
367	headerEnd := off
368	off, err = packString(rr.Cpu, msg, off)
369	if err != nil {
370		return off, err
371	}
372	off, err = packString(rr.Os, msg, off)
373	if err != nil {
374		return off, err
375	}
376	rr.Header().Rdlength = uint16(off - headerEnd)
377	return off, nil
378}
379
380func (rr *HIP) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
381	off, err := rr.Hdr.pack(msg, off, compression, compress)
382	if err != nil {
383		return off, err
384	}
385	headerEnd := off
386	off, err = packUint8(rr.HitLength, msg, off)
387	if err != nil {
388		return off, err
389	}
390	off, err = packUint8(rr.PublicKeyAlgorithm, msg, off)
391	if err != nil {
392		return off, err
393	}
394	off, err = packUint16(rr.PublicKeyLength, msg, off)
395	if err != nil {
396		return off, err
397	}
398	off, err = packStringHex(rr.Hit, msg, off)
399	if err != nil {
400		return off, err
401	}
402	off, err = packStringBase64(rr.PublicKey, msg, off)
403	if err != nil {
404		return off, err
405	}
406	off, err = packDataDomainNames(rr.RendezvousServers, msg, off, compression, compress)
407	if err != nil {
408		return off, err
409	}
410	rr.Header().Rdlength = uint16(off - headerEnd)
411	return off, nil
412}
413
414func (rr *KEY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
415	off, err := rr.Hdr.pack(msg, off, compression, compress)
416	if err != nil {
417		return off, err
418	}
419	headerEnd := off
420	off, err = packUint16(rr.Flags, msg, off)
421	if err != nil {
422		return off, err
423	}
424	off, err = packUint8(rr.Protocol, msg, off)
425	if err != nil {
426		return off, err
427	}
428	off, err = packUint8(rr.Algorithm, msg, off)
429	if err != nil {
430		return off, err
431	}
432	off, err = packStringBase64(rr.PublicKey, msg, off)
433	if err != nil {
434		return off, err
435	}
436	rr.Header().Rdlength = uint16(off - headerEnd)
437	return off, nil
438}
439
440func (rr *KX) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
441	off, err := rr.Hdr.pack(msg, off, compression, compress)
442	if err != nil {
443		return off, err
444	}
445	headerEnd := off
446	off, err = packUint16(rr.Preference, msg, off)
447	if err != nil {
448		return off, err
449	}
450	off, err = PackDomainName(rr.Exchanger, msg, off, compression, compress)
451	if err != nil {
452		return off, err
453	}
454	rr.Header().Rdlength = uint16(off - headerEnd)
455	return off, nil
456}
457
458func (rr *L32) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
459	off, err := rr.Hdr.pack(msg, off, compression, compress)
460	if err != nil {
461		return off, err
462	}
463	headerEnd := off
464	off, err = packUint16(rr.Preference, msg, off)
465	if err != nil {
466		return off, err
467	}
468	off, err = packDataA(rr.Locator32, msg, off)
469	if err != nil {
470		return off, err
471	}
472	rr.Header().Rdlength = uint16(off - headerEnd)
473	return off, nil
474}
475
476func (rr *L64) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
477	off, err := rr.Hdr.pack(msg, off, compression, compress)
478	if err != nil {
479		return off, err
480	}
481	headerEnd := off
482	off, err = packUint16(rr.Preference, msg, off)
483	if err != nil {
484		return off, err
485	}
486	off, err = packUint64(rr.Locator64, msg, off)
487	if err != nil {
488		return off, err
489	}
490	rr.Header().Rdlength = uint16(off - headerEnd)
491	return off, nil
492}
493
494func (rr *LOC) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
495	off, err := rr.Hdr.pack(msg, off, compression, compress)
496	if err != nil {
497		return off, err
498	}
499	headerEnd := off
500	off, err = packUint8(rr.Version, msg, off)
501	if err != nil {
502		return off, err
503	}
504	off, err = packUint8(rr.Size, msg, off)
505	if err != nil {
506		return off, err
507	}
508	off, err = packUint8(rr.HorizPre, msg, off)
509	if err != nil {
510		return off, err
511	}
512	off, err = packUint8(rr.VertPre, msg, off)
513	if err != nil {
514		return off, err
515	}
516	off, err = packUint32(rr.Latitude, msg, off)
517	if err != nil {
518		return off, err
519	}
520	off, err = packUint32(rr.Longitude, msg, off)
521	if err != nil {
522		return off, err
523	}
524	off, err = packUint32(rr.Altitude, msg, off)
525	if err != nil {
526		return off, err
527	}
528	rr.Header().Rdlength = uint16(off - headerEnd)
529	return off, nil
530}
531
532func (rr *LP) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
533	off, err := rr.Hdr.pack(msg, off, compression, compress)
534	if err != nil {
535		return off, err
536	}
537	headerEnd := off
538	off, err = packUint16(rr.Preference, msg, off)
539	if err != nil {
540		return off, err
541	}
542	off, err = PackDomainName(rr.Fqdn, msg, off, compression, compress)
543	if err != nil {
544		return off, err
545	}
546	rr.Header().Rdlength = uint16(off - headerEnd)
547	return off, nil
548}
549
550func (rr *MB) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
551	off, err := rr.Hdr.pack(msg, off, compression, compress)
552	if err != nil {
553		return off, err
554	}
555	headerEnd := off
556	off, err = PackDomainName(rr.Mb, msg, off, compression, compress)
557	if err != nil {
558		return off, err
559	}
560	rr.Header().Rdlength = uint16(off - headerEnd)
561	return off, nil
562}
563
564func (rr *MD) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
565	off, err := rr.Hdr.pack(msg, off, compression, compress)
566	if err != nil {
567		return off, err
568	}
569	headerEnd := off
570	off, err = PackDomainName(rr.Md, msg, off, compression, compress)
571	if err != nil {
572		return off, err
573	}
574	rr.Header().Rdlength = uint16(off - headerEnd)
575	return off, nil
576}
577
578func (rr *MF) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
579	off, err := rr.Hdr.pack(msg, off, compression, compress)
580	if err != nil {
581		return off, err
582	}
583	headerEnd := off
584	off, err = PackDomainName(rr.Mf, msg, off, compression, compress)
585	if err != nil {
586		return off, err
587	}
588	rr.Header().Rdlength = uint16(off - headerEnd)
589	return off, nil
590}
591
592func (rr *MG) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
593	off, err := rr.Hdr.pack(msg, off, compression, compress)
594	if err != nil {
595		return off, err
596	}
597	headerEnd := off
598	off, err = PackDomainName(rr.Mg, msg, off, compression, compress)
599	if err != nil {
600		return off, err
601	}
602	rr.Header().Rdlength = uint16(off - headerEnd)
603	return off, nil
604}
605
606func (rr *MINFO) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
607	off, err := rr.Hdr.pack(msg, off, compression, compress)
608	if err != nil {
609		return off, err
610	}
611	headerEnd := off
612	off, err = PackDomainName(rr.Rmail, msg, off, compression, compress)
613	if err != nil {
614		return off, err
615	}
616	off, err = PackDomainName(rr.Email, msg, off, compression, compress)
617	if err != nil {
618		return off, err
619	}
620	rr.Header().Rdlength = uint16(off - headerEnd)
621	return off, nil
622}
623
624func (rr *MR) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
625	off, err := rr.Hdr.pack(msg, off, compression, compress)
626	if err != nil {
627		return off, err
628	}
629	headerEnd := off
630	off, err = PackDomainName(rr.Mr, msg, off, compression, compress)
631	if err != nil {
632		return off, err
633	}
634	rr.Header().Rdlength = uint16(off - headerEnd)
635	return off, nil
636}
637
638func (rr *MX) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
639	off, err := rr.Hdr.pack(msg, off, compression, compress)
640	if err != nil {
641		return off, err
642	}
643	headerEnd := off
644	off, err = packUint16(rr.Preference, msg, off)
645	if err != nil {
646		return off, err
647	}
648	off, err = PackDomainName(rr.Mx, msg, off, compression, compress)
649	if err != nil {
650		return off, err
651	}
652	rr.Header().Rdlength = uint16(off - headerEnd)
653	return off, nil
654}
655
656func (rr *NAPTR) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
657	off, err := rr.Hdr.pack(msg, off, compression, compress)
658	if err != nil {
659		return off, err
660	}
661	headerEnd := off
662	off, err = packUint16(rr.Order, msg, off)
663	if err != nil {
664		return off, err
665	}
666	off, err = packUint16(rr.Preference, msg, off)
667	if err != nil {
668		return off, err
669	}
670	off, err = packString(rr.Flags, msg, off)
671	if err != nil {
672		return off, err
673	}
674	off, err = packString(rr.Service, msg, off)
675	if err != nil {
676		return off, err
677	}
678	off, err = packString(rr.Regexp, msg, off)
679	if err != nil {
680		return off, err
681	}
682	off, err = PackDomainName(rr.Replacement, msg, off, compression, compress)
683	if err != nil {
684		return off, err
685	}
686	rr.Header().Rdlength = uint16(off - headerEnd)
687	return off, nil
688}
689
690func (rr *NID) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
691	off, err := rr.Hdr.pack(msg, off, compression, compress)
692	if err != nil {
693		return off, err
694	}
695	headerEnd := off
696	off, err = packUint16(rr.Preference, msg, off)
697	if err != nil {
698		return off, err
699	}
700	off, err = packUint64(rr.NodeID, msg, off)
701	if err != nil {
702		return off, err
703	}
704	rr.Header().Rdlength = uint16(off - headerEnd)
705	return off, nil
706}
707
708func (rr *NIMLOC) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
709	off, err := rr.Hdr.pack(msg, off, compression, compress)
710	if err != nil {
711		return off, err
712	}
713	headerEnd := off
714	off, err = packStringHex(rr.Locator, msg, off)
715	if err != nil {
716		return off, err
717	}
718	rr.Header().Rdlength = uint16(off - headerEnd)
719	return off, nil
720}
721
722func (rr *NINFO) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
723	off, err := rr.Hdr.pack(msg, off, compression, compress)
724	if err != nil {
725		return off, err
726	}
727	headerEnd := off
728	off, err = packStringTxt(rr.ZSData, msg, off)
729	if err != nil {
730		return off, err
731	}
732	rr.Header().Rdlength = uint16(off - headerEnd)
733	return off, nil
734}
735
736func (rr *NS) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
737	off, err := rr.Hdr.pack(msg, off, compression, compress)
738	if err != nil {
739		return off, err
740	}
741	headerEnd := off
742	off, err = PackDomainName(rr.Ns, msg, off, compression, compress)
743	if err != nil {
744		return off, err
745	}
746	rr.Header().Rdlength = uint16(off - headerEnd)
747	return off, nil
748}
749
750func (rr *NSAPPTR) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
751	off, err := rr.Hdr.pack(msg, off, compression, compress)
752	if err != nil {
753		return off, err
754	}
755	headerEnd := off
756	off, err = PackDomainName(rr.Ptr, msg, off, compression, compress)
757	if err != nil {
758		return off, err
759	}
760	rr.Header().Rdlength = uint16(off - headerEnd)
761	return off, nil
762}
763
764func (rr *NSEC) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
765	off, err := rr.Hdr.pack(msg, off, compression, compress)
766	if err != nil {
767		return off, err
768	}
769	headerEnd := off
770	off, err = PackDomainName(rr.NextDomain, msg, off, compression, compress)
771	if err != nil {
772		return off, err
773	}
774	off, err = packDataNsec(rr.TypeBitMap, msg, off)
775	if err != nil {
776		return off, err
777	}
778	rr.Header().Rdlength = uint16(off - headerEnd)
779	return off, nil
780}
781
782func (rr *NSEC3) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
783	off, err := rr.Hdr.pack(msg, off, compression, compress)
784	if err != nil {
785		return off, err
786	}
787	headerEnd := off
788	off, err = packUint8(rr.Hash, msg, off)
789	if err != nil {
790		return off, err
791	}
792	off, err = packUint8(rr.Flags, msg, off)
793	if err != nil {
794		return off, err
795	}
796	off, err = packUint16(rr.Iterations, msg, off)
797	if err != nil {
798		return off, err
799	}
800	off, err = packUint8(rr.SaltLength, msg, off)
801	if err != nil {
802		return off, err
803	}
804	if rr.Salt == "-" { /* do nothing, empty salt */
805	}
806	if err != nil {
807		return off, err
808	}
809	off, err = packUint8(rr.HashLength, msg, off)
810	if err != nil {
811		return off, err
812	}
813	off, err = packStringBase32(rr.NextDomain, msg, off)
814	if err != nil {
815		return off, err
816	}
817	off, err = packDataNsec(rr.TypeBitMap, msg, off)
818	if err != nil {
819		return off, err
820	}
821	rr.Header().Rdlength = uint16(off - headerEnd)
822	return off, nil
823}
824
825func (rr *NSEC3PARAM) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
826	off, err := rr.Hdr.pack(msg, off, compression, compress)
827	if err != nil {
828		return off, err
829	}
830	headerEnd := off
831	off, err = packUint8(rr.Hash, msg, off)
832	if err != nil {
833		return off, err
834	}
835	off, err = packUint8(rr.Flags, msg, off)
836	if err != nil {
837		return off, err
838	}
839	off, err = packUint16(rr.Iterations, msg, off)
840	if err != nil {
841		return off, err
842	}
843	off, err = packUint8(rr.SaltLength, msg, off)
844	if err != nil {
845		return off, err
846	}
847	if rr.Salt == "-" { /* do nothing, empty salt */
848	}
849	if err != nil {
850		return off, err
851	}
852	rr.Header().Rdlength = uint16(off - headerEnd)
853	return off, nil
854}
855
856func (rr *OPENPGPKEY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
857	off, err := rr.Hdr.pack(msg, off, compression, compress)
858	if err != nil {
859		return off, err
860	}
861	headerEnd := off
862	off, err = packStringBase64(rr.PublicKey, msg, off)
863	if err != nil {
864		return off, err
865	}
866	rr.Header().Rdlength = uint16(off - headerEnd)
867	return off, nil
868}
869
870func (rr *OPT) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
871	off, err := rr.Hdr.pack(msg, off, compression, compress)
872	if err != nil {
873		return off, err
874	}
875	headerEnd := off
876	off, err = packDataOpt(rr.Option, msg, off)
877	if err != nil {
878		return off, err
879	}
880	rr.Header().Rdlength = uint16(off - headerEnd)
881	return off, nil
882}
883
884func (rr *PTR) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
885	off, err := rr.Hdr.pack(msg, off, compression, compress)
886	if err != nil {
887		return off, err
888	}
889	headerEnd := off
890	off, err = PackDomainName(rr.Ptr, msg, off, compression, compress)
891	if err != nil {
892		return off, err
893	}
894	rr.Header().Rdlength = uint16(off - headerEnd)
895	return off, nil
896}
897
898func (rr *PX) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
899	off, err := rr.Hdr.pack(msg, off, compression, compress)
900	if err != nil {
901		return off, err
902	}
903	headerEnd := off
904	off, err = packUint16(rr.Preference, msg, off)
905	if err != nil {
906		return off, err
907	}
908	off, err = PackDomainName(rr.Map822, msg, off, compression, compress)
909	if err != nil {
910		return off, err
911	}
912	off, err = PackDomainName(rr.Mapx400, msg, off, compression, compress)
913	if err != nil {
914		return off, err
915	}
916	rr.Header().Rdlength = uint16(off - headerEnd)
917	return off, nil
918}
919
920func (rr *RFC3597) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
921	off, err := rr.Hdr.pack(msg, off, compression, compress)
922	if err != nil {
923		return off, err
924	}
925	headerEnd := off
926	off, err = packStringHex(rr.Rdata, msg, off)
927	if err != nil {
928		return off, err
929	}
930	rr.Header().Rdlength = uint16(off - headerEnd)
931	return off, nil
932}
933
934func (rr *RKEY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
935	off, err := rr.Hdr.pack(msg, off, compression, compress)
936	if err != nil {
937		return off, err
938	}
939	headerEnd := off
940	off, err = packUint16(rr.Flags, msg, off)
941	if err != nil {
942		return off, err
943	}
944	off, err = packUint8(rr.Protocol, msg, off)
945	if err != nil {
946		return off, err
947	}
948	off, err = packUint8(rr.Algorithm, msg, off)
949	if err != nil {
950		return off, err
951	}
952	off, err = packStringBase64(rr.PublicKey, msg, off)
953	if err != nil {
954		return off, err
955	}
956	rr.Header().Rdlength = uint16(off - headerEnd)
957	return off, nil
958}
959
960func (rr *RP) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
961	off, err := rr.Hdr.pack(msg, off, compression, compress)
962	if err != nil {
963		return off, err
964	}
965	headerEnd := off
966	off, err = PackDomainName(rr.Mbox, msg, off, compression, compress)
967	if err != nil {
968		return off, err
969	}
970	off, err = PackDomainName(rr.Txt, msg, off, compression, compress)
971	if err != nil {
972		return off, err
973	}
974	rr.Header().Rdlength = uint16(off - headerEnd)
975	return off, nil
976}
977
978func (rr *RRSIG) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
979	off, err := rr.Hdr.pack(msg, off, compression, compress)
980	if err != nil {
981		return off, err
982	}
983	headerEnd := off
984	off, err = packUint16(rr.TypeCovered, msg, off)
985	if err != nil {
986		return off, err
987	}
988	off, err = packUint8(rr.Algorithm, msg, off)
989	if err != nil {
990		return off, err
991	}
992	off, err = packUint8(rr.Labels, msg, off)
993	if err != nil {
994		return off, err
995	}
996	off, err = packUint32(rr.OrigTtl, msg, off)
997	if err != nil {
998		return off, err
999	}
1000	off, err = packUint32(rr.Expiration, msg, off)
1001	if err != nil {
1002		return off, err
1003	}
1004	off, err = packUint32(rr.Inception, msg, off)
1005	if err != nil {
1006		return off, err
1007	}
1008	off, err = packUint16(rr.KeyTag, msg, off)
1009	if err != nil {
1010		return off, err
1011	}
1012	off, err = PackDomainName(rr.SignerName, msg, off, compression, compress)
1013	if err != nil {
1014		return off, err
1015	}
1016	off, err = packStringBase64(rr.Signature, msg, off)
1017	if err != nil {
1018		return off, err
1019	}
1020	rr.Header().Rdlength = uint16(off - headerEnd)
1021	return off, nil
1022}
1023
1024func (rr *RT) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
1025	off, err := rr.Hdr.pack(msg, off, compression, compress)
1026	if err != nil {
1027		return off, err
1028	}
1029	headerEnd := off
1030	off, err = packUint16(rr.Preference, msg, off)
1031	if err != nil {
1032		return off, err
1033	}
1034	off, err = PackDomainName(rr.Host, msg, off, compression, compress)
1035	if err != nil {
1036		return off, err
1037	}
1038	rr.Header().Rdlength = uint16(off - headerEnd)
1039	return off, nil
1040}
1041
1042func (rr *SIG) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
1043	off, err := rr.Hdr.pack(msg, off, compression, compress)
1044	if err != nil {
1045		return off, err
1046	}
1047	headerEnd := off
1048	off, err = packUint16(rr.TypeCovered, msg, off)
1049	if err != nil {
1050		return off, err
1051	}
1052	off, err = packUint8(rr.Algorithm, msg, off)
1053	if err != nil {
1054		return off, err
1055	}
1056	off, err = packUint8(rr.Labels, msg, off)
1057	if err != nil {
1058		return off, err
1059	}
1060	off, err = packUint32(rr.OrigTtl, msg, off)
1061	if err != nil {
1062		return off, err
1063	}
1064	off, err = packUint32(rr.Expiration, msg, off)
1065	if err != nil {
1066		return off, err
1067	}
1068	off, err = packUint32(rr.Inception, msg, off)
1069	if err != nil {
1070		return off, err
1071	}
1072	off, err = packUint16(rr.KeyTag, msg, off)
1073	if err != nil {
1074		return off, err
1075	}
1076	off, err = PackDomainName(rr.SignerName, msg, off, compression, compress)
1077	if err != nil {
1078		return off, err
1079	}
1080	off, err = packStringBase64(rr.Signature, msg, off)
1081	if err != nil {
1082		return off, err
1083	}
1084	rr.Header().Rdlength = uint16(off - headerEnd)
1085	return off, nil
1086}
1087
1088func (rr *SMIMEA) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
1089	off, err := rr.Hdr.pack(msg, off, compression, compress)
1090	if err != nil {
1091		return off, err
1092	}
1093	headerEnd := off
1094	off, err = packUint8(rr.Usage, msg, off)
1095	if err != nil {
1096		return off, err
1097	}
1098	off, err = packUint8(rr.Selector, msg, off)
1099	if err != nil {
1100		return off, err
1101	}
1102	off, err = packUint8(rr.MatchingType, msg, off)
1103	if err != nil {
1104		return off, err
1105	}
1106	off, err = packStringHex(rr.Certificate, msg, off)
1107	if err != nil {
1108		return off, err
1109	}
1110	rr.Header().Rdlength = uint16(off - headerEnd)
1111	return off, nil
1112}
1113
1114func (rr *SOA) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
1115	off, err := rr.Hdr.pack(msg, off, compression, compress)
1116	if err != nil {
1117		return off, err
1118	}
1119	headerEnd := off
1120	off, err = PackDomainName(rr.Ns, msg, off, compression, compress)
1121	if err != nil {
1122		return off, err
1123	}
1124	off, err = PackDomainName(rr.Mbox, msg, off, compression, compress)
1125	if err != nil {
1126		return off, err
1127	}
1128	off, err = packUint32(rr.Serial, msg, off)
1129	if err != nil {
1130		return off, err
1131	}
1132	off, err = packUint32(rr.Refresh, msg, off)
1133	if err != nil {
1134		return off, err
1135	}
1136	off, err = packUint32(rr.Retry, msg, off)
1137	if err != nil {
1138		return off, err
1139	}
1140	off, err = packUint32(rr.Expire, msg, off)
1141	if err != nil {
1142		return off, err
1143	}
1144	off, err = packUint32(rr.Minttl, msg, off)
1145	if err != nil {
1146		return off, err
1147	}
1148	rr.Header().Rdlength = uint16(off - headerEnd)
1149	return off, nil
1150}
1151
1152func (rr *SPF) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
1153	off, err := rr.Hdr.pack(msg, off, compression, compress)
1154	if err != nil {
1155		return off, err
1156	}
1157	headerEnd := off
1158	off, err = packStringTxt(rr.Txt, msg, off)
1159	if err != nil {
1160		return off, err
1161	}
1162	rr.Header().Rdlength = uint16(off - headerEnd)
1163	return off, nil
1164}
1165
1166func (rr *SRV) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
1167	off, err := rr.Hdr.pack(msg, off, compression, compress)
1168	if err != nil {
1169		return off, err
1170	}
1171	headerEnd := off
1172	off, err = packUint16(rr.Priority, msg, off)
1173	if err != nil {
1174		return off, err
1175	}
1176	off, err = packUint16(rr.Weight, msg, off)
1177	if err != nil {
1178		return off, err
1179	}
1180	off, err = packUint16(rr.Port, msg, off)
1181	if err != nil {
1182		return off, err
1183	}
1184	off, err = PackDomainName(rr.Target, msg, off, compression, compress)
1185	if err != nil {
1186		return off, err
1187	}
1188	rr.Header().Rdlength = uint16(off - headerEnd)
1189	return off, nil
1190}
1191
1192func (rr *SSHFP) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
1193	off, err := rr.Hdr.pack(msg, off, compression, compress)
1194	if err != nil {
1195		return off, err
1196	}
1197	headerEnd := off
1198	off, err = packUint8(rr.Algorithm, msg, off)
1199	if err != nil {
1200		return off, err
1201	}
1202	off, err = packUint8(rr.Type, msg, off)
1203	if err != nil {
1204		return off, err
1205	}
1206	off, err = packStringHex(rr.FingerPrint, msg, off)
1207	if err != nil {
1208		return off, err
1209	}
1210	rr.Header().Rdlength = uint16(off - headerEnd)
1211	return off, nil
1212}
1213
1214func (rr *TA) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
1215	off, err := rr.Hdr.pack(msg, off, compression, compress)
1216	if err != nil {
1217		return off, err
1218	}
1219	headerEnd := off
1220	off, err = packUint16(rr.KeyTag, msg, off)
1221	if err != nil {
1222		return off, err
1223	}
1224	off, err = packUint8(rr.Algorithm, msg, off)
1225	if err != nil {
1226		return off, err
1227	}
1228	off, err = packUint8(rr.DigestType, msg, off)
1229	if err != nil {
1230		return off, err
1231	}
1232	off, err = packStringHex(rr.Digest, msg, off)
1233	if err != nil {
1234		return off, err
1235	}
1236	rr.Header().Rdlength = uint16(off - headerEnd)
1237	return off, nil
1238}
1239
1240func (rr *TALINK) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
1241	off, err := rr.Hdr.pack(msg, off, compression, compress)
1242	if err != nil {
1243		return off, err
1244	}
1245	headerEnd := off
1246	off, err = PackDomainName(rr.PreviousName, msg, off, compression, compress)
1247	if err != nil {
1248		return off, err
1249	}
1250	off, err = PackDomainName(rr.NextName, msg, off, compression, compress)
1251	if err != nil {
1252		return off, err
1253	}
1254	rr.Header().Rdlength = uint16(off - headerEnd)
1255	return off, nil
1256}
1257
1258func (rr *TKEY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
1259	off, err := rr.Hdr.pack(msg, off, compression, compress)
1260	if err != nil {
1261		return off, err
1262	}
1263	headerEnd := off
1264	off, err = PackDomainName(rr.Algorithm, msg, off, compression, compress)
1265	if err != nil {
1266		return off, err
1267	}
1268	off, err = packUint32(rr.Inception, msg, off)
1269	if err != nil {
1270		return off, err
1271	}
1272	off, err = packUint32(rr.Expiration, msg, off)
1273	if err != nil {
1274		return off, err
1275	}
1276	off, err = packUint16(rr.Mode, msg, off)
1277	if err != nil {
1278		return off, err
1279	}
1280	off, err = packUint16(rr.Error, msg, off)
1281	if err != nil {
1282		return off, err
1283	}
1284	off, err = packUint16(rr.KeySize, msg, off)
1285	if err != nil {
1286		return off, err
1287	}
1288	off, err = packString(rr.Key, msg, off)
1289	if err != nil {
1290		return off, err
1291	}
1292	off, err = packUint16(rr.OtherLen, msg, off)
1293	if err != nil {
1294		return off, err
1295	}
1296	off, err = packString(rr.OtherData, msg, off)
1297	if err != nil {
1298		return off, err
1299	}
1300	rr.Header().Rdlength = uint16(off - headerEnd)
1301	return off, nil
1302}
1303
1304func (rr *TLSA) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
1305	off, err := rr.Hdr.pack(msg, off, compression, compress)
1306	if err != nil {
1307		return off, err
1308	}
1309	headerEnd := off
1310	off, err = packUint8(rr.Usage, msg, off)
1311	if err != nil {
1312		return off, err
1313	}
1314	off, err = packUint8(rr.Selector, msg, off)
1315	if err != nil {
1316		return off, err
1317	}
1318	off, err = packUint8(rr.MatchingType, msg, off)
1319	if err != nil {
1320		return off, err
1321	}
1322	off, err = packStringHex(rr.Certificate, msg, off)
1323	if err != nil {
1324		return off, err
1325	}
1326	rr.Header().Rdlength = uint16(off - headerEnd)
1327	return off, nil
1328}
1329
1330func (rr *TSIG) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
1331	off, err := rr.Hdr.pack(msg, off, compression, compress)
1332	if err != nil {
1333		return off, err
1334	}
1335	headerEnd := off
1336	off, err = PackDomainName(rr.Algorithm, msg, off, compression, compress)
1337	if err != nil {
1338		return off, err
1339	}
1340	off, err = packUint48(rr.TimeSigned, msg, off)
1341	if err != nil {
1342		return off, err
1343	}
1344	off, err = packUint16(rr.Fudge, msg, off)
1345	if err != nil {
1346		return off, err
1347	}
1348	off, err = packUint16(rr.MACSize, msg, off)
1349	if err != nil {
1350		return off, err
1351	}
1352	off, err = packStringHex(rr.MAC, msg, off)
1353	if err != nil {
1354		return off, err
1355	}
1356	off, err = packUint16(rr.OrigId, msg, off)
1357	if err != nil {
1358		return off, err
1359	}
1360	off, err = packUint16(rr.Error, msg, off)
1361	if err != nil {
1362		return off, err
1363	}
1364	off, err = packUint16(rr.OtherLen, msg, off)
1365	if err != nil {
1366		return off, err
1367	}
1368	off, err = packStringHex(rr.OtherData, msg, off)
1369	if err != nil {
1370		return off, err
1371	}
1372	rr.Header().Rdlength = uint16(off - headerEnd)
1373	return off, nil
1374}
1375
1376func (rr *TXT) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
1377	off, err := rr.Hdr.pack(msg, off, compression, compress)
1378	if err != nil {
1379		return off, err
1380	}
1381	headerEnd := off
1382	off, err = packStringTxt(rr.Txt, msg, off)
1383	if err != nil {
1384		return off, err
1385	}
1386	rr.Header().Rdlength = uint16(off - headerEnd)
1387	return off, nil
1388}
1389
1390func (rr *UID) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
1391	off, err := rr.Hdr.pack(msg, off, compression, compress)
1392	if err != nil {
1393		return off, err
1394	}
1395	headerEnd := off
1396	off, err = packUint32(rr.Uid, msg, off)
1397	if err != nil {
1398		return off, err
1399	}
1400	rr.Header().Rdlength = uint16(off - headerEnd)
1401	return off, nil
1402}
1403
1404func (rr *UINFO) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
1405	off, err := rr.Hdr.pack(msg, off, compression, compress)
1406	if err != nil {
1407		return off, err
1408	}
1409	headerEnd := off
1410	off, err = packString(rr.Uinfo, msg, off)
1411	if err != nil {
1412		return off, err
1413	}
1414	rr.Header().Rdlength = uint16(off - headerEnd)
1415	return off, nil
1416}
1417
1418func (rr *URI) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
1419	off, err := rr.Hdr.pack(msg, off, compression, compress)
1420	if err != nil {
1421		return off, err
1422	}
1423	headerEnd := off
1424	off, err = packUint16(rr.Priority, msg, off)
1425	if err != nil {
1426		return off, err
1427	}
1428	off, err = packUint16(rr.Weight, msg, off)
1429	if err != nil {
1430		return off, err
1431	}
1432	off, err = packStringOctet(rr.Target, msg, off)
1433	if err != nil {
1434		return off, err
1435	}
1436	rr.Header().Rdlength = uint16(off - headerEnd)
1437	return off, nil
1438}
1439
1440func (rr *X25) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
1441	off, err := rr.Hdr.pack(msg, off, compression, compress)
1442	if err != nil {
1443		return off, err
1444	}
1445	headerEnd := off
1446	off, err = packString(rr.PSDNAddress, msg, off)
1447	if err != nil {
1448		return off, err
1449	}
1450	rr.Header().Rdlength = uint16(off - headerEnd)
1451	return off, nil
1452}
1453
1454// unpack*() functions
1455
1456func unpackA(h RR_Header, msg []byte, off int) (RR, int, error) {
1457	rr := new(A)
1458	rr.Hdr = h
1459	if noRdata(h) {
1460		return rr, off, nil
1461	}
1462	var err error
1463	rdStart := off
1464	_ = rdStart
1465
1466	rr.A, off, err = unpackDataA(msg, off)
1467	if err != nil {
1468		return rr, off, err
1469	}
1470	return rr, off, err
1471}
1472
1473func unpackAAAA(h RR_Header, msg []byte, off int) (RR, int, error) {
1474	rr := new(AAAA)
1475	rr.Hdr = h
1476	if noRdata(h) {
1477		return rr, off, nil
1478	}
1479	var err error
1480	rdStart := off
1481	_ = rdStart
1482
1483	rr.AAAA, off, err = unpackDataAAAA(msg, off)
1484	if err != nil {
1485		return rr, off, err
1486	}
1487	return rr, off, err
1488}
1489
1490func unpackAFSDB(h RR_Header, msg []byte, off int) (RR, int, error) {
1491	rr := new(AFSDB)
1492	rr.Hdr = h
1493	if noRdata(h) {
1494		return rr, off, nil
1495	}
1496	var err error
1497	rdStart := off
1498	_ = rdStart
1499
1500	rr.Subtype, off, err = unpackUint16(msg, off)
1501	if err != nil {
1502		return rr, off, err
1503	}
1504	if off == len(msg) {
1505		return rr, off, nil
1506	}
1507	rr.Hostname, off, err = UnpackDomainName(msg, off)
1508	if err != nil {
1509		return rr, off, err
1510	}
1511	return rr, off, err
1512}
1513
1514func unpackANY(h RR_Header, msg []byte, off int) (RR, int, error) {
1515	rr := new(ANY)
1516	rr.Hdr = h
1517	if noRdata(h) {
1518		return rr, off, nil
1519	}
1520	var err error
1521	rdStart := off
1522	_ = rdStart
1523
1524	return rr, off, err
1525}
1526
1527func unpackCAA(h RR_Header, msg []byte, off int) (RR, int, error) {
1528	rr := new(CAA)
1529	rr.Hdr = h
1530	if noRdata(h) {
1531		return rr, off, nil
1532	}
1533	var err error
1534	rdStart := off
1535	_ = rdStart
1536
1537	rr.Flag, off, err = unpackUint8(msg, off)
1538	if err != nil {
1539		return rr, off, err
1540	}
1541	if off == len(msg) {
1542		return rr, off, nil
1543	}
1544	rr.Tag, off, err = unpackString(msg, off)
1545	if err != nil {
1546		return rr, off, err
1547	}
1548	if off == len(msg) {
1549		return rr, off, nil
1550	}
1551	rr.Value, off, err = unpackStringOctet(msg, off)
1552	if err != nil {
1553		return rr, off, err
1554	}
1555	return rr, off, err
1556}
1557
1558func unpackCDNSKEY(h RR_Header, msg []byte, off int) (RR, int, error) {
1559	rr := new(CDNSKEY)
1560	rr.Hdr = h
1561	if noRdata(h) {
1562		return rr, off, nil
1563	}
1564	var err error
1565	rdStart := off
1566	_ = rdStart
1567
1568	rr.Flags, off, err = unpackUint16(msg, off)
1569	if err != nil {
1570		return rr, off, err
1571	}
1572	if off == len(msg) {
1573		return rr, off, nil
1574	}
1575	rr.Protocol, off, err = unpackUint8(msg, off)
1576	if err != nil {
1577		return rr, off, err
1578	}
1579	if off == len(msg) {
1580		return rr, off, nil
1581	}
1582	rr.Algorithm, off, err = unpackUint8(msg, off)
1583	if err != nil {
1584		return rr, off, err
1585	}
1586	if off == len(msg) {
1587		return rr, off, nil
1588	}
1589	rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
1590	if err != nil {
1591		return rr, off, err
1592	}
1593	return rr, off, err
1594}
1595
1596func unpackCDS(h RR_Header, msg []byte, off int) (RR, int, error) {
1597	rr := new(CDS)
1598	rr.Hdr = h
1599	if noRdata(h) {
1600		return rr, off, nil
1601	}
1602	var err error
1603	rdStart := off
1604	_ = rdStart
1605
1606	rr.KeyTag, off, err = unpackUint16(msg, off)
1607	if err != nil {
1608		return rr, off, err
1609	}
1610	if off == len(msg) {
1611		return rr, off, nil
1612	}
1613	rr.Algorithm, off, err = unpackUint8(msg, off)
1614	if err != nil {
1615		return rr, off, err
1616	}
1617	if off == len(msg) {
1618		return rr, off, nil
1619	}
1620	rr.DigestType, off, err = unpackUint8(msg, off)
1621	if err != nil {
1622		return rr, off, err
1623	}
1624	if off == len(msg) {
1625		return rr, off, nil
1626	}
1627	rr.Digest, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
1628	if err != nil {
1629		return rr, off, err
1630	}
1631	return rr, off, err
1632}
1633
1634func unpackCERT(h RR_Header, msg []byte, off int) (RR, int, error) {
1635	rr := new(CERT)
1636	rr.Hdr = h
1637	if noRdata(h) {
1638		return rr, off, nil
1639	}
1640	var err error
1641	rdStart := off
1642	_ = rdStart
1643
1644	rr.Type, off, err = unpackUint16(msg, off)
1645	if err != nil {
1646		return rr, off, err
1647	}
1648	if off == len(msg) {
1649		return rr, off, nil
1650	}
1651	rr.KeyTag, off, err = unpackUint16(msg, off)
1652	if err != nil {
1653		return rr, off, err
1654	}
1655	if off == len(msg) {
1656		return rr, off, nil
1657	}
1658	rr.Algorithm, off, err = unpackUint8(msg, off)
1659	if err != nil {
1660		return rr, off, err
1661	}
1662	if off == len(msg) {
1663		return rr, off, nil
1664	}
1665	rr.Certificate, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
1666	if err != nil {
1667		return rr, off, err
1668	}
1669	return rr, off, err
1670}
1671
1672func unpackCNAME(h RR_Header, msg []byte, off int) (RR, int, error) {
1673	rr := new(CNAME)
1674	rr.Hdr = h
1675	if noRdata(h) {
1676		return rr, off, nil
1677	}
1678	var err error
1679	rdStart := off
1680	_ = rdStart
1681
1682	rr.Target, off, err = UnpackDomainName(msg, off)
1683	if err != nil {
1684		return rr, off, err
1685	}
1686	return rr, off, err
1687}
1688
1689func unpackDHCID(h RR_Header, msg []byte, off int) (RR, int, error) {
1690	rr := new(DHCID)
1691	rr.Hdr = h
1692	if noRdata(h) {
1693		return rr, off, nil
1694	}
1695	var err error
1696	rdStart := off
1697	_ = rdStart
1698
1699	rr.Digest, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
1700	if err != nil {
1701		return rr, off, err
1702	}
1703	return rr, off, err
1704}
1705
1706func unpackDLV(h RR_Header, msg []byte, off int) (RR, int, error) {
1707	rr := new(DLV)
1708	rr.Hdr = h
1709	if noRdata(h) {
1710		return rr, off, nil
1711	}
1712	var err error
1713	rdStart := off
1714	_ = rdStart
1715
1716	rr.KeyTag, off, err = unpackUint16(msg, off)
1717	if err != nil {
1718		return rr, off, err
1719	}
1720	if off == len(msg) {
1721		return rr, off, nil
1722	}
1723	rr.Algorithm, off, err = unpackUint8(msg, off)
1724	if err != nil {
1725		return rr, off, err
1726	}
1727	if off == len(msg) {
1728		return rr, off, nil
1729	}
1730	rr.DigestType, off, err = unpackUint8(msg, off)
1731	if err != nil {
1732		return rr, off, err
1733	}
1734	if off == len(msg) {
1735		return rr, off, nil
1736	}
1737	rr.Digest, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
1738	if err != nil {
1739		return rr, off, err
1740	}
1741	return rr, off, err
1742}
1743
1744func unpackDNAME(h RR_Header, msg []byte, off int) (RR, int, error) {
1745	rr := new(DNAME)
1746	rr.Hdr = h
1747	if noRdata(h) {
1748		return rr, off, nil
1749	}
1750	var err error
1751	rdStart := off
1752	_ = rdStart
1753
1754	rr.Target, off, err = UnpackDomainName(msg, off)
1755	if err != nil {
1756		return rr, off, err
1757	}
1758	return rr, off, err
1759}
1760
1761func unpackDNSKEY(h RR_Header, msg []byte, off int) (RR, int, error) {
1762	rr := new(DNSKEY)
1763	rr.Hdr = h
1764	if noRdata(h) {
1765		return rr, off, nil
1766	}
1767	var err error
1768	rdStart := off
1769	_ = rdStart
1770
1771	rr.Flags, off, err = unpackUint16(msg, off)
1772	if err != nil {
1773		return rr, off, err
1774	}
1775	if off == len(msg) {
1776		return rr, off, nil
1777	}
1778	rr.Protocol, off, err = unpackUint8(msg, off)
1779	if err != nil {
1780		return rr, off, err
1781	}
1782	if off == len(msg) {
1783		return rr, off, nil
1784	}
1785	rr.Algorithm, off, err = unpackUint8(msg, off)
1786	if err != nil {
1787		return rr, off, err
1788	}
1789	if off == len(msg) {
1790		return rr, off, nil
1791	}
1792	rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
1793	if err != nil {
1794		return rr, off, err
1795	}
1796	return rr, off, err
1797}
1798
1799func unpackDS(h RR_Header, msg []byte, off int) (RR, int, error) {
1800	rr := new(DS)
1801	rr.Hdr = h
1802	if noRdata(h) {
1803		return rr, off, nil
1804	}
1805	var err error
1806	rdStart := off
1807	_ = rdStart
1808
1809	rr.KeyTag, off, err = unpackUint16(msg, off)
1810	if err != nil {
1811		return rr, off, err
1812	}
1813	if off == len(msg) {
1814		return rr, off, nil
1815	}
1816	rr.Algorithm, off, err = unpackUint8(msg, off)
1817	if err != nil {
1818		return rr, off, err
1819	}
1820	if off == len(msg) {
1821		return rr, off, nil
1822	}
1823	rr.DigestType, off, err = unpackUint8(msg, off)
1824	if err != nil {
1825		return rr, off, err
1826	}
1827	if off == len(msg) {
1828		return rr, off, nil
1829	}
1830	rr.Digest, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
1831	if err != nil {
1832		return rr, off, err
1833	}
1834	return rr, off, err
1835}
1836
1837func unpackEID(h RR_Header, msg []byte, off int) (RR, int, error) {
1838	rr := new(EID)
1839	rr.Hdr = h
1840	if noRdata(h) {
1841		return rr, off, nil
1842	}
1843	var err error
1844	rdStart := off
1845	_ = rdStart
1846
1847	rr.Endpoint, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
1848	if err != nil {
1849		return rr, off, err
1850	}
1851	return rr, off, err
1852}
1853
1854func unpackEUI48(h RR_Header, msg []byte, off int) (RR, int, error) {
1855	rr := new(EUI48)
1856	rr.Hdr = h
1857	if noRdata(h) {
1858		return rr, off, nil
1859	}
1860	var err error
1861	rdStart := off
1862	_ = rdStart
1863
1864	rr.Address, off, err = unpackUint48(msg, off)
1865	if err != nil {
1866		return rr, off, err
1867	}
1868	return rr, off, err
1869}
1870
1871func unpackEUI64(h RR_Header, msg []byte, off int) (RR, int, error) {
1872	rr := new(EUI64)
1873	rr.Hdr = h
1874	if noRdata(h) {
1875		return rr, off, nil
1876	}
1877	var err error
1878	rdStart := off
1879	_ = rdStart
1880
1881	rr.Address, off, err = unpackUint64(msg, off)
1882	if err != nil {
1883		return rr, off, err
1884	}
1885	return rr, off, err
1886}
1887
1888func unpackGID(h RR_Header, msg []byte, off int) (RR, int, error) {
1889	rr := new(GID)
1890	rr.Hdr = h
1891	if noRdata(h) {
1892		return rr, off, nil
1893	}
1894	var err error
1895	rdStart := off
1896	_ = rdStart
1897
1898	rr.Gid, off, err = unpackUint32(msg, off)
1899	if err != nil {
1900		return rr, off, err
1901	}
1902	return rr, off, err
1903}
1904
1905func unpackGPOS(h RR_Header, msg []byte, off int) (RR, int, error) {
1906	rr := new(GPOS)
1907	rr.Hdr = h
1908	if noRdata(h) {
1909		return rr, off, nil
1910	}
1911	var err error
1912	rdStart := off
1913	_ = rdStart
1914
1915	rr.Longitude, off, err = unpackString(msg, off)
1916	if err != nil {
1917		return rr, off, err
1918	}
1919	if off == len(msg) {
1920		return rr, off, nil
1921	}
1922	rr.Latitude, off, err = unpackString(msg, off)
1923	if err != nil {
1924		return rr, off, err
1925	}
1926	if off == len(msg) {
1927		return rr, off, nil
1928	}
1929	rr.Altitude, off, err = unpackString(msg, off)
1930	if err != nil {
1931		return rr, off, err
1932	}
1933	return rr, off, err
1934}
1935
1936func unpackHINFO(h RR_Header, msg []byte, off int) (RR, int, error) {
1937	rr := new(HINFO)
1938	rr.Hdr = h
1939	if noRdata(h) {
1940		return rr, off, nil
1941	}
1942	var err error
1943	rdStart := off
1944	_ = rdStart
1945
1946	rr.Cpu, off, err = unpackString(msg, off)
1947	if err != nil {
1948		return rr, off, err
1949	}
1950	if off == len(msg) {
1951		return rr, off, nil
1952	}
1953	rr.Os, off, err = unpackString(msg, off)
1954	if err != nil {
1955		return rr, off, err
1956	}
1957	return rr, off, err
1958}
1959
1960func unpackHIP(h RR_Header, msg []byte, off int) (RR, int, error) {
1961	rr := new(HIP)
1962	rr.Hdr = h
1963	if noRdata(h) {
1964		return rr, off, nil
1965	}
1966	var err error
1967	rdStart := off
1968	_ = rdStart
1969
1970	rr.HitLength, off, err = unpackUint8(msg, off)
1971	if err != nil {
1972		return rr, off, err
1973	}
1974	if off == len(msg) {
1975		return rr, off, nil
1976	}
1977	rr.PublicKeyAlgorithm, off, err = unpackUint8(msg, off)
1978	if err != nil {
1979		return rr, off, err
1980	}
1981	if off == len(msg) {
1982		return rr, off, nil
1983	}
1984	rr.PublicKeyLength, off, err = unpackUint16(msg, off)
1985	if err != nil {
1986		return rr, off, err
1987	}
1988	if off == len(msg) {
1989		return rr, off, nil
1990	}
1991	rr.Hit, off, err = unpackStringHex(msg, off, off+int(rr.HitLength))
1992	if err != nil {
1993		return rr, off, err
1994	}
1995	rr.PublicKey, off, err = unpackStringBase64(msg, off, off+int(rr.PublicKeyLength))
1996	if err != nil {
1997		return rr, off, err
1998	}
1999	rr.RendezvousServers, off, err = unpackDataDomainNames(msg, off, rdStart+int(rr.Hdr.Rdlength))
2000	if err != nil {
2001		return rr, off, err
2002	}
2003	return rr, off, err
2004}
2005
2006func unpackKEY(h RR_Header, msg []byte, off int) (RR, int, error) {
2007	rr := new(KEY)
2008	rr.Hdr = h
2009	if noRdata(h) {
2010		return rr, off, nil
2011	}
2012	var err error
2013	rdStart := off
2014	_ = rdStart
2015
2016	rr.Flags, off, err = unpackUint16(msg, off)
2017	if err != nil {
2018		return rr, off, err
2019	}
2020	if off == len(msg) {
2021		return rr, off, nil
2022	}
2023	rr.Protocol, off, err = unpackUint8(msg, off)
2024	if err != nil {
2025		return rr, off, err
2026	}
2027	if off == len(msg) {
2028		return rr, off, nil
2029	}
2030	rr.Algorithm, off, err = unpackUint8(msg, off)
2031	if err != nil {
2032		return rr, off, err
2033	}
2034	if off == len(msg) {
2035		return rr, off, nil
2036	}
2037	rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
2038	if err != nil {
2039		return rr, off, err
2040	}
2041	return rr, off, err
2042}
2043
2044func unpackKX(h RR_Header, msg []byte, off int) (RR, int, error) {
2045	rr := new(KX)
2046	rr.Hdr = h
2047	if noRdata(h) {
2048		return rr, off, nil
2049	}
2050	var err error
2051	rdStart := off
2052	_ = rdStart
2053
2054	rr.Preference, off, err = unpackUint16(msg, off)
2055	if err != nil {
2056		return rr, off, err
2057	}
2058	if off == len(msg) {
2059		return rr, off, nil
2060	}
2061	rr.Exchanger, off, err = UnpackDomainName(msg, off)
2062	if err != nil {
2063		return rr, off, err
2064	}
2065	return rr, off, err
2066}
2067
2068func unpackL32(h RR_Header, msg []byte, off int) (RR, int, error) {
2069	rr := new(L32)
2070	rr.Hdr = h
2071	if noRdata(h) {
2072		return rr, off, nil
2073	}
2074	var err error
2075	rdStart := off
2076	_ = rdStart
2077
2078	rr.Preference, off, err = unpackUint16(msg, off)
2079	if err != nil {
2080		return rr, off, err
2081	}
2082	if off == len(msg) {
2083		return rr, off, nil
2084	}
2085	rr.Locator32, off, err = unpackDataA(msg, off)
2086	if err != nil {
2087		return rr, off, err
2088	}
2089	return rr, off, err
2090}
2091
2092func unpackL64(h RR_Header, msg []byte, off int) (RR, int, error) {
2093	rr := new(L64)
2094	rr.Hdr = h
2095	if noRdata(h) {
2096		return rr, off, nil
2097	}
2098	var err error
2099	rdStart := off
2100	_ = rdStart
2101
2102	rr.Preference, off, err = unpackUint16(msg, off)
2103	if err != nil {
2104		return rr, off, err
2105	}
2106	if off == len(msg) {
2107		return rr, off, nil
2108	}
2109	rr.Locator64, off, err = unpackUint64(msg, off)
2110	if err != nil {
2111		return rr, off, err
2112	}
2113	return rr, off, err
2114}
2115
2116func unpackLOC(h RR_Header, msg []byte, off int) (RR, int, error) {
2117	rr := new(LOC)
2118	rr.Hdr = h
2119	if noRdata(h) {
2120		return rr, off, nil
2121	}
2122	var err error
2123	rdStart := off
2124	_ = rdStart
2125
2126	rr.Version, off, err = unpackUint8(msg, off)
2127	if err != nil {
2128		return rr, off, err
2129	}
2130	if off == len(msg) {
2131		return rr, off, nil
2132	}
2133	rr.Size, off, err = unpackUint8(msg, off)
2134	if err != nil {
2135		return rr, off, err
2136	}
2137	if off == len(msg) {
2138		return rr, off, nil
2139	}
2140	rr.HorizPre, off, err = unpackUint8(msg, off)
2141	if err != nil {
2142		return rr, off, err
2143	}
2144	if off == len(msg) {
2145		return rr, off, nil
2146	}
2147	rr.VertPre, off, err = unpackUint8(msg, off)
2148	if err != nil {
2149		return rr, off, err
2150	}
2151	if off == len(msg) {
2152		return rr, off, nil
2153	}
2154	rr.Latitude, off, err = unpackUint32(msg, off)
2155	if err != nil {
2156		return rr, off, err
2157	}
2158	if off == len(msg) {
2159		return rr, off, nil
2160	}
2161	rr.Longitude, off, err = unpackUint32(msg, off)
2162	if err != nil {
2163		return rr, off, err
2164	}
2165	if off == len(msg) {
2166		return rr, off, nil
2167	}
2168	rr.Altitude, off, err = unpackUint32(msg, off)
2169	if err != nil {
2170		return rr, off, err
2171	}
2172	return rr, off, err
2173}
2174
2175func unpackLP(h RR_Header, msg []byte, off int) (RR, int, error) {
2176	rr := new(LP)
2177	rr.Hdr = h
2178	if noRdata(h) {
2179		return rr, off, nil
2180	}
2181	var err error
2182	rdStart := off
2183	_ = rdStart
2184
2185	rr.Preference, off, err = unpackUint16(msg, off)
2186	if err != nil {
2187		return rr, off, err
2188	}
2189	if off == len(msg) {
2190		return rr, off, nil
2191	}
2192	rr.Fqdn, off, err = UnpackDomainName(msg, off)
2193	if err != nil {
2194		return rr, off, err
2195	}
2196	return rr, off, err
2197}
2198
2199func unpackMB(h RR_Header, msg []byte, off int) (RR, int, error) {
2200	rr := new(MB)
2201	rr.Hdr = h
2202	if noRdata(h) {
2203		return rr, off, nil
2204	}
2205	var err error
2206	rdStart := off
2207	_ = rdStart
2208
2209	rr.Mb, off, err = UnpackDomainName(msg, off)
2210	if err != nil {
2211		return rr, off, err
2212	}
2213	return rr, off, err
2214}
2215
2216func unpackMD(h RR_Header, msg []byte, off int) (RR, int, error) {
2217	rr := new(MD)
2218	rr.Hdr = h
2219	if noRdata(h) {
2220		return rr, off, nil
2221	}
2222	var err error
2223	rdStart := off
2224	_ = rdStart
2225
2226	rr.Md, off, err = UnpackDomainName(msg, off)
2227	if err != nil {
2228		return rr, off, err
2229	}
2230	return rr, off, err
2231}
2232
2233func unpackMF(h RR_Header, msg []byte, off int) (RR, int, error) {
2234	rr := new(MF)
2235	rr.Hdr = h
2236	if noRdata(h) {
2237		return rr, off, nil
2238	}
2239	var err error
2240	rdStart := off
2241	_ = rdStart
2242
2243	rr.Mf, off, err = UnpackDomainName(msg, off)
2244	if err != nil {
2245		return rr, off, err
2246	}
2247	return rr, off, err
2248}
2249
2250func unpackMG(h RR_Header, msg []byte, off int) (RR, int, error) {
2251	rr := new(MG)
2252	rr.Hdr = h
2253	if noRdata(h) {
2254		return rr, off, nil
2255	}
2256	var err error
2257	rdStart := off
2258	_ = rdStart
2259
2260	rr.Mg, off, err = UnpackDomainName(msg, off)
2261	if err != nil {
2262		return rr, off, err
2263	}
2264	return rr, off, err
2265}
2266
2267func unpackMINFO(h RR_Header, msg []byte, off int) (RR, int, error) {
2268	rr := new(MINFO)
2269	rr.Hdr = h
2270	if noRdata(h) {
2271		return rr, off, nil
2272	}
2273	var err error
2274	rdStart := off
2275	_ = rdStart
2276
2277	rr.Rmail, off, err = UnpackDomainName(msg, off)
2278	if err != nil {
2279		return rr, off, err
2280	}
2281	if off == len(msg) {
2282		return rr, off, nil
2283	}
2284	rr.Email, off, err = UnpackDomainName(msg, off)
2285	if err != nil {
2286		return rr, off, err
2287	}
2288	return rr, off, err
2289}
2290
2291func unpackMR(h RR_Header, msg []byte, off int) (RR, int, error) {
2292	rr := new(MR)
2293	rr.Hdr = h
2294	if noRdata(h) {
2295		return rr, off, nil
2296	}
2297	var err error
2298	rdStart := off
2299	_ = rdStart
2300
2301	rr.Mr, off, err = UnpackDomainName(msg, off)
2302	if err != nil {
2303		return rr, off, err
2304	}
2305	return rr, off, err
2306}
2307
2308func unpackMX(h RR_Header, msg []byte, off int) (RR, int, error) {
2309	rr := new(MX)
2310	rr.Hdr = h
2311	if noRdata(h) {
2312		return rr, off, nil
2313	}
2314	var err error
2315	rdStart := off
2316	_ = rdStart
2317
2318	rr.Preference, off, err = unpackUint16(msg, off)
2319	if err != nil {
2320		return rr, off, err
2321	}
2322	if off == len(msg) {
2323		return rr, off, nil
2324	}
2325	rr.Mx, off, err = UnpackDomainName(msg, off)
2326	if err != nil {
2327		return rr, off, err
2328	}
2329	return rr, off, err
2330}
2331
2332func unpackNAPTR(h RR_Header, msg []byte, off int) (RR, int, error) {
2333	rr := new(NAPTR)
2334	rr.Hdr = h
2335	if noRdata(h) {
2336		return rr, off, nil
2337	}
2338	var err error
2339	rdStart := off
2340	_ = rdStart
2341
2342	rr.Order, off, err = unpackUint16(msg, off)
2343	if err != nil {
2344		return rr, off, err
2345	}
2346	if off == len(msg) {
2347		return rr, off, nil
2348	}
2349	rr.Preference, off, err = unpackUint16(msg, off)
2350	if err != nil {
2351		return rr, off, err
2352	}
2353	if off == len(msg) {
2354		return rr, off, nil
2355	}
2356	rr.Flags, off, err = unpackString(msg, off)
2357	if err != nil {
2358		return rr, off, err
2359	}
2360	if off == len(msg) {
2361		return rr, off, nil
2362	}
2363	rr.Service, off, err = unpackString(msg, off)
2364	if err != nil {
2365		return rr, off, err
2366	}
2367	if off == len(msg) {
2368		return rr, off, nil
2369	}
2370	rr.Regexp, off, err = unpackString(msg, off)
2371	if err != nil {
2372		return rr, off, err
2373	}
2374	if off == len(msg) {
2375		return rr, off, nil
2376	}
2377	rr.Replacement, off, err = UnpackDomainName(msg, off)
2378	if err != nil {
2379		return rr, off, err
2380	}
2381	return rr, off, err
2382}
2383
2384func unpackNID(h RR_Header, msg []byte, off int) (RR, int, error) {
2385	rr := new(NID)
2386	rr.Hdr = h
2387	if noRdata(h) {
2388		return rr, off, nil
2389	}
2390	var err error
2391	rdStart := off
2392	_ = rdStart
2393
2394	rr.Preference, off, err = unpackUint16(msg, off)
2395	if err != nil {
2396		return rr, off, err
2397	}
2398	if off == len(msg) {
2399		return rr, off, nil
2400	}
2401	rr.NodeID, off, err = unpackUint64(msg, off)
2402	if err != nil {
2403		return rr, off, err
2404	}
2405	return rr, off, err
2406}
2407
2408func unpackNIMLOC(h RR_Header, msg []byte, off int) (RR, int, error) {
2409	rr := new(NIMLOC)
2410	rr.Hdr = h
2411	if noRdata(h) {
2412		return rr, off, nil
2413	}
2414	var err error
2415	rdStart := off
2416	_ = rdStart
2417
2418	rr.Locator, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
2419	if err != nil {
2420		return rr, off, err
2421	}
2422	return rr, off, err
2423}
2424
2425func unpackNINFO(h RR_Header, msg []byte, off int) (RR, int, error) {
2426	rr := new(NINFO)
2427	rr.Hdr = h
2428	if noRdata(h) {
2429		return rr, off, nil
2430	}
2431	var err error
2432	rdStart := off
2433	_ = rdStart
2434
2435	rr.ZSData, off, err = unpackStringTxt(msg, off)
2436	if err != nil {
2437		return rr, off, err
2438	}
2439	return rr, off, err
2440}
2441
2442func unpackNS(h RR_Header, msg []byte, off int) (RR, int, error) {
2443	rr := new(NS)
2444	rr.Hdr = h
2445	if noRdata(h) {
2446		return rr, off, nil
2447	}
2448	var err error
2449	rdStart := off
2450	_ = rdStart
2451
2452	rr.Ns, off, err = UnpackDomainName(msg, off)
2453	if err != nil {
2454		return rr, off, err
2455	}
2456	return rr, off, err
2457}
2458
2459func unpackNSAPPTR(h RR_Header, msg []byte, off int) (RR, int, error) {
2460	rr := new(NSAPPTR)
2461	rr.Hdr = h
2462	if noRdata(h) {
2463		return rr, off, nil
2464	}
2465	var err error
2466	rdStart := off
2467	_ = rdStart
2468
2469	rr.Ptr, off, err = UnpackDomainName(msg, off)
2470	if err != nil {
2471		return rr, off, err
2472	}
2473	return rr, off, err
2474}
2475
2476func unpackNSEC(h RR_Header, msg []byte, off int) (RR, int, error) {
2477	rr := new(NSEC)
2478	rr.Hdr = h
2479	if noRdata(h) {
2480		return rr, off, nil
2481	}
2482	var err error
2483	rdStart := off
2484	_ = rdStart
2485
2486	rr.NextDomain, off, err = UnpackDomainName(msg, off)
2487	if err != nil {
2488		return rr, off, err
2489	}
2490	if off == len(msg) {
2491		return rr, off, nil
2492	}
2493	rr.TypeBitMap, off, err = unpackDataNsec(msg, off)
2494	if err != nil {
2495		return rr, off, err
2496	}
2497	return rr, off, err
2498}
2499
2500func unpackNSEC3(h RR_Header, msg []byte, off int) (RR, int, error) {
2501	rr := new(NSEC3)
2502	rr.Hdr = h
2503	if noRdata(h) {
2504		return rr, off, nil
2505	}
2506	var err error
2507	rdStart := off
2508	_ = rdStart
2509
2510	rr.Hash, off, err = unpackUint8(msg, off)
2511	if err != nil {
2512		return rr, off, err
2513	}
2514	if off == len(msg) {
2515		return rr, off, nil
2516	}
2517	rr.Flags, off, err = unpackUint8(msg, off)
2518	if err != nil {
2519		return rr, off, err
2520	}
2521	if off == len(msg) {
2522		return rr, off, nil
2523	}
2524	rr.Iterations, off, err = unpackUint16(msg, off)
2525	if err != nil {
2526		return rr, off, err
2527	}
2528	if off == len(msg) {
2529		return rr, off, nil
2530	}
2531	rr.SaltLength, off, err = unpackUint8(msg, off)
2532	if err != nil {
2533		return rr, off, err
2534	}
2535	if off == len(msg) {
2536		return rr, off, nil
2537	}
2538	rr.Salt, off, err = unpackStringHex(msg, off, off+int(rr.SaltLength))
2539	if err != nil {
2540		return rr, off, err
2541	}
2542	rr.HashLength, off, err = unpackUint8(msg, off)
2543	if err != nil {
2544		return rr, off, err
2545	}
2546	if off == len(msg) {
2547		return rr, off, nil
2548	}
2549	rr.NextDomain, off, err = unpackStringBase32(msg, off, off+int(rr.HashLength))
2550	if err != nil {
2551		return rr, off, err
2552	}
2553	rr.TypeBitMap, off, err = unpackDataNsec(msg, off)
2554	if err != nil {
2555		return rr, off, err
2556	}
2557	return rr, off, err
2558}
2559
2560func unpackNSEC3PARAM(h RR_Header, msg []byte, off int) (RR, int, error) {
2561	rr := new(NSEC3PARAM)
2562	rr.Hdr = h
2563	if noRdata(h) {
2564		return rr, off, nil
2565	}
2566	var err error
2567	rdStart := off
2568	_ = rdStart
2569
2570	rr.Hash, off, err = unpackUint8(msg, off)
2571	if err != nil {
2572		return rr, off, err
2573	}
2574	if off == len(msg) {
2575		return rr, off, nil
2576	}
2577	rr.Flags, off, err = unpackUint8(msg, off)
2578	if err != nil {
2579		return rr, off, err
2580	}
2581	if off == len(msg) {
2582		return rr, off, nil
2583	}
2584	rr.Iterations, off, err = unpackUint16(msg, off)
2585	if err != nil {
2586		return rr, off, err
2587	}
2588	if off == len(msg) {
2589		return rr, off, nil
2590	}
2591	rr.SaltLength, off, err = unpackUint8(msg, off)
2592	if err != nil {
2593		return rr, off, err
2594	}
2595	if off == len(msg) {
2596		return rr, off, nil
2597	}
2598	rr.Salt, off, err = unpackStringHex(msg, off, off+int(rr.SaltLength))
2599	if err != nil {
2600		return rr, off, err
2601	}
2602	return rr, off, err
2603}
2604
2605func unpackOPENPGPKEY(h RR_Header, msg []byte, off int) (RR, int, error) {
2606	rr := new(OPENPGPKEY)
2607	rr.Hdr = h
2608	if noRdata(h) {
2609		return rr, off, nil
2610	}
2611	var err error
2612	rdStart := off
2613	_ = rdStart
2614
2615	rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
2616	if err != nil {
2617		return rr, off, err
2618	}
2619	return rr, off, err
2620}
2621
2622func unpackOPT(h RR_Header, msg []byte, off int) (RR, int, error) {
2623	rr := new(OPT)
2624	rr.Hdr = h
2625	if noRdata(h) {
2626		return rr, off, nil
2627	}
2628	var err error
2629	rdStart := off
2630	_ = rdStart
2631
2632	rr.Option, off, err = unpackDataOpt(msg, off)
2633	if err != nil {
2634		return rr, off, err
2635	}
2636	return rr, off, err
2637}
2638
2639func unpackPTR(h RR_Header, msg []byte, off int) (RR, int, error) {
2640	rr := new(PTR)
2641	rr.Hdr = h
2642	if noRdata(h) {
2643		return rr, off, nil
2644	}
2645	var err error
2646	rdStart := off
2647	_ = rdStart
2648
2649	rr.Ptr, off, err = UnpackDomainName(msg, off)
2650	if err != nil {
2651		return rr, off, err
2652	}
2653	return rr, off, err
2654}
2655
2656func unpackPX(h RR_Header, msg []byte, off int) (RR, int, error) {
2657	rr := new(PX)
2658	rr.Hdr = h
2659	if noRdata(h) {
2660		return rr, off, nil
2661	}
2662	var err error
2663	rdStart := off
2664	_ = rdStart
2665
2666	rr.Preference, off, err = unpackUint16(msg, off)
2667	if err != nil {
2668		return rr, off, err
2669	}
2670	if off == len(msg) {
2671		return rr, off, nil
2672	}
2673	rr.Map822, off, err = UnpackDomainName(msg, off)
2674	if err != nil {
2675		return rr, off, err
2676	}
2677	if off == len(msg) {
2678		return rr, off, nil
2679	}
2680	rr.Mapx400, off, err = UnpackDomainName(msg, off)
2681	if err != nil {
2682		return rr, off, err
2683	}
2684	return rr, off, err
2685}
2686
2687func unpackRFC3597(h RR_Header, msg []byte, off int) (RR, int, error) {
2688	rr := new(RFC3597)
2689	rr.Hdr = h
2690	if noRdata(h) {
2691		return rr, off, nil
2692	}
2693	var err error
2694	rdStart := off
2695	_ = rdStart
2696
2697	rr.Rdata, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
2698	if err != nil {
2699		return rr, off, err
2700	}
2701	return rr, off, err
2702}
2703
2704func unpackRKEY(h RR_Header, msg []byte, off int) (RR, int, error) {
2705	rr := new(RKEY)
2706	rr.Hdr = h
2707	if noRdata(h) {
2708		return rr, off, nil
2709	}
2710	var err error
2711	rdStart := off
2712	_ = rdStart
2713
2714	rr.Flags, off, err = unpackUint16(msg, off)
2715	if err != nil {
2716		return rr, off, err
2717	}
2718	if off == len(msg) {
2719		return rr, off, nil
2720	}
2721	rr.Protocol, off, err = unpackUint8(msg, off)
2722	if err != nil {
2723		return rr, off, err
2724	}
2725	if off == len(msg) {
2726		return rr, off, nil
2727	}
2728	rr.Algorithm, off, err = unpackUint8(msg, off)
2729	if err != nil {
2730		return rr, off, err
2731	}
2732	if off == len(msg) {
2733		return rr, off, nil
2734	}
2735	rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
2736	if err != nil {
2737		return rr, off, err
2738	}
2739	return rr, off, err
2740}
2741
2742func unpackRP(h RR_Header, msg []byte, off int) (RR, int, error) {
2743	rr := new(RP)
2744	rr.Hdr = h
2745	if noRdata(h) {
2746		return rr, off, nil
2747	}
2748	var err error
2749	rdStart := off
2750	_ = rdStart
2751
2752	rr.Mbox, off, err = UnpackDomainName(msg, off)
2753	if err != nil {
2754		return rr, off, err
2755	}
2756	if off == len(msg) {
2757		return rr, off, nil
2758	}
2759	rr.Txt, off, err = UnpackDomainName(msg, off)
2760	if err != nil {
2761		return rr, off, err
2762	}
2763	return rr, off, err
2764}
2765
2766func unpackRRSIG(h RR_Header, msg []byte, off int) (RR, int, error) {
2767	rr := new(RRSIG)
2768	rr.Hdr = h
2769	if noRdata(h) {
2770		return rr, off, nil
2771	}
2772	var err error
2773	rdStart := off
2774	_ = rdStart
2775
2776	rr.TypeCovered, off, err = unpackUint16(msg, off)
2777	if err != nil {
2778		return rr, off, err
2779	}
2780	if off == len(msg) {
2781		return rr, off, nil
2782	}
2783	rr.Algorithm, off, err = unpackUint8(msg, off)
2784	if err != nil {
2785		return rr, off, err
2786	}
2787	if off == len(msg) {
2788		return rr, off, nil
2789	}
2790	rr.Labels, off, err = unpackUint8(msg, off)
2791	if err != nil {
2792		return rr, off, err
2793	}
2794	if off == len(msg) {
2795		return rr, off, nil
2796	}
2797	rr.OrigTtl, off, err = unpackUint32(msg, off)
2798	if err != nil {
2799		return rr, off, err
2800	}
2801	if off == len(msg) {
2802		return rr, off, nil
2803	}
2804	rr.Expiration, off, err = unpackUint32(msg, off)
2805	if err != nil {
2806		return rr, off, err
2807	}
2808	if off == len(msg) {
2809		return rr, off, nil
2810	}
2811	rr.Inception, off, err = unpackUint32(msg, off)
2812	if err != nil {
2813		return rr, off, err
2814	}
2815	if off == len(msg) {
2816		return rr, off, nil
2817	}
2818	rr.KeyTag, off, err = unpackUint16(msg, off)
2819	if err != nil {
2820		return rr, off, err
2821	}
2822	if off == len(msg) {
2823		return rr, off, nil
2824	}
2825	rr.SignerName, off, err = UnpackDomainName(msg, off)
2826	if err != nil {
2827		return rr, off, err
2828	}
2829	if off == len(msg) {
2830		return rr, off, nil
2831	}
2832	rr.Signature, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
2833	if err != nil {
2834		return rr, off, err
2835	}
2836	return rr, off, err
2837}
2838
2839func unpackRT(h RR_Header, msg []byte, off int) (RR, int, error) {
2840	rr := new(RT)
2841	rr.Hdr = h
2842	if noRdata(h) {
2843		return rr, off, nil
2844	}
2845	var err error
2846	rdStart := off
2847	_ = rdStart
2848
2849	rr.Preference, off, err = unpackUint16(msg, off)
2850	if err != nil {
2851		return rr, off, err
2852	}
2853	if off == len(msg) {
2854		return rr, off, nil
2855	}
2856	rr.Host, off, err = UnpackDomainName(msg, off)
2857	if err != nil {
2858		return rr, off, err
2859	}
2860	return rr, off, err
2861}
2862
2863func unpackSIG(h RR_Header, msg []byte, off int) (RR, int, error) {
2864	rr := new(SIG)
2865	rr.Hdr = h
2866	if noRdata(h) {
2867		return rr, off, nil
2868	}
2869	var err error
2870	rdStart := off
2871	_ = rdStart
2872
2873	rr.TypeCovered, off, err = unpackUint16(msg, off)
2874	if err != nil {
2875		return rr, off, err
2876	}
2877	if off == len(msg) {
2878		return rr, off, nil
2879	}
2880	rr.Algorithm, off, err = unpackUint8(msg, off)
2881	if err != nil {
2882		return rr, off, err
2883	}
2884	if off == len(msg) {
2885		return rr, off, nil
2886	}
2887	rr.Labels, off, err = unpackUint8(msg, off)
2888	if err != nil {
2889		return rr, off, err
2890	}
2891	if off == len(msg) {
2892		return rr, off, nil
2893	}
2894	rr.OrigTtl, off, err = unpackUint32(msg, off)
2895	if err != nil {
2896		return rr, off, err
2897	}
2898	if off == len(msg) {
2899		return rr, off, nil
2900	}
2901	rr.Expiration, off, err = unpackUint32(msg, off)
2902	if err != nil {
2903		return rr, off, err
2904	}
2905	if off == len(msg) {
2906		return rr, off, nil
2907	}
2908	rr.Inception, off, err = unpackUint32(msg, off)
2909	if err != nil {
2910		return rr, off, err
2911	}
2912	if off == len(msg) {
2913		return rr, off, nil
2914	}
2915	rr.KeyTag, off, err = unpackUint16(msg, off)
2916	if err != nil {
2917		return rr, off, err
2918	}
2919	if off == len(msg) {
2920		return rr, off, nil
2921	}
2922	rr.SignerName, off, err = UnpackDomainName(msg, off)
2923	if err != nil {
2924		return rr, off, err
2925	}
2926	if off == len(msg) {
2927		return rr, off, nil
2928	}
2929	rr.Signature, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
2930	if err != nil {
2931		return rr, off, err
2932	}
2933	return rr, off, err
2934}
2935
2936func unpackSMIMEA(h RR_Header, msg []byte, off int) (RR, int, error) {
2937	rr := new(SMIMEA)
2938	rr.Hdr = h
2939	if noRdata(h) {
2940		return rr, off, nil
2941	}
2942	var err error
2943	rdStart := off
2944	_ = rdStart
2945
2946	rr.Usage, off, err = unpackUint8(msg, off)
2947	if err != nil {
2948		return rr, off, err
2949	}
2950	if off == len(msg) {
2951		return rr, off, nil
2952	}
2953	rr.Selector, off, err = unpackUint8(msg, off)
2954	if err != nil {
2955		return rr, off, err
2956	}
2957	if off == len(msg) {
2958		return rr, off, nil
2959	}
2960	rr.MatchingType, off, err = unpackUint8(msg, off)
2961	if err != nil {
2962		return rr, off, err
2963	}
2964	if off == len(msg) {
2965		return rr, off, nil
2966	}
2967	rr.Certificate, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
2968	if err != nil {
2969		return rr, off, err
2970	}
2971	return rr, off, err
2972}
2973
2974func unpackSOA(h RR_Header, msg []byte, off int) (RR, int, error) {
2975	rr := new(SOA)
2976	rr.Hdr = h
2977	if noRdata(h) {
2978		return rr, off, nil
2979	}
2980	var err error
2981	rdStart := off
2982	_ = rdStart
2983
2984	rr.Ns, off, err = UnpackDomainName(msg, off)
2985	if err != nil {
2986		return rr, off, err
2987	}
2988	if off == len(msg) {
2989		return rr, off, nil
2990	}
2991	rr.Mbox, off, err = UnpackDomainName(msg, off)
2992	if err != nil {
2993		return rr, off, err
2994	}
2995	if off == len(msg) {
2996		return rr, off, nil
2997	}
2998	rr.Serial, off, err = unpackUint32(msg, off)
2999	if err != nil {
3000		return rr, off, err
3001	}
3002	if off == len(msg) {
3003		return rr, off, nil
3004	}
3005	rr.Refresh, off, err = unpackUint32(msg, off)
3006	if err != nil {
3007		return rr, off, err
3008	}
3009	if off == len(msg) {
3010		return rr, off, nil
3011	}
3012	rr.Retry, off, err = unpackUint32(msg, off)
3013	if err != nil {
3014		return rr, off, err
3015	}
3016	if off == len(msg) {
3017		return rr, off, nil
3018	}
3019	rr.Expire, off, err = unpackUint32(msg, off)
3020	if err != nil {
3021		return rr, off, err
3022	}
3023	if off == len(msg) {
3024		return rr, off, nil
3025	}
3026	rr.Minttl, off, err = unpackUint32(msg, off)
3027	if err != nil {
3028		return rr, off, err
3029	}
3030	return rr, off, err
3031}
3032
3033func unpackSPF(h RR_Header, msg []byte, off int) (RR, int, error) {
3034	rr := new(SPF)
3035	rr.Hdr = h
3036	if noRdata(h) {
3037		return rr, off, nil
3038	}
3039	var err error
3040	rdStart := off
3041	_ = rdStart
3042
3043	rr.Txt, off, err = unpackStringTxt(msg, off)
3044	if err != nil {
3045		return rr, off, err
3046	}
3047	return rr, off, err
3048}
3049
3050func unpackSRV(h RR_Header, msg []byte, off int) (RR, int, error) {
3051	rr := new(SRV)
3052	rr.Hdr = h
3053	if noRdata(h) {
3054		return rr, off, nil
3055	}
3056	var err error
3057	rdStart := off
3058	_ = rdStart
3059
3060	rr.Priority, off, err = unpackUint16(msg, off)
3061	if err != nil {
3062		return rr, off, err
3063	}
3064	if off == len(msg) {
3065		return rr, off, nil
3066	}
3067	rr.Weight, off, err = unpackUint16(msg, off)
3068	if err != nil {
3069		return rr, off, err
3070	}
3071	if off == len(msg) {
3072		return rr, off, nil
3073	}
3074	rr.Port, off, err = unpackUint16(msg, off)
3075	if err != nil {
3076		return rr, off, err
3077	}
3078	if off == len(msg) {
3079		return rr, off, nil
3080	}
3081	rr.Target, off, err = UnpackDomainName(msg, off)
3082	if err != nil {
3083		return rr, off, err
3084	}
3085	return rr, off, err
3086}
3087
3088func unpackSSHFP(h RR_Header, msg []byte, off int) (RR, int, error) {
3089	rr := new(SSHFP)
3090	rr.Hdr = h
3091	if noRdata(h) {
3092		return rr, off, nil
3093	}
3094	var err error
3095	rdStart := off
3096	_ = rdStart
3097
3098	rr.Algorithm, off, err = unpackUint8(msg, off)
3099	if err != nil {
3100		return rr, off, err
3101	}
3102	if off == len(msg) {
3103		return rr, off, nil
3104	}
3105	rr.Type, off, err = unpackUint8(msg, off)
3106	if err != nil {
3107		return rr, off, err
3108	}
3109	if off == len(msg) {
3110		return rr, off, nil
3111	}
3112	rr.FingerPrint, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
3113	if err != nil {
3114		return rr, off, err
3115	}
3116	return rr, off, err
3117}
3118
3119func unpackTA(h RR_Header, msg []byte, off int) (RR, int, error) {
3120	rr := new(TA)
3121	rr.Hdr = h
3122	if noRdata(h) {
3123		return rr, off, nil
3124	}
3125	var err error
3126	rdStart := off
3127	_ = rdStart
3128
3129	rr.KeyTag, off, err = unpackUint16(msg, off)
3130	if err != nil {
3131		return rr, off, err
3132	}
3133	if off == len(msg) {
3134		return rr, off, nil
3135	}
3136	rr.Algorithm, off, err = unpackUint8(msg, off)
3137	if err != nil {
3138		return rr, off, err
3139	}
3140	if off == len(msg) {
3141		return rr, off, nil
3142	}
3143	rr.DigestType, off, err = unpackUint8(msg, off)
3144	if err != nil {
3145		return rr, off, err
3146	}
3147	if off == len(msg) {
3148		return rr, off, nil
3149	}
3150	rr.Digest, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
3151	if err != nil {
3152		return rr, off, err
3153	}
3154	return rr, off, err
3155}
3156
3157func unpackTALINK(h RR_Header, msg []byte, off int) (RR, int, error) {
3158	rr := new(TALINK)
3159	rr.Hdr = h
3160	if noRdata(h) {
3161		return rr, off, nil
3162	}
3163	var err error
3164	rdStart := off
3165	_ = rdStart
3166
3167	rr.PreviousName, off, err = UnpackDomainName(msg, off)
3168	if err != nil {
3169		return rr, off, err
3170	}
3171	if off == len(msg) {
3172		return rr, off, nil
3173	}
3174	rr.NextName, off, err = UnpackDomainName(msg, off)
3175	if err != nil {
3176		return rr, off, err
3177	}
3178	return rr, off, err
3179}
3180
3181func unpackTKEY(h RR_Header, msg []byte, off int) (RR, int, error) {
3182	rr := new(TKEY)
3183	rr.Hdr = h
3184	if noRdata(h) {
3185		return rr, off, nil
3186	}
3187	var err error
3188	rdStart := off
3189	_ = rdStart
3190
3191	rr.Algorithm, off, err = UnpackDomainName(msg, off)
3192	if err != nil {
3193		return rr, off, err
3194	}
3195	if off == len(msg) {
3196		return rr, off, nil
3197	}
3198	rr.Inception, off, err = unpackUint32(msg, off)
3199	if err != nil {
3200		return rr, off, err
3201	}
3202	if off == len(msg) {
3203		return rr, off, nil
3204	}
3205	rr.Expiration, off, err = unpackUint32(msg, off)
3206	if err != nil {
3207		return rr, off, err
3208	}
3209	if off == len(msg) {
3210		return rr, off, nil
3211	}
3212	rr.Mode, off, err = unpackUint16(msg, off)
3213	if err != nil {
3214		return rr, off, err
3215	}
3216	if off == len(msg) {
3217		return rr, off, nil
3218	}
3219	rr.Error, off, err = unpackUint16(msg, off)
3220	if err != nil {
3221		return rr, off, err
3222	}
3223	if off == len(msg) {
3224		return rr, off, nil
3225	}
3226	rr.KeySize, off, err = unpackUint16(msg, off)
3227	if err != nil {
3228		return rr, off, err
3229	}
3230	if off == len(msg) {
3231		return rr, off, nil
3232	}
3233	rr.Key, off, err = unpackString(msg, off)
3234	if err != nil {
3235		return rr, off, err
3236	}
3237	if off == len(msg) {
3238		return rr, off, nil
3239	}
3240	rr.OtherLen, off, err = unpackUint16(msg, off)
3241	if err != nil {
3242		return rr, off, err
3243	}
3244	if off == len(msg) {
3245		return rr, off, nil
3246	}
3247	rr.OtherData, off, err = unpackString(msg, off)
3248	if err != nil {
3249		return rr, off, err
3250	}
3251	return rr, off, err
3252}
3253
3254func unpackTLSA(h RR_Header, msg []byte, off int) (RR, int, error) {
3255	rr := new(TLSA)
3256	rr.Hdr = h
3257	if noRdata(h) {
3258		return rr, off, nil
3259	}
3260	var err error
3261	rdStart := off
3262	_ = rdStart
3263
3264	rr.Usage, off, err = unpackUint8(msg, off)
3265	if err != nil {
3266		return rr, off, err
3267	}
3268	if off == len(msg) {
3269		return rr, off, nil
3270	}
3271	rr.Selector, off, err = unpackUint8(msg, off)
3272	if err != nil {
3273		return rr, off, err
3274	}
3275	if off == len(msg) {
3276		return rr, off, nil
3277	}
3278	rr.MatchingType, off, err = unpackUint8(msg, off)
3279	if err != nil {
3280		return rr, off, err
3281	}
3282	if off == len(msg) {
3283		return rr, off, nil
3284	}
3285	rr.Certificate, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
3286	if err != nil {
3287		return rr, off, err
3288	}
3289	return rr, off, err
3290}
3291
3292func unpackTSIG(h RR_Header, msg []byte, off int) (RR, int, error) {
3293	rr := new(TSIG)
3294	rr.Hdr = h
3295	if noRdata(h) {
3296		return rr, off, nil
3297	}
3298	var err error
3299	rdStart := off
3300	_ = rdStart
3301
3302	rr.Algorithm, off, err = UnpackDomainName(msg, off)
3303	if err != nil {
3304		return rr, off, err
3305	}
3306	if off == len(msg) {
3307		return rr, off, nil
3308	}
3309	rr.TimeSigned, off, err = unpackUint48(msg, off)
3310	if err != nil {
3311		return rr, off, err
3312	}
3313	if off == len(msg) {
3314		return rr, off, nil
3315	}
3316	rr.Fudge, off, err = unpackUint16(msg, off)
3317	if err != nil {
3318		return rr, off, err
3319	}
3320	if off == len(msg) {
3321		return rr, off, nil
3322	}
3323	rr.MACSize, off, err = unpackUint16(msg, off)
3324	if err != nil {
3325		return rr, off, err
3326	}
3327	if off == len(msg) {
3328		return rr, off, nil
3329	}
3330	rr.MAC, off, err = unpackStringHex(msg, off, off+int(rr.MACSize))
3331	if err != nil {
3332		return rr, off, err
3333	}
3334	rr.OrigId, off, err = unpackUint16(msg, off)
3335	if err != nil {
3336		return rr, off, err
3337	}
3338	if off == len(msg) {
3339		return rr, off, nil
3340	}
3341	rr.Error, off, err = unpackUint16(msg, off)
3342	if err != nil {
3343		return rr, off, err
3344	}
3345	if off == len(msg) {
3346		return rr, off, nil
3347	}
3348	rr.OtherLen, off, err = unpackUint16(msg, off)
3349	if err != nil {
3350		return rr, off, err
3351	}
3352	if off == len(msg) {
3353		return rr, off, nil
3354	}
3355	rr.OtherData, off, err = unpackStringHex(msg, off, off+int(rr.OtherLen))
3356	if err != nil {
3357		return rr, off, err
3358	}
3359	return rr, off, err
3360}
3361
3362func unpackTXT(h RR_Header, msg []byte, off int) (RR, int, error) {
3363	rr := new(TXT)
3364	rr.Hdr = h
3365	if noRdata(h) {
3366		return rr, off, nil
3367	}
3368	var err error
3369	rdStart := off
3370	_ = rdStart
3371
3372	rr.Txt, off, err = unpackStringTxt(msg, off)
3373	if err != nil {
3374		return rr, off, err
3375	}
3376	return rr, off, err
3377}
3378
3379func unpackUID(h RR_Header, msg []byte, off int) (RR, int, error) {
3380	rr := new(UID)
3381	rr.Hdr = h
3382	if noRdata(h) {
3383		return rr, off, nil
3384	}
3385	var err error
3386	rdStart := off
3387	_ = rdStart
3388
3389	rr.Uid, off, err = unpackUint32(msg, off)
3390	if err != nil {
3391		return rr, off, err
3392	}
3393	return rr, off, err
3394}
3395
3396func unpackUINFO(h RR_Header, msg []byte, off int) (RR, int, error) {
3397	rr := new(UINFO)
3398	rr.Hdr = h
3399	if noRdata(h) {
3400		return rr, off, nil
3401	}
3402	var err error
3403	rdStart := off
3404	_ = rdStart
3405
3406	rr.Uinfo, off, err = unpackString(msg, off)
3407	if err != nil {
3408		return rr, off, err
3409	}
3410	return rr, off, err
3411}
3412
3413func unpackURI(h RR_Header, msg []byte, off int) (RR, int, error) {
3414	rr := new(URI)
3415	rr.Hdr = h
3416	if noRdata(h) {
3417		return rr, off, nil
3418	}
3419	var err error
3420	rdStart := off
3421	_ = rdStart
3422
3423	rr.Priority, off, err = unpackUint16(msg, off)
3424	if err != nil {
3425		return rr, off, err
3426	}
3427	if off == len(msg) {
3428		return rr, off, nil
3429	}
3430	rr.Weight, off, err = unpackUint16(msg, off)
3431	if err != nil {
3432		return rr, off, err
3433	}
3434	if off == len(msg) {
3435		return rr, off, nil
3436	}
3437	rr.Target, off, err = unpackStringOctet(msg, off)
3438	if err != nil {
3439		return rr, off, err
3440	}
3441	return rr, off, err
3442}
3443
3444func unpackX25(h RR_Header, msg []byte, off int) (RR, int, error) {
3445	rr := new(X25)
3446	rr.Hdr = h
3447	if noRdata(h) {
3448		return rr, off, nil
3449	}
3450	var err error
3451	rdStart := off
3452	_ = rdStart
3453
3454	rr.PSDNAddress, off, err = unpackString(msg, off)
3455	if err != nil {
3456		return rr, off, err
3457	}
3458	return rr, off, err
3459}
3460
3461var typeToUnpack = map[uint16]func(RR_Header, []byte, int) (RR, int, error){
3462	TypeA:          unpackA,
3463	TypeAAAA:       unpackAAAA,
3464	TypeAFSDB:      unpackAFSDB,
3465	TypeANY:        unpackANY,
3466	TypeCAA:        unpackCAA,
3467	TypeCDNSKEY:    unpackCDNSKEY,
3468	TypeCDS:        unpackCDS,
3469	TypeCERT:       unpackCERT,
3470	TypeCNAME:      unpackCNAME,
3471	TypeDHCID:      unpackDHCID,
3472	TypeDLV:        unpackDLV,
3473	TypeDNAME:      unpackDNAME,
3474	TypeDNSKEY:     unpackDNSKEY,
3475	TypeDS:         unpackDS,
3476	TypeEID:        unpackEID,
3477	TypeEUI48:      unpackEUI48,
3478	TypeEUI64:      unpackEUI64,
3479	TypeGID:        unpackGID,
3480	TypeGPOS:       unpackGPOS,
3481	TypeHINFO:      unpackHINFO,
3482	TypeHIP:        unpackHIP,
3483	TypeKEY:        unpackKEY,
3484	TypeKX:         unpackKX,
3485	TypeL32:        unpackL32,
3486	TypeL64:        unpackL64,
3487	TypeLOC:        unpackLOC,
3488	TypeLP:         unpackLP,
3489	TypeMB:         unpackMB,
3490	TypeMD:         unpackMD,
3491	TypeMF:         unpackMF,
3492	TypeMG:         unpackMG,
3493	TypeMINFO:      unpackMINFO,
3494	TypeMR:         unpackMR,
3495	TypeMX:         unpackMX,
3496	TypeNAPTR:      unpackNAPTR,
3497	TypeNID:        unpackNID,
3498	TypeNIMLOC:     unpackNIMLOC,
3499	TypeNINFO:      unpackNINFO,
3500	TypeNS:         unpackNS,
3501	TypeNSAPPTR:    unpackNSAPPTR,
3502	TypeNSEC:       unpackNSEC,
3503	TypeNSEC3:      unpackNSEC3,
3504	TypeNSEC3PARAM: unpackNSEC3PARAM,
3505	TypeOPENPGPKEY: unpackOPENPGPKEY,
3506	TypeOPT:        unpackOPT,
3507	TypePTR:        unpackPTR,
3508	TypePX:         unpackPX,
3509	TypeRKEY:       unpackRKEY,
3510	TypeRP:         unpackRP,
3511	TypeRRSIG:      unpackRRSIG,
3512	TypeRT:         unpackRT,
3513	TypeSIG:        unpackSIG,
3514	TypeSMIMEA:     unpackSMIMEA,
3515	TypeSOA:        unpackSOA,
3516	TypeSPF:        unpackSPF,
3517	TypeSRV:        unpackSRV,
3518	TypeSSHFP:      unpackSSHFP,
3519	TypeTA:         unpackTA,
3520	TypeTALINK:     unpackTALINK,
3521	TypeTKEY:       unpackTKEY,
3522	TypeTLSA:       unpackTLSA,
3523	TypeTSIG:       unpackTSIG,
3524	TypeTXT:        unpackTXT,
3525	TypeUID:        unpackUID,
3526	TypeUINFO:      unpackUINFO,
3527	TypeURI:        unpackURI,
3528	TypeX25:        unpackX25,
3529}
3530