1// *** DO NOT MODIFY ***
2// AUTOGENERATED BY go generate from type_generate.go
3
4package dns
5
6import (
7	"encoding/base64"
8	"net"
9)
10
11// TypeToRR is a map of constructors for each RR type.
12var TypeToRR = map[uint16]func() RR{
13	TypeA:          func() RR { return new(A) },
14	TypeAAAA:       func() RR { return new(AAAA) },
15	TypeAFSDB:      func() RR { return new(AFSDB) },
16	TypeANY:        func() RR { return new(ANY) },
17	TypeCAA:        func() RR { return new(CAA) },
18	TypeCDNSKEY:    func() RR { return new(CDNSKEY) },
19	TypeCDS:        func() RR { return new(CDS) },
20	TypeCERT:       func() RR { return new(CERT) },
21	TypeCNAME:      func() RR { return new(CNAME) },
22	TypeDHCID:      func() RR { return new(DHCID) },
23	TypeDLV:        func() RR { return new(DLV) },
24	TypeDNAME:      func() RR { return new(DNAME) },
25	TypeDNSKEY:     func() RR { return new(DNSKEY) },
26	TypeDS:         func() RR { return new(DS) },
27	TypeEID:        func() RR { return new(EID) },
28	TypeEUI48:      func() RR { return new(EUI48) },
29	TypeEUI64:      func() RR { return new(EUI64) },
30	TypeGID:        func() RR { return new(GID) },
31	TypeGPOS:       func() RR { return new(GPOS) },
32	TypeHINFO:      func() RR { return new(HINFO) },
33	TypeHIP:        func() RR { return new(HIP) },
34	TypeKEY:        func() RR { return new(KEY) },
35	TypeKX:         func() RR { return new(KX) },
36	TypeL32:        func() RR { return new(L32) },
37	TypeL64:        func() RR { return new(L64) },
38	TypeLOC:        func() RR { return new(LOC) },
39	TypeLP:         func() RR { return new(LP) },
40	TypeMB:         func() RR { return new(MB) },
41	TypeMD:         func() RR { return new(MD) },
42	TypeMF:         func() RR { return new(MF) },
43	TypeMG:         func() RR { return new(MG) },
44	TypeMINFO:      func() RR { return new(MINFO) },
45	TypeMR:         func() RR { return new(MR) },
46	TypeMX:         func() RR { return new(MX) },
47	TypeNAPTR:      func() RR { return new(NAPTR) },
48	TypeNID:        func() RR { return new(NID) },
49	TypeNIMLOC:     func() RR { return new(NIMLOC) },
50	TypeNINFO:      func() RR { return new(NINFO) },
51	TypeNS:         func() RR { return new(NS) },
52	TypeNSAPPTR:    func() RR { return new(NSAPPTR) },
53	TypeNSEC:       func() RR { return new(NSEC) },
54	TypeNSEC3:      func() RR { return new(NSEC3) },
55	TypeNSEC3PARAM: func() RR { return new(NSEC3PARAM) },
56	TypeOPENPGPKEY: func() RR { return new(OPENPGPKEY) },
57	TypeOPT:        func() RR { return new(OPT) },
58	TypePTR:        func() RR { return new(PTR) },
59	TypePX:         func() RR { return new(PX) },
60	TypeRKEY:       func() RR { return new(RKEY) },
61	TypeRP:         func() RR { return new(RP) },
62	TypeRRSIG:      func() RR { return new(RRSIG) },
63	TypeRT:         func() RR { return new(RT) },
64	TypeSIG:        func() RR { return new(SIG) },
65	TypeSMIMEA:     func() RR { return new(SMIMEA) },
66	TypeSOA:        func() RR { return new(SOA) },
67	TypeSPF:        func() RR { return new(SPF) },
68	TypeSRV:        func() RR { return new(SRV) },
69	TypeSSHFP:      func() RR { return new(SSHFP) },
70	TypeTA:         func() RR { return new(TA) },
71	TypeTALINK:     func() RR { return new(TALINK) },
72	TypeTKEY:       func() RR { return new(TKEY) },
73	TypeTLSA:       func() RR { return new(TLSA) },
74	TypeTSIG:       func() RR { return new(TSIG) },
75	TypeTXT:        func() RR { return new(TXT) },
76	TypeUID:        func() RR { return new(UID) },
77	TypeUINFO:      func() RR { return new(UINFO) },
78	TypeURI:        func() RR { return new(URI) },
79	TypeX25:        func() RR { return new(X25) },
80}
81
82// TypeToString is a map of strings for each RR type.
83var TypeToString = map[uint16]string{
84	TypeA:          "A",
85	TypeAAAA:       "AAAA",
86	TypeAFSDB:      "AFSDB",
87	TypeANY:        "ANY",
88	TypeATMA:       "ATMA",
89	TypeAXFR:       "AXFR",
90	TypeCAA:        "CAA",
91	TypeCDNSKEY:    "CDNSKEY",
92	TypeCDS:        "CDS",
93	TypeCERT:       "CERT",
94	TypeCNAME:      "CNAME",
95	TypeDHCID:      "DHCID",
96	TypeDLV:        "DLV",
97	TypeDNAME:      "DNAME",
98	TypeDNSKEY:     "DNSKEY",
99	TypeDS:         "DS",
100	TypeEID:        "EID",
101	TypeEUI48:      "EUI48",
102	TypeEUI64:      "EUI64",
103	TypeGID:        "GID",
104	TypeGPOS:       "GPOS",
105	TypeHINFO:      "HINFO",
106	TypeHIP:        "HIP",
107	TypeISDN:       "ISDN",
108	TypeIXFR:       "IXFR",
109	TypeKEY:        "KEY",
110	TypeKX:         "KX",
111	TypeL32:        "L32",
112	TypeL64:        "L64",
113	TypeLOC:        "LOC",
114	TypeLP:         "LP",
115	TypeMAILA:      "MAILA",
116	TypeMAILB:      "MAILB",
117	TypeMB:         "MB",
118	TypeMD:         "MD",
119	TypeMF:         "MF",
120	TypeMG:         "MG",
121	TypeMINFO:      "MINFO",
122	TypeMR:         "MR",
123	TypeMX:         "MX",
124	TypeNAPTR:      "NAPTR",
125	TypeNID:        "NID",
126	TypeNIMLOC:     "NIMLOC",
127	TypeNINFO:      "NINFO",
128	TypeNS:         "NS",
129	TypeNSEC:       "NSEC",
130	TypeNSEC3:      "NSEC3",
131	TypeNSEC3PARAM: "NSEC3PARAM",
132	TypeNULL:       "NULL",
133	TypeNXT:        "NXT",
134	TypeNone:       "None",
135	TypeOPENPGPKEY: "OPENPGPKEY",
136	TypeOPT:        "OPT",
137	TypePTR:        "PTR",
138	TypePX:         "PX",
139	TypeRKEY:       "RKEY",
140	TypeRP:         "RP",
141	TypeRRSIG:      "RRSIG",
142	TypeRT:         "RT",
143	TypeReserved:   "Reserved",
144	TypeSIG:        "SIG",
145	TypeSMIMEA:     "SMIMEA",
146	TypeSOA:        "SOA",
147	TypeSPF:        "SPF",
148	TypeSRV:        "SRV",
149	TypeSSHFP:      "SSHFP",
150	TypeTA:         "TA",
151	TypeTALINK:     "TALINK",
152	TypeTKEY:       "TKEY",
153	TypeTLSA:       "TLSA",
154	TypeTSIG:       "TSIG",
155	TypeTXT:        "TXT",
156	TypeUID:        "UID",
157	TypeUINFO:      "UINFO",
158	TypeUNSPEC:     "UNSPEC",
159	TypeURI:        "URI",
160	TypeX25:        "X25",
161	TypeNSAPPTR:    "NSAP-PTR",
162}
163
164// Header() functions
165func (rr *A) Header() *RR_Header          { return &rr.Hdr }
166func (rr *AAAA) Header() *RR_Header       { return &rr.Hdr }
167func (rr *AFSDB) Header() *RR_Header      { return &rr.Hdr }
168func (rr *ANY) Header() *RR_Header        { return &rr.Hdr }
169func (rr *CAA) Header() *RR_Header        { return &rr.Hdr }
170func (rr *CDNSKEY) Header() *RR_Header    { return &rr.Hdr }
171func (rr *CDS) Header() *RR_Header        { return &rr.Hdr }
172func (rr *CERT) Header() *RR_Header       { return &rr.Hdr }
173func (rr *CNAME) Header() *RR_Header      { return &rr.Hdr }
174func (rr *DHCID) Header() *RR_Header      { return &rr.Hdr }
175func (rr *DLV) Header() *RR_Header        { return &rr.Hdr }
176func (rr *DNAME) Header() *RR_Header      { return &rr.Hdr }
177func (rr *DNSKEY) Header() *RR_Header     { return &rr.Hdr }
178func (rr *DS) Header() *RR_Header         { return &rr.Hdr }
179func (rr *EID) Header() *RR_Header        { return &rr.Hdr }
180func (rr *EUI48) Header() *RR_Header      { return &rr.Hdr }
181func (rr *EUI64) Header() *RR_Header      { return &rr.Hdr }
182func (rr *GID) Header() *RR_Header        { return &rr.Hdr }
183func (rr *GPOS) Header() *RR_Header       { return &rr.Hdr }
184func (rr *HINFO) Header() *RR_Header      { return &rr.Hdr }
185func (rr *HIP) Header() *RR_Header        { return &rr.Hdr }
186func (rr *KEY) Header() *RR_Header        { return &rr.Hdr }
187func (rr *KX) Header() *RR_Header         { return &rr.Hdr }
188func (rr *L32) Header() *RR_Header        { return &rr.Hdr }
189func (rr *L64) Header() *RR_Header        { return &rr.Hdr }
190func (rr *LOC) Header() *RR_Header        { return &rr.Hdr }
191func (rr *LP) Header() *RR_Header         { return &rr.Hdr }
192func (rr *MB) Header() *RR_Header         { return &rr.Hdr }
193func (rr *MD) Header() *RR_Header         { return &rr.Hdr }
194func (rr *MF) Header() *RR_Header         { return &rr.Hdr }
195func (rr *MG) Header() *RR_Header         { return &rr.Hdr }
196func (rr *MINFO) Header() *RR_Header      { return &rr.Hdr }
197func (rr *MR) Header() *RR_Header         { return &rr.Hdr }
198func (rr *MX) Header() *RR_Header         { return &rr.Hdr }
199func (rr *NAPTR) Header() *RR_Header      { return &rr.Hdr }
200func (rr *NID) Header() *RR_Header        { return &rr.Hdr }
201func (rr *NIMLOC) Header() *RR_Header     { return &rr.Hdr }
202func (rr *NINFO) Header() *RR_Header      { return &rr.Hdr }
203func (rr *NS) Header() *RR_Header         { return &rr.Hdr }
204func (rr *NSAPPTR) Header() *RR_Header    { return &rr.Hdr }
205func (rr *NSEC) Header() *RR_Header       { return &rr.Hdr }
206func (rr *NSEC3) Header() *RR_Header      { return &rr.Hdr }
207func (rr *NSEC3PARAM) Header() *RR_Header { return &rr.Hdr }
208func (rr *OPENPGPKEY) Header() *RR_Header { return &rr.Hdr }
209func (rr *OPT) Header() *RR_Header        { return &rr.Hdr }
210func (rr *PTR) Header() *RR_Header        { return &rr.Hdr }
211func (rr *PX) Header() *RR_Header         { return &rr.Hdr }
212func (rr *RFC3597) Header() *RR_Header    { return &rr.Hdr }
213func (rr *RKEY) Header() *RR_Header       { return &rr.Hdr }
214func (rr *RP) Header() *RR_Header         { return &rr.Hdr }
215func (rr *RRSIG) Header() *RR_Header      { return &rr.Hdr }
216func (rr *RT) Header() *RR_Header         { return &rr.Hdr }
217func (rr *SIG) Header() *RR_Header        { return &rr.Hdr }
218func (rr *SMIMEA) Header() *RR_Header     { return &rr.Hdr }
219func (rr *SOA) Header() *RR_Header        { return &rr.Hdr }
220func (rr *SPF) Header() *RR_Header        { return &rr.Hdr }
221func (rr *SRV) Header() *RR_Header        { return &rr.Hdr }
222func (rr *SSHFP) Header() *RR_Header      { return &rr.Hdr }
223func (rr *TA) Header() *RR_Header         { return &rr.Hdr }
224func (rr *TALINK) Header() *RR_Header     { return &rr.Hdr }
225func (rr *TKEY) Header() *RR_Header       { return &rr.Hdr }
226func (rr *TLSA) Header() *RR_Header       { return &rr.Hdr }
227func (rr *TSIG) Header() *RR_Header       { return &rr.Hdr }
228func (rr *TXT) Header() *RR_Header        { return &rr.Hdr }
229func (rr *UID) Header() *RR_Header        { return &rr.Hdr }
230func (rr *UINFO) Header() *RR_Header      { return &rr.Hdr }
231func (rr *URI) Header() *RR_Header        { return &rr.Hdr }
232func (rr *X25) Header() *RR_Header        { return &rr.Hdr }
233
234// len() functions
235func (rr *A) len() int {
236	l := rr.Hdr.len()
237	l += net.IPv4len // A
238	return l
239}
240func (rr *AAAA) len() int {
241	l := rr.Hdr.len()
242	l += net.IPv6len // AAAA
243	return l
244}
245func (rr *AFSDB) len() int {
246	l := rr.Hdr.len()
247	l += 2 // Subtype
248	l += len(rr.Hostname) + 1
249	return l
250}
251func (rr *ANY) len() int {
252	l := rr.Hdr.len()
253	return l
254}
255func (rr *CAA) len() int {
256	l := rr.Hdr.len()
257	l += 1 // Flag
258	l += len(rr.Tag) + 1
259	l += len(rr.Value)
260	return l
261}
262func (rr *CERT) len() int {
263	l := rr.Hdr.len()
264	l += 2 // Type
265	l += 2 // KeyTag
266	l += 1 // Algorithm
267	l += base64.StdEncoding.DecodedLen(len(rr.Certificate))
268	return l
269}
270func (rr *CNAME) len() int {
271	l := rr.Hdr.len()
272	l += len(rr.Target) + 1
273	return l
274}
275func (rr *DHCID) len() int {
276	l := rr.Hdr.len()
277	l += base64.StdEncoding.DecodedLen(len(rr.Digest))
278	return l
279}
280func (rr *DNAME) len() int {
281	l := rr.Hdr.len()
282	l += len(rr.Target) + 1
283	return l
284}
285func (rr *DNSKEY) len() int {
286	l := rr.Hdr.len()
287	l += 2 // Flags
288	l += 1 // Protocol
289	l += 1 // Algorithm
290	l += base64.StdEncoding.DecodedLen(len(rr.PublicKey))
291	return l
292}
293func (rr *DS) len() int {
294	l := rr.Hdr.len()
295	l += 2 // KeyTag
296	l += 1 // Algorithm
297	l += 1 // DigestType
298	l += len(rr.Digest)/2 + 1
299	return l
300}
301func (rr *EID) len() int {
302	l := rr.Hdr.len()
303	l += len(rr.Endpoint)/2 + 1
304	return l
305}
306func (rr *EUI48) len() int {
307	l := rr.Hdr.len()
308	l += 6 // Address
309	return l
310}
311func (rr *EUI64) len() int {
312	l := rr.Hdr.len()
313	l += 8 // Address
314	return l
315}
316func (rr *GID) len() int {
317	l := rr.Hdr.len()
318	l += 4 // Gid
319	return l
320}
321func (rr *GPOS) len() int {
322	l := rr.Hdr.len()
323	l += len(rr.Longitude) + 1
324	l += len(rr.Latitude) + 1
325	l += len(rr.Altitude) + 1
326	return l
327}
328func (rr *HINFO) len() int {
329	l := rr.Hdr.len()
330	l += len(rr.Cpu) + 1
331	l += len(rr.Os) + 1
332	return l
333}
334func (rr *HIP) len() int {
335	l := rr.Hdr.len()
336	l += 1 // HitLength
337	l += 1 // PublicKeyAlgorithm
338	l += 2 // PublicKeyLength
339	l += len(rr.Hit)/2 + 1
340	l += base64.StdEncoding.DecodedLen(len(rr.PublicKey))
341	for _, x := range rr.RendezvousServers {
342		l += len(x) + 1
343	}
344	return l
345}
346func (rr *KX) len() int {
347	l := rr.Hdr.len()
348	l += 2 // Preference
349	l += len(rr.Exchanger) + 1
350	return l
351}
352func (rr *L32) len() int {
353	l := rr.Hdr.len()
354	l += 2           // Preference
355	l += net.IPv4len // Locator32
356	return l
357}
358func (rr *L64) len() int {
359	l := rr.Hdr.len()
360	l += 2 // Preference
361	l += 8 // Locator64
362	return l
363}
364func (rr *LOC) len() int {
365	l := rr.Hdr.len()
366	l += 1 // Version
367	l += 1 // Size
368	l += 1 // HorizPre
369	l += 1 // VertPre
370	l += 4 // Latitude
371	l += 4 // Longitude
372	l += 4 // Altitude
373	return l
374}
375func (rr *LP) len() int {
376	l := rr.Hdr.len()
377	l += 2 // Preference
378	l += len(rr.Fqdn) + 1
379	return l
380}
381func (rr *MB) len() int {
382	l := rr.Hdr.len()
383	l += len(rr.Mb) + 1
384	return l
385}
386func (rr *MD) len() int {
387	l := rr.Hdr.len()
388	l += len(rr.Md) + 1
389	return l
390}
391func (rr *MF) len() int {
392	l := rr.Hdr.len()
393	l += len(rr.Mf) + 1
394	return l
395}
396func (rr *MG) len() int {
397	l := rr.Hdr.len()
398	l += len(rr.Mg) + 1
399	return l
400}
401func (rr *MINFO) len() int {
402	l := rr.Hdr.len()
403	l += len(rr.Rmail) + 1
404	l += len(rr.Email) + 1
405	return l
406}
407func (rr *MR) len() int {
408	l := rr.Hdr.len()
409	l += len(rr.Mr) + 1
410	return l
411}
412func (rr *MX) len() int {
413	l := rr.Hdr.len()
414	l += 2 // Preference
415	l += len(rr.Mx) + 1
416	return l
417}
418func (rr *NAPTR) len() int {
419	l := rr.Hdr.len()
420	l += 2 // Order
421	l += 2 // Preference
422	l += len(rr.Flags) + 1
423	l += len(rr.Service) + 1
424	l += len(rr.Regexp) + 1
425	l += len(rr.Replacement) + 1
426	return l
427}
428func (rr *NID) len() int {
429	l := rr.Hdr.len()
430	l += 2 // Preference
431	l += 8 // NodeID
432	return l
433}
434func (rr *NIMLOC) len() int {
435	l := rr.Hdr.len()
436	l += len(rr.Locator)/2 + 1
437	return l
438}
439func (rr *NINFO) len() int {
440	l := rr.Hdr.len()
441	for _, x := range rr.ZSData {
442		l += len(x) + 1
443	}
444	return l
445}
446func (rr *NS) len() int {
447	l := rr.Hdr.len()
448	l += len(rr.Ns) + 1
449	return l
450}
451func (rr *NSAPPTR) len() int {
452	l := rr.Hdr.len()
453	l += len(rr.Ptr) + 1
454	return l
455}
456func (rr *NSEC3PARAM) len() int {
457	l := rr.Hdr.len()
458	l += 1 // Hash
459	l += 1 // Flags
460	l += 2 // Iterations
461	l += 1 // SaltLength
462	l += len(rr.Salt)/2 + 1
463	return l
464}
465func (rr *OPENPGPKEY) len() int {
466	l := rr.Hdr.len()
467	l += base64.StdEncoding.DecodedLen(len(rr.PublicKey))
468	return l
469}
470func (rr *PTR) len() int {
471	l := rr.Hdr.len()
472	l += len(rr.Ptr) + 1
473	return l
474}
475func (rr *PX) len() int {
476	l := rr.Hdr.len()
477	l += 2 // Preference
478	l += len(rr.Map822) + 1
479	l += len(rr.Mapx400) + 1
480	return l
481}
482func (rr *RFC3597) len() int {
483	l := rr.Hdr.len()
484	l += len(rr.Rdata)/2 + 1
485	return l
486}
487func (rr *RKEY) len() int {
488	l := rr.Hdr.len()
489	l += 2 // Flags
490	l += 1 // Protocol
491	l += 1 // Algorithm
492	l += base64.StdEncoding.DecodedLen(len(rr.PublicKey))
493	return l
494}
495func (rr *RP) len() int {
496	l := rr.Hdr.len()
497	l += len(rr.Mbox) + 1
498	l += len(rr.Txt) + 1
499	return l
500}
501func (rr *RRSIG) len() int {
502	l := rr.Hdr.len()
503	l += 2 // TypeCovered
504	l += 1 // Algorithm
505	l += 1 // Labels
506	l += 4 // OrigTtl
507	l += 4 // Expiration
508	l += 4 // Inception
509	l += 2 // KeyTag
510	l += len(rr.SignerName) + 1
511	l += base64.StdEncoding.DecodedLen(len(rr.Signature))
512	return l
513}
514func (rr *RT) len() int {
515	l := rr.Hdr.len()
516	l += 2 // Preference
517	l += len(rr.Host) + 1
518	return l
519}
520func (rr *SMIMEA) len() int {
521	l := rr.Hdr.len()
522	l += 1 // Usage
523	l += 1 // Selector
524	l += 1 // MatchingType
525	l += len(rr.Certificate)/2 + 1
526	return l
527}
528func (rr *SOA) len() int {
529	l := rr.Hdr.len()
530	l += len(rr.Ns) + 1
531	l += len(rr.Mbox) + 1
532	l += 4 // Serial
533	l += 4 // Refresh
534	l += 4 // Retry
535	l += 4 // Expire
536	l += 4 // Minttl
537	return l
538}
539func (rr *SPF) len() int {
540	l := rr.Hdr.len()
541	for _, x := range rr.Txt {
542		l += len(x) + 1
543	}
544	return l
545}
546func (rr *SRV) len() int {
547	l := rr.Hdr.len()
548	l += 2 // Priority
549	l += 2 // Weight
550	l += 2 // Port
551	l += len(rr.Target) + 1
552	return l
553}
554func (rr *SSHFP) len() int {
555	l := rr.Hdr.len()
556	l += 1 // Algorithm
557	l += 1 // Type
558	l += len(rr.FingerPrint)/2 + 1
559	return l
560}
561func (rr *TA) len() int {
562	l := rr.Hdr.len()
563	l += 2 // KeyTag
564	l += 1 // Algorithm
565	l += 1 // DigestType
566	l += len(rr.Digest)/2 + 1
567	return l
568}
569func (rr *TALINK) len() int {
570	l := rr.Hdr.len()
571	l += len(rr.PreviousName) + 1
572	l += len(rr.NextName) + 1
573	return l
574}
575func (rr *TKEY) len() int {
576	l := rr.Hdr.len()
577	l += len(rr.Algorithm) + 1
578	l += 4 // Inception
579	l += 4 // Expiration
580	l += 2 // Mode
581	l += 2 // Error
582	l += 2 // KeySize
583	l += len(rr.Key) + 1
584	l += 2 // OtherLen
585	l += len(rr.OtherData) + 1
586	return l
587}
588func (rr *TLSA) len() int {
589	l := rr.Hdr.len()
590	l += 1 // Usage
591	l += 1 // Selector
592	l += 1 // MatchingType
593	l += len(rr.Certificate)/2 + 1
594	return l
595}
596func (rr *TSIG) len() int {
597	l := rr.Hdr.len()
598	l += len(rr.Algorithm) + 1
599	l += 6 // TimeSigned
600	l += 2 // Fudge
601	l += 2 // MACSize
602	l += len(rr.MAC)/2 + 1
603	l += 2 // OrigId
604	l += 2 // Error
605	l += 2 // OtherLen
606	l += len(rr.OtherData)/2 + 1
607	return l
608}
609func (rr *TXT) len() int {
610	l := rr.Hdr.len()
611	for _, x := range rr.Txt {
612		l += len(x) + 1
613	}
614	return l
615}
616func (rr *UID) len() int {
617	l := rr.Hdr.len()
618	l += 4 // Uid
619	return l
620}
621func (rr *UINFO) len() int {
622	l := rr.Hdr.len()
623	l += len(rr.Uinfo) + 1
624	return l
625}
626func (rr *URI) len() int {
627	l := rr.Hdr.len()
628	l += 2 // Priority
629	l += 2 // Weight
630	l += len(rr.Target)
631	return l
632}
633func (rr *X25) len() int {
634	l := rr.Hdr.len()
635	l += len(rr.PSDNAddress) + 1
636	return l
637}
638
639// copy() functions
640func (rr *A) copy() RR {
641	return &A{*rr.Hdr.copyHeader(), copyIP(rr.A)}
642}
643func (rr *AAAA) copy() RR {
644	return &AAAA{*rr.Hdr.copyHeader(), copyIP(rr.AAAA)}
645}
646func (rr *AFSDB) copy() RR {
647	return &AFSDB{*rr.Hdr.copyHeader(), rr.Subtype, rr.Hostname}
648}
649func (rr *ANY) copy() RR {
650	return &ANY{*rr.Hdr.copyHeader()}
651}
652func (rr *CAA) copy() RR {
653	return &CAA{*rr.Hdr.copyHeader(), rr.Flag, rr.Tag, rr.Value}
654}
655func (rr *CERT) copy() RR {
656	return &CERT{*rr.Hdr.copyHeader(), rr.Type, rr.KeyTag, rr.Algorithm, rr.Certificate}
657}
658func (rr *CNAME) copy() RR {
659	return &CNAME{*rr.Hdr.copyHeader(), rr.Target}
660}
661func (rr *DHCID) copy() RR {
662	return &DHCID{*rr.Hdr.copyHeader(), rr.Digest}
663}
664func (rr *DNAME) copy() RR {
665	return &DNAME{*rr.Hdr.copyHeader(), rr.Target}
666}
667func (rr *DNSKEY) copy() RR {
668	return &DNSKEY{*rr.Hdr.copyHeader(), rr.Flags, rr.Protocol, rr.Algorithm, rr.PublicKey}
669}
670func (rr *DS) copy() RR {
671	return &DS{*rr.Hdr.copyHeader(), rr.KeyTag, rr.Algorithm, rr.DigestType, rr.Digest}
672}
673func (rr *EID) copy() RR {
674	return &EID{*rr.Hdr.copyHeader(), rr.Endpoint}
675}
676func (rr *EUI48) copy() RR {
677	return &EUI48{*rr.Hdr.copyHeader(), rr.Address}
678}
679func (rr *EUI64) copy() RR {
680	return &EUI64{*rr.Hdr.copyHeader(), rr.Address}
681}
682func (rr *GID) copy() RR {
683	return &GID{*rr.Hdr.copyHeader(), rr.Gid}
684}
685func (rr *GPOS) copy() RR {
686	return &GPOS{*rr.Hdr.copyHeader(), rr.Longitude, rr.Latitude, rr.Altitude}
687}
688func (rr *HINFO) copy() RR {
689	return &HINFO{*rr.Hdr.copyHeader(), rr.Cpu, rr.Os}
690}
691func (rr *HIP) copy() RR {
692	RendezvousServers := make([]string, len(rr.RendezvousServers))
693	copy(RendezvousServers, rr.RendezvousServers)
694	return &HIP{*rr.Hdr.copyHeader(), rr.HitLength, rr.PublicKeyAlgorithm, rr.PublicKeyLength, rr.Hit, rr.PublicKey, RendezvousServers}
695}
696func (rr *KX) copy() RR {
697	return &KX{*rr.Hdr.copyHeader(), rr.Preference, rr.Exchanger}
698}
699func (rr *L32) copy() RR {
700	return &L32{*rr.Hdr.copyHeader(), rr.Preference, copyIP(rr.Locator32)}
701}
702func (rr *L64) copy() RR {
703	return &L64{*rr.Hdr.copyHeader(), rr.Preference, rr.Locator64}
704}
705func (rr *LOC) copy() RR {
706	return &LOC{*rr.Hdr.copyHeader(), rr.Version, rr.Size, rr.HorizPre, rr.VertPre, rr.Latitude, rr.Longitude, rr.Altitude}
707}
708func (rr *LP) copy() RR {
709	return &LP{*rr.Hdr.copyHeader(), rr.Preference, rr.Fqdn}
710}
711func (rr *MB) copy() RR {
712	return &MB{*rr.Hdr.copyHeader(), rr.Mb}
713}
714func (rr *MD) copy() RR {
715	return &MD{*rr.Hdr.copyHeader(), rr.Md}
716}
717func (rr *MF) copy() RR {
718	return &MF{*rr.Hdr.copyHeader(), rr.Mf}
719}
720func (rr *MG) copy() RR {
721	return &MG{*rr.Hdr.copyHeader(), rr.Mg}
722}
723func (rr *MINFO) copy() RR {
724	return &MINFO{*rr.Hdr.copyHeader(), rr.Rmail, rr.Email}
725}
726func (rr *MR) copy() RR {
727	return &MR{*rr.Hdr.copyHeader(), rr.Mr}
728}
729func (rr *MX) copy() RR {
730	return &MX{*rr.Hdr.copyHeader(), rr.Preference, rr.Mx}
731}
732func (rr *NAPTR) copy() RR {
733	return &NAPTR{*rr.Hdr.copyHeader(), rr.Order, rr.Preference, rr.Flags, rr.Service, rr.Regexp, rr.Replacement}
734}
735func (rr *NID) copy() RR {
736	return &NID{*rr.Hdr.copyHeader(), rr.Preference, rr.NodeID}
737}
738func (rr *NIMLOC) copy() RR {
739	return &NIMLOC{*rr.Hdr.copyHeader(), rr.Locator}
740}
741func (rr *NINFO) copy() RR {
742	ZSData := make([]string, len(rr.ZSData))
743	copy(ZSData, rr.ZSData)
744	return &NINFO{*rr.Hdr.copyHeader(), ZSData}
745}
746func (rr *NS) copy() RR {
747	return &NS{*rr.Hdr.copyHeader(), rr.Ns}
748}
749func (rr *NSAPPTR) copy() RR {
750	return &NSAPPTR{*rr.Hdr.copyHeader(), rr.Ptr}
751}
752func (rr *NSEC) copy() RR {
753	TypeBitMap := make([]uint16, len(rr.TypeBitMap))
754	copy(TypeBitMap, rr.TypeBitMap)
755	return &NSEC{*rr.Hdr.copyHeader(), rr.NextDomain, TypeBitMap}
756}
757func (rr *NSEC3) copy() RR {
758	TypeBitMap := make([]uint16, len(rr.TypeBitMap))
759	copy(TypeBitMap, rr.TypeBitMap)
760	return &NSEC3{*rr.Hdr.copyHeader(), rr.Hash, rr.Flags, rr.Iterations, rr.SaltLength, rr.Salt, rr.HashLength, rr.NextDomain, TypeBitMap}
761}
762func (rr *NSEC3PARAM) copy() RR {
763	return &NSEC3PARAM{*rr.Hdr.copyHeader(), rr.Hash, rr.Flags, rr.Iterations, rr.SaltLength, rr.Salt}
764}
765func (rr *OPENPGPKEY) copy() RR {
766	return &OPENPGPKEY{*rr.Hdr.copyHeader(), rr.PublicKey}
767}
768func (rr *OPT) copy() RR {
769	Option := make([]EDNS0, len(rr.Option))
770	copy(Option, rr.Option)
771	return &OPT{*rr.Hdr.copyHeader(), Option}
772}
773func (rr *PTR) copy() RR {
774	return &PTR{*rr.Hdr.copyHeader(), rr.Ptr}
775}
776func (rr *PX) copy() RR {
777	return &PX{*rr.Hdr.copyHeader(), rr.Preference, rr.Map822, rr.Mapx400}
778}
779func (rr *RFC3597) copy() RR {
780	return &RFC3597{*rr.Hdr.copyHeader(), rr.Rdata}
781}
782func (rr *RKEY) copy() RR {
783	return &RKEY{*rr.Hdr.copyHeader(), rr.Flags, rr.Protocol, rr.Algorithm, rr.PublicKey}
784}
785func (rr *RP) copy() RR {
786	return &RP{*rr.Hdr.copyHeader(), rr.Mbox, rr.Txt}
787}
788func (rr *RRSIG) copy() RR {
789	return &RRSIG{*rr.Hdr.copyHeader(), rr.TypeCovered, rr.Algorithm, rr.Labels, rr.OrigTtl, rr.Expiration, rr.Inception, rr.KeyTag, rr.SignerName, rr.Signature}
790}
791func (rr *RT) copy() RR {
792	return &RT{*rr.Hdr.copyHeader(), rr.Preference, rr.Host}
793}
794func (rr *SMIMEA) copy() RR {
795	return &SMIMEA{*rr.Hdr.copyHeader(), rr.Usage, rr.Selector, rr.MatchingType, rr.Certificate}
796}
797func (rr *SOA) copy() RR {
798	return &SOA{*rr.Hdr.copyHeader(), rr.Ns, rr.Mbox, rr.Serial, rr.Refresh, rr.Retry, rr.Expire, rr.Minttl}
799}
800func (rr *SPF) copy() RR {
801	Txt := make([]string, len(rr.Txt))
802	copy(Txt, rr.Txt)
803	return &SPF{*rr.Hdr.copyHeader(), Txt}
804}
805func (rr *SRV) copy() RR {
806	return &SRV{*rr.Hdr.copyHeader(), rr.Priority, rr.Weight, rr.Port, rr.Target}
807}
808func (rr *SSHFP) copy() RR {
809	return &SSHFP{*rr.Hdr.copyHeader(), rr.Algorithm, rr.Type, rr.FingerPrint}
810}
811func (rr *TA) copy() RR {
812	return &TA{*rr.Hdr.copyHeader(), rr.KeyTag, rr.Algorithm, rr.DigestType, rr.Digest}
813}
814func (rr *TALINK) copy() RR {
815	return &TALINK{*rr.Hdr.copyHeader(), rr.PreviousName, rr.NextName}
816}
817func (rr *TKEY) copy() RR {
818	return &TKEY{*rr.Hdr.copyHeader(), rr.Algorithm, rr.Inception, rr.Expiration, rr.Mode, rr.Error, rr.KeySize, rr.Key, rr.OtherLen, rr.OtherData}
819}
820func (rr *TLSA) copy() RR {
821	return &TLSA{*rr.Hdr.copyHeader(), rr.Usage, rr.Selector, rr.MatchingType, rr.Certificate}
822}
823func (rr *TSIG) copy() RR {
824	return &TSIG{*rr.Hdr.copyHeader(), rr.Algorithm, rr.TimeSigned, rr.Fudge, rr.MACSize, rr.MAC, rr.OrigId, rr.Error, rr.OtherLen, rr.OtherData}
825}
826func (rr *TXT) copy() RR {
827	Txt := make([]string, len(rr.Txt))
828	copy(Txt, rr.Txt)
829	return &TXT{*rr.Hdr.copyHeader(), Txt}
830}
831func (rr *UID) copy() RR {
832	return &UID{*rr.Hdr.copyHeader(), rr.Uid}
833}
834func (rr *UINFO) copy() RR {
835	return &UINFO{*rr.Hdr.copyHeader(), rr.Uinfo}
836}
837func (rr *URI) copy() RR {
838	return &URI{*rr.Hdr.copyHeader(), rr.Priority, rr.Weight, rr.Target}
839}
840func (rr *X25) copy() RR {
841	return &X25{*rr.Hdr.copyHeader(), rr.PSDNAddress}
842}
843