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