// *** DO NOT MODIFY *** // AUTOGENERATED BY go generate package dns import ( "encoding/base64" "net" ) // Map of constructors for each RR type. var typeToRR = map[uint16]func() RR{ TypeA: func() RR { return new(A) }, TypeAAAA: func() RR { return new(AAAA) }, TypeAFSDB: func() RR { return new(AFSDB) }, TypeANY: func() RR { return new(ANY) }, TypeCAA: func() RR { return new(CAA) }, TypeCDNSKEY: func() RR { return new(CDNSKEY) }, TypeCDS: func() RR { return new(CDS) }, TypeCERT: func() RR { return new(CERT) }, TypeCNAME: func() RR { return new(CNAME) }, TypeDHCID: func() RR { return new(DHCID) }, TypeDLV: func() RR { return new(DLV) }, TypeDNAME: func() RR { return new(DNAME) }, TypeDNSKEY: func() RR { return new(DNSKEY) }, TypeDS: func() RR { return new(DS) }, TypeEID: func() RR { return new(EID) }, TypeEUI48: func() RR { return new(EUI48) }, TypeEUI64: func() RR { return new(EUI64) }, TypeGID: func() RR { return new(GID) }, TypeGPOS: func() RR { return new(GPOS) }, TypeHINFO: func() RR { return new(HINFO) }, TypeHIP: func() RR { return new(HIP) }, TypeIPSECKEY: func() RR { return new(IPSECKEY) }, TypeKEY: func() RR { return new(KEY) }, TypeKX: func() RR { return new(KX) }, TypeL32: func() RR { return new(L32) }, TypeL64: func() RR { return new(L64) }, TypeLOC: func() RR { return new(LOC) }, TypeLP: func() RR { return new(LP) }, TypeMB: func() RR { return new(MB) }, TypeMD: func() RR { return new(MD) }, TypeMF: func() RR { return new(MF) }, TypeMG: func() RR { return new(MG) }, TypeMINFO: func() RR { return new(MINFO) }, TypeMR: func() RR { return new(MR) }, TypeMX: func() RR { return new(MX) }, TypeNAPTR: func() RR { return new(NAPTR) }, TypeNID: func() RR { return new(NID) }, TypeNIMLOC: func() RR { return new(NIMLOC) }, TypeNINFO: func() RR { return new(NINFO) }, TypeNS: func() RR { return new(NS) }, TypeNSAPPTR: func() RR { return new(NSAPPTR) }, TypeNSEC: func() RR { return new(NSEC) }, TypeNSEC3: func() RR { return new(NSEC3) }, TypeNSEC3PARAM: func() RR { return new(NSEC3PARAM) }, TypeOPENPGPKEY: func() RR { return new(OPENPGPKEY) }, TypeOPT: func() RR { return new(OPT) }, TypePTR: func() RR { return new(PTR) }, TypePX: func() RR { return new(PX) }, TypeRKEY: func() RR { return new(RKEY) }, TypeRP: func() RR { return new(RP) }, TypeRRSIG: func() RR { return new(RRSIG) }, TypeRT: func() RR { return new(RT) }, TypeSIG: func() RR { return new(SIG) }, TypeSOA: func() RR { return new(SOA) }, TypeSPF: func() RR { return new(SPF) }, TypeSRV: func() RR { return new(SRV) }, TypeSSHFP: func() RR { return new(SSHFP) }, TypeTA: func() RR { return new(TA) }, TypeTALINK: func() RR { return new(TALINK) }, TypeTKEY: func() RR { return new(TKEY) }, TypeTLSA: func() RR { return new(TLSA) }, TypeTSIG: func() RR { return new(TSIG) }, TypeTXT: func() RR { return new(TXT) }, TypeUID: func() RR { return new(UID) }, TypeUINFO: func() RR { return new(UINFO) }, TypeURI: func() RR { return new(URI) }, TypeWKS: func() RR { return new(WKS) }, TypeX25: func() RR { return new(X25) }, } // TypeToString is a map of strings for each RR wire type. var TypeToString = map[uint16]string{ TypeA: "A", TypeAAAA: "AAAA", TypeAFSDB: "AFSDB", TypeANY: "ANY", TypeATMA: "ATMA", TypeAXFR: "AXFR", TypeCAA: "CAA", TypeCDNSKEY: "CDNSKEY", TypeCDS: "CDS", TypeCERT: "CERT", TypeCNAME: "CNAME", TypeDHCID: "DHCID", TypeDLV: "DLV", TypeDNAME: "DNAME", TypeDNSKEY: "DNSKEY", TypeDS: "DS", TypeEID: "EID", TypeEUI48: "EUI48", TypeEUI64: "EUI64", TypeGID: "GID", TypeGPOS: "GPOS", TypeHINFO: "HINFO", TypeHIP: "HIP", TypeIPSECKEY: "IPSECKEY", TypeISDN: "ISDN", TypeIXFR: "IXFR", TypeKEY: "KEY", TypeKX: "KX", TypeL32: "L32", TypeL64: "L64", TypeLOC: "LOC", TypeLP: "LP", TypeMAILA: "MAILA", TypeMAILB: "MAILB", TypeMB: "MB", TypeMD: "MD", TypeMF: "MF", TypeMG: "MG", TypeMINFO: "MINFO", TypeMR: "MR", TypeMX: "MX", TypeNAPTR: "NAPTR", TypeNID: "NID", TypeNIMLOC: "NIMLOC", TypeNINFO: "NINFO", TypeNS: "NS", TypeNSEC: "NSEC", TypeNSEC3: "NSEC3", TypeNSEC3PARAM: "NSEC3PARAM", TypeNULL: "NULL", TypeNXT: "NXT", TypeNone: "None", TypeOPENPGPKEY: "OPENPGPKEY", TypeOPT: "OPT", TypePTR: "PTR", TypePX: "PX", TypeRKEY: "RKEY", TypeRP: "RP", TypeRRSIG: "RRSIG", TypeRT: "RT", TypeReserved: "Reserved", TypeSIG: "SIG", TypeSOA: "SOA", TypeSPF: "SPF", TypeSRV: "SRV", TypeSSHFP: "SSHFP", TypeTA: "TA", TypeTALINK: "TALINK", TypeTKEY: "TKEY", TypeTLSA: "TLSA", TypeTSIG: "TSIG", TypeTXT: "TXT", TypeUID: "UID", TypeUINFO: "UINFO", TypeUNSPEC: "UNSPEC", TypeURI: "URI", TypeWKS: "WKS", TypeX25: "X25", TypeNSAPPTR: "NSAP-PTR", } // Header() functions func (rr *A) Header() *RR_Header { return &rr.Hdr } func (rr *AAAA) Header() *RR_Header { return &rr.Hdr } func (rr *AFSDB) Header() *RR_Header { return &rr.Hdr } func (rr *ANY) Header() *RR_Header { return &rr.Hdr } func (rr *CAA) Header() *RR_Header { return &rr.Hdr } func (rr *CDNSKEY) Header() *RR_Header { return &rr.Hdr } func (rr *CDS) Header() *RR_Header { return &rr.Hdr } func (rr *CERT) Header() *RR_Header { return &rr.Hdr } func (rr *CNAME) Header() *RR_Header { return &rr.Hdr } func (rr *DHCID) Header() *RR_Header { return &rr.Hdr } func (rr *DLV) Header() *RR_Header { return &rr.Hdr } func (rr *DNAME) Header() *RR_Header { return &rr.Hdr } func (rr *DNSKEY) Header() *RR_Header { return &rr.Hdr } func (rr *DS) Header() *RR_Header { return &rr.Hdr } func (rr *EID) Header() *RR_Header { return &rr.Hdr } func (rr *EUI48) Header() *RR_Header { return &rr.Hdr } func (rr *EUI64) Header() *RR_Header { return &rr.Hdr } func (rr *GID) Header() *RR_Header { return &rr.Hdr } func (rr *GPOS) Header() *RR_Header { return &rr.Hdr } func (rr *HINFO) Header() *RR_Header { return &rr.Hdr } func (rr *HIP) Header() *RR_Header { return &rr.Hdr } func (rr *IPSECKEY) Header() *RR_Header { return &rr.Hdr } func (rr *KEY) Header() *RR_Header { return &rr.Hdr } func (rr *KX) Header() *RR_Header { return &rr.Hdr } func (rr *L32) Header() *RR_Header { return &rr.Hdr } func (rr *L64) Header() *RR_Header { return &rr.Hdr } func (rr *LOC) Header() *RR_Header { return &rr.Hdr } func (rr *LP) Header() *RR_Header { return &rr.Hdr } func (rr *MB) Header() *RR_Header { return &rr.Hdr } func (rr *MD) Header() *RR_Header { return &rr.Hdr } func (rr *MF) Header() *RR_Header { return &rr.Hdr } func (rr *MG) Header() *RR_Header { return &rr.Hdr } func (rr *MINFO) Header() *RR_Header { return &rr.Hdr } func (rr *MR) Header() *RR_Header { return &rr.Hdr } func (rr *MX) Header() *RR_Header { return &rr.Hdr } func (rr *NAPTR) Header() *RR_Header { return &rr.Hdr } func (rr *NID) Header() *RR_Header { return &rr.Hdr } func (rr *NIMLOC) Header() *RR_Header { return &rr.Hdr } func (rr *NINFO) Header() *RR_Header { return &rr.Hdr } func (rr *NS) Header() *RR_Header { return &rr.Hdr } func (rr *NSAPPTR) Header() *RR_Header { return &rr.Hdr } func (rr *NSEC) Header() *RR_Header { return &rr.Hdr } func (rr *NSEC3) Header() *RR_Header { return &rr.Hdr } func (rr *NSEC3PARAM) Header() *RR_Header { return &rr.Hdr } func (rr *OPENPGPKEY) Header() *RR_Header { return &rr.Hdr } func (rr *OPT) Header() *RR_Header { return &rr.Hdr } func (rr *PTR) Header() *RR_Header { return &rr.Hdr } func (rr *PX) Header() *RR_Header { return &rr.Hdr } func (rr *RFC3597) Header() *RR_Header { return &rr.Hdr } func (rr *RKEY) Header() *RR_Header { return &rr.Hdr } func (rr *RP) Header() *RR_Header { return &rr.Hdr } func (rr *RRSIG) Header() *RR_Header { return &rr.Hdr } func (rr *RT) Header() *RR_Header { return &rr.Hdr } func (rr *SIG) Header() *RR_Header { return &rr.Hdr } func (rr *SOA) Header() *RR_Header { return &rr.Hdr } func (rr *SPF) Header() *RR_Header { return &rr.Hdr } func (rr *SRV) Header() *RR_Header { return &rr.Hdr } func (rr *SSHFP) Header() *RR_Header { return &rr.Hdr } func (rr *TA) Header() *RR_Header { return &rr.Hdr } func (rr *TALINK) Header() *RR_Header { return &rr.Hdr } func (rr *TKEY) Header() *RR_Header { return &rr.Hdr } func (rr *TLSA) Header() *RR_Header { return &rr.Hdr } func (rr *TSIG) Header() *RR_Header { return &rr.Hdr } func (rr *TXT) Header() *RR_Header { return &rr.Hdr } func (rr *UID) Header() *RR_Header { return &rr.Hdr } func (rr *UINFO) Header() *RR_Header { return &rr.Hdr } func (rr *URI) Header() *RR_Header { return &rr.Hdr } func (rr *WKS) Header() *RR_Header { return &rr.Hdr } func (rr *X25) Header() *RR_Header { return &rr.Hdr } // len() functions func (rr *A) len() int { l := rr.Hdr.len() l += net.IPv4len // A return l } func (rr *AAAA) len() int { l := rr.Hdr.len() l += net.IPv6len // AAAA return l } func (rr *AFSDB) len() int { l := rr.Hdr.len() l += 2 // Subtype l += len(rr.Hostname) + 1 return l } func (rr *ANY) len() int { l := rr.Hdr.len() return l } func (rr *CAA) len() int { l := rr.Hdr.len() l += 1 // Flag l += len(rr.Tag) + 1 l += len(rr.Value) return l } func (rr *CERT) len() int { l := rr.Hdr.len() l += 2 // Type l += 2 // KeyTag l += 1 // Algorithm l += base64.StdEncoding.DecodedLen(len(rr.Certificate)) return l } func (rr *CNAME) len() int { l := rr.Hdr.len() l += len(rr.Target) + 1 return l } func (rr *DHCID) len() int { l := rr.Hdr.len() l += base64.StdEncoding.DecodedLen(len(rr.Digest)) return l } func (rr *DNAME) len() int { l := rr.Hdr.len() l += len(rr.Target) + 1 return l } func (rr *DNSKEY) len() int { l := rr.Hdr.len() l += 2 // Flags l += 1 // Protocol l += 1 // Algorithm l += base64.StdEncoding.DecodedLen(len(rr.PublicKey)) return l } func (rr *DS) len() int { l := rr.Hdr.len() l += 2 // KeyTag l += 1 // Algorithm l += 1 // DigestType l += len(rr.Digest)/2 + 1 return l } func (rr *EID) len() int { l := rr.Hdr.len() l += len(rr.Endpoint)/2 + 1 return l } func (rr *EUI48) len() int { l := rr.Hdr.len() l += 6 // Address return l } func (rr *EUI64) len() int { l := rr.Hdr.len() l += 8 // Address return l } func (rr *GID) len() int { l := rr.Hdr.len() l += 4 // Gid return l } func (rr *GPOS) len() int { l := rr.Hdr.len() l += len(rr.Longitude) + 1 l += len(rr.Latitude) + 1 l += len(rr.Altitude) + 1 return l } func (rr *HINFO) len() int { l := rr.Hdr.len() l += len(rr.Cpu) + 1 l += len(rr.Os) + 1 return l } func (rr *HIP) len() int { l := rr.Hdr.len() l += 1 // HitLength l += 1 // PublicKeyAlgorithm l += 2 // PublicKeyLength l += len(rr.Hit)/2 + 1 l += base64.StdEncoding.DecodedLen(len(rr.PublicKey)) for _, x := range rr.RendezvousServers { l += len(x) + 1 } return l } func (rr *KX) len() int { l := rr.Hdr.len() l += 2 // Preference l += len(rr.Exchanger) + 1 return l } func (rr *L32) len() int { l := rr.Hdr.len() l += 2 // Preference l += net.IPv4len // Locator32 return l } func (rr *L64) len() int { l := rr.Hdr.len() l += 2 // Preference l += 8 // Locator64 return l } func (rr *LOC) len() int { l := rr.Hdr.len() l += 1 // Version l += 1 // Size l += 1 // HorizPre l += 1 // VertPre l += 4 // Latitude l += 4 // Longitude l += 4 // Altitude return l } func (rr *LP) len() int { l := rr.Hdr.len() l += 2 // Preference l += len(rr.Fqdn) + 1 return l } func (rr *MB) len() int { l := rr.Hdr.len() l += len(rr.Mb) + 1 return l } func (rr *MD) len() int { l := rr.Hdr.len() l += len(rr.Md) + 1 return l } func (rr *MF) len() int { l := rr.Hdr.len() l += len(rr.Mf) + 1 return l } func (rr *MG) len() int { l := rr.Hdr.len() l += len(rr.Mg) + 1 return l } func (rr *MINFO) len() int { l := rr.Hdr.len() l += len(rr.Rmail) + 1 l += len(rr.Email) + 1 return l } func (rr *MR) len() int { l := rr.Hdr.len() l += len(rr.Mr) + 1 return l } func (rr *MX) len() int { l := rr.Hdr.len() l += 2 // Preference l += len(rr.Mx) + 1 return l } func (rr *NAPTR) len() int { l := rr.Hdr.len() l += 2 // Order l += 2 // Preference l += len(rr.Flags) + 1 l += len(rr.Service) + 1 l += len(rr.Regexp) + 1 l += len(rr.Replacement) + 1 return l } func (rr *NID) len() int { l := rr.Hdr.len() l += 2 // Preference l += 8 // NodeID return l } func (rr *NIMLOC) len() int { l := rr.Hdr.len() l += len(rr.Locator)/2 + 1 return l } func (rr *NINFO) len() int { l := rr.Hdr.len() for _, x := range rr.ZSData { l += len(x) + 1 } return l } func (rr *NS) len() int { l := rr.Hdr.len() l += len(rr.Ns) + 1 return l } func (rr *NSAPPTR) len() int { l := rr.Hdr.len() l += len(rr.Ptr) + 1 return l } func (rr *NSEC3PARAM) len() int { l := rr.Hdr.len() l += 1 // Hash l += 1 // Flags l += 2 // Iterations l += 1 // SaltLength l += len(rr.Salt)/2 + 1 return l } func (rr *OPENPGPKEY) len() int { l := rr.Hdr.len() l += base64.StdEncoding.DecodedLen(len(rr.PublicKey)) return l } func (rr *PTR) len() int { l := rr.Hdr.len() l += len(rr.Ptr) + 1 return l } func (rr *PX) len() int { l := rr.Hdr.len() l += 2 // Preference l += len(rr.Map822) + 1 l += len(rr.Mapx400) + 1 return l } func (rr *RFC3597) len() int { l := rr.Hdr.len() l += len(rr.Rdata)/2 + 1 return l } func (rr *RKEY) len() int { l := rr.Hdr.len() l += 2 // Flags l += 1 // Protocol l += 1 // Algorithm l += base64.StdEncoding.DecodedLen(len(rr.PublicKey)) return l } func (rr *RP) len() int { l := rr.Hdr.len() l += len(rr.Mbox) + 1 l += len(rr.Txt) + 1 return l } func (rr *RRSIG) len() int { l := rr.Hdr.len() l += 2 // TypeCovered l += 1 // Algorithm l += 1 // Labels l += 4 // OrigTtl l += 4 // Expiration l += 4 // Inception l += 2 // KeyTag l += len(rr.SignerName) + 1 l += base64.StdEncoding.DecodedLen(len(rr.Signature)) return l } func (rr *RT) len() int { l := rr.Hdr.len() l += 2 // Preference l += len(rr.Host) + 1 return l } func (rr *SOA) len() int { l := rr.Hdr.len() l += len(rr.Ns) + 1 l += len(rr.Mbox) + 1 l += 4 // Serial l += 4 // Refresh l += 4 // Retry l += 4 // Expire l += 4 // Minttl return l } func (rr *SPF) len() int { l := rr.Hdr.len() for _, x := range rr.Txt { l += len(x) + 1 } return l } func (rr *SRV) len() int { l := rr.Hdr.len() l += 2 // Priority l += 2 // Weight l += 2 // Port l += len(rr.Target) + 1 return l } func (rr *SSHFP) len() int { l := rr.Hdr.len() l += 1 // Algorithm l += 1 // Type l += len(rr.FingerPrint)/2 + 1 return l } func (rr *TA) len() int { l := rr.Hdr.len() l += 2 // KeyTag l += 1 // Algorithm l += 1 // DigestType l += len(rr.Digest)/2 + 1 return l } func (rr *TALINK) len() int { l := rr.Hdr.len() l += len(rr.PreviousName) + 1 l += len(rr.NextName) + 1 return l } func (rr *TKEY) len() int { l := rr.Hdr.len() l += len(rr.Algorithm) + 1 l += 4 // Inception l += 4 // Expiration l += 2 // Mode l += 2 // Error l += 2 // KeySize l += len(rr.Key) + 1 l += 2 // OtherLen l += len(rr.OtherData) + 1 return l } func (rr *TLSA) len() int { l := rr.Hdr.len() l += 1 // Usage l += 1 // Selector l += 1 // MatchingType l += len(rr.Certificate)/2 + 1 return l } func (rr *TSIG) len() int { l := rr.Hdr.len() l += len(rr.Algorithm) + 1 l += 6 // TimeSigned l += 2 // Fudge l += 2 // MACSize l += len(rr.MAC)/2 + 1 l += 2 // OrigId l += 2 // Error l += 2 // OtherLen l += len(rr.OtherData)/2 + 1 return l } func (rr *TXT) len() int { l := rr.Hdr.len() for _, x := range rr.Txt { l += len(x) + 1 } return l } func (rr *UID) len() int { l := rr.Hdr.len() l += 4 // Uid return l } func (rr *UINFO) len() int { l := rr.Hdr.len() l += len(rr.Uinfo) + 1 return l } func (rr *URI) len() int { l := rr.Hdr.len() l += 2 // Priority l += 2 // Weight l += len(rr.Target) return l } func (rr *X25) len() int { l := rr.Hdr.len() l += len(rr.PSDNAddress) + 1 return l }