forked from TrueCloudLab/distribution
a685e3fc98
Vndr has a simpler configuration and allows pointing to forked packages. Additionally other docker projects are now using vndr making vendoring in distribution more consistent. Updates letsencrypt to use fork. No longer uses sub-vendored packages. Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
3529 lines
74 KiB
Go
3529 lines
74 KiB
Go
// *** DO NOT MODIFY ***
|
|
// AUTOGENERATED BY go generate from msg_generate.go
|
|
|
|
package dns
|
|
|
|
// pack*() functions
|
|
|
|
func (rr *A) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packDataA(rr.A, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *AAAA) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packDataAAAA(rr.AAAA, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *AFSDB) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.Subtype, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = PackDomainName(rr.Hostname, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *ANY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *CAA) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint8(rr.Flag, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packString(rr.Tag, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringOctet(rr.Value, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *CDNSKEY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.Flags, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Protocol, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Algorithm, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringBase64(rr.PublicKey, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *CDS) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.KeyTag, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Algorithm, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.DigestType, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringHex(rr.Digest, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *CERT) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.Type, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint16(rr.KeyTag, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Algorithm, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringBase64(rr.Certificate, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *CNAME) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = PackDomainName(rr.Target, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *DHCID) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packStringBase64(rr.Digest, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *DLV) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.KeyTag, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Algorithm, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.DigestType, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringHex(rr.Digest, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *DNAME) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = PackDomainName(rr.Target, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *DNSKEY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.Flags, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Protocol, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Algorithm, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringBase64(rr.PublicKey, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *DS) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.KeyTag, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Algorithm, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.DigestType, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringHex(rr.Digest, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *EID) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packStringHex(rr.Endpoint, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *EUI48) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint48(rr.Address, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *EUI64) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint64(rr.Address, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *GID) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint32(rr.Gid, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *GPOS) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packString(rr.Longitude, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packString(rr.Latitude, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packString(rr.Altitude, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *HINFO) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packString(rr.Cpu, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packString(rr.Os, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *HIP) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint8(rr.HitLength, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.PublicKeyAlgorithm, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint16(rr.PublicKeyLength, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringHex(rr.Hit, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringBase64(rr.PublicKey, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packDataDomainNames(rr.RendezvousServers, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *KEY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.Flags, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Protocol, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Algorithm, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringBase64(rr.PublicKey, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *KX) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.Preference, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = PackDomainName(rr.Exchanger, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *L32) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.Preference, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packDataA(rr.Locator32, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *L64) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.Preference, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint64(rr.Locator64, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *LOC) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint8(rr.Version, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Size, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.HorizPre, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.VertPre, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint32(rr.Latitude, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint32(rr.Longitude, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint32(rr.Altitude, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *LP) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.Preference, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = PackDomainName(rr.Fqdn, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *MB) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = PackDomainName(rr.Mb, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *MD) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = PackDomainName(rr.Md, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *MF) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = PackDomainName(rr.Mf, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *MG) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = PackDomainName(rr.Mg, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *MINFO) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = PackDomainName(rr.Rmail, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = PackDomainName(rr.Email, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *MR) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = PackDomainName(rr.Mr, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *MX) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.Preference, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = PackDomainName(rr.Mx, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *NAPTR) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.Order, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint16(rr.Preference, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packString(rr.Flags, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packString(rr.Service, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packString(rr.Regexp, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = PackDomainName(rr.Replacement, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *NID) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.Preference, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint64(rr.NodeID, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *NIMLOC) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packStringHex(rr.Locator, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *NINFO) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packStringTxt(rr.ZSData, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *NS) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = PackDomainName(rr.Ns, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *NSAPPTR) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = PackDomainName(rr.Ptr, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *NSEC) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = PackDomainName(rr.NextDomain, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packDataNsec(rr.TypeBitMap, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *NSEC3) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint8(rr.Hash, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Flags, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint16(rr.Iterations, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.SaltLength, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
if rr.Salt == "-" { /* do nothing, empty salt */
|
|
}
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.HashLength, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringBase32(rr.NextDomain, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packDataNsec(rr.TypeBitMap, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *NSEC3PARAM) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint8(rr.Hash, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Flags, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint16(rr.Iterations, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.SaltLength, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
if rr.Salt == "-" { /* do nothing, empty salt */
|
|
}
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *OPENPGPKEY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packStringBase64(rr.PublicKey, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *OPT) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packDataOpt(rr.Option, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *PTR) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = PackDomainName(rr.Ptr, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *PX) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.Preference, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = PackDomainName(rr.Map822, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = PackDomainName(rr.Mapx400, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *RFC3597) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packStringHex(rr.Rdata, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *RKEY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.Flags, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Protocol, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Algorithm, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringBase64(rr.PublicKey, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *RP) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = PackDomainName(rr.Mbox, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = PackDomainName(rr.Txt, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *RRSIG) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.TypeCovered, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Algorithm, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Labels, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint32(rr.OrigTtl, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint32(rr.Expiration, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint32(rr.Inception, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint16(rr.KeyTag, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = PackDomainName(rr.SignerName, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringBase64(rr.Signature, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *RT) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.Preference, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = PackDomainName(rr.Host, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *SIG) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.TypeCovered, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Algorithm, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Labels, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint32(rr.OrigTtl, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint32(rr.Expiration, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint32(rr.Inception, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint16(rr.KeyTag, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = PackDomainName(rr.SignerName, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringBase64(rr.Signature, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *SMIMEA) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint8(rr.Usage, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Selector, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.MatchingType, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringHex(rr.Certificate, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *SOA) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = PackDomainName(rr.Ns, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = PackDomainName(rr.Mbox, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint32(rr.Serial, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint32(rr.Refresh, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint32(rr.Retry, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint32(rr.Expire, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint32(rr.Minttl, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *SPF) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packStringTxt(rr.Txt, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *SRV) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.Priority, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint16(rr.Weight, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint16(rr.Port, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = PackDomainName(rr.Target, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *SSHFP) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint8(rr.Algorithm, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Type, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringHex(rr.FingerPrint, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *TA) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.KeyTag, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Algorithm, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.DigestType, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringHex(rr.Digest, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *TALINK) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = PackDomainName(rr.PreviousName, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = PackDomainName(rr.NextName, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *TKEY) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = PackDomainName(rr.Algorithm, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint32(rr.Inception, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint32(rr.Expiration, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint16(rr.Mode, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint16(rr.Error, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint16(rr.KeySize, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packString(rr.Key, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint16(rr.OtherLen, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packString(rr.OtherData, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *TLSA) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint8(rr.Usage, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.Selector, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint8(rr.MatchingType, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringHex(rr.Certificate, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *TSIG) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = PackDomainName(rr.Algorithm, msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint48(rr.TimeSigned, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint16(rr.Fudge, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint16(rr.MACSize, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringHex(rr.MAC, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint16(rr.OrigId, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint16(rr.Error, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint16(rr.OtherLen, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringHex(rr.OtherData, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *TXT) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packStringTxt(rr.Txt, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *UID) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint32(rr.Uid, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *UINFO) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packString(rr.Uinfo, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *URI) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packUint16(rr.Priority, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packUint16(rr.Weight, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
off, err = packStringOctet(rr.Target, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
func (rr *X25) pack(msg []byte, off int, compression map[string]int, compress bool) (int, error) {
|
|
off, err := rr.Hdr.pack(msg, off, compression, compress)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
headerEnd := off
|
|
off, err = packString(rr.PSDNAddress, msg, off)
|
|
if err != nil {
|
|
return off, err
|
|
}
|
|
rr.Header().Rdlength = uint16(off - headerEnd)
|
|
return off, nil
|
|
}
|
|
|
|
// unpack*() functions
|
|
|
|
func unpackA(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(A)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.A, off, err = unpackDataA(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackAAAA(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(AAAA)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.AAAA, off, err = unpackDataAAAA(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackAFSDB(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(AFSDB)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Subtype, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Hostname, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackANY(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(ANY)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackCAA(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(CAA)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Flag, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Tag, off, err = unpackString(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Value, off, err = unpackStringOctet(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackCDNSKEY(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(CDNSKEY)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Flags, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Protocol, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Algorithm, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackCDS(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(CDS)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.KeyTag, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Algorithm, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.DigestType, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Digest, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackCERT(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(CERT)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Type, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.KeyTag, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Algorithm, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Certificate, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackCNAME(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(CNAME)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Target, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackDHCID(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(DHCID)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Digest, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackDLV(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(DLV)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.KeyTag, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Algorithm, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.DigestType, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Digest, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackDNAME(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(DNAME)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Target, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackDNSKEY(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(DNSKEY)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Flags, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Protocol, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Algorithm, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackDS(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(DS)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.KeyTag, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Algorithm, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.DigestType, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Digest, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackEID(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(EID)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Endpoint, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackEUI48(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(EUI48)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Address, off, err = unpackUint48(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackEUI64(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(EUI64)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Address, off, err = unpackUint64(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackGID(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(GID)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Gid, off, err = unpackUint32(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackGPOS(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(GPOS)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Longitude, off, err = unpackString(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Latitude, off, err = unpackString(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Altitude, off, err = unpackString(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackHINFO(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(HINFO)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Cpu, off, err = unpackString(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Os, off, err = unpackString(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackHIP(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(HIP)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.HitLength, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.PublicKeyAlgorithm, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.PublicKeyLength, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Hit, off, err = unpackStringHex(msg, off, off+int(rr.HitLength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
rr.PublicKey, off, err = unpackStringBase64(msg, off, off+int(rr.PublicKeyLength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
rr.RendezvousServers, off, err = unpackDataDomainNames(msg, off, rdStart+int(rr.Hdr.Rdlength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackKEY(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(KEY)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Flags, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Protocol, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Algorithm, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackKX(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(KX)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Preference, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Exchanger, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackL32(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(L32)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Preference, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Locator32, off, err = unpackDataA(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackL64(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(L64)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Preference, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Locator64, off, err = unpackUint64(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackLOC(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(LOC)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Version, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Size, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.HorizPre, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.VertPre, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Latitude, off, err = unpackUint32(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Longitude, off, err = unpackUint32(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Altitude, off, err = unpackUint32(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackLP(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(LP)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Preference, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Fqdn, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackMB(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(MB)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Mb, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackMD(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(MD)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Md, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackMF(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(MF)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Mf, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackMG(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(MG)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Mg, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackMINFO(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(MINFO)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Rmail, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Email, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackMR(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(MR)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Mr, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackMX(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(MX)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Preference, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Mx, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackNAPTR(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(NAPTR)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Order, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Preference, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Flags, off, err = unpackString(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Service, off, err = unpackString(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Regexp, off, err = unpackString(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Replacement, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackNID(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(NID)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Preference, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.NodeID, off, err = unpackUint64(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackNIMLOC(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(NIMLOC)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Locator, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackNINFO(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(NINFO)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.ZSData, off, err = unpackStringTxt(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackNS(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(NS)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Ns, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackNSAPPTR(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(NSAPPTR)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Ptr, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackNSEC(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(NSEC)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.NextDomain, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.TypeBitMap, off, err = unpackDataNsec(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackNSEC3(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(NSEC3)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Hash, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Flags, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Iterations, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.SaltLength, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Salt, off, err = unpackStringHex(msg, off, off+int(rr.SaltLength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
rr.HashLength, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.NextDomain, off, err = unpackStringBase32(msg, off, off+int(rr.HashLength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
rr.TypeBitMap, off, err = unpackDataNsec(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackNSEC3PARAM(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(NSEC3PARAM)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Hash, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Flags, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Iterations, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.SaltLength, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Salt, off, err = unpackStringHex(msg, off, off+int(rr.SaltLength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackOPENPGPKEY(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(OPENPGPKEY)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackOPT(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(OPT)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Option, off, err = unpackDataOpt(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackPTR(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(PTR)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Ptr, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackPX(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(PX)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Preference, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Map822, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Mapx400, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackRFC3597(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(RFC3597)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Rdata, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackRKEY(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(RKEY)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Flags, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Protocol, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Algorithm, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackRP(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(RP)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Mbox, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Txt, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackRRSIG(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(RRSIG)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.TypeCovered, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Algorithm, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Labels, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.OrigTtl, off, err = unpackUint32(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Expiration, off, err = unpackUint32(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Inception, off, err = unpackUint32(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.KeyTag, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.SignerName, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Signature, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackRT(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(RT)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Preference, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Host, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackSIG(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(SIG)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.TypeCovered, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Algorithm, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Labels, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.OrigTtl, off, err = unpackUint32(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Expiration, off, err = unpackUint32(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Inception, off, err = unpackUint32(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.KeyTag, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.SignerName, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Signature, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackSMIMEA(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(SMIMEA)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Usage, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Selector, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.MatchingType, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Certificate, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackSOA(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(SOA)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Ns, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Mbox, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Serial, off, err = unpackUint32(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Refresh, off, err = unpackUint32(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Retry, off, err = unpackUint32(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Expire, off, err = unpackUint32(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Minttl, off, err = unpackUint32(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackSPF(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(SPF)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Txt, off, err = unpackStringTxt(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackSRV(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(SRV)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Priority, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Weight, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Port, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Target, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackSSHFP(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(SSHFP)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Algorithm, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Type, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.FingerPrint, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackTA(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(TA)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.KeyTag, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Algorithm, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.DigestType, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Digest, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackTALINK(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(TALINK)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.PreviousName, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.NextName, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackTKEY(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(TKEY)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Algorithm, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Inception, off, err = unpackUint32(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Expiration, off, err = unpackUint32(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Mode, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Error, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.KeySize, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Key, off, err = unpackString(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.OtherLen, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.OtherData, off, err = unpackString(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackTLSA(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(TLSA)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Usage, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Selector, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.MatchingType, off, err = unpackUint8(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Certificate, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackTSIG(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(TSIG)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Algorithm, off, err = UnpackDomainName(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.TimeSigned, off, err = unpackUint48(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Fudge, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.MACSize, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.MAC, off, err = unpackStringHex(msg, off, off+int(rr.MACSize))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
rr.OrigId, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Error, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.OtherLen, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.OtherData, off, err = unpackStringHex(msg, off, off+int(rr.OtherLen))
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackTXT(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(TXT)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Txt, off, err = unpackStringTxt(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackUID(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(UID)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Uid, off, err = unpackUint32(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackUINFO(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(UINFO)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Uinfo, off, err = unpackString(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackURI(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(URI)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.Priority, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Weight, off, err = unpackUint16(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
if off == len(msg) {
|
|
return rr, off, nil
|
|
}
|
|
rr.Target, off, err = unpackStringOctet(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
func unpackX25(h RR_Header, msg []byte, off int) (RR, int, error) {
|
|
rr := new(X25)
|
|
rr.Hdr = h
|
|
if noRdata(h) {
|
|
return rr, off, nil
|
|
}
|
|
var err error
|
|
rdStart := off
|
|
_ = rdStart
|
|
|
|
rr.PSDNAddress, off, err = unpackString(msg, off)
|
|
if err != nil {
|
|
return rr, off, err
|
|
}
|
|
return rr, off, err
|
|
}
|
|
|
|
var typeToUnpack = map[uint16]func(RR_Header, []byte, int) (RR, int, error){
|
|
TypeA: unpackA,
|
|
TypeAAAA: unpackAAAA,
|
|
TypeAFSDB: unpackAFSDB,
|
|
TypeANY: unpackANY,
|
|
TypeCAA: unpackCAA,
|
|
TypeCDNSKEY: unpackCDNSKEY,
|
|
TypeCDS: unpackCDS,
|
|
TypeCERT: unpackCERT,
|
|
TypeCNAME: unpackCNAME,
|
|
TypeDHCID: unpackDHCID,
|
|
TypeDLV: unpackDLV,
|
|
TypeDNAME: unpackDNAME,
|
|
TypeDNSKEY: unpackDNSKEY,
|
|
TypeDS: unpackDS,
|
|
TypeEID: unpackEID,
|
|
TypeEUI48: unpackEUI48,
|
|
TypeEUI64: unpackEUI64,
|
|
TypeGID: unpackGID,
|
|
TypeGPOS: unpackGPOS,
|
|
TypeHINFO: unpackHINFO,
|
|
TypeHIP: unpackHIP,
|
|
TypeKEY: unpackKEY,
|
|
TypeKX: unpackKX,
|
|
TypeL32: unpackL32,
|
|
TypeL64: unpackL64,
|
|
TypeLOC: unpackLOC,
|
|
TypeLP: unpackLP,
|
|
TypeMB: unpackMB,
|
|
TypeMD: unpackMD,
|
|
TypeMF: unpackMF,
|
|
TypeMG: unpackMG,
|
|
TypeMINFO: unpackMINFO,
|
|
TypeMR: unpackMR,
|
|
TypeMX: unpackMX,
|
|
TypeNAPTR: unpackNAPTR,
|
|
TypeNID: unpackNID,
|
|
TypeNIMLOC: unpackNIMLOC,
|
|
TypeNINFO: unpackNINFO,
|
|
TypeNS: unpackNS,
|
|
TypeNSAPPTR: unpackNSAPPTR,
|
|
TypeNSEC: unpackNSEC,
|
|
TypeNSEC3: unpackNSEC3,
|
|
TypeNSEC3PARAM: unpackNSEC3PARAM,
|
|
TypeOPENPGPKEY: unpackOPENPGPKEY,
|
|
TypeOPT: unpackOPT,
|
|
TypePTR: unpackPTR,
|
|
TypePX: unpackPX,
|
|
TypeRKEY: unpackRKEY,
|
|
TypeRP: unpackRP,
|
|
TypeRRSIG: unpackRRSIG,
|
|
TypeRT: unpackRT,
|
|
TypeSIG: unpackSIG,
|
|
TypeSMIMEA: unpackSMIMEA,
|
|
TypeSOA: unpackSOA,
|
|
TypeSPF: unpackSPF,
|
|
TypeSRV: unpackSRV,
|
|
TypeSSHFP: unpackSSHFP,
|
|
TypeTA: unpackTA,
|
|
TypeTALINK: unpackTALINK,
|
|
TypeTKEY: unpackTKEY,
|
|
TypeTLSA: unpackTLSA,
|
|
TypeTSIG: unpackTSIG,
|
|
TypeTXT: unpackTXT,
|
|
TypeUID: unpackUID,
|
|
TypeUINFO: unpackUINFO,
|
|
TypeURI: unpackURI,
|
|
TypeX25: unpackX25,
|
|
}
|