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 TypeAVC: func() RR { return new(AVC) }, 18 TypeCAA: func() RR { return new(CAA) }, 19 TypeCDNSKEY: func() RR { return new(CDNSKEY) }, 20 TypeCDS: func() RR { return new(CDS) }, 21 TypeCERT: func() RR { return new(CERT) }, 22 TypeCNAME: func() RR { return new(CNAME) }, 23 TypeDHCID: func() RR { return new(DHCID) }, 24 TypeDLV: func() RR { return new(DLV) }, 25 TypeDNAME: func() RR { return new(DNAME) }, 26 TypeDNSKEY: func() RR { return new(DNSKEY) }, 27 TypeDS: func() RR { return new(DS) }, 28 TypeEID: func() RR { return new(EID) }, 29 TypeEUI48: func() RR { return new(EUI48) }, 30 TypeEUI64: func() RR { return new(EUI64) }, 31 TypeGID: func() RR { return new(GID) }, 32 TypeGPOS: func() RR { return new(GPOS) }, 33 TypeHINFO: func() RR { return new(HINFO) }, 34 TypeHIP: func() RR { return new(HIP) }, 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 TypeSMIMEA: func() RR { return new(SMIMEA) }, 67 TypeSOA: func() RR { return new(SOA) }, 68 TypeSPF: func() RR { return new(SPF) }, 69 TypeSRV: func() RR { return new(SRV) }, 70 TypeSSHFP: func() RR { return new(SSHFP) }, 71 TypeTA: func() RR { return new(TA) }, 72 TypeTALINK: func() RR { return new(TALINK) }, 73 TypeTKEY: func() RR { return new(TKEY) }, 74 TypeTLSA: func() RR { return new(TLSA) }, 75 TypeTSIG: func() RR { return new(TSIG) }, 76 TypeTXT: func() RR { return new(TXT) }, 77 TypeUID: func() RR { return new(UID) }, 78 TypeUINFO: func() RR { return new(UINFO) }, 79 TypeURI: func() RR { return new(URI) }, 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 TypeAVC: "AVC", 91 TypeAXFR: "AXFR", 92 TypeCAA: "CAA", 93 TypeCDNSKEY: "CDNSKEY", 94 TypeCDS: "CDS", 95 TypeCERT: "CERT", 96 TypeCNAME: "CNAME", 97 TypeDHCID: "DHCID", 98 TypeDLV: "DLV", 99 TypeDNAME: "DNAME", 100 TypeDNSKEY: "DNSKEY", 101 TypeDS: "DS", 102 TypeEID: "EID", 103 TypeEUI48: "EUI48", 104 TypeEUI64: "EUI64", 105 TypeGID: "GID", 106 TypeGPOS: "GPOS", 107 TypeHINFO: "HINFO", 108 TypeHIP: "HIP", 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 TypeSMIMEA: "SMIMEA", 148 TypeSOA: "SOA", 149 TypeSPF: "SPF", 150 TypeSRV: "SRV", 151 TypeSSHFP: "SSHFP", 152 TypeTA: "TA", 153 TypeTALINK: "TALINK", 154 TypeTKEY: "TKEY", 155 TypeTLSA: "TLSA", 156 TypeTSIG: "TSIG", 157 TypeTXT: "TXT", 158 TypeUID: "UID", 159 TypeUINFO: "UINFO", 160 TypeUNSPEC: "UNSPEC", 161 TypeURI: "URI", 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 *AVC) Header() *RR_Header { return &rr.Hdr } 172func (rr *CAA) Header() *RR_Header { return &rr.Hdr } 173func (rr *CDNSKEY) Header() *RR_Header { return &rr.Hdr } 174func (rr *CDS) Header() *RR_Header { return &rr.Hdr } 175func (rr *CERT) Header() *RR_Header { return &rr.Hdr } 176func (rr *CNAME) Header() *RR_Header { return &rr.Hdr } 177func (rr *DHCID) Header() *RR_Header { return &rr.Hdr } 178func (rr *DLV) Header() *RR_Header { return &rr.Hdr } 179func (rr *DNAME) Header() *RR_Header { return &rr.Hdr } 180func (rr *DNSKEY) Header() *RR_Header { return &rr.Hdr } 181func (rr *DS) Header() *RR_Header { return &rr.Hdr } 182func (rr *EID) Header() *RR_Header { return &rr.Hdr } 183func (rr *EUI48) Header() *RR_Header { return &rr.Hdr } 184func (rr *EUI64) Header() *RR_Header { return &rr.Hdr } 185func (rr *GID) Header() *RR_Header { return &rr.Hdr } 186func (rr *GPOS) Header() *RR_Header { return &rr.Hdr } 187func (rr *HINFO) Header() *RR_Header { return &rr.Hdr } 188func (rr *HIP) 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 *SMIMEA) Header() *RR_Header { return &rr.Hdr } 222func (rr *SOA) Header() *RR_Header { return &rr.Hdr } 223func (rr *SPF) Header() *RR_Header { return &rr.Hdr } 224func (rr *SRV) Header() *RR_Header { return &rr.Hdr } 225func (rr *SSHFP) Header() *RR_Header { return &rr.Hdr } 226func (rr *TA) Header() *RR_Header { return &rr.Hdr } 227func (rr *TALINK) Header() *RR_Header { return &rr.Hdr } 228func (rr *TKEY) Header() *RR_Header { return &rr.Hdr } 229func (rr *TLSA) Header() *RR_Header { return &rr.Hdr } 230func (rr *TSIG) Header() *RR_Header { return &rr.Hdr } 231func (rr *TXT) Header() *RR_Header { return &rr.Hdr } 232func (rr *UID) Header() *RR_Header { return &rr.Hdr } 233func (rr *UINFO) Header() *RR_Header { return &rr.Hdr } 234func (rr *URI) 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 *AVC) len() int { 259 l := rr.Hdr.len() 260 for _, x := range rr.Txt { 261 l += len(x) + 1 262 } 263 return l 264} 265func (rr *CAA) len() int { 266 l := rr.Hdr.len() 267 l++ // Flag 268 l += len(rr.Tag) + 1 269 l += len(rr.Value) 270 return l 271} 272func (rr *CERT) len() int { 273 l := rr.Hdr.len() 274 l += 2 // Type 275 l += 2 // KeyTag 276 l++ // Algorithm 277 l += base64.StdEncoding.DecodedLen(len(rr.Certificate)) 278 return l 279} 280func (rr *CNAME) len() int { 281 l := rr.Hdr.len() 282 l += len(rr.Target) + 1 283 return l 284} 285func (rr *DHCID) len() int { 286 l := rr.Hdr.len() 287 l += base64.StdEncoding.DecodedLen(len(rr.Digest)) 288 return l 289} 290func (rr *DNAME) len() int { 291 l := rr.Hdr.len() 292 l += len(rr.Target) + 1 293 return l 294} 295func (rr *DNSKEY) len() int { 296 l := rr.Hdr.len() 297 l += 2 // Flags 298 l++ // Protocol 299 l++ // Algorithm 300 l += base64.StdEncoding.DecodedLen(len(rr.PublicKey)) 301 return l 302} 303func (rr *DS) len() int { 304 l := rr.Hdr.len() 305 l += 2 // KeyTag 306 l++ // Algorithm 307 l++ // DigestType 308 l += len(rr.Digest)/2 + 1 309 return l 310} 311func (rr *EID) len() int { 312 l := rr.Hdr.len() 313 l += len(rr.Endpoint)/2 + 1 314 return l 315} 316func (rr *EUI48) len() int { 317 l := rr.Hdr.len() 318 l += 6 // Address 319 return l 320} 321func (rr *EUI64) len() int { 322 l := rr.Hdr.len() 323 l += 8 // Address 324 return l 325} 326func (rr *GID) len() int { 327 l := rr.Hdr.len() 328 l += 4 // Gid 329 return l 330} 331func (rr *GPOS) len() int { 332 l := rr.Hdr.len() 333 l += len(rr.Longitude) + 1 334 l += len(rr.Latitude) + 1 335 l += len(rr.Altitude) + 1 336 return l 337} 338func (rr *HINFO) len() int { 339 l := rr.Hdr.len() 340 l += len(rr.Cpu) + 1 341 l += len(rr.Os) + 1 342 return l 343} 344func (rr *HIP) len() int { 345 l := rr.Hdr.len() 346 l++ // HitLength 347 l++ // PublicKeyAlgorithm 348 l += 2 // PublicKeyLength 349 l += len(rr.Hit)/2 + 1 350 l += base64.StdEncoding.DecodedLen(len(rr.PublicKey)) 351 for _, x := range rr.RendezvousServers { 352 l += len(x) + 1 353 } 354 return l 355} 356func (rr *KX) len() int { 357 l := rr.Hdr.len() 358 l += 2 // Preference 359 l += len(rr.Exchanger) + 1 360 return l 361} 362func (rr *L32) len() int { 363 l := rr.Hdr.len() 364 l += 2 // Preference 365 l += net.IPv4len // Locator32 366 return l 367} 368func (rr *L64) len() int { 369 l := rr.Hdr.len() 370 l += 2 // Preference 371 l += 8 // Locator64 372 return l 373} 374func (rr *LOC) len() int { 375 l := rr.Hdr.len() 376 l++ // Version 377 l++ // Size 378 l++ // HorizPre 379 l++ // VertPre 380 l += 4 // Latitude 381 l += 4 // Longitude 382 l += 4 // Altitude 383 return l 384} 385func (rr *LP) len() int { 386 l := rr.Hdr.len() 387 l += 2 // Preference 388 l += len(rr.Fqdn) + 1 389 return l 390} 391func (rr *MB) len() int { 392 l := rr.Hdr.len() 393 l += len(rr.Mb) + 1 394 return l 395} 396func (rr *MD) len() int { 397 l := rr.Hdr.len() 398 l += len(rr.Md) + 1 399 return l 400} 401func (rr *MF) len() int { 402 l := rr.Hdr.len() 403 l += len(rr.Mf) + 1 404 return l 405} 406func (rr *MG) len() int { 407 l := rr.Hdr.len() 408 l += len(rr.Mg) + 1 409 return l 410} 411func (rr *MINFO) len() int { 412 l := rr.Hdr.len() 413 l += len(rr.Rmail) + 1 414 l += len(rr.Email) + 1 415 return l 416} 417func (rr *MR) len() int { 418 l := rr.Hdr.len() 419 l += len(rr.Mr) + 1 420 return l 421} 422func (rr *MX) len() int { 423 l := rr.Hdr.len() 424 l += 2 // Preference 425 l += len(rr.Mx) + 1 426 return l 427} 428func (rr *NAPTR) len() int { 429 l := rr.Hdr.len() 430 l += 2 // Order 431 l += 2 // Preference 432 l += len(rr.Flags) + 1 433 l += len(rr.Service) + 1 434 l += len(rr.Regexp) + 1 435 l += len(rr.Replacement) + 1 436 return l 437} 438func (rr *NID) len() int { 439 l := rr.Hdr.len() 440 l += 2 // Preference 441 l += 8 // NodeID 442 return l 443} 444func (rr *NIMLOC) len() int { 445 l := rr.Hdr.len() 446 l += len(rr.Locator)/2 + 1 447 return l 448} 449func (rr *NINFO) len() int { 450 l := rr.Hdr.len() 451 for _, x := range rr.ZSData { 452 l += len(x) + 1 453 } 454 return l 455} 456func (rr *NS) len() int { 457 l := rr.Hdr.len() 458 l += len(rr.Ns) + 1 459 return l 460} 461func (rr *NSAPPTR) len() int { 462 l := rr.Hdr.len() 463 l += len(rr.Ptr) + 1 464 return l 465} 466func (rr *NSEC3PARAM) len() int { 467 l := rr.Hdr.len() 468 l++ // Hash 469 l++ // Flags 470 l += 2 // Iterations 471 l++ // SaltLength 472 l += len(rr.Salt)/2 + 1 473 return l 474} 475func (rr *OPENPGPKEY) len() int { 476 l := rr.Hdr.len() 477 l += base64.StdEncoding.DecodedLen(len(rr.PublicKey)) 478 return l 479} 480func (rr *PTR) len() int { 481 l := rr.Hdr.len() 482 l += len(rr.Ptr) + 1 483 return l 484} 485func (rr *PX) len() int { 486 l := rr.Hdr.len() 487 l += 2 // Preference 488 l += len(rr.Map822) + 1 489 l += len(rr.Mapx400) + 1 490 return l 491} 492func (rr *RFC3597) len() int { 493 l := rr.Hdr.len() 494 l += len(rr.Rdata)/2 + 1 495 return l 496} 497func (rr *RKEY) len() int { 498 l := rr.Hdr.len() 499 l += 2 // Flags 500 l++ // Protocol 501 l++ // Algorithm 502 l += base64.StdEncoding.DecodedLen(len(rr.PublicKey)) 503 return l 504} 505func (rr *RP) len() int { 506 l := rr.Hdr.len() 507 l += len(rr.Mbox) + 1 508 l += len(rr.Txt) + 1 509 return l 510} 511func (rr *RRSIG) len() int { 512 l := rr.Hdr.len() 513 l += 2 // TypeCovered 514 l++ // Algorithm 515 l++ // Labels 516 l += 4 // OrigTtl 517 l += 4 // Expiration 518 l += 4 // Inception 519 l += 2 // KeyTag 520 l += len(rr.SignerName) + 1 521 l += base64.StdEncoding.DecodedLen(len(rr.Signature)) 522 return l 523} 524func (rr *RT) len() int { 525 l := rr.Hdr.len() 526 l += 2 // Preference 527 l += len(rr.Host) + 1 528 return l 529} 530func (rr *SMIMEA) len() int { 531 l := rr.Hdr.len() 532 l++ // Usage 533 l++ // Selector 534 l++ // MatchingType 535 l += len(rr.Certificate)/2 + 1 536 return l 537} 538func (rr *SOA) len() int { 539 l := rr.Hdr.len() 540 l += len(rr.Ns) + 1 541 l += len(rr.Mbox) + 1 542 l += 4 // Serial 543 l += 4 // Refresh 544 l += 4 // Retry 545 l += 4 // Expire 546 l += 4 // Minttl 547 return l 548} 549func (rr *SPF) len() int { 550 l := rr.Hdr.len() 551 for _, x := range rr.Txt { 552 l += len(x) + 1 553 } 554 return l 555} 556func (rr *SRV) len() int { 557 l := rr.Hdr.len() 558 l += 2 // Priority 559 l += 2 // Weight 560 l += 2 // Port 561 l += len(rr.Target) + 1 562 return l 563} 564func (rr *SSHFP) len() int { 565 l := rr.Hdr.len() 566 l++ // Algorithm 567 l++ // Type 568 l += len(rr.FingerPrint)/2 + 1 569 return l 570} 571func (rr *TA) len() int { 572 l := rr.Hdr.len() 573 l += 2 // KeyTag 574 l++ // Algorithm 575 l++ // DigestType 576 l += len(rr.Digest)/2 + 1 577 return l 578} 579func (rr *TALINK) len() int { 580 l := rr.Hdr.len() 581 l += len(rr.PreviousName) + 1 582 l += len(rr.NextName) + 1 583 return l 584} 585func (rr *TKEY) len() int { 586 l := rr.Hdr.len() 587 l += len(rr.Algorithm) + 1 588 l += 4 // Inception 589 l += 4 // Expiration 590 l += 2 // Mode 591 l += 2 // Error 592 l += 2 // KeySize 593 l += len(rr.Key) + 1 594 l += 2 // OtherLen 595 l += len(rr.OtherData) + 1 596 return l 597} 598func (rr *TLSA) len() int { 599 l := rr.Hdr.len() 600 l++ // Usage 601 l++ // Selector 602 l++ // MatchingType 603 l += len(rr.Certificate)/2 + 1 604 return l 605} 606func (rr *TSIG) len() int { 607 l := rr.Hdr.len() 608 l += len(rr.Algorithm) + 1 609 l += 6 // TimeSigned 610 l += 2 // Fudge 611 l += 2 // MACSize 612 l += len(rr.MAC)/2 + 1 613 l += 2 // OrigId 614 l += 2 // Error 615 l += 2 // OtherLen 616 l += len(rr.OtherData)/2 + 1 617 return l 618} 619func (rr *TXT) len() int { 620 l := rr.Hdr.len() 621 for _, x := range rr.Txt { 622 l += len(x) + 1 623 } 624 return l 625} 626func (rr *UID) len() int { 627 l := rr.Hdr.len() 628 l += 4 // Uid 629 return l 630} 631func (rr *UINFO) len() int { 632 l := rr.Hdr.len() 633 l += len(rr.Uinfo) + 1 634 return l 635} 636func (rr *URI) len() int { 637 l := rr.Hdr.len() 638 l += 2 // Priority 639 l += 2 // Weight 640 l += len(rr.Target) 641 return l 642} 643func (rr *X25) len() int { 644 l := rr.Hdr.len() 645 l += len(rr.PSDNAddress) + 1 646 return l 647} 648 649// copy() functions 650func (rr *A) copy() RR { 651 return &A{*rr.Hdr.copyHeader(), copyIP(rr.A)} 652} 653func (rr *AAAA) copy() RR { 654 return &AAAA{*rr.Hdr.copyHeader(), copyIP(rr.AAAA)} 655} 656func (rr *AFSDB) copy() RR { 657 return &AFSDB{*rr.Hdr.copyHeader(), rr.Subtype, rr.Hostname} 658} 659func (rr *ANY) copy() RR { 660 return &ANY{*rr.Hdr.copyHeader()} 661} 662func (rr *AVC) copy() RR { 663 Txt := make([]string, len(rr.Txt)) 664 copy(Txt, rr.Txt) 665 return &AVC{*rr.Hdr.copyHeader(), Txt} 666} 667func (rr *CAA) copy() RR { 668 return &CAA{*rr.Hdr.copyHeader(), rr.Flag, rr.Tag, rr.Value} 669} 670func (rr *CERT) copy() RR { 671 return &CERT{*rr.Hdr.copyHeader(), rr.Type, rr.KeyTag, rr.Algorithm, rr.Certificate} 672} 673func (rr *CNAME) copy() RR { 674 return &CNAME{*rr.Hdr.copyHeader(), rr.Target} 675} 676func (rr *DHCID) copy() RR { 677 return &DHCID{*rr.Hdr.copyHeader(), rr.Digest} 678} 679func (rr *DNAME) copy() RR { 680 return &DNAME{*rr.Hdr.copyHeader(), rr.Target} 681} 682func (rr *DNSKEY) copy() RR { 683 return &DNSKEY{*rr.Hdr.copyHeader(), rr.Flags, rr.Protocol, rr.Algorithm, rr.PublicKey} 684} 685func (rr *DS) copy() RR { 686 return &DS{*rr.Hdr.copyHeader(), rr.KeyTag, rr.Algorithm, rr.DigestType, rr.Digest} 687} 688func (rr *EID) copy() RR { 689 return &EID{*rr.Hdr.copyHeader(), rr.Endpoint} 690} 691func (rr *EUI48) copy() RR { 692 return &EUI48{*rr.Hdr.copyHeader(), rr.Address} 693} 694func (rr *EUI64) copy() RR { 695 return &EUI64{*rr.Hdr.copyHeader(), rr.Address} 696} 697func (rr *GID) copy() RR { 698 return &GID{*rr.Hdr.copyHeader(), rr.Gid} 699} 700func (rr *GPOS) copy() RR { 701 return &GPOS{*rr.Hdr.copyHeader(), rr.Longitude, rr.Latitude, rr.Altitude} 702} 703func (rr *HINFO) copy() RR { 704 return &HINFO{*rr.Hdr.copyHeader(), rr.Cpu, rr.Os} 705} 706func (rr *HIP) copy() RR { 707 RendezvousServers := make([]string, len(rr.RendezvousServers)) 708 copy(RendezvousServers, rr.RendezvousServers) 709 return &HIP{*rr.Hdr.copyHeader(), rr.HitLength, rr.PublicKeyAlgorithm, rr.PublicKeyLength, rr.Hit, rr.PublicKey, RendezvousServers} 710} 711func (rr *KX) copy() RR { 712 return &KX{*rr.Hdr.copyHeader(), rr.Preference, rr.Exchanger} 713} 714func (rr *L32) copy() RR { 715 return &L32{*rr.Hdr.copyHeader(), rr.Preference, copyIP(rr.Locator32)} 716} 717func (rr *L64) copy() RR { 718 return &L64{*rr.Hdr.copyHeader(), rr.Preference, rr.Locator64} 719} 720func (rr *LOC) copy() RR { 721 return &LOC{*rr.Hdr.copyHeader(), rr.Version, rr.Size, rr.HorizPre, rr.VertPre, rr.Latitude, rr.Longitude, rr.Altitude} 722} 723func (rr *LP) copy() RR { 724 return &LP{*rr.Hdr.copyHeader(), rr.Preference, rr.Fqdn} 725} 726func (rr *MB) copy() RR { 727 return &MB{*rr.Hdr.copyHeader(), rr.Mb} 728} 729func (rr *MD) copy() RR { 730 return &MD{*rr.Hdr.copyHeader(), rr.Md} 731} 732func (rr *MF) copy() RR { 733 return &MF{*rr.Hdr.copyHeader(), rr.Mf} 734} 735func (rr *MG) copy() RR { 736 return &MG{*rr.Hdr.copyHeader(), rr.Mg} 737} 738func (rr *MINFO) copy() RR { 739 return &MINFO{*rr.Hdr.copyHeader(), rr.Rmail, rr.Email} 740} 741func (rr *MR) copy() RR { 742 return &MR{*rr.Hdr.copyHeader(), rr.Mr} 743} 744func (rr *MX) copy() RR { 745 return &MX{*rr.Hdr.copyHeader(), rr.Preference, rr.Mx} 746} 747func (rr *NAPTR) copy() RR { 748 return &NAPTR{*rr.Hdr.copyHeader(), rr.Order, rr.Preference, rr.Flags, rr.Service, rr.Regexp, rr.Replacement} 749} 750func (rr *NID) copy() RR { 751 return &NID{*rr.Hdr.copyHeader(), rr.Preference, rr.NodeID} 752} 753func (rr *NIMLOC) copy() RR { 754 return &NIMLOC{*rr.Hdr.copyHeader(), rr.Locator} 755} 756func (rr *NINFO) copy() RR { 757 ZSData := make([]string, len(rr.ZSData)) 758 copy(ZSData, rr.ZSData) 759 return &NINFO{*rr.Hdr.copyHeader(), ZSData} 760} 761func (rr *NS) copy() RR { 762 return &NS{*rr.Hdr.copyHeader(), rr.Ns} 763} 764func (rr *NSAPPTR) copy() RR { 765 return &NSAPPTR{*rr.Hdr.copyHeader(), rr.Ptr} 766} 767func (rr *NSEC) copy() RR { 768 TypeBitMap := make([]uint16, len(rr.TypeBitMap)) 769 copy(TypeBitMap, rr.TypeBitMap) 770 return &NSEC{*rr.Hdr.copyHeader(), rr.NextDomain, TypeBitMap} 771} 772func (rr *NSEC3) copy() RR { 773 TypeBitMap := make([]uint16, len(rr.TypeBitMap)) 774 copy(TypeBitMap, rr.TypeBitMap) 775 return &NSEC3{*rr.Hdr.copyHeader(), rr.Hash, rr.Flags, rr.Iterations, rr.SaltLength, rr.Salt, rr.HashLength, rr.NextDomain, TypeBitMap} 776} 777func (rr *NSEC3PARAM) copy() RR { 778 return &NSEC3PARAM{*rr.Hdr.copyHeader(), rr.Hash, rr.Flags, rr.Iterations, rr.SaltLength, rr.Salt} 779} 780func (rr *OPENPGPKEY) copy() RR { 781 return &OPENPGPKEY{*rr.Hdr.copyHeader(), rr.PublicKey} 782} 783func (rr *OPT) copy() RR { 784 Option := make([]EDNS0, len(rr.Option)) 785 copy(Option, rr.Option) 786 return &OPT{*rr.Hdr.copyHeader(), Option} 787} 788func (rr *PTR) copy() RR { 789 return &PTR{*rr.Hdr.copyHeader(), rr.Ptr} 790} 791func (rr *PX) copy() RR { 792 return &PX{*rr.Hdr.copyHeader(), rr.Preference, rr.Map822, rr.Mapx400} 793} 794func (rr *RFC3597) copy() RR { 795 return &RFC3597{*rr.Hdr.copyHeader(), rr.Rdata} 796} 797func (rr *RKEY) copy() RR { 798 return &RKEY{*rr.Hdr.copyHeader(), rr.Flags, rr.Protocol, rr.Algorithm, rr.PublicKey} 799} 800func (rr *RP) copy() RR { 801 return &RP{*rr.Hdr.copyHeader(), rr.Mbox, rr.Txt} 802} 803func (rr *RRSIG) copy() RR { 804 return &RRSIG{*rr.Hdr.copyHeader(), rr.TypeCovered, rr.Algorithm, rr.Labels, rr.OrigTtl, rr.Expiration, rr.Inception, rr.KeyTag, rr.SignerName, rr.Signature} 805} 806func (rr *RT) copy() RR { 807 return &RT{*rr.Hdr.copyHeader(), rr.Preference, rr.Host} 808} 809func (rr *SMIMEA) copy() RR { 810 return &SMIMEA{*rr.Hdr.copyHeader(), rr.Usage, rr.Selector, rr.MatchingType, rr.Certificate} 811} 812func (rr *SOA) copy() RR { 813 return &SOA{*rr.Hdr.copyHeader(), rr.Ns, rr.Mbox, rr.Serial, rr.Refresh, rr.Retry, rr.Expire, rr.Minttl} 814} 815func (rr *SPF) copy() RR { 816 Txt := make([]string, len(rr.Txt)) 817 copy(Txt, rr.Txt) 818 return &SPF{*rr.Hdr.copyHeader(), Txt} 819} 820func (rr *SRV) copy() RR { 821 return &SRV{*rr.Hdr.copyHeader(), rr.Priority, rr.Weight, rr.Port, rr.Target} 822} 823func (rr *SSHFP) copy() RR { 824 return &SSHFP{*rr.Hdr.copyHeader(), rr.Algorithm, rr.Type, rr.FingerPrint} 825} 826func (rr *TA) copy() RR { 827 return &TA{*rr.Hdr.copyHeader(), rr.KeyTag, rr.Algorithm, rr.DigestType, rr.Digest} 828} 829func (rr *TALINK) copy() RR { 830 return &TALINK{*rr.Hdr.copyHeader(), rr.PreviousName, rr.NextName} 831} 832func (rr *TKEY) copy() RR { 833 return &TKEY{*rr.Hdr.copyHeader(), rr.Algorithm, rr.Inception, rr.Expiration, rr.Mode, rr.Error, rr.KeySize, rr.Key, rr.OtherLen, rr.OtherData} 834} 835func (rr *TLSA) copy() RR { 836 return &TLSA{*rr.Hdr.copyHeader(), rr.Usage, rr.Selector, rr.MatchingType, rr.Certificate} 837} 838func (rr *TSIG) copy() RR { 839 return &TSIG{*rr.Hdr.copyHeader(), rr.Algorithm, rr.TimeSigned, rr.Fudge, rr.MACSize, rr.MAC, rr.OrigId, rr.Error, rr.OtherLen, rr.OtherData} 840} 841func (rr *TXT) copy() RR { 842 Txt := make([]string, len(rr.Txt)) 843 copy(Txt, rr.Txt) 844 return &TXT{*rr.Hdr.copyHeader(), Txt} 845} 846func (rr *UID) copy() RR { 847 return &UID{*rr.Hdr.copyHeader(), rr.Uid} 848} 849func (rr *UINFO) copy() RR { 850 return &UINFO{*rr.Hdr.copyHeader(), rr.Uinfo} 851} 852func (rr *URI) copy() RR { 853 return &URI{*rr.Hdr.copyHeader(), rr.Priority, rr.Weight, rr.Target} 854} 855func (rr *X25) copy() RR { 856 return &X25{*rr.Hdr.copyHeader(), rr.PSDNAddress} 857} 858