1// *** DO NOT MODIFY *** 2// AUTOGENERATED BY go generate from msg_generate.go 3 4package dns 5 6// pack*() functions 7 8func (rr *A) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 9 off, err := rr.Hdr.pack(msg, off, compression, compress) 10 if err != nil { 11 return off, err 12 } 13 headerEnd := off 14 off, err = packDataA(rr.A, msg, off) 15 if err != nil { 16 return off, err 17 } 18 rr.Header().Rdlength = uint16(off - headerEnd) 19 return off, nil 20} 21 22func (rr *AAAA) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 23 off, err := rr.Hdr.pack(msg, off, compression, compress) 24 if err != nil { 25 return off, err 26 } 27 headerEnd := off 28 off, err = packDataAAAA(rr.AAAA, msg, off) 29 if err != nil { 30 return off, err 31 } 32 rr.Header().Rdlength = uint16(off - headerEnd) 33 return off, nil 34} 35 36func (rr *AFSDB) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 37 off, err := rr.Hdr.pack(msg, off, compression, compress) 38 if err != nil { 39 return off, err 40 } 41 headerEnd := off 42 off, err = packUint16(rr.Subtype, msg, off) 43 if err != nil { 44 return off, err 45 } 46 off, err = PackDomainName(rr.Hostname, msg, off, compression, compress) 47 if err != nil { 48 return off, err 49 } 50 rr.Header().Rdlength = uint16(off - headerEnd) 51 return off, nil 52} 53 54func (rr *ANY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 55 off, err := rr.Hdr.pack(msg, off, compression, compress) 56 if err != nil { 57 return off, err 58 } 59 headerEnd := off 60 rr.Header().Rdlength = uint16(off - headerEnd) 61 return off, nil 62} 63 64func (rr *CAA) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 65 off, err := rr.Hdr.pack(msg, off, compression, compress) 66 if err != nil { 67 return off, err 68 } 69 headerEnd := off 70 off, err = packUint8(rr.Flag, msg, off) 71 if err != nil { 72 return off, err 73 } 74 off, err = packString(rr.Tag, msg, off) 75 if err != nil { 76 return off, err 77 } 78 off, err = packStringOctet(rr.Value, msg, off) 79 if err != nil { 80 return off, err 81 } 82 rr.Header().Rdlength = uint16(off - headerEnd) 83 return off, nil 84} 85 86func (rr *CDNSKEY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 87 off, err := rr.Hdr.pack(msg, off, compression, compress) 88 if err != nil { 89 return off, err 90 } 91 headerEnd := off 92 off, err = packUint16(rr.Flags, msg, off) 93 if err != nil { 94 return off, err 95 } 96 off, err = packUint8(rr.Protocol, msg, off) 97 if err != nil { 98 return off, err 99 } 100 off, err = packUint8(rr.Algorithm, msg, off) 101 if err != nil { 102 return off, err 103 } 104 off, err = packStringBase64(rr.PublicKey, msg, off) 105 if err != nil { 106 return off, err 107 } 108 rr.Header().Rdlength = uint16(off - headerEnd) 109 return off, nil 110} 111 112func (rr *CDS) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 113 off, err := rr.Hdr.pack(msg, off, compression, compress) 114 if err != nil { 115 return off, err 116 } 117 headerEnd := off 118 off, err = packUint16(rr.KeyTag, msg, off) 119 if err != nil { 120 return off, err 121 } 122 off, err = packUint8(rr.Algorithm, msg, off) 123 if err != nil { 124 return off, err 125 } 126 off, err = packUint8(rr.DigestType, msg, off) 127 if err != nil { 128 return off, err 129 } 130 off, err = packStringHex(rr.Digest, msg, off) 131 if err != nil { 132 return off, err 133 } 134 rr.Header().Rdlength = uint16(off - headerEnd) 135 return off, nil 136} 137 138func (rr *CERT) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 139 off, err := rr.Hdr.pack(msg, off, compression, compress) 140 if err != nil { 141 return off, err 142 } 143 headerEnd := off 144 off, err = packUint16(rr.Type, msg, off) 145 if err != nil { 146 return off, err 147 } 148 off, err = packUint16(rr.KeyTag, msg, off) 149 if err != nil { 150 return off, err 151 } 152 off, err = packUint8(rr.Algorithm, msg, off) 153 if err != nil { 154 return off, err 155 } 156 off, err = packStringBase64(rr.Certificate, msg, off) 157 if err != nil { 158 return off, err 159 } 160 rr.Header().Rdlength = uint16(off - headerEnd) 161 return off, nil 162} 163 164func (rr *CNAME) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 165 off, err := rr.Hdr.pack(msg, off, compression, compress) 166 if err != nil { 167 return off, err 168 } 169 headerEnd := off 170 off, err = PackDomainName(rr.Target, msg, off, compression, compress) 171 if err != nil { 172 return off, err 173 } 174 rr.Header().Rdlength = uint16(off - headerEnd) 175 return off, nil 176} 177 178func (rr *DHCID) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 179 off, err := rr.Hdr.pack(msg, off, compression, compress) 180 if err != nil { 181 return off, err 182 } 183 headerEnd := off 184 off, err = packStringBase64(rr.Digest, msg, off) 185 if err != nil { 186 return off, err 187 } 188 rr.Header().Rdlength = uint16(off - headerEnd) 189 return off, nil 190} 191 192func (rr *DLV) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 193 off, err := rr.Hdr.pack(msg, off, compression, compress) 194 if err != nil { 195 return off, err 196 } 197 headerEnd := off 198 off, err = packUint16(rr.KeyTag, msg, off) 199 if err != nil { 200 return off, err 201 } 202 off, err = packUint8(rr.Algorithm, msg, off) 203 if err != nil { 204 return off, err 205 } 206 off, err = packUint8(rr.DigestType, msg, off) 207 if err != nil { 208 return off, err 209 } 210 off, err = packStringHex(rr.Digest, msg, off) 211 if err != nil { 212 return off, err 213 } 214 rr.Header().Rdlength = uint16(off - headerEnd) 215 return off, nil 216} 217 218func (rr *DNAME) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 219 off, err := rr.Hdr.pack(msg, off, compression, compress) 220 if err != nil { 221 return off, err 222 } 223 headerEnd := off 224 off, err = PackDomainName(rr.Target, msg, off, compression, compress) 225 if err != nil { 226 return off, err 227 } 228 rr.Header().Rdlength = uint16(off - headerEnd) 229 return off, nil 230} 231 232func (rr *DNSKEY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 233 off, err := rr.Hdr.pack(msg, off, compression, compress) 234 if err != nil { 235 return off, err 236 } 237 headerEnd := off 238 off, err = packUint16(rr.Flags, msg, off) 239 if err != nil { 240 return off, err 241 } 242 off, err = packUint8(rr.Protocol, msg, off) 243 if err != nil { 244 return off, err 245 } 246 off, err = packUint8(rr.Algorithm, msg, off) 247 if err != nil { 248 return off, err 249 } 250 off, err = packStringBase64(rr.PublicKey, msg, off) 251 if err != nil { 252 return off, err 253 } 254 rr.Header().Rdlength = uint16(off - headerEnd) 255 return off, nil 256} 257 258func (rr *DS) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 259 off, err := rr.Hdr.pack(msg, off, compression, compress) 260 if err != nil { 261 return off, err 262 } 263 headerEnd := off 264 off, err = packUint16(rr.KeyTag, msg, off) 265 if err != nil { 266 return off, err 267 } 268 off, err = packUint8(rr.Algorithm, msg, off) 269 if err != nil { 270 return off, err 271 } 272 off, err = packUint8(rr.DigestType, msg, off) 273 if err != nil { 274 return off, err 275 } 276 off, err = packStringHex(rr.Digest, msg, off) 277 if err != nil { 278 return off, err 279 } 280 rr.Header().Rdlength = uint16(off - headerEnd) 281 return off, nil 282} 283 284func (rr *EID) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 285 off, err := rr.Hdr.pack(msg, off, compression, compress) 286 if err != nil { 287 return off, err 288 } 289 headerEnd := off 290 off, err = packStringHex(rr.Endpoint, msg, off) 291 if err != nil { 292 return off, err 293 } 294 rr.Header().Rdlength = uint16(off - headerEnd) 295 return off, nil 296} 297 298func (rr *EUI48) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 299 off, err := rr.Hdr.pack(msg, off, compression, compress) 300 if err != nil { 301 return off, err 302 } 303 headerEnd := off 304 off, err = packUint48(rr.Address, msg, off) 305 if err != nil { 306 return off, err 307 } 308 rr.Header().Rdlength = uint16(off - headerEnd) 309 return off, nil 310} 311 312func (rr *EUI64) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 313 off, err := rr.Hdr.pack(msg, off, compression, compress) 314 if err != nil { 315 return off, err 316 } 317 headerEnd := off 318 off, err = packUint64(rr.Address, msg, off) 319 if err != nil { 320 return off, err 321 } 322 rr.Header().Rdlength = uint16(off - headerEnd) 323 return off, nil 324} 325 326func (rr *GID) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 327 off, err := rr.Hdr.pack(msg, off, compression, compress) 328 if err != nil { 329 return off, err 330 } 331 headerEnd := off 332 off, err = packUint32(rr.Gid, msg, off) 333 if err != nil { 334 return off, err 335 } 336 rr.Header().Rdlength = uint16(off - headerEnd) 337 return off, nil 338} 339 340func (rr *GPOS) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 341 off, err := rr.Hdr.pack(msg, off, compression, compress) 342 if err != nil { 343 return off, err 344 } 345 headerEnd := off 346 off, err = packString(rr.Longitude, msg, off) 347 if err != nil { 348 return off, err 349 } 350 off, err = packString(rr.Latitude, msg, off) 351 if err != nil { 352 return off, err 353 } 354 off, err = packString(rr.Altitude, msg, off) 355 if err != nil { 356 return off, err 357 } 358 rr.Header().Rdlength = uint16(off - headerEnd) 359 return off, nil 360} 361 362func (rr *HINFO) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 363 off, err := rr.Hdr.pack(msg, off, compression, compress) 364 if err != nil { 365 return off, err 366 } 367 headerEnd := off 368 off, err = packString(rr.Cpu, msg, off) 369 if err != nil { 370 return off, err 371 } 372 off, err = packString(rr.Os, msg, off) 373 if err != nil { 374 return off, err 375 } 376 rr.Header().Rdlength = uint16(off - headerEnd) 377 return off, nil 378} 379 380func (rr *HIP) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 381 off, err := rr.Hdr.pack(msg, off, compression, compress) 382 if err != nil { 383 return off, err 384 } 385 headerEnd := off 386 off, err = packUint8(rr.HitLength, msg, off) 387 if err != nil { 388 return off, err 389 } 390 off, err = packUint8(rr.PublicKeyAlgorithm, msg, off) 391 if err != nil { 392 return off, err 393 } 394 off, err = packUint16(rr.PublicKeyLength, msg, off) 395 if err != nil { 396 return off, err 397 } 398 off, err = packStringHex(rr.Hit, msg, off) 399 if err != nil { 400 return off, err 401 } 402 off, err = packStringBase64(rr.PublicKey, msg, off) 403 if err != nil { 404 return off, err 405 } 406 off, err = packDataDomainNames(rr.RendezvousServers, msg, off, compression, compress) 407 if err != nil { 408 return off, err 409 } 410 rr.Header().Rdlength = uint16(off - headerEnd) 411 return off, nil 412} 413 414func (rr *KEY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 415 off, err := rr.Hdr.pack(msg, off, compression, compress) 416 if err != nil { 417 return off, err 418 } 419 headerEnd := off 420 off, err = packUint16(rr.Flags, msg, off) 421 if err != nil { 422 return off, err 423 } 424 off, err = packUint8(rr.Protocol, msg, off) 425 if err != nil { 426 return off, err 427 } 428 off, err = packUint8(rr.Algorithm, msg, off) 429 if err != nil { 430 return off, err 431 } 432 off, err = packStringBase64(rr.PublicKey, msg, off) 433 if err != nil { 434 return off, err 435 } 436 rr.Header().Rdlength = uint16(off - headerEnd) 437 return off, nil 438} 439 440func (rr *KX) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 441 off, err := rr.Hdr.pack(msg, off, compression, compress) 442 if err != nil { 443 return off, err 444 } 445 headerEnd := off 446 off, err = packUint16(rr.Preference, msg, off) 447 if err != nil { 448 return off, err 449 } 450 off, err = PackDomainName(rr.Exchanger, msg, off, compression, compress) 451 if err != nil { 452 return off, err 453 } 454 rr.Header().Rdlength = uint16(off - headerEnd) 455 return off, nil 456} 457 458func (rr *L32) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 459 off, err := rr.Hdr.pack(msg, off, compression, compress) 460 if err != nil { 461 return off, err 462 } 463 headerEnd := off 464 off, err = packUint16(rr.Preference, msg, off) 465 if err != nil { 466 return off, err 467 } 468 off, err = packDataA(rr.Locator32, msg, off) 469 if err != nil { 470 return off, err 471 } 472 rr.Header().Rdlength = uint16(off - headerEnd) 473 return off, nil 474} 475 476func (rr *L64) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 477 off, err := rr.Hdr.pack(msg, off, compression, compress) 478 if err != nil { 479 return off, err 480 } 481 headerEnd := off 482 off, err = packUint16(rr.Preference, msg, off) 483 if err != nil { 484 return off, err 485 } 486 off, err = packUint64(rr.Locator64, msg, off) 487 if err != nil { 488 return off, err 489 } 490 rr.Header().Rdlength = uint16(off - headerEnd) 491 return off, nil 492} 493 494func (rr *LOC) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 495 off, err := rr.Hdr.pack(msg, off, compression, compress) 496 if err != nil { 497 return off, err 498 } 499 headerEnd := off 500 off, err = packUint8(rr.Version, msg, off) 501 if err != nil { 502 return off, err 503 } 504 off, err = packUint8(rr.Size, msg, off) 505 if err != nil { 506 return off, err 507 } 508 off, err = packUint8(rr.HorizPre, msg, off) 509 if err != nil { 510 return off, err 511 } 512 off, err = packUint8(rr.VertPre, msg, off) 513 if err != nil { 514 return off, err 515 } 516 off, err = packUint32(rr.Latitude, msg, off) 517 if err != nil { 518 return off, err 519 } 520 off, err = packUint32(rr.Longitude, msg, off) 521 if err != nil { 522 return off, err 523 } 524 off, err = packUint32(rr.Altitude, msg, off) 525 if err != nil { 526 return off, err 527 } 528 rr.Header().Rdlength = uint16(off - headerEnd) 529 return off, nil 530} 531 532func (rr *LP) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 533 off, err := rr.Hdr.pack(msg, off, compression, compress) 534 if err != nil { 535 return off, err 536 } 537 headerEnd := off 538 off, err = packUint16(rr.Preference, msg, off) 539 if err != nil { 540 return off, err 541 } 542 off, err = PackDomainName(rr.Fqdn, msg, off, compression, compress) 543 if err != nil { 544 return off, err 545 } 546 rr.Header().Rdlength = uint16(off - headerEnd) 547 return off, nil 548} 549 550func (rr *MB) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 551 off, err := rr.Hdr.pack(msg, off, compression, compress) 552 if err != nil { 553 return off, err 554 } 555 headerEnd := off 556 off, err = PackDomainName(rr.Mb, msg, off, compression, compress) 557 if err != nil { 558 return off, err 559 } 560 rr.Header().Rdlength = uint16(off - headerEnd) 561 return off, nil 562} 563 564func (rr *MD) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 565 off, err := rr.Hdr.pack(msg, off, compression, compress) 566 if err != nil { 567 return off, err 568 } 569 headerEnd := off 570 off, err = PackDomainName(rr.Md, msg, off, compression, compress) 571 if err != nil { 572 return off, err 573 } 574 rr.Header().Rdlength = uint16(off - headerEnd) 575 return off, nil 576} 577 578func (rr *MF) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 579 off, err := rr.Hdr.pack(msg, off, compression, compress) 580 if err != nil { 581 return off, err 582 } 583 headerEnd := off 584 off, err = PackDomainName(rr.Mf, msg, off, compression, compress) 585 if err != nil { 586 return off, err 587 } 588 rr.Header().Rdlength = uint16(off - headerEnd) 589 return off, nil 590} 591 592func (rr *MG) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 593 off, err := rr.Hdr.pack(msg, off, compression, compress) 594 if err != nil { 595 return off, err 596 } 597 headerEnd := off 598 off, err = PackDomainName(rr.Mg, msg, off, compression, compress) 599 if err != nil { 600 return off, err 601 } 602 rr.Header().Rdlength = uint16(off - headerEnd) 603 return off, nil 604} 605 606func (rr *MINFO) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 607 off, err := rr.Hdr.pack(msg, off, compression, compress) 608 if err != nil { 609 return off, err 610 } 611 headerEnd := off 612 off, err = PackDomainName(rr.Rmail, msg, off, compression, compress) 613 if err != nil { 614 return off, err 615 } 616 off, err = PackDomainName(rr.Email, msg, off, compression, compress) 617 if err != nil { 618 return off, err 619 } 620 rr.Header().Rdlength = uint16(off - headerEnd) 621 return off, nil 622} 623 624func (rr *MR) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 625 off, err := rr.Hdr.pack(msg, off, compression, compress) 626 if err != nil { 627 return off, err 628 } 629 headerEnd := off 630 off, err = PackDomainName(rr.Mr, msg, off, compression, compress) 631 if err != nil { 632 return off, err 633 } 634 rr.Header().Rdlength = uint16(off - headerEnd) 635 return off, nil 636} 637 638func (rr *MX) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 639 off, err := rr.Hdr.pack(msg, off, compression, compress) 640 if err != nil { 641 return off, err 642 } 643 headerEnd := off 644 off, err = packUint16(rr.Preference, msg, off) 645 if err != nil { 646 return off, err 647 } 648 off, err = PackDomainName(rr.Mx, msg, off, compression, compress) 649 if err != nil { 650 return off, err 651 } 652 rr.Header().Rdlength = uint16(off - headerEnd) 653 return off, nil 654} 655 656func (rr *NAPTR) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 657 off, err := rr.Hdr.pack(msg, off, compression, compress) 658 if err != nil { 659 return off, err 660 } 661 headerEnd := off 662 off, err = packUint16(rr.Order, msg, off) 663 if err != nil { 664 return off, err 665 } 666 off, err = packUint16(rr.Preference, msg, off) 667 if err != nil { 668 return off, err 669 } 670 off, err = packString(rr.Flags, msg, off) 671 if err != nil { 672 return off, err 673 } 674 off, err = packString(rr.Service, msg, off) 675 if err != nil { 676 return off, err 677 } 678 off, err = packString(rr.Regexp, msg, off) 679 if err != nil { 680 return off, err 681 } 682 off, err = PackDomainName(rr.Replacement, msg, off, compression, compress) 683 if err != nil { 684 return off, err 685 } 686 rr.Header().Rdlength = uint16(off - headerEnd) 687 return off, nil 688} 689 690func (rr *NID) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 691 off, err := rr.Hdr.pack(msg, off, compression, compress) 692 if err != nil { 693 return off, err 694 } 695 headerEnd := off 696 off, err = packUint16(rr.Preference, msg, off) 697 if err != nil { 698 return off, err 699 } 700 off, err = packUint64(rr.NodeID, msg, off) 701 if err != nil { 702 return off, err 703 } 704 rr.Header().Rdlength = uint16(off - headerEnd) 705 return off, nil 706} 707 708func (rr *NIMLOC) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 709 off, err := rr.Hdr.pack(msg, off, compression, compress) 710 if err != nil { 711 return off, err 712 } 713 headerEnd := off 714 off, err = packStringHex(rr.Locator, msg, off) 715 if err != nil { 716 return off, err 717 } 718 rr.Header().Rdlength = uint16(off - headerEnd) 719 return off, nil 720} 721 722func (rr *NINFO) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 723 off, err := rr.Hdr.pack(msg, off, compression, compress) 724 if err != nil { 725 return off, err 726 } 727 headerEnd := off 728 off, err = packStringTxt(rr.ZSData, msg, off) 729 if err != nil { 730 return off, err 731 } 732 rr.Header().Rdlength = uint16(off - headerEnd) 733 return off, nil 734} 735 736func (rr *NS) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 737 off, err := rr.Hdr.pack(msg, off, compression, compress) 738 if err != nil { 739 return off, err 740 } 741 headerEnd := off 742 off, err = PackDomainName(rr.Ns, msg, off, compression, compress) 743 if err != nil { 744 return off, err 745 } 746 rr.Header().Rdlength = uint16(off - headerEnd) 747 return off, nil 748} 749 750func (rr *NSAPPTR) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 751 off, err := rr.Hdr.pack(msg, off, compression, compress) 752 if err != nil { 753 return off, err 754 } 755 headerEnd := off 756 off, err = PackDomainName(rr.Ptr, msg, off, compression, compress) 757 if err != nil { 758 return off, err 759 } 760 rr.Header().Rdlength = uint16(off - headerEnd) 761 return off, nil 762} 763 764func (rr *NSEC) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 765 off, err := rr.Hdr.pack(msg, off, compression, compress) 766 if err != nil { 767 return off, err 768 } 769 headerEnd := off 770 off, err = PackDomainName(rr.NextDomain, msg, off, compression, compress) 771 if err != nil { 772 return off, err 773 } 774 off, err = packDataNsec(rr.TypeBitMap, msg, off) 775 if err != nil { 776 return off, err 777 } 778 rr.Header().Rdlength = uint16(off - headerEnd) 779 return off, nil 780} 781 782func (rr *NSEC3) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 783 off, err := rr.Hdr.pack(msg, off, compression, compress) 784 if err != nil { 785 return off, err 786 } 787 headerEnd := off 788 off, err = packUint8(rr.Hash, msg, off) 789 if err != nil { 790 return off, err 791 } 792 off, err = packUint8(rr.Flags, msg, off) 793 if err != nil { 794 return off, err 795 } 796 off, err = packUint16(rr.Iterations, msg, off) 797 if err != nil { 798 return off, err 799 } 800 off, err = packUint8(rr.SaltLength, msg, off) 801 if err != nil { 802 return off, err 803 } 804 if rr.Salt == "-" { /* do nothing, empty salt */ 805 } 806 if err != nil { 807 return off, err 808 } 809 off, err = packUint8(rr.HashLength, msg, off) 810 if err != nil { 811 return off, err 812 } 813 off, err = packStringBase32(rr.NextDomain, msg, off) 814 if err != nil { 815 return off, err 816 } 817 off, err = packDataNsec(rr.TypeBitMap, msg, off) 818 if err != nil { 819 return off, err 820 } 821 rr.Header().Rdlength = uint16(off - headerEnd) 822 return off, nil 823} 824 825func (rr *NSEC3PARAM) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 826 off, err := rr.Hdr.pack(msg, off, compression, compress) 827 if err != nil { 828 return off, err 829 } 830 headerEnd := off 831 off, err = packUint8(rr.Hash, msg, off) 832 if err != nil { 833 return off, err 834 } 835 off, err = packUint8(rr.Flags, msg, off) 836 if err != nil { 837 return off, err 838 } 839 off, err = packUint16(rr.Iterations, msg, off) 840 if err != nil { 841 return off, err 842 } 843 off, err = packUint8(rr.SaltLength, msg, off) 844 if err != nil { 845 return off, err 846 } 847 if rr.Salt == "-" { /* do nothing, empty salt */ 848 } 849 if err != nil { 850 return off, err 851 } 852 rr.Header().Rdlength = uint16(off - headerEnd) 853 return off, nil 854} 855 856func (rr *OPENPGPKEY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 857 off, err := rr.Hdr.pack(msg, off, compression, compress) 858 if err != nil { 859 return off, err 860 } 861 headerEnd := off 862 off, err = packStringBase64(rr.PublicKey, msg, off) 863 if err != nil { 864 return off, err 865 } 866 rr.Header().Rdlength = uint16(off - headerEnd) 867 return off, nil 868} 869 870func (rr *OPT) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 871 off, err := rr.Hdr.pack(msg, off, compression, compress) 872 if err != nil { 873 return off, err 874 } 875 headerEnd := off 876 off, err = packDataOpt(rr.Option, msg, off) 877 if err != nil { 878 return off, err 879 } 880 rr.Header().Rdlength = uint16(off - headerEnd) 881 return off, nil 882} 883 884func (rr *PTR) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 885 off, err := rr.Hdr.pack(msg, off, compression, compress) 886 if err != nil { 887 return off, err 888 } 889 headerEnd := off 890 off, err = PackDomainName(rr.Ptr, msg, off, compression, compress) 891 if err != nil { 892 return off, err 893 } 894 rr.Header().Rdlength = uint16(off - headerEnd) 895 return off, nil 896} 897 898func (rr *PX) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 899 off, err := rr.Hdr.pack(msg, off, compression, compress) 900 if err != nil { 901 return off, err 902 } 903 headerEnd := off 904 off, err = packUint16(rr.Preference, msg, off) 905 if err != nil { 906 return off, err 907 } 908 off, err = PackDomainName(rr.Map822, msg, off, compression, compress) 909 if err != nil { 910 return off, err 911 } 912 off, err = PackDomainName(rr.Mapx400, msg, off, compression, compress) 913 if err != nil { 914 return off, err 915 } 916 rr.Header().Rdlength = uint16(off - headerEnd) 917 return off, nil 918} 919 920func (rr *RFC3597) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 921 off, err := rr.Hdr.pack(msg, off, compression, compress) 922 if err != nil { 923 return off, err 924 } 925 headerEnd := off 926 off, err = packStringHex(rr.Rdata, msg, off) 927 if err != nil { 928 return off, err 929 } 930 rr.Header().Rdlength = uint16(off - headerEnd) 931 return off, nil 932} 933 934func (rr *RKEY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 935 off, err := rr.Hdr.pack(msg, off, compression, compress) 936 if err != nil { 937 return off, err 938 } 939 headerEnd := off 940 off, err = packUint16(rr.Flags, msg, off) 941 if err != nil { 942 return off, err 943 } 944 off, err = packUint8(rr.Protocol, msg, off) 945 if err != nil { 946 return off, err 947 } 948 off, err = packUint8(rr.Algorithm, msg, off) 949 if err != nil { 950 return off, err 951 } 952 off, err = packStringBase64(rr.PublicKey, msg, off) 953 if err != nil { 954 return off, err 955 } 956 rr.Header().Rdlength = uint16(off - headerEnd) 957 return off, nil 958} 959 960func (rr *RP) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 961 off, err := rr.Hdr.pack(msg, off, compression, compress) 962 if err != nil { 963 return off, err 964 } 965 headerEnd := off 966 off, err = PackDomainName(rr.Mbox, msg, off, compression, compress) 967 if err != nil { 968 return off, err 969 } 970 off, err = PackDomainName(rr.Txt, msg, off, compression, compress) 971 if err != nil { 972 return off, err 973 } 974 rr.Header().Rdlength = uint16(off - headerEnd) 975 return off, nil 976} 977 978func (rr *RRSIG) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 979 off, err := rr.Hdr.pack(msg, off, compression, compress) 980 if err != nil { 981 return off, err 982 } 983 headerEnd := off 984 off, err = packUint16(rr.TypeCovered, msg, off) 985 if err != nil { 986 return off, err 987 } 988 off, err = packUint8(rr.Algorithm, msg, off) 989 if err != nil { 990 return off, err 991 } 992 off, err = packUint8(rr.Labels, msg, off) 993 if err != nil { 994 return off, err 995 } 996 off, err = packUint32(rr.OrigTtl, msg, off) 997 if err != nil { 998 return off, err 999 } 1000 off, err = packUint32(rr.Expiration, msg, off) 1001 if err != nil { 1002 return off, err 1003 } 1004 off, err = packUint32(rr.Inception, msg, off) 1005 if err != nil { 1006 return off, err 1007 } 1008 off, err = packUint16(rr.KeyTag, msg, off) 1009 if err != nil { 1010 return off, err 1011 } 1012 off, err = PackDomainName(rr.SignerName, msg, off, compression, compress) 1013 if err != nil { 1014 return off, err 1015 } 1016 off, err = packStringBase64(rr.Signature, msg, off) 1017 if err != nil { 1018 return off, err 1019 } 1020 rr.Header().Rdlength = uint16(off - headerEnd) 1021 return off, nil 1022} 1023 1024func (rr *RT) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 1025 off, err := rr.Hdr.pack(msg, off, compression, compress) 1026 if err != nil { 1027 return off, err 1028 } 1029 headerEnd := off 1030 off, err = packUint16(rr.Preference, msg, off) 1031 if err != nil { 1032 return off, err 1033 } 1034 off, err = PackDomainName(rr.Host, msg, off, compression, compress) 1035 if err != nil { 1036 return off, err 1037 } 1038 rr.Header().Rdlength = uint16(off - headerEnd) 1039 return off, nil 1040} 1041 1042func (rr *SIG) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 1043 off, err := rr.Hdr.pack(msg, off, compression, compress) 1044 if err != nil { 1045 return off, err 1046 } 1047 headerEnd := off 1048 off, err = packUint16(rr.TypeCovered, msg, off) 1049 if err != nil { 1050 return off, err 1051 } 1052 off, err = packUint8(rr.Algorithm, msg, off) 1053 if err != nil { 1054 return off, err 1055 } 1056 off, err = packUint8(rr.Labels, msg, off) 1057 if err != nil { 1058 return off, err 1059 } 1060 off, err = packUint32(rr.OrigTtl, msg, off) 1061 if err != nil { 1062 return off, err 1063 } 1064 off, err = packUint32(rr.Expiration, msg, off) 1065 if err != nil { 1066 return off, err 1067 } 1068 off, err = packUint32(rr.Inception, msg, off) 1069 if err != nil { 1070 return off, err 1071 } 1072 off, err = packUint16(rr.KeyTag, msg, off) 1073 if err != nil { 1074 return off, err 1075 } 1076 off, err = PackDomainName(rr.SignerName, msg, off, compression, compress) 1077 if err != nil { 1078 return off, err 1079 } 1080 off, err = packStringBase64(rr.Signature, msg, off) 1081 if err != nil { 1082 return off, err 1083 } 1084 rr.Header().Rdlength = uint16(off - headerEnd) 1085 return off, nil 1086} 1087 1088func (rr *SMIMEA) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 1089 off, err := rr.Hdr.pack(msg, off, compression, compress) 1090 if err != nil { 1091 return off, err 1092 } 1093 headerEnd := off 1094 off, err = packUint8(rr.Usage, msg, off) 1095 if err != nil { 1096 return off, err 1097 } 1098 off, err = packUint8(rr.Selector, msg, off) 1099 if err != nil { 1100 return off, err 1101 } 1102 off, err = packUint8(rr.MatchingType, msg, off) 1103 if err != nil { 1104 return off, err 1105 } 1106 off, err = packStringHex(rr.Certificate, msg, off) 1107 if err != nil { 1108 return off, err 1109 } 1110 rr.Header().Rdlength = uint16(off - headerEnd) 1111 return off, nil 1112} 1113 1114func (rr *SOA) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 1115 off, err := rr.Hdr.pack(msg, off, compression, compress) 1116 if err != nil { 1117 return off, err 1118 } 1119 headerEnd := off 1120 off, err = PackDomainName(rr.Ns, msg, off, compression, compress) 1121 if err != nil { 1122 return off, err 1123 } 1124 off, err = PackDomainName(rr.Mbox, msg, off, compression, compress) 1125 if err != nil { 1126 return off, err 1127 } 1128 off, err = packUint32(rr.Serial, msg, off) 1129 if err != nil { 1130 return off, err 1131 } 1132 off, err = packUint32(rr.Refresh, msg, off) 1133 if err != nil { 1134 return off, err 1135 } 1136 off, err = packUint32(rr.Retry, msg, off) 1137 if err != nil { 1138 return off, err 1139 } 1140 off, err = packUint32(rr.Expire, msg, off) 1141 if err != nil { 1142 return off, err 1143 } 1144 off, err = packUint32(rr.Minttl, msg, off) 1145 if err != nil { 1146 return off, err 1147 } 1148 rr.Header().Rdlength = uint16(off - headerEnd) 1149 return off, nil 1150} 1151 1152func (rr *SPF) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 1153 off, err := rr.Hdr.pack(msg, off, compression, compress) 1154 if err != nil { 1155 return off, err 1156 } 1157 headerEnd := off 1158 off, err = packStringTxt(rr.Txt, msg, off) 1159 if err != nil { 1160 return off, err 1161 } 1162 rr.Header().Rdlength = uint16(off - headerEnd) 1163 return off, nil 1164} 1165 1166func (rr *SRV) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 1167 off, err := rr.Hdr.pack(msg, off, compression, compress) 1168 if err != nil { 1169 return off, err 1170 } 1171 headerEnd := off 1172 off, err = packUint16(rr.Priority, msg, off) 1173 if err != nil { 1174 return off, err 1175 } 1176 off, err = packUint16(rr.Weight, msg, off) 1177 if err != nil { 1178 return off, err 1179 } 1180 off, err = packUint16(rr.Port, msg, off) 1181 if err != nil { 1182 return off, err 1183 } 1184 off, err = PackDomainName(rr.Target, msg, off, compression, compress) 1185 if err != nil { 1186 return off, err 1187 } 1188 rr.Header().Rdlength = uint16(off - headerEnd) 1189 return off, nil 1190} 1191 1192func (rr *SSHFP) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 1193 off, err := rr.Hdr.pack(msg, off, compression, compress) 1194 if err != nil { 1195 return off, err 1196 } 1197 headerEnd := off 1198 off, err = packUint8(rr.Algorithm, msg, off) 1199 if err != nil { 1200 return off, err 1201 } 1202 off, err = packUint8(rr.Type, msg, off) 1203 if err != nil { 1204 return off, err 1205 } 1206 off, err = packStringHex(rr.FingerPrint, msg, off) 1207 if err != nil { 1208 return off, err 1209 } 1210 rr.Header().Rdlength = uint16(off - headerEnd) 1211 return off, nil 1212} 1213 1214func (rr *TA) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 1215 off, err := rr.Hdr.pack(msg, off, compression, compress) 1216 if err != nil { 1217 return off, err 1218 } 1219 headerEnd := off 1220 off, err = packUint16(rr.KeyTag, msg, off) 1221 if err != nil { 1222 return off, err 1223 } 1224 off, err = packUint8(rr.Algorithm, msg, off) 1225 if err != nil { 1226 return off, err 1227 } 1228 off, err = packUint8(rr.DigestType, msg, off) 1229 if err != nil { 1230 return off, err 1231 } 1232 off, err = packStringHex(rr.Digest, msg, off) 1233 if err != nil { 1234 return off, err 1235 } 1236 rr.Header().Rdlength = uint16(off - headerEnd) 1237 return off, nil 1238} 1239 1240func (rr *TALINK) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 1241 off, err := rr.Hdr.pack(msg, off, compression, compress) 1242 if err != nil { 1243 return off, err 1244 } 1245 headerEnd := off 1246 off, err = PackDomainName(rr.PreviousName, msg, off, compression, compress) 1247 if err != nil { 1248 return off, err 1249 } 1250 off, err = PackDomainName(rr.NextName, msg, off, compression, compress) 1251 if err != nil { 1252 return off, err 1253 } 1254 rr.Header().Rdlength = uint16(off - headerEnd) 1255 return off, nil 1256} 1257 1258func (rr *TKEY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 1259 off, err := rr.Hdr.pack(msg, off, compression, compress) 1260 if err != nil { 1261 return off, err 1262 } 1263 headerEnd := off 1264 off, err = PackDomainName(rr.Algorithm, msg, off, compression, compress) 1265 if err != nil { 1266 return off, err 1267 } 1268 off, err = packUint32(rr.Inception, msg, off) 1269 if err != nil { 1270 return off, err 1271 } 1272 off, err = packUint32(rr.Expiration, msg, off) 1273 if err != nil { 1274 return off, err 1275 } 1276 off, err = packUint16(rr.Mode, msg, off) 1277 if err != nil { 1278 return off, err 1279 } 1280 off, err = packUint16(rr.Error, msg, off) 1281 if err != nil { 1282 return off, err 1283 } 1284 off, err = packUint16(rr.KeySize, msg, off) 1285 if err != nil { 1286 return off, err 1287 } 1288 off, err = packString(rr.Key, msg, off) 1289 if err != nil { 1290 return off, err 1291 } 1292 off, err = packUint16(rr.OtherLen, msg, off) 1293 if err != nil { 1294 return off, err 1295 } 1296 off, err = packString(rr.OtherData, msg, off) 1297 if err != nil { 1298 return off, err 1299 } 1300 rr.Header().Rdlength = uint16(off - headerEnd) 1301 return off, nil 1302} 1303 1304func (rr *TLSA) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 1305 off, err := rr.Hdr.pack(msg, off, compression, compress) 1306 if err != nil { 1307 return off, err 1308 } 1309 headerEnd := off 1310 off, err = packUint8(rr.Usage, msg, off) 1311 if err != nil { 1312 return off, err 1313 } 1314 off, err = packUint8(rr.Selector, msg, off) 1315 if err != nil { 1316 return off, err 1317 } 1318 off, err = packUint8(rr.MatchingType, msg, off) 1319 if err != nil { 1320 return off, err 1321 } 1322 off, err = packStringHex(rr.Certificate, msg, off) 1323 if err != nil { 1324 return off, err 1325 } 1326 rr.Header().Rdlength = uint16(off - headerEnd) 1327 return off, nil 1328} 1329 1330func (rr *TSIG) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 1331 off, err := rr.Hdr.pack(msg, off, compression, compress) 1332 if err != nil { 1333 return off, err 1334 } 1335 headerEnd := off 1336 off, err = PackDomainName(rr.Algorithm, msg, off, compression, compress) 1337 if err != nil { 1338 return off, err 1339 } 1340 off, err = packUint48(rr.TimeSigned, msg, off) 1341 if err != nil { 1342 return off, err 1343 } 1344 off, err = packUint16(rr.Fudge, msg, off) 1345 if err != nil { 1346 return off, err 1347 } 1348 off, err = packUint16(rr.MACSize, msg, off) 1349 if err != nil { 1350 return off, err 1351 } 1352 off, err = packStringHex(rr.MAC, msg, off) 1353 if err != nil { 1354 return off, err 1355 } 1356 off, err = packUint16(rr.OrigId, msg, off) 1357 if err != nil { 1358 return off, err 1359 } 1360 off, err = packUint16(rr.Error, msg, off) 1361 if err != nil { 1362 return off, err 1363 } 1364 off, err = packUint16(rr.OtherLen, msg, off) 1365 if err != nil { 1366 return off, err 1367 } 1368 off, err = packStringHex(rr.OtherData, msg, off) 1369 if err != nil { 1370 return off, err 1371 } 1372 rr.Header().Rdlength = uint16(off - headerEnd) 1373 return off, nil 1374} 1375 1376func (rr *TXT) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 1377 off, err := rr.Hdr.pack(msg, off, compression, compress) 1378 if err != nil { 1379 return off, err 1380 } 1381 headerEnd := off 1382 off, err = packStringTxt(rr.Txt, msg, off) 1383 if err != nil { 1384 return off, err 1385 } 1386 rr.Header().Rdlength = uint16(off - headerEnd) 1387 return off, nil 1388} 1389 1390func (rr *UID) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 1391 off, err := rr.Hdr.pack(msg, off, compression, compress) 1392 if err != nil { 1393 return off, err 1394 } 1395 headerEnd := off 1396 off, err = packUint32(rr.Uid, msg, off) 1397 if err != nil { 1398 return off, err 1399 } 1400 rr.Header().Rdlength = uint16(off - headerEnd) 1401 return off, nil 1402} 1403 1404func (rr *UINFO) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 1405 off, err := rr.Hdr.pack(msg, off, compression, compress) 1406 if err != nil { 1407 return off, err 1408 } 1409 headerEnd := off 1410 off, err = packString(rr.Uinfo, msg, off) 1411 if err != nil { 1412 return off, err 1413 } 1414 rr.Header().Rdlength = uint16(off - headerEnd) 1415 return off, nil 1416} 1417 1418func (rr *URI) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 1419 off, err := rr.Hdr.pack(msg, off, compression, compress) 1420 if err != nil { 1421 return off, err 1422 } 1423 headerEnd := off 1424 off, err = packUint16(rr.Priority, msg, off) 1425 if err != nil { 1426 return off, err 1427 } 1428 off, err = packUint16(rr.Weight, msg, off) 1429 if err != nil { 1430 return off, err 1431 } 1432 off, err = packStringOctet(rr.Target, msg, off) 1433 if err != nil { 1434 return off, err 1435 } 1436 rr.Header().Rdlength = uint16(off - headerEnd) 1437 return off, nil 1438} 1439 1440func (rr *X25) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) { 1441 off, err := rr.Hdr.pack(msg, off, compression, compress) 1442 if err != nil { 1443 return off, err 1444 } 1445 headerEnd := off 1446 off, err = packString(rr.PSDNAddress, msg, off) 1447 if err != nil { 1448 return off, err 1449 } 1450 rr.Header().Rdlength = uint16(off - headerEnd) 1451 return off, nil 1452} 1453 1454// unpack*() functions 1455 1456func unpackA(h RR_Header, msg []byte, off int) (RR, int, error) { 1457 rr := new(A) 1458 rr.Hdr = h 1459 if noRdata(h) { 1460 return rr, off, nil 1461 } 1462 var err error 1463 rdStart := off 1464 _ = rdStart 1465 1466 rr.A, off, err = unpackDataA(msg, off) 1467 if err != nil { 1468 return rr, off, err 1469 } 1470 return rr, off, err 1471} 1472 1473func unpackAAAA(h RR_Header, msg []byte, off int) (RR, int, error) { 1474 rr := new(AAAA) 1475 rr.Hdr = h 1476 if noRdata(h) { 1477 return rr, off, nil 1478 } 1479 var err error 1480 rdStart := off 1481 _ = rdStart 1482 1483 rr.AAAA, off, err = unpackDataAAAA(msg, off) 1484 if err != nil { 1485 return rr, off, err 1486 } 1487 return rr, off, err 1488} 1489 1490func unpackAFSDB(h RR_Header, msg []byte, off int) (RR, int, error) { 1491 rr := new(AFSDB) 1492 rr.Hdr = h 1493 if noRdata(h) { 1494 return rr, off, nil 1495 } 1496 var err error 1497 rdStart := off 1498 _ = rdStart 1499 1500 rr.Subtype, off, err = unpackUint16(msg, off) 1501 if err != nil { 1502 return rr, off, err 1503 } 1504 if off == len(msg) { 1505 return rr, off, nil 1506 } 1507 rr.Hostname, off, err = UnpackDomainName(msg, off) 1508 if err != nil { 1509 return rr, off, err 1510 } 1511 return rr, off, err 1512} 1513 1514func unpackANY(h RR_Header, msg []byte, off int) (RR, int, error) { 1515 rr := new(ANY) 1516 rr.Hdr = h 1517 if noRdata(h) { 1518 return rr, off, nil 1519 } 1520 var err error 1521 rdStart := off 1522 _ = rdStart 1523 1524 return rr, off, err 1525} 1526 1527func unpackCAA(h RR_Header, msg []byte, off int) (RR, int, error) { 1528 rr := new(CAA) 1529 rr.Hdr = h 1530 if noRdata(h) { 1531 return rr, off, nil 1532 } 1533 var err error 1534 rdStart := off 1535 _ = rdStart 1536 1537 rr.Flag, off, err = unpackUint8(msg, off) 1538 if err != nil { 1539 return rr, off, err 1540 } 1541 if off == len(msg) { 1542 return rr, off, nil 1543 } 1544 rr.Tag, off, err = unpackString(msg, off) 1545 if err != nil { 1546 return rr, off, err 1547 } 1548 if off == len(msg) { 1549 return rr, off, nil 1550 } 1551 rr.Value, off, err = unpackStringOctet(msg, off) 1552 if err != nil { 1553 return rr, off, err 1554 } 1555 return rr, off, err 1556} 1557 1558func unpackCDNSKEY(h RR_Header, msg []byte, off int) (RR, int, error) { 1559 rr := new(CDNSKEY) 1560 rr.Hdr = h 1561 if noRdata(h) { 1562 return rr, off, nil 1563 } 1564 var err error 1565 rdStart := off 1566 _ = rdStart 1567 1568 rr.Flags, off, err = unpackUint16(msg, off) 1569 if err != nil { 1570 return rr, off, err 1571 } 1572 if off == len(msg) { 1573 return rr, off, nil 1574 } 1575 rr.Protocol, off, err = unpackUint8(msg, off) 1576 if err != nil { 1577 return rr, off, err 1578 } 1579 if off == len(msg) { 1580 return rr, off, nil 1581 } 1582 rr.Algorithm, off, err = unpackUint8(msg, off) 1583 if err != nil { 1584 return rr, off, err 1585 } 1586 if off == len(msg) { 1587 return rr, off, nil 1588 } 1589 rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength)) 1590 if err != nil { 1591 return rr, off, err 1592 } 1593 return rr, off, err 1594} 1595 1596func unpackCDS(h RR_Header, msg []byte, off int) (RR, int, error) { 1597 rr := new(CDS) 1598 rr.Hdr = h 1599 if noRdata(h) { 1600 return rr, off, nil 1601 } 1602 var err error 1603 rdStart := off 1604 _ = rdStart 1605 1606 rr.KeyTag, off, err = unpackUint16(msg, off) 1607 if err != nil { 1608 return rr, off, err 1609 } 1610 if off == len(msg) { 1611 return rr, off, nil 1612 } 1613 rr.Algorithm, off, err = unpackUint8(msg, off) 1614 if err != nil { 1615 return rr, off, err 1616 } 1617 if off == len(msg) { 1618 return rr, off, nil 1619 } 1620 rr.DigestType, off, err = unpackUint8(msg, off) 1621 if err != nil { 1622 return rr, off, err 1623 } 1624 if off == len(msg) { 1625 return rr, off, nil 1626 } 1627 rr.Digest, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength)) 1628 if err != nil { 1629 return rr, off, err 1630 } 1631 return rr, off, err 1632} 1633 1634func unpackCERT(h RR_Header, msg []byte, off int) (RR, int, error) { 1635 rr := new(CERT) 1636 rr.Hdr = h 1637 if noRdata(h) { 1638 return rr, off, nil 1639 } 1640 var err error 1641 rdStart := off 1642 _ = rdStart 1643 1644 rr.Type, off, err = unpackUint16(msg, off) 1645 if err != nil { 1646 return rr, off, err 1647 } 1648 if off == len(msg) { 1649 return rr, off, nil 1650 } 1651 rr.KeyTag, off, err = unpackUint16(msg, off) 1652 if err != nil { 1653 return rr, off, err 1654 } 1655 if off == len(msg) { 1656 return rr, off, nil 1657 } 1658 rr.Algorithm, off, err = unpackUint8(msg, off) 1659 if err != nil { 1660 return rr, off, err 1661 } 1662 if off == len(msg) { 1663 return rr, off, nil 1664 } 1665 rr.Certificate, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength)) 1666 if err != nil { 1667 return rr, off, err 1668 } 1669 return rr, off, err 1670} 1671 1672func unpackCNAME(h RR_Header, msg []byte, off int) (RR, int, error) { 1673 rr := new(CNAME) 1674 rr.Hdr = h 1675 if noRdata(h) { 1676 return rr, off, nil 1677 } 1678 var err error 1679 rdStart := off 1680 _ = rdStart 1681 1682 rr.Target, off, err = UnpackDomainName(msg, off) 1683 if err != nil { 1684 return rr, off, err 1685 } 1686 return rr, off, err 1687} 1688 1689func unpackDHCID(h RR_Header, msg []byte, off int) (RR, int, error) { 1690 rr := new(DHCID) 1691 rr.Hdr = h 1692 if noRdata(h) { 1693 return rr, off, nil 1694 } 1695 var err error 1696 rdStart := off 1697 _ = rdStart 1698 1699 rr.Digest, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength)) 1700 if err != nil { 1701 return rr, off, err 1702 } 1703 return rr, off, err 1704} 1705 1706func unpackDLV(h RR_Header, msg []byte, off int) (RR, int, error) { 1707 rr := new(DLV) 1708 rr.Hdr = h 1709 if noRdata(h) { 1710 return rr, off, nil 1711 } 1712 var err error 1713 rdStart := off 1714 _ = rdStart 1715 1716 rr.KeyTag, off, err = unpackUint16(msg, off) 1717 if err != nil { 1718 return rr, off, err 1719 } 1720 if off == len(msg) { 1721 return rr, off, nil 1722 } 1723 rr.Algorithm, off, err = unpackUint8(msg, off) 1724 if err != nil { 1725 return rr, off, err 1726 } 1727 if off == len(msg) { 1728 return rr, off, nil 1729 } 1730 rr.DigestType, off, err = unpackUint8(msg, off) 1731 if err != nil { 1732 return rr, off, err 1733 } 1734 if off == len(msg) { 1735 return rr, off, nil 1736 } 1737 rr.Digest, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength)) 1738 if err != nil { 1739 return rr, off, err 1740 } 1741 return rr, off, err 1742} 1743 1744func unpackDNAME(h RR_Header, msg []byte, off int) (RR, int, error) { 1745 rr := new(DNAME) 1746 rr.Hdr = h 1747 if noRdata(h) { 1748 return rr, off, nil 1749 } 1750 var err error 1751 rdStart := off 1752 _ = rdStart 1753 1754 rr.Target, off, err = UnpackDomainName(msg, off) 1755 if err != nil { 1756 return rr, off, err 1757 } 1758 return rr, off, err 1759} 1760 1761func unpackDNSKEY(h RR_Header, msg []byte, off int) (RR, int, error) { 1762 rr := new(DNSKEY) 1763 rr.Hdr = h 1764 if noRdata(h) { 1765 return rr, off, nil 1766 } 1767 var err error 1768 rdStart := off 1769 _ = rdStart 1770 1771 rr.Flags, off, err = unpackUint16(msg, off) 1772 if err != nil { 1773 return rr, off, err 1774 } 1775 if off == len(msg) { 1776 return rr, off, nil 1777 } 1778 rr.Protocol, off, err = unpackUint8(msg, off) 1779 if err != nil { 1780 return rr, off, err 1781 } 1782 if off == len(msg) { 1783 return rr, off, nil 1784 } 1785 rr.Algorithm, off, err = unpackUint8(msg, off) 1786 if err != nil { 1787 return rr, off, err 1788 } 1789 if off == len(msg) { 1790 return rr, off, nil 1791 } 1792 rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength)) 1793 if err != nil { 1794 return rr, off, err 1795 } 1796 return rr, off, err 1797} 1798 1799func unpackDS(h RR_Header, msg []byte, off int) (RR, int, error) { 1800 rr := new(DS) 1801 rr.Hdr = h 1802 if noRdata(h) { 1803 return rr, off, nil 1804 } 1805 var err error 1806 rdStart := off 1807 _ = rdStart 1808 1809 rr.KeyTag, off, err = unpackUint16(msg, off) 1810 if err != nil { 1811 return rr, off, err 1812 } 1813 if off == len(msg) { 1814 return rr, off, nil 1815 } 1816 rr.Algorithm, off, err = unpackUint8(msg, off) 1817 if err != nil { 1818 return rr, off, err 1819 } 1820 if off == len(msg) { 1821 return rr, off, nil 1822 } 1823 rr.DigestType, off, err = unpackUint8(msg, off) 1824 if err != nil { 1825 return rr, off, err 1826 } 1827 if off == len(msg) { 1828 return rr, off, nil 1829 } 1830 rr.Digest, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength)) 1831 if err != nil { 1832 return rr, off, err 1833 } 1834 return rr, off, err 1835} 1836 1837func unpackEID(h RR_Header, msg []byte, off int) (RR, int, error) { 1838 rr := new(EID) 1839 rr.Hdr = h 1840 if noRdata(h) { 1841 return rr, off, nil 1842 } 1843 var err error 1844 rdStart := off 1845 _ = rdStart 1846 1847 rr.Endpoint, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength)) 1848 if err != nil { 1849 return rr, off, err 1850 } 1851 return rr, off, err 1852} 1853 1854func unpackEUI48(h RR_Header, msg []byte, off int) (RR, int, error) { 1855 rr := new(EUI48) 1856 rr.Hdr = h 1857 if noRdata(h) { 1858 return rr, off, nil 1859 } 1860 var err error 1861 rdStart := off 1862 _ = rdStart 1863 1864 rr.Address, off, err = unpackUint48(msg, off) 1865 if err != nil { 1866 return rr, off, err 1867 } 1868 return rr, off, err 1869} 1870 1871func unpackEUI64(h RR_Header, msg []byte, off int) (RR, int, error) { 1872 rr := new(EUI64) 1873 rr.Hdr = h 1874 if noRdata(h) { 1875 return rr, off, nil 1876 } 1877 var err error 1878 rdStart := off 1879 _ = rdStart 1880 1881 rr.Address, off, err = unpackUint64(msg, off) 1882 if err != nil { 1883 return rr, off, err 1884 } 1885 return rr, off, err 1886} 1887 1888func unpackGID(h RR_Header, msg []byte, off int) (RR, int, error) { 1889 rr := new(GID) 1890 rr.Hdr = h 1891 if noRdata(h) { 1892 return rr, off, nil 1893 } 1894 var err error 1895 rdStart := off 1896 _ = rdStart 1897 1898 rr.Gid, off, err = unpackUint32(msg, off) 1899 if err != nil { 1900 return rr, off, err 1901 } 1902 return rr, off, err 1903} 1904 1905func unpackGPOS(h RR_Header, msg []byte, off int) (RR, int, error) { 1906 rr := new(GPOS) 1907 rr.Hdr = h 1908 if noRdata(h) { 1909 return rr, off, nil 1910 } 1911 var err error 1912 rdStart := off 1913 _ = rdStart 1914 1915 rr.Longitude, off, err = unpackString(msg, off) 1916 if err != nil { 1917 return rr, off, err 1918 } 1919 if off == len(msg) { 1920 return rr, off, nil 1921 } 1922 rr.Latitude, off, err = unpackString(msg, off) 1923 if err != nil { 1924 return rr, off, err 1925 } 1926 if off == len(msg) { 1927 return rr, off, nil 1928 } 1929 rr.Altitude, off, err = unpackString(msg, off) 1930 if err != nil { 1931 return rr, off, err 1932 } 1933 return rr, off, err 1934} 1935 1936func unpackHINFO(h RR_Header, msg []byte, off int) (RR, int, error) { 1937 rr := new(HINFO) 1938 rr.Hdr = h 1939 if noRdata(h) { 1940 return rr, off, nil 1941 } 1942 var err error 1943 rdStart := off 1944 _ = rdStart 1945 1946 rr.Cpu, off, err = unpackString(msg, off) 1947 if err != nil { 1948 return rr, off, err 1949 } 1950 if off == len(msg) { 1951 return rr, off, nil 1952 } 1953 rr.Os, off, err = unpackString(msg, off) 1954 if err != nil { 1955 return rr, off, err 1956 } 1957 return rr, off, err 1958} 1959 1960func unpackHIP(h RR_Header, msg []byte, off int) (RR, int, error) { 1961 rr := new(HIP) 1962 rr.Hdr = h 1963 if noRdata(h) { 1964 return rr, off, nil 1965 } 1966 var err error 1967 rdStart := off 1968 _ = rdStart 1969 1970 rr.HitLength, off, err = unpackUint8(msg, off) 1971 if err != nil { 1972 return rr, off, err 1973 } 1974 if off == len(msg) { 1975 return rr, off, nil 1976 } 1977 rr.PublicKeyAlgorithm, off, err = unpackUint8(msg, off) 1978 if err != nil { 1979 return rr, off, err 1980 } 1981 if off == len(msg) { 1982 return rr, off, nil 1983 } 1984 rr.PublicKeyLength, off, err = unpackUint16(msg, off) 1985 if err != nil { 1986 return rr, off, err 1987 } 1988 if off == len(msg) { 1989 return rr, off, nil 1990 } 1991 rr.Hit, off, err = unpackStringHex(msg, off, off+int(rr.HitLength)) 1992 if err != nil { 1993 return rr, off, err 1994 } 1995 rr.PublicKey, off, err = unpackStringBase64(msg, off, off+int(rr.PublicKeyLength)) 1996 if err != nil { 1997 return rr, off, err 1998 } 1999 rr.RendezvousServers, off, err = unpackDataDomainNames(msg, off, rdStart+int(rr.Hdr.Rdlength)) 2000 if err != nil { 2001 return rr, off, err 2002 } 2003 return rr, off, err 2004} 2005 2006func unpackKEY(h RR_Header, msg []byte, off int) (RR, int, error) { 2007 rr := new(KEY) 2008 rr.Hdr = h 2009 if noRdata(h) { 2010 return rr, off, nil 2011 } 2012 var err error 2013 rdStart := off 2014 _ = rdStart 2015 2016 rr.Flags, off, err = unpackUint16(msg, off) 2017 if err != nil { 2018 return rr, off, err 2019 } 2020 if off == len(msg) { 2021 return rr, off, nil 2022 } 2023 rr.Protocol, off, err = unpackUint8(msg, off) 2024 if err != nil { 2025 return rr, off, err 2026 } 2027 if off == len(msg) { 2028 return rr, off, nil 2029 } 2030 rr.Algorithm, off, err = unpackUint8(msg, off) 2031 if err != nil { 2032 return rr, off, err 2033 } 2034 if off == len(msg) { 2035 return rr, off, nil 2036 } 2037 rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength)) 2038 if err != nil { 2039 return rr, off, err 2040 } 2041 return rr, off, err 2042} 2043 2044func unpackKX(h RR_Header, msg []byte, off int) (RR, int, error) { 2045 rr := new(KX) 2046 rr.Hdr = h 2047 if noRdata(h) { 2048 return rr, off, nil 2049 } 2050 var err error 2051 rdStart := off 2052 _ = rdStart 2053 2054 rr.Preference, off, err = unpackUint16(msg, off) 2055 if err != nil { 2056 return rr, off, err 2057 } 2058 if off == len(msg) { 2059 return rr, off, nil 2060 } 2061 rr.Exchanger, off, err = UnpackDomainName(msg, off) 2062 if err != nil { 2063 return rr, off, err 2064 } 2065 return rr, off, err 2066} 2067 2068func unpackL32(h RR_Header, msg []byte, off int) (RR, int, error) { 2069 rr := new(L32) 2070 rr.Hdr = h 2071 if noRdata(h) { 2072 return rr, off, nil 2073 } 2074 var err error 2075 rdStart := off 2076 _ = rdStart 2077 2078 rr.Preference, off, err = unpackUint16(msg, off) 2079 if err != nil { 2080 return rr, off, err 2081 } 2082 if off == len(msg) { 2083 return rr, off, nil 2084 } 2085 rr.Locator32, off, err = unpackDataA(msg, off) 2086 if err != nil { 2087 return rr, off, err 2088 } 2089 return rr, off, err 2090} 2091 2092func unpackL64(h RR_Header, msg []byte, off int) (RR, int, error) { 2093 rr := new(L64) 2094 rr.Hdr = h 2095 if noRdata(h) { 2096 return rr, off, nil 2097 } 2098 var err error 2099 rdStart := off 2100 _ = rdStart 2101 2102 rr.Preference, off, err = unpackUint16(msg, off) 2103 if err != nil { 2104 return rr, off, err 2105 } 2106 if off == len(msg) { 2107 return rr, off, nil 2108 } 2109 rr.Locator64, off, err = unpackUint64(msg, off) 2110 if err != nil { 2111 return rr, off, err 2112 } 2113 return rr, off, err 2114} 2115 2116func unpackLOC(h RR_Header, msg []byte, off int) (RR, int, error) { 2117 rr := new(LOC) 2118 rr.Hdr = h 2119 if noRdata(h) { 2120 return rr, off, nil 2121 } 2122 var err error 2123 rdStart := off 2124 _ = rdStart 2125 2126 rr.Version, off, err = unpackUint8(msg, off) 2127 if err != nil { 2128 return rr, off, err 2129 } 2130 if off == len(msg) { 2131 return rr, off, nil 2132 } 2133 rr.Size, off, err = unpackUint8(msg, off) 2134 if err != nil { 2135 return rr, off, err 2136 } 2137 if off == len(msg) { 2138 return rr, off, nil 2139 } 2140 rr.HorizPre, off, err = unpackUint8(msg, off) 2141 if err != nil { 2142 return rr, off, err 2143 } 2144 if off == len(msg) { 2145 return rr, off, nil 2146 } 2147 rr.VertPre, off, err = unpackUint8(msg, off) 2148 if err != nil { 2149 return rr, off, err 2150 } 2151 if off == len(msg) { 2152 return rr, off, nil 2153 } 2154 rr.Latitude, off, err = unpackUint32(msg, off) 2155 if err != nil { 2156 return rr, off, err 2157 } 2158 if off == len(msg) { 2159 return rr, off, nil 2160 } 2161 rr.Longitude, off, err = unpackUint32(msg, off) 2162 if err != nil { 2163 return rr, off, err 2164 } 2165 if off == len(msg) { 2166 return rr, off, nil 2167 } 2168 rr.Altitude, off, err = unpackUint32(msg, off) 2169 if err != nil { 2170 return rr, off, err 2171 } 2172 return rr, off, err 2173} 2174 2175func unpackLP(h RR_Header, msg []byte, off int) (RR, int, error) { 2176 rr := new(LP) 2177 rr.Hdr = h 2178 if noRdata(h) { 2179 return rr, off, nil 2180 } 2181 var err error 2182 rdStart := off 2183 _ = rdStart 2184 2185 rr.Preference, off, err = unpackUint16(msg, off) 2186 if err != nil { 2187 return rr, off, err 2188 } 2189 if off == len(msg) { 2190 return rr, off, nil 2191 } 2192 rr.Fqdn, off, err = UnpackDomainName(msg, off) 2193 if err != nil { 2194 return rr, off, err 2195 } 2196 return rr, off, err 2197} 2198 2199func unpackMB(h RR_Header, msg []byte, off int) (RR, int, error) { 2200 rr := new(MB) 2201 rr.Hdr = h 2202 if noRdata(h) { 2203 return rr, off, nil 2204 } 2205 var err error 2206 rdStart := off 2207 _ = rdStart 2208 2209 rr.Mb, off, err = UnpackDomainName(msg, off) 2210 if err != nil { 2211 return rr, off, err 2212 } 2213 return rr, off, err 2214} 2215 2216func unpackMD(h RR_Header, msg []byte, off int) (RR, int, error) { 2217 rr := new(MD) 2218 rr.Hdr = h 2219 if noRdata(h) { 2220 return rr, off, nil 2221 } 2222 var err error 2223 rdStart := off 2224 _ = rdStart 2225 2226 rr.Md, off, err = UnpackDomainName(msg, off) 2227 if err != nil { 2228 return rr, off, err 2229 } 2230 return rr, off, err 2231} 2232 2233func unpackMF(h RR_Header, msg []byte, off int) (RR, int, error) { 2234 rr := new(MF) 2235 rr.Hdr = h 2236 if noRdata(h) { 2237 return rr, off, nil 2238 } 2239 var err error 2240 rdStart := off 2241 _ = rdStart 2242 2243 rr.Mf, off, err = UnpackDomainName(msg, off) 2244 if err != nil { 2245 return rr, off, err 2246 } 2247 return rr, off, err 2248} 2249 2250func unpackMG(h RR_Header, msg []byte, off int) (RR, int, error) { 2251 rr := new(MG) 2252 rr.Hdr = h 2253 if noRdata(h) { 2254 return rr, off, nil 2255 } 2256 var err error 2257 rdStart := off 2258 _ = rdStart 2259 2260 rr.Mg, off, err = UnpackDomainName(msg, off) 2261 if err != nil { 2262 return rr, off, err 2263 } 2264 return rr, off, err 2265} 2266 2267func unpackMINFO(h RR_Header, msg []byte, off int) (RR, int, error) { 2268 rr := new(MINFO) 2269 rr.Hdr = h 2270 if noRdata(h) { 2271 return rr, off, nil 2272 } 2273 var err error 2274 rdStart := off 2275 _ = rdStart 2276 2277 rr.Rmail, off, err = UnpackDomainName(msg, off) 2278 if err != nil { 2279 return rr, off, err 2280 } 2281 if off == len(msg) { 2282 return rr, off, nil 2283 } 2284 rr.Email, off, err = UnpackDomainName(msg, off) 2285 if err != nil { 2286 return rr, off, err 2287 } 2288 return rr, off, err 2289} 2290 2291func unpackMR(h RR_Header, msg []byte, off int) (RR, int, error) { 2292 rr := new(MR) 2293 rr.Hdr = h 2294 if noRdata(h) { 2295 return rr, off, nil 2296 } 2297 var err error 2298 rdStart := off 2299 _ = rdStart 2300 2301 rr.Mr, off, err = UnpackDomainName(msg, off) 2302 if err != nil { 2303 return rr, off, err 2304 } 2305 return rr, off, err 2306} 2307 2308func unpackMX(h RR_Header, msg []byte, off int) (RR, int, error) { 2309 rr := new(MX) 2310 rr.Hdr = h 2311 if noRdata(h) { 2312 return rr, off, nil 2313 } 2314 var err error 2315 rdStart := off 2316 _ = rdStart 2317 2318 rr.Preference, off, err = unpackUint16(msg, off) 2319 if err != nil { 2320 return rr, off, err 2321 } 2322 if off == len(msg) { 2323 return rr, off, nil 2324 } 2325 rr.Mx, off, err = UnpackDomainName(msg, off) 2326 if err != nil { 2327 return rr, off, err 2328 } 2329 return rr, off, err 2330} 2331 2332func unpackNAPTR(h RR_Header, msg []byte, off int) (RR, int, error) { 2333 rr := new(NAPTR) 2334 rr.Hdr = h 2335 if noRdata(h) { 2336 return rr, off, nil 2337 } 2338 var err error 2339 rdStart := off 2340 _ = rdStart 2341 2342 rr.Order, off, err = unpackUint16(msg, off) 2343 if err != nil { 2344 return rr, off, err 2345 } 2346 if off == len(msg) { 2347 return rr, off, nil 2348 } 2349 rr.Preference, off, err = unpackUint16(msg, off) 2350 if err != nil { 2351 return rr, off, err 2352 } 2353 if off == len(msg) { 2354 return rr, off, nil 2355 } 2356 rr.Flags, off, err = unpackString(msg, off) 2357 if err != nil { 2358 return rr, off, err 2359 } 2360 if off == len(msg) { 2361 return rr, off, nil 2362 } 2363 rr.Service, off, err = unpackString(msg, off) 2364 if err != nil { 2365 return rr, off, err 2366 } 2367 if off == len(msg) { 2368 return rr, off, nil 2369 } 2370 rr.Regexp, off, err = unpackString(msg, off) 2371 if err != nil { 2372 return rr, off, err 2373 } 2374 if off == len(msg) { 2375 return rr, off, nil 2376 } 2377 rr.Replacement, off, err = UnpackDomainName(msg, off) 2378 if err != nil { 2379 return rr, off, err 2380 } 2381 return rr, off, err 2382} 2383 2384func unpackNID(h RR_Header, msg []byte, off int) (RR, int, error) { 2385 rr := new(NID) 2386 rr.Hdr = h 2387 if noRdata(h) { 2388 return rr, off, nil 2389 } 2390 var err error 2391 rdStart := off 2392 _ = rdStart 2393 2394 rr.Preference, off, err = unpackUint16(msg, off) 2395 if err != nil { 2396 return rr, off, err 2397 } 2398 if off == len(msg) { 2399 return rr, off, nil 2400 } 2401 rr.NodeID, off, err = unpackUint64(msg, off) 2402 if err != nil { 2403 return rr, off, err 2404 } 2405 return rr, off, err 2406} 2407 2408func unpackNIMLOC(h RR_Header, msg []byte, off int) (RR, int, error) { 2409 rr := new(NIMLOC) 2410 rr.Hdr = h 2411 if noRdata(h) { 2412 return rr, off, nil 2413 } 2414 var err error 2415 rdStart := off 2416 _ = rdStart 2417 2418 rr.Locator, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength)) 2419 if err != nil { 2420 return rr, off, err 2421 } 2422 return rr, off, err 2423} 2424 2425func unpackNINFO(h RR_Header, msg []byte, off int) (RR, int, error) { 2426 rr := new(NINFO) 2427 rr.Hdr = h 2428 if noRdata(h) { 2429 return rr, off, nil 2430 } 2431 var err error 2432 rdStart := off 2433 _ = rdStart 2434 2435 rr.ZSData, off, err = unpackStringTxt(msg, off) 2436 if err != nil { 2437 return rr, off, err 2438 } 2439 return rr, off, err 2440} 2441 2442func unpackNS(h RR_Header, msg []byte, off int) (RR, int, error) { 2443 rr := new(NS) 2444 rr.Hdr = h 2445 if noRdata(h) { 2446 return rr, off, nil 2447 } 2448 var err error 2449 rdStart := off 2450 _ = rdStart 2451 2452 rr.Ns, off, err = UnpackDomainName(msg, off) 2453 if err != nil { 2454 return rr, off, err 2455 } 2456 return rr, off, err 2457} 2458 2459func unpackNSAPPTR(h RR_Header, msg []byte, off int) (RR, int, error) { 2460 rr := new(NSAPPTR) 2461 rr.Hdr = h 2462 if noRdata(h) { 2463 return rr, off, nil 2464 } 2465 var err error 2466 rdStart := off 2467 _ = rdStart 2468 2469 rr.Ptr, off, err = UnpackDomainName(msg, off) 2470 if err != nil { 2471 return rr, off, err 2472 } 2473 return rr, off, err 2474} 2475 2476func unpackNSEC(h RR_Header, msg []byte, off int) (RR, int, error) { 2477 rr := new(NSEC) 2478 rr.Hdr = h 2479 if noRdata(h) { 2480 return rr, off, nil 2481 } 2482 var err error 2483 rdStart := off 2484 _ = rdStart 2485 2486 rr.NextDomain, off, err = UnpackDomainName(msg, off) 2487 if err != nil { 2488 return rr, off, err 2489 } 2490 if off == len(msg) { 2491 return rr, off, nil 2492 } 2493 rr.TypeBitMap, off, err = unpackDataNsec(msg, off) 2494 if err != nil { 2495 return rr, off, err 2496 } 2497 return rr, off, err 2498} 2499 2500func unpackNSEC3(h RR_Header, msg []byte, off int) (RR, int, error) { 2501 rr := new(NSEC3) 2502 rr.Hdr = h 2503 if noRdata(h) { 2504 return rr, off, nil 2505 } 2506 var err error 2507 rdStart := off 2508 _ = rdStart 2509 2510 rr.Hash, off, err = unpackUint8(msg, off) 2511 if err != nil { 2512 return rr, off, err 2513 } 2514 if off == len(msg) { 2515 return rr, off, nil 2516 } 2517 rr.Flags, off, err = unpackUint8(msg, off) 2518 if err != nil { 2519 return rr, off, err 2520 } 2521 if off == len(msg) { 2522 return rr, off, nil 2523 } 2524 rr.Iterations, off, err = unpackUint16(msg, off) 2525 if err != nil { 2526 return rr, off, err 2527 } 2528 if off == len(msg) { 2529 return rr, off, nil 2530 } 2531 rr.SaltLength, off, err = unpackUint8(msg, off) 2532 if err != nil { 2533 return rr, off, err 2534 } 2535 if off == len(msg) { 2536 return rr, off, nil 2537 } 2538 rr.Salt, off, err = unpackStringHex(msg, off, off+int(rr.SaltLength)) 2539 if err != nil { 2540 return rr, off, err 2541 } 2542 rr.HashLength, off, err = unpackUint8(msg, off) 2543 if err != nil { 2544 return rr, off, err 2545 } 2546 if off == len(msg) { 2547 return rr, off, nil 2548 } 2549 rr.NextDomain, off, err = unpackStringBase32(msg, off, off+int(rr.HashLength)) 2550 if err != nil { 2551 return rr, off, err 2552 } 2553 rr.TypeBitMap, off, err = unpackDataNsec(msg, off) 2554 if err != nil { 2555 return rr, off, err 2556 } 2557 return rr, off, err 2558} 2559 2560func unpackNSEC3PARAM(h RR_Header, msg []byte, off int) (RR, int, error) { 2561 rr := new(NSEC3PARAM) 2562 rr.Hdr = h 2563 if noRdata(h) { 2564 return rr, off, nil 2565 } 2566 var err error 2567 rdStart := off 2568 _ = rdStart 2569 2570 rr.Hash, off, err = unpackUint8(msg, off) 2571 if err != nil { 2572 return rr, off, err 2573 } 2574 if off == len(msg) { 2575 return rr, off, nil 2576 } 2577 rr.Flags, off, err = unpackUint8(msg, off) 2578 if err != nil { 2579 return rr, off, err 2580 } 2581 if off == len(msg) { 2582 return rr, off, nil 2583 } 2584 rr.Iterations, off, err = unpackUint16(msg, off) 2585 if err != nil { 2586 return rr, off, err 2587 } 2588 if off == len(msg) { 2589 return rr, off, nil 2590 } 2591 rr.SaltLength, off, err = unpackUint8(msg, off) 2592 if err != nil { 2593 return rr, off, err 2594 } 2595 if off == len(msg) { 2596 return rr, off, nil 2597 } 2598 rr.Salt, off, err = unpackStringHex(msg, off, off+int(rr.SaltLength)) 2599 if err != nil { 2600 return rr, off, err 2601 } 2602 return rr, off, err 2603} 2604 2605func unpackOPENPGPKEY(h RR_Header, msg []byte, off int) (RR, int, error) { 2606 rr := new(OPENPGPKEY) 2607 rr.Hdr = h 2608 if noRdata(h) { 2609 return rr, off, nil 2610 } 2611 var err error 2612 rdStart := off 2613 _ = rdStart 2614 2615 rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength)) 2616 if err != nil { 2617 return rr, off, err 2618 } 2619 return rr, off, err 2620} 2621 2622func unpackOPT(h RR_Header, msg []byte, off int) (RR, int, error) { 2623 rr := new(OPT) 2624 rr.Hdr = h 2625 if noRdata(h) { 2626 return rr, off, nil 2627 } 2628 var err error 2629 rdStart := off 2630 _ = rdStart 2631 2632 rr.Option, off, err = unpackDataOpt(msg, off) 2633 if err != nil { 2634 return rr, off, err 2635 } 2636 return rr, off, err 2637} 2638 2639func unpackPTR(h RR_Header, msg []byte, off int) (RR, int, error) { 2640 rr := new(PTR) 2641 rr.Hdr = h 2642 if noRdata(h) { 2643 return rr, off, nil 2644 } 2645 var err error 2646 rdStart := off 2647 _ = rdStart 2648 2649 rr.Ptr, off, err = UnpackDomainName(msg, off) 2650 if err != nil { 2651 return rr, off, err 2652 } 2653 return rr, off, err 2654} 2655 2656func unpackPX(h RR_Header, msg []byte, off int) (RR, int, error) { 2657 rr := new(PX) 2658 rr.Hdr = h 2659 if noRdata(h) { 2660 return rr, off, nil 2661 } 2662 var err error 2663 rdStart := off 2664 _ = rdStart 2665 2666 rr.Preference, off, err = unpackUint16(msg, off) 2667 if err != nil { 2668 return rr, off, err 2669 } 2670 if off == len(msg) { 2671 return rr, off, nil 2672 } 2673 rr.Map822, off, err = UnpackDomainName(msg, off) 2674 if err != nil { 2675 return rr, off, err 2676 } 2677 if off == len(msg) { 2678 return rr, off, nil 2679 } 2680 rr.Mapx400, off, err = UnpackDomainName(msg, off) 2681 if err != nil { 2682 return rr, off, err 2683 } 2684 return rr, off, err 2685} 2686 2687func unpackRFC3597(h RR_Header, msg []byte, off int) (RR, int, error) { 2688 rr := new(RFC3597) 2689 rr.Hdr = h 2690 if noRdata(h) { 2691 return rr, off, nil 2692 } 2693 var err error 2694 rdStart := off 2695 _ = rdStart 2696 2697 rr.Rdata, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength)) 2698 if err != nil { 2699 return rr, off, err 2700 } 2701 return rr, off, err 2702} 2703 2704func unpackRKEY(h RR_Header, msg []byte, off int) (RR, int, error) { 2705 rr := new(RKEY) 2706 rr.Hdr = h 2707 if noRdata(h) { 2708 return rr, off, nil 2709 } 2710 var err error 2711 rdStart := off 2712 _ = rdStart 2713 2714 rr.Flags, off, err = unpackUint16(msg, off) 2715 if err != nil { 2716 return rr, off, err 2717 } 2718 if off == len(msg) { 2719 return rr, off, nil 2720 } 2721 rr.Protocol, off, err = unpackUint8(msg, off) 2722 if err != nil { 2723 return rr, off, err 2724 } 2725 if off == len(msg) { 2726 return rr, off, nil 2727 } 2728 rr.Algorithm, off, err = unpackUint8(msg, off) 2729 if err != nil { 2730 return rr, off, err 2731 } 2732 if off == len(msg) { 2733 return rr, off, nil 2734 } 2735 rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength)) 2736 if err != nil { 2737 return rr, off, err 2738 } 2739 return rr, off, err 2740} 2741 2742func unpackRP(h RR_Header, msg []byte, off int) (RR, int, error) { 2743 rr := new(RP) 2744 rr.Hdr = h 2745 if noRdata(h) { 2746 return rr, off, nil 2747 } 2748 var err error 2749 rdStart := off 2750 _ = rdStart 2751 2752 rr.Mbox, off, err = UnpackDomainName(msg, off) 2753 if err != nil { 2754 return rr, off, err 2755 } 2756 if off == len(msg) { 2757 return rr, off, nil 2758 } 2759 rr.Txt, off, err = UnpackDomainName(msg, off) 2760 if err != nil { 2761 return rr, off, err 2762 } 2763 return rr, off, err 2764} 2765 2766func unpackRRSIG(h RR_Header, msg []byte, off int) (RR, int, error) { 2767 rr := new(RRSIG) 2768 rr.Hdr = h 2769 if noRdata(h) { 2770 return rr, off, nil 2771 } 2772 var err error 2773 rdStart := off 2774 _ = rdStart 2775 2776 rr.TypeCovered, off, err = unpackUint16(msg, off) 2777 if err != nil { 2778 return rr, off, err 2779 } 2780 if off == len(msg) { 2781 return rr, off, nil 2782 } 2783 rr.Algorithm, off, err = unpackUint8(msg, off) 2784 if err != nil { 2785 return rr, off, err 2786 } 2787 if off == len(msg) { 2788 return rr, off, nil 2789 } 2790 rr.Labels, off, err = unpackUint8(msg, off) 2791 if err != nil { 2792 return rr, off, err 2793 } 2794 if off == len(msg) { 2795 return rr, off, nil 2796 } 2797 rr.OrigTtl, off, err = unpackUint32(msg, off) 2798 if err != nil { 2799 return rr, off, err 2800 } 2801 if off == len(msg) { 2802 return rr, off, nil 2803 } 2804 rr.Expiration, off, err = unpackUint32(msg, off) 2805 if err != nil { 2806 return rr, off, err 2807 } 2808 if off == len(msg) { 2809 return rr, off, nil 2810 } 2811 rr.Inception, off, err = unpackUint32(msg, off) 2812 if err != nil { 2813 return rr, off, err 2814 } 2815 if off == len(msg) { 2816 return rr, off, nil 2817 } 2818 rr.KeyTag, off, err = unpackUint16(msg, off) 2819 if err != nil { 2820 return rr, off, err 2821 } 2822 if off == len(msg) { 2823 return rr, off, nil 2824 } 2825 rr.SignerName, off, err = UnpackDomainName(msg, off) 2826 if err != nil { 2827 return rr, off, err 2828 } 2829 if off == len(msg) { 2830 return rr, off, nil 2831 } 2832 rr.Signature, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength)) 2833 if err != nil { 2834 return rr, off, err 2835 } 2836 return rr, off, err 2837} 2838 2839func unpackRT(h RR_Header, msg []byte, off int) (RR, int, error) { 2840 rr := new(RT) 2841 rr.Hdr = h 2842 if noRdata(h) { 2843 return rr, off, nil 2844 } 2845 var err error 2846 rdStart := off 2847 _ = rdStart 2848 2849 rr.Preference, off, err = unpackUint16(msg, off) 2850 if err != nil { 2851 return rr, off, err 2852 } 2853 if off == len(msg) { 2854 return rr, off, nil 2855 } 2856 rr.Host, off, err = UnpackDomainName(msg, off) 2857 if err != nil { 2858 return rr, off, err 2859 } 2860 return rr, off, err 2861} 2862 2863func unpackSIG(h RR_Header, msg []byte, off int) (RR, int, error) { 2864 rr := new(SIG) 2865 rr.Hdr = h 2866 if noRdata(h) { 2867 return rr, off, nil 2868 } 2869 var err error 2870 rdStart := off 2871 _ = rdStart 2872 2873 rr.TypeCovered, off, err = unpackUint16(msg, off) 2874 if err != nil { 2875 return rr, off, err 2876 } 2877 if off == len(msg) { 2878 return rr, off, nil 2879 } 2880 rr.Algorithm, off, err = unpackUint8(msg, off) 2881 if err != nil { 2882 return rr, off, err 2883 } 2884 if off == len(msg) { 2885 return rr, off, nil 2886 } 2887 rr.Labels, off, err = unpackUint8(msg, off) 2888 if err != nil { 2889 return rr, off, err 2890 } 2891 if off == len(msg) { 2892 return rr, off, nil 2893 } 2894 rr.OrigTtl, off, err = unpackUint32(msg, off) 2895 if err != nil { 2896 return rr, off, err 2897 } 2898 if off == len(msg) { 2899 return rr, off, nil 2900 } 2901 rr.Expiration, off, err = unpackUint32(msg, off) 2902 if err != nil { 2903 return rr, off, err 2904 } 2905 if off == len(msg) { 2906 return rr, off, nil 2907 } 2908 rr.Inception, off, err = unpackUint32(msg, off) 2909 if err != nil { 2910 return rr, off, err 2911 } 2912 if off == len(msg) { 2913 return rr, off, nil 2914 } 2915 rr.KeyTag, off, err = unpackUint16(msg, off) 2916 if err != nil { 2917 return rr, off, err 2918 } 2919 if off == len(msg) { 2920 return rr, off, nil 2921 } 2922 rr.SignerName, off, err = UnpackDomainName(msg, off) 2923 if err != nil { 2924 return rr, off, err 2925 } 2926 if off == len(msg) { 2927 return rr, off, nil 2928 } 2929 rr.Signature, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength)) 2930 if err != nil { 2931 return rr, off, err 2932 } 2933 return rr, off, err 2934} 2935 2936func unpackSMIMEA(h RR_Header, msg []byte, off int) (RR, int, error) { 2937 rr := new(SMIMEA) 2938 rr.Hdr = h 2939 if noRdata(h) { 2940 return rr, off, nil 2941 } 2942 var err error 2943 rdStart := off 2944 _ = rdStart 2945 2946 rr.Usage, off, err = unpackUint8(msg, off) 2947 if err != nil { 2948 return rr, off, err 2949 } 2950 if off == len(msg) { 2951 return rr, off, nil 2952 } 2953 rr.Selector, off, err = unpackUint8(msg, off) 2954 if err != nil { 2955 return rr, off, err 2956 } 2957 if off == len(msg) { 2958 return rr, off, nil 2959 } 2960 rr.MatchingType, off, err = unpackUint8(msg, off) 2961 if err != nil { 2962 return rr, off, err 2963 } 2964 if off == len(msg) { 2965 return rr, off, nil 2966 } 2967 rr.Certificate, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength)) 2968 if err != nil { 2969 return rr, off, err 2970 } 2971 return rr, off, err 2972} 2973 2974func unpackSOA(h RR_Header, msg []byte, off int) (RR, int, error) { 2975 rr := new(SOA) 2976 rr.Hdr = h 2977 if noRdata(h) { 2978 return rr, off, nil 2979 } 2980 var err error 2981 rdStart := off 2982 _ = rdStart 2983 2984 rr.Ns, off, err = UnpackDomainName(msg, off) 2985 if err != nil { 2986 return rr, off, err 2987 } 2988 if off == len(msg) { 2989 return rr, off, nil 2990 } 2991 rr.Mbox, off, err = UnpackDomainName(msg, off) 2992 if err != nil { 2993 return rr, off, err 2994 } 2995 if off == len(msg) { 2996 return rr, off, nil 2997 } 2998 rr.Serial, off, err = unpackUint32(msg, off) 2999 if err != nil { 3000 return rr, off, err 3001 } 3002 if off == len(msg) { 3003 return rr, off, nil 3004 } 3005 rr.Refresh, off, err = unpackUint32(msg, off) 3006 if err != nil { 3007 return rr, off, err 3008 } 3009 if off == len(msg) { 3010 return rr, off, nil 3011 } 3012 rr.Retry, off, err = unpackUint32(msg, off) 3013 if err != nil { 3014 return rr, off, err 3015 } 3016 if off == len(msg) { 3017 return rr, off, nil 3018 } 3019 rr.Expire, off, err = unpackUint32(msg, off) 3020 if err != nil { 3021 return rr, off, err 3022 } 3023 if off == len(msg) { 3024 return rr, off, nil 3025 } 3026 rr.Minttl, off, err = unpackUint32(msg, off) 3027 if err != nil { 3028 return rr, off, err 3029 } 3030 return rr, off, err 3031} 3032 3033func unpackSPF(h RR_Header, msg []byte, off int) (RR, int, error) { 3034 rr := new(SPF) 3035 rr.Hdr = h 3036 if noRdata(h) { 3037 return rr, off, nil 3038 } 3039 var err error 3040 rdStart := off 3041 _ = rdStart 3042 3043 rr.Txt, off, err = unpackStringTxt(msg, off) 3044 if err != nil { 3045 return rr, off, err 3046 } 3047 return rr, off, err 3048} 3049 3050func unpackSRV(h RR_Header, msg []byte, off int) (RR, int, error) { 3051 rr := new(SRV) 3052 rr.Hdr = h 3053 if noRdata(h) { 3054 return rr, off, nil 3055 } 3056 var err error 3057 rdStart := off 3058 _ = rdStart 3059 3060 rr.Priority, off, err = unpackUint16(msg, off) 3061 if err != nil { 3062 return rr, off, err 3063 } 3064 if off == len(msg) { 3065 return rr, off, nil 3066 } 3067 rr.Weight, off, err = unpackUint16(msg, off) 3068 if err != nil { 3069 return rr, off, err 3070 } 3071 if off == len(msg) { 3072 return rr, off, nil 3073 } 3074 rr.Port, off, err = unpackUint16(msg, off) 3075 if err != nil { 3076 return rr, off, err 3077 } 3078 if off == len(msg) { 3079 return rr, off, nil 3080 } 3081 rr.Target, off, err = UnpackDomainName(msg, off) 3082 if err != nil { 3083 return rr, off, err 3084 } 3085 return rr, off, err 3086} 3087 3088func unpackSSHFP(h RR_Header, msg []byte, off int) (RR, int, error) { 3089 rr := new(SSHFP) 3090 rr.Hdr = h 3091 if noRdata(h) { 3092 return rr, off, nil 3093 } 3094 var err error 3095 rdStart := off 3096 _ = rdStart 3097 3098 rr.Algorithm, off, err = unpackUint8(msg, off) 3099 if err != nil { 3100 return rr, off, err 3101 } 3102 if off == len(msg) { 3103 return rr, off, nil 3104 } 3105 rr.Type, off, err = unpackUint8(msg, off) 3106 if err != nil { 3107 return rr, off, err 3108 } 3109 if off == len(msg) { 3110 return rr, off, nil 3111 } 3112 rr.FingerPrint, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength)) 3113 if err != nil { 3114 return rr, off, err 3115 } 3116 return rr, off, err 3117} 3118 3119func unpackTA(h RR_Header, msg []byte, off int) (RR, int, error) { 3120 rr := new(TA) 3121 rr.Hdr = h 3122 if noRdata(h) { 3123 return rr, off, nil 3124 } 3125 var err error 3126 rdStart := off 3127 _ = rdStart 3128 3129 rr.KeyTag, off, err = unpackUint16(msg, off) 3130 if err != nil { 3131 return rr, off, err 3132 } 3133 if off == len(msg) { 3134 return rr, off, nil 3135 } 3136 rr.Algorithm, off, err = unpackUint8(msg, off) 3137 if err != nil { 3138 return rr, off, err 3139 } 3140 if off == len(msg) { 3141 return rr, off, nil 3142 } 3143 rr.DigestType, off, err = unpackUint8(msg, off) 3144 if err != nil { 3145 return rr, off, err 3146 } 3147 if off == len(msg) { 3148 return rr, off, nil 3149 } 3150 rr.Digest, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength)) 3151 if err != nil { 3152 return rr, off, err 3153 } 3154 return rr, off, err 3155} 3156 3157func unpackTALINK(h RR_Header, msg []byte, off int) (RR, int, error) { 3158 rr := new(TALINK) 3159 rr.Hdr = h 3160 if noRdata(h) { 3161 return rr, off, nil 3162 } 3163 var err error 3164 rdStart := off 3165 _ = rdStart 3166 3167 rr.PreviousName, off, err = UnpackDomainName(msg, off) 3168 if err != nil { 3169 return rr, off, err 3170 } 3171 if off == len(msg) { 3172 return rr, off, nil 3173 } 3174 rr.NextName, off, err = UnpackDomainName(msg, off) 3175 if err != nil { 3176 return rr, off, err 3177 } 3178 return rr, off, err 3179} 3180 3181func unpackTKEY(h RR_Header, msg []byte, off int) (RR, int, error) { 3182 rr := new(TKEY) 3183 rr.Hdr = h 3184 if noRdata(h) { 3185 return rr, off, nil 3186 } 3187 var err error 3188 rdStart := off 3189 _ = rdStart 3190 3191 rr.Algorithm, off, err = UnpackDomainName(msg, off) 3192 if err != nil { 3193 return rr, off, err 3194 } 3195 if off == len(msg) { 3196 return rr, off, nil 3197 } 3198 rr.Inception, off, err = unpackUint32(msg, off) 3199 if err != nil { 3200 return rr, off, err 3201 } 3202 if off == len(msg) { 3203 return rr, off, nil 3204 } 3205 rr.Expiration, off, err = unpackUint32(msg, off) 3206 if err != nil { 3207 return rr, off, err 3208 } 3209 if off == len(msg) { 3210 return rr, off, nil 3211 } 3212 rr.Mode, off, err = unpackUint16(msg, off) 3213 if err != nil { 3214 return rr, off, err 3215 } 3216 if off == len(msg) { 3217 return rr, off, nil 3218 } 3219 rr.Error, off, err = unpackUint16(msg, off) 3220 if err != nil { 3221 return rr, off, err 3222 } 3223 if off == len(msg) { 3224 return rr, off, nil 3225 } 3226 rr.KeySize, off, err = unpackUint16(msg, off) 3227 if err != nil { 3228 return rr, off, err 3229 } 3230 if off == len(msg) { 3231 return rr, off, nil 3232 } 3233 rr.Key, off, err = unpackString(msg, off) 3234 if err != nil { 3235 return rr, off, err 3236 } 3237 if off == len(msg) { 3238 return rr, off, nil 3239 } 3240 rr.OtherLen, off, err = unpackUint16(msg, off) 3241 if err != nil { 3242 return rr, off, err 3243 } 3244 if off == len(msg) { 3245 return rr, off, nil 3246 } 3247 rr.OtherData, off, err = unpackString(msg, off) 3248 if err != nil { 3249 return rr, off, err 3250 } 3251 return rr, off, err 3252} 3253 3254func unpackTLSA(h RR_Header, msg []byte, off int) (RR, int, error) { 3255 rr := new(TLSA) 3256 rr.Hdr = h 3257 if noRdata(h) { 3258 return rr, off, nil 3259 } 3260 var err error 3261 rdStart := off 3262 _ = rdStart 3263 3264 rr.Usage, off, err = unpackUint8(msg, off) 3265 if err != nil { 3266 return rr, off, err 3267 } 3268 if off == len(msg) { 3269 return rr, off, nil 3270 } 3271 rr.Selector, off, err = unpackUint8(msg, off) 3272 if err != nil { 3273 return rr, off, err 3274 } 3275 if off == len(msg) { 3276 return rr, off, nil 3277 } 3278 rr.MatchingType, off, err = unpackUint8(msg, off) 3279 if err != nil { 3280 return rr, off, err 3281 } 3282 if off == len(msg) { 3283 return rr, off, nil 3284 } 3285 rr.Certificate, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength)) 3286 if err != nil { 3287 return rr, off, err 3288 } 3289 return rr, off, err 3290} 3291 3292func unpackTSIG(h RR_Header, msg []byte, off int) (RR, int, error) { 3293 rr := new(TSIG) 3294 rr.Hdr = h 3295 if noRdata(h) { 3296 return rr, off, nil 3297 } 3298 var err error 3299 rdStart := off 3300 _ = rdStart 3301 3302 rr.Algorithm, off, err = UnpackDomainName(msg, off) 3303 if err != nil { 3304 return rr, off, err 3305 } 3306 if off == len(msg) { 3307 return rr, off, nil 3308 } 3309 rr.TimeSigned, off, err = unpackUint48(msg, off) 3310 if err != nil { 3311 return rr, off, err 3312 } 3313 if off == len(msg) { 3314 return rr, off, nil 3315 } 3316 rr.Fudge, off, err = unpackUint16(msg, off) 3317 if err != nil { 3318 return rr, off, err 3319 } 3320 if off == len(msg) { 3321 return rr, off, nil 3322 } 3323 rr.MACSize, off, err = unpackUint16(msg, off) 3324 if err != nil { 3325 return rr, off, err 3326 } 3327 if off == len(msg) { 3328 return rr, off, nil 3329 } 3330 rr.MAC, off, err = unpackStringHex(msg, off, off+int(rr.MACSize)) 3331 if err != nil { 3332 return rr, off, err 3333 } 3334 rr.OrigId, off, err = unpackUint16(msg, off) 3335 if err != nil { 3336 return rr, off, err 3337 } 3338 if off == len(msg) { 3339 return rr, off, nil 3340 } 3341 rr.Error, off, err = unpackUint16(msg, off) 3342 if err != nil { 3343 return rr, off, err 3344 } 3345 if off == len(msg) { 3346 return rr, off, nil 3347 } 3348 rr.OtherLen, off, err = unpackUint16(msg, off) 3349 if err != nil { 3350 return rr, off, err 3351 } 3352 if off == len(msg) { 3353 return rr, off, nil 3354 } 3355 rr.OtherData, off, err = unpackStringHex(msg, off, off+int(rr.OtherLen)) 3356 if err != nil { 3357 return rr, off, err 3358 } 3359 return rr, off, err 3360} 3361 3362func unpackTXT(h RR_Header, msg []byte, off int) (RR, int, error) { 3363 rr := new(TXT) 3364 rr.Hdr = h 3365 if noRdata(h) { 3366 return rr, off, nil 3367 } 3368 var err error 3369 rdStart := off 3370 _ = rdStart 3371 3372 rr.Txt, off, err = unpackStringTxt(msg, off) 3373 if err != nil { 3374 return rr, off, err 3375 } 3376 return rr, off, err 3377} 3378 3379func unpackUID(h RR_Header, msg []byte, off int) (RR, int, error) { 3380 rr := new(UID) 3381 rr.Hdr = h 3382 if noRdata(h) { 3383 return rr, off, nil 3384 } 3385 var err error 3386 rdStart := off 3387 _ = rdStart 3388 3389 rr.Uid, off, err = unpackUint32(msg, off) 3390 if err != nil { 3391 return rr, off, err 3392 } 3393 return rr, off, err 3394} 3395 3396func unpackUINFO(h RR_Header, msg []byte, off int) (RR, int, error) { 3397 rr := new(UINFO) 3398 rr.Hdr = h 3399 if noRdata(h) { 3400 return rr, off, nil 3401 } 3402 var err error 3403 rdStart := off 3404 _ = rdStart 3405 3406 rr.Uinfo, off, err = unpackString(msg, off) 3407 if err != nil { 3408 return rr, off, err 3409 } 3410 return rr, off, err 3411} 3412 3413func unpackURI(h RR_Header, msg []byte, off int) (RR, int, error) { 3414 rr := new(URI) 3415 rr.Hdr = h 3416 if noRdata(h) { 3417 return rr, off, nil 3418 } 3419 var err error 3420 rdStart := off 3421 _ = rdStart 3422 3423 rr.Priority, off, err = unpackUint16(msg, off) 3424 if err != nil { 3425 return rr, off, err 3426 } 3427 if off == len(msg) { 3428 return rr, off, nil 3429 } 3430 rr.Weight, off, err = unpackUint16(msg, off) 3431 if err != nil { 3432 return rr, off, err 3433 } 3434 if off == len(msg) { 3435 return rr, off, nil 3436 } 3437 rr.Target, off, err = unpackStringOctet(msg, off) 3438 if err != nil { 3439 return rr, off, err 3440 } 3441 return rr, off, err 3442} 3443 3444func unpackX25(h RR_Header, msg []byte, off int) (RR, int, error) { 3445 rr := new(X25) 3446 rr.Hdr = h 3447 if noRdata(h) { 3448 return rr, off, nil 3449 } 3450 var err error 3451 rdStart := off 3452 _ = rdStart 3453 3454 rr.PSDNAddress, off, err = unpackString(msg, off) 3455 if err != nil { 3456 return rr, off, err 3457 } 3458 return rr, off, err 3459} 3460 3461var typeToUnpack = map[uint16]func(RR_Header, []byte, int) (RR, int, error){ 3462 TypeA: unpackA, 3463 TypeAAAA: unpackAAAA, 3464 TypeAFSDB: unpackAFSDB, 3465 TypeANY: unpackANY, 3466 TypeCAA: unpackCAA, 3467 TypeCDNSKEY: unpackCDNSKEY, 3468 TypeCDS: unpackCDS, 3469 TypeCERT: unpackCERT, 3470 TypeCNAME: unpackCNAME, 3471 TypeDHCID: unpackDHCID, 3472 TypeDLV: unpackDLV, 3473 TypeDNAME: unpackDNAME, 3474 TypeDNSKEY: unpackDNSKEY, 3475 TypeDS: unpackDS, 3476 TypeEID: unpackEID, 3477 TypeEUI48: unpackEUI48, 3478 TypeEUI64: unpackEUI64, 3479 TypeGID: unpackGID, 3480 TypeGPOS: unpackGPOS, 3481 TypeHINFO: unpackHINFO, 3482 TypeHIP: unpackHIP, 3483 TypeKEY: unpackKEY, 3484 TypeKX: unpackKX, 3485 TypeL32: unpackL32, 3486 TypeL64: unpackL64, 3487 TypeLOC: unpackLOC, 3488 TypeLP: unpackLP, 3489 TypeMB: unpackMB, 3490 TypeMD: unpackMD, 3491 TypeMF: unpackMF, 3492 TypeMG: unpackMG, 3493 TypeMINFO: unpackMINFO, 3494 TypeMR: unpackMR, 3495 TypeMX: unpackMX, 3496 TypeNAPTR: unpackNAPTR, 3497 TypeNID: unpackNID, 3498 TypeNIMLOC: unpackNIMLOC, 3499 TypeNINFO: unpackNINFO, 3500 TypeNS: unpackNS, 3501 TypeNSAPPTR: unpackNSAPPTR, 3502 TypeNSEC: unpackNSEC, 3503 TypeNSEC3: unpackNSEC3, 3504 TypeNSEC3PARAM: unpackNSEC3PARAM, 3505 TypeOPENPGPKEY: unpackOPENPGPKEY, 3506 TypeOPT: unpackOPT, 3507 TypePTR: unpackPTR, 3508 TypePX: unpackPX, 3509 TypeRKEY: unpackRKEY, 3510 TypeRP: unpackRP, 3511 TypeRRSIG: unpackRRSIG, 3512 TypeRT: unpackRT, 3513 TypeSIG: unpackSIG, 3514 TypeSMIMEA: unpackSMIMEA, 3515 TypeSOA: unpackSOA, 3516 TypeSPF: unpackSPF, 3517 TypeSRV: unpackSRV, 3518 TypeSSHFP: unpackSSHFP, 3519 TypeTA: unpackTA, 3520 TypeTALINK: unpackTALINK, 3521 TypeTKEY: unpackTKEY, 3522 TypeTLSA: unpackTLSA, 3523 TypeTSIG: unpackTSIG, 3524 TypeTXT: unpackTXT, 3525 TypeUID: unpackUID, 3526 TypeUINFO: unpackUINFO, 3527 TypeURI: unpackURI, 3528 TypeX25: unpackX25, 3529} 3530