diff --git a/msg_generate.go b/msg_generate.go index 17eb60c5..166b3af0 100644 --- a/msg_generate.go +++ b/msg_generate.go @@ -176,16 +176,16 @@ return off, err st, _ := getTypeStruct(o.Type(), scope) fmt.Fprintf(b, "func unpack%s(h RR_Header, msg []byte, off int) (RR, int, error) {\n", name) + fmt.Fprintf(b, "rr := new(%s)\n", name) + fmt.Fprint(b, "rr.Hdr = h\n") fmt.Fprint(b, `if noRdata(h) { -return &h, off, nil +return rr, off, nil } var err error rdStart := off _ = rdStart `) - fmt.Fprintf(b, "rr := new(%s)\n", name) - fmt.Fprintln(b, "rr.Hdr = h\n") for i := 1; i < st.NumFields(); i++ { o := func(s string) { fmt.Fprintf(b, s, st.Field(i).Name()) diff --git a/zmsg.go b/zmsg.go index 239bed52..e5f3cf29 100644 --- a/zmsg.go +++ b/zmsg.go @@ -1426,16 +1426,15 @@ func (rr *X25) pack(msg []byte, off int, compression map[string]int, compress bo // unpack*() functions func unpackA(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(A) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(A) - rr.Hdr = h - rr.A, off, err = unpackDataA(msg, off) if err != nil { return rr, off, err @@ -1444,16 +1443,15 @@ func unpackA(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackAAAA(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(AAAA) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(AAAA) - rr.Hdr = h - rr.AAAA, off, err = unpackDataAAAA(msg, off) if err != nil { return rr, off, err @@ -1462,16 +1460,15 @@ func unpackAAAA(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackAFSDB(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(AFSDB) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(AFSDB) - rr.Hdr = h - rr.Subtype, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -1487,30 +1484,28 @@ func unpackAFSDB(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackANY(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(ANY) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(ANY) - rr.Hdr = h - 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 &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(CAA) - rr.Hdr = h - rr.Flag, off, err = unpackUint8(msg, off) if err != nil { return rr, off, err @@ -1533,16 +1528,15 @@ func unpackCAA(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackCDNSKEY(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(CDNSKEY) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(CDNSKEY) - rr.Hdr = h - rr.Flags, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -1572,16 +1566,15 @@ func unpackCDNSKEY(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackCDS(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(CDS) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(CDS) - rr.Hdr = h - rr.KeyTag, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -1611,16 +1604,15 @@ func unpackCDS(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackCERT(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(CERT) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(CERT) - rr.Hdr = h - rr.Type, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -1650,16 +1642,15 @@ func unpackCERT(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackCNAME(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(CNAME) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(CNAME) - rr.Hdr = h - rr.Target, off, err = UnpackDomainName(msg, off) if err != nil { return rr, off, err @@ -1668,16 +1659,15 @@ func unpackCNAME(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackDHCID(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(DHCID) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(DHCID) - rr.Hdr = h - rr.Digest, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength)) if err != nil { return rr, off, err @@ -1686,16 +1676,15 @@ func unpackDHCID(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackDLV(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(DLV) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(DLV) - rr.Hdr = h - rr.KeyTag, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -1725,16 +1714,15 @@ func unpackDLV(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackDNAME(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(DNAME) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(DNAME) - rr.Hdr = h - rr.Target, off, err = UnpackDomainName(msg, off) if err != nil { return rr, off, err @@ -1743,16 +1731,15 @@ func unpackDNAME(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackDNSKEY(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(DNSKEY) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(DNSKEY) - rr.Hdr = h - rr.Flags, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -1782,16 +1769,15 @@ func unpackDNSKEY(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackDS(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(DS) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(DS) - rr.Hdr = h - rr.KeyTag, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -1821,16 +1807,15 @@ func unpackDS(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackEID(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(EID) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(EID) - rr.Hdr = h - rr.Endpoint, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength)) if err != nil { return rr, off, err @@ -1839,16 +1824,15 @@ func unpackEID(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackEUI48(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(EUI48) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(EUI48) - rr.Hdr = h - rr.Address, off, err = unpackUint48(msg, off) if err != nil { return rr, off, err @@ -1857,16 +1841,15 @@ func unpackEUI48(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackEUI64(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(EUI64) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(EUI64) - rr.Hdr = h - rr.Address, off, err = unpackUint64(msg, off) if err != nil { return rr, off, err @@ -1875,16 +1858,15 @@ func unpackEUI64(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackGID(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(GID) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(GID) - rr.Hdr = h - rr.Gid, off, err = unpackUint32(msg, off) if err != nil { return rr, off, err @@ -1893,16 +1875,15 @@ func unpackGID(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackGPOS(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(GPOS) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(GPOS) - rr.Hdr = h - rr.Longitude, off, err = unpackString(msg, off) if err != nil { return rr, off, err @@ -1925,16 +1906,15 @@ func unpackGPOS(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackHINFO(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(HINFO) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(HINFO) - rr.Hdr = h - rr.Cpu, off, err = unpackString(msg, off) if err != nil { return rr, off, err @@ -1950,16 +1930,15 @@ func unpackHINFO(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackHIP(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(HIP) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(HIP) - rr.Hdr = h - rr.HitLength, off, err = unpackUint8(msg, off) if err != nil { return rr, off, err @@ -1997,16 +1976,15 @@ func unpackHIP(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackKEY(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(KEY) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(KEY) - rr.Hdr = h - rr.Flags, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -2036,16 +2014,15 @@ func unpackKEY(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackKX(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(KX) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(KX) - rr.Hdr = h - rr.Preference, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -2061,16 +2038,15 @@ func unpackKX(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackL32(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(L32) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(L32) - rr.Hdr = h - rr.Preference, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -2086,16 +2062,15 @@ func unpackL32(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackL64(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(L64) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(L64) - rr.Hdr = h - rr.Preference, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -2111,16 +2086,15 @@ func unpackL64(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackLOC(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(LOC) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(LOC) - rr.Hdr = h - rr.Version, off, err = unpackUint8(msg, off) if err != nil { return rr, off, err @@ -2171,16 +2145,15 @@ func unpackLOC(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackLP(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(LP) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(LP) - rr.Hdr = h - rr.Preference, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -2196,16 +2169,15 @@ func unpackLP(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackMB(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(MB) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(MB) - rr.Hdr = h - rr.Mb, off, err = UnpackDomainName(msg, off) if err != nil { return rr, off, err @@ -2214,16 +2186,15 @@ func unpackMB(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackMD(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(MD) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(MD) - rr.Hdr = h - rr.Md, off, err = UnpackDomainName(msg, off) if err != nil { return rr, off, err @@ -2232,16 +2203,15 @@ func unpackMD(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackMF(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(MF) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(MF) - rr.Hdr = h - rr.Mf, off, err = UnpackDomainName(msg, off) if err != nil { return rr, off, err @@ -2250,16 +2220,15 @@ func unpackMF(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackMG(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(MG) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(MG) - rr.Hdr = h - rr.Mg, off, err = UnpackDomainName(msg, off) if err != nil { return rr, off, err @@ -2268,16 +2237,15 @@ func unpackMG(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackMINFO(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(MINFO) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(MINFO) - rr.Hdr = h - rr.Rmail, off, err = UnpackDomainName(msg, off) if err != nil { return rr, off, err @@ -2293,16 +2261,15 @@ func unpackMINFO(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackMR(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(MR) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(MR) - rr.Hdr = h - rr.Mr, off, err = UnpackDomainName(msg, off) if err != nil { return rr, off, err @@ -2311,16 +2278,15 @@ func unpackMR(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackMX(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(MX) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(MX) - rr.Hdr = h - rr.Preference, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -2336,16 +2302,15 @@ func unpackMX(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackNAPTR(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(NAPTR) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(NAPTR) - rr.Hdr = h - rr.Order, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -2389,16 +2354,15 @@ func unpackNAPTR(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackNID(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(NID) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(NID) - rr.Hdr = h - rr.Preference, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -2414,16 +2378,15 @@ func unpackNID(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackNIMLOC(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(NIMLOC) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(NIMLOC) - rr.Hdr = h - rr.Locator, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength)) if err != nil { return rr, off, err @@ -2432,16 +2395,15 @@ func unpackNIMLOC(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackNINFO(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(NINFO) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(NINFO) - rr.Hdr = h - rr.ZSData, off, err = unpackStringTxt(msg, off) if err != nil { return rr, off, err @@ -2450,16 +2412,15 @@ func unpackNINFO(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackNS(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(NS) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(NS) - rr.Hdr = h - rr.Ns, off, err = UnpackDomainName(msg, off) if err != nil { return rr, off, err @@ -2468,16 +2429,15 @@ func unpackNS(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackNSAPPTR(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(NSAPPTR) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(NSAPPTR) - rr.Hdr = h - rr.Ptr, off, err = UnpackDomainName(msg, off) if err != nil { return rr, off, err @@ -2486,16 +2446,15 @@ func unpackNSAPPTR(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackNSEC(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(NSEC) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(NSEC) - rr.Hdr = h - rr.NextDomain, off, err = UnpackDomainName(msg, off) if err != nil { return rr, off, err @@ -2511,16 +2470,15 @@ func unpackNSEC(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackNSEC3(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(NSEC3) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(NSEC3) - rr.Hdr = h - rr.Hash, off, err = unpackUint8(msg, off) if err != nil { return rr, off, err @@ -2572,16 +2530,15 @@ func unpackNSEC3(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackNSEC3PARAM(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(NSEC3PARAM) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(NSEC3PARAM) - rr.Hdr = h - rr.Hash, off, err = unpackUint8(msg, off) if err != nil { return rr, off, err @@ -2618,16 +2575,15 @@ func unpackNSEC3PARAM(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackOPENPGPKEY(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(OPENPGPKEY) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(OPENPGPKEY) - rr.Hdr = h - rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength)) if err != nil { return rr, off, err @@ -2636,16 +2592,15 @@ func unpackOPENPGPKEY(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackOPT(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(OPT) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(OPT) - rr.Hdr = h - rr.Option, off, err = unpackDataOpt(msg, off) if err != nil { return rr, off, err @@ -2654,16 +2609,15 @@ func unpackOPT(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackPTR(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(PTR) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(PTR) - rr.Hdr = h - rr.Ptr, off, err = UnpackDomainName(msg, off) if err != nil { return rr, off, err @@ -2672,16 +2626,15 @@ func unpackPTR(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackPX(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(PX) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(PX) - rr.Hdr = h - rr.Preference, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -2704,16 +2657,15 @@ func unpackPX(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackRFC3597(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(RFC3597) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(RFC3597) - rr.Hdr = h - rr.Rdata, off, err = unpackStringHex(msg, off, rdStart+int(rr.Hdr.Rdlength)) if err != nil { return rr, off, err @@ -2722,16 +2674,15 @@ func unpackRFC3597(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackRKEY(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(RKEY) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(RKEY) - rr.Hdr = h - rr.Flags, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -2761,16 +2712,15 @@ func unpackRKEY(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackRP(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(RP) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(RP) - rr.Hdr = h - rr.Mbox, off, err = UnpackDomainName(msg, off) if err != nil { return rr, off, err @@ -2786,16 +2736,15 @@ func unpackRP(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackRRSIG(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(RRSIG) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(RRSIG) - rr.Hdr = h - rr.TypeCovered, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -2860,16 +2809,15 @@ func unpackRRSIG(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackRT(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(RT) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(RT) - rr.Hdr = h - rr.Preference, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -2885,16 +2833,15 @@ func unpackRT(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackSIG(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(SIG) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(SIG) - rr.Hdr = h - rr.TypeCovered, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -2959,16 +2906,15 @@ func unpackSIG(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackSOA(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(SOA) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(SOA) - rr.Hdr = h - rr.Ns, off, err = UnpackDomainName(msg, off) if err != nil { return rr, off, err @@ -3019,16 +2965,15 @@ func unpackSOA(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackSPF(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(SPF) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(SPF) - rr.Hdr = h - rr.Txt, off, err = unpackStringTxt(msg, off) if err != nil { return rr, off, err @@ -3037,16 +2982,15 @@ func unpackSPF(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackSRV(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(SRV) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(SRV) - rr.Hdr = h - rr.Priority, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -3076,16 +3020,15 @@ func unpackSRV(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackSSHFP(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(SSHFP) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(SSHFP) - rr.Hdr = h - rr.Algorithm, off, err = unpackUint8(msg, off) if err != nil { return rr, off, err @@ -3108,16 +3051,15 @@ func unpackSSHFP(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackTA(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(TA) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(TA) - rr.Hdr = h - rr.KeyTag, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -3147,16 +3089,15 @@ func unpackTA(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackTALINK(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(TALINK) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(TALINK) - rr.Hdr = h - rr.PreviousName, off, err = UnpackDomainName(msg, off) if err != nil { return rr, off, err @@ -3172,16 +3113,15 @@ func unpackTALINK(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackTKEY(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(TKEY) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(TKEY) - rr.Hdr = h - rr.Algorithm, off, err = UnpackDomainName(msg, off) if err != nil { return rr, off, err @@ -3246,16 +3186,15 @@ func unpackTKEY(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackTLSA(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(TLSA) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(TLSA) - rr.Hdr = h - rr.Usage, off, err = unpackUint8(msg, off) if err != nil { return rr, off, err @@ -3285,16 +3224,15 @@ func unpackTLSA(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackTSIG(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(TSIG) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(TSIG) - rr.Hdr = h - rr.Algorithm, off, err = UnpackDomainName(msg, off) if err != nil { return rr, off, err @@ -3356,16 +3294,15 @@ func unpackTSIG(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackTXT(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(TXT) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(TXT) - rr.Hdr = h - rr.Txt, off, err = unpackStringTxt(msg, off) if err != nil { return rr, off, err @@ -3374,16 +3311,15 @@ func unpackTXT(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackUID(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(UID) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(UID) - rr.Hdr = h - rr.Uid, off, err = unpackUint32(msg, off) if err != nil { return rr, off, err @@ -3392,16 +3328,15 @@ func unpackUID(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackUINFO(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(UINFO) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(UINFO) - rr.Hdr = h - rr.Uinfo, off, err = unpackString(msg, off) if err != nil { return rr, off, err @@ -3410,16 +3345,15 @@ func unpackUINFO(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackURI(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(URI) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(URI) - rr.Hdr = h - rr.Priority, off, err = unpackUint16(msg, off) if err != nil { return rr, off, err @@ -3442,16 +3376,15 @@ func unpackURI(h RR_Header, msg []byte, off int) (RR, int, error) { } func unpackX25(h RR_Header, msg []byte, off int) (RR, int, error) { + rr := new(X25) + rr.Hdr = h if noRdata(h) { - return &h, off, nil + return rr, off, nil } var err error rdStart := off _ = rdStart - rr := new(X25) - rr.Hdr = h - rr.PSDNAddress, off, err = unpackString(msg, off) if err != nil { return rr, off, err