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