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