package dns
import (
"encoding/base64"
"net"
)
var TypeToRR = map [uint16 ]func () RR {
TypeA : func () RR { return new (A ) },
TypeAAAA : func () RR { return new (AAAA ) },
TypeAFSDB : func () RR { return new (AFSDB ) },
TypeAMTRELAY : func () RR { return new (AMTRELAY ) },
TypeANY : func () RR { return new (ANY ) },
TypeAPL : func () RR { return new (APL ) },
TypeAVC : func () RR { return new (AVC ) },
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 ) },
TypeCSYNC : func () RR { return new (CSYNC ) },
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 ) },
TypeHTTPS : func () RR { return new (HTTPS ) },
TypeIPSECKEY : func () RR { return new (IPSECKEY ) },
TypeISDN : func () RR { return new (ISDN ) },
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 ) },
TypeNULL : func () RR { return new (NULL ) },
TypeNXNAME : func () RR { return new (NXNAME ) },
TypeNXT : func () RR { return new (NXT ) },
TypeOPENPGPKEY : func () RR { return new (OPENPGPKEY ) },
TypeOPT : func () RR { return new (OPT ) },
TypePTR : func () RR { return new (PTR ) },
TypePX : func () RR { return new (PX ) },
TypeRESINFO : func () RR { return new (RESINFO ) },
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 ) },
TypeSMIMEA : func () RR { return new (SMIMEA ) },
TypeSOA : func () RR { return new (SOA ) },
TypeSPF : func () RR { return new (SPF ) },
TypeSRV : func () RR { return new (SRV ) },
TypeSSHFP : func () RR { return new (SSHFP ) },
TypeSVCB : func () RR { return new (SVCB ) },
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 ) },
TypeX25 : func () RR { return new (X25 ) },
TypeZONEMD : func () RR { return new (ZONEMD ) },
}
var TypeToString = map [uint16 ]string {
TypeA : "A" ,
TypeAAAA : "AAAA" ,
TypeAFSDB : "AFSDB" ,
TypeAMTRELAY : "AMTRELAY" ,
TypeANY : "ANY" ,
TypeAPL : "APL" ,
TypeATMA : "ATMA" ,
TypeAVC : "AVC" ,
TypeAXFR : "AXFR" ,
TypeCAA : "CAA" ,
TypeCDNSKEY : "CDNSKEY" ,
TypeCDS : "CDS" ,
TypeCERT : "CERT" ,
TypeCNAME : "CNAME" ,
TypeCSYNC : "CSYNC" ,
TypeDHCID : "DHCID" ,
TypeDLV : "DLV" ,
TypeDNAME : "DNAME" ,
TypeDNSKEY : "DNSKEY" ,
TypeDS : "DS" ,
TypeEID : "EID" ,
TypeEUI48 : "EUI48" ,
TypeEUI64 : "EUI64" ,
TypeGID : "GID" ,
TypeGPOS : "GPOS" ,
TypeHINFO : "HINFO" ,
TypeHIP : "HIP" ,
TypeHTTPS : "HTTPS" ,
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" ,
TypeNXNAME : "NXNAME" ,
TypeNXT : "NXT" ,
TypeNone : "None" ,
TypeOPENPGPKEY : "OPENPGPKEY" ,
TypeOPT : "OPT" ,
TypePTR : "PTR" ,
TypePX : "PX" ,
TypeRESINFO : "RESINFO" ,
TypeRKEY : "RKEY" ,
TypeRP : "RP" ,
TypeRRSIG : "RRSIG" ,
TypeRT : "RT" ,
TypeReserved : "Reserved" ,
TypeSIG : "SIG" ,
TypeSMIMEA : "SMIMEA" ,
TypeSOA : "SOA" ,
TypeSPF : "SPF" ,
TypeSRV : "SRV" ,
TypeSSHFP : "SSHFP" ,
TypeSVCB : "SVCB" ,
TypeTA : "TA" ,
TypeTALINK : "TALINK" ,
TypeTKEY : "TKEY" ,
TypeTLSA : "TLSA" ,
TypeTSIG : "TSIG" ,
TypeTXT : "TXT" ,
TypeUID : "UID" ,
TypeUINFO : "UINFO" ,
TypeUNSPEC : "UNSPEC" ,
TypeURI : "URI" ,
TypeX25 : "X25" ,
TypeZONEMD : "ZONEMD" ,
TypeNSAPPTR : "NSAP-PTR" ,
}
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 *AMTRELAY ) Header () *RR_Header { return &rr .Hdr }
func (rr *ANY ) Header () *RR_Header { return &rr .Hdr }
func (rr *APL ) Header () *RR_Header { return &rr .Hdr }
func (rr *AVC ) 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 *CSYNC ) 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 *HTTPS ) Header () *RR_Header { return &rr .Hdr }
func (rr *IPSECKEY ) Header () *RR_Header { return &rr .Hdr }
func (rr *ISDN ) 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 *NULL ) Header () *RR_Header { return &rr .Hdr }
func (rr *NXNAME ) Header () *RR_Header { return &rr .Hdr }
func (rr *NXT ) 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 *RESINFO ) 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 *SMIMEA ) 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 *SVCB ) 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 *X25 ) Header () *RR_Header { return &rr .Hdr }
func (rr *ZONEMD ) Header () *RR_Header { return &rr .Hdr }
func (rr *A ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
if len (rr .A ) != 0 {
l += net .IPv4len
}
return l
}
func (rr *AAAA ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
if len (rr .AAAA ) != 0 {
l += net .IPv6len
}
return l
}
func (rr *AFSDB ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 2
l += domainNameLen (rr .Hostname , off +l , compression , false )
return l
}
func (rr *AMTRELAY ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l ++
l ++
switch rr .GatewayType {
case AMTRELAYIPv4 :
l += net .IPv4len
case AMTRELAYIPv6 :
l += net .IPv6len
case AMTRELAYHost :
l += len (rr .GatewayHost ) + 1
}
return l
}
func (rr *ANY ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
return l
}
func (rr *APL ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
for _ , x := range rr .Prefixes {
l += x .len ()
}
return l
}
func (rr *AVC ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
for _ , x := range rr .Txt {
l += len (x ) + 1
}
return l
}
func (rr *CAA ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l ++
l += len (rr .Tag ) + 1
l += len (rr .Value )
return l
}
func (rr *CERT ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 2
l += 2
l ++
l += base64 .StdEncoding .DecodedLen (len (rr .Certificate ))
return l
}
func (rr *CNAME ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += domainNameLen (rr .Target , off +l , compression , true )
return l
}
func (rr *DHCID ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += base64 .StdEncoding .DecodedLen (len (rr .Digest ))
return l
}
func (rr *DNAME ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += domainNameLen (rr .Target , off +l , compression , false )
return l
}
func (rr *DNSKEY ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 2
l ++
l ++
l += base64 .StdEncoding .DecodedLen (len (rr .PublicKey ))
return l
}
func (rr *DS ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 2
l ++
l ++
l += len (rr .Digest ) / 2
return l
}
func (rr *EID ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += len (rr .Endpoint ) / 2
return l
}
func (rr *EUI48 ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 6
return l
}
func (rr *EUI64 ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 8
return l
}
func (rr *GID ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 4
return l
}
func (rr *GPOS ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += len (rr .Longitude ) + 1
l += len (rr .Latitude ) + 1
l += len (rr .Altitude ) + 1
return l
}
func (rr *HINFO ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += len (rr .Cpu ) + 1
l += len (rr .Os ) + 1
return l
}
func (rr *HIP ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l ++
l ++
l += 2
l += len (rr .Hit ) / 2
l += base64 .StdEncoding .DecodedLen (len (rr .PublicKey ))
for _ , x := range rr .RendezvousServers {
l += domainNameLen (x , off +l , compression , false )
}
return l
}
func (rr *IPSECKEY ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l ++
l ++
l ++
switch rr .GatewayType {
case IPSECGatewayIPv4 :
l += net .IPv4len
case IPSECGatewayIPv6 :
l += net .IPv6len
case IPSECGatewayHost :
l += len (rr .GatewayHost ) + 1
}
l += base64 .StdEncoding .DecodedLen (len (rr .PublicKey ))
return l
}
func (rr *ISDN ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += len (rr .Address ) + 1
l += len (rr .SubAddress ) + 1
return l
}
func (rr *KX ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 2
l += domainNameLen (rr .Exchanger , off +l , compression , false )
return l
}
func (rr *L32 ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 2
if len (rr .Locator32 ) != 0 {
l += net .IPv4len
}
return l
}
func (rr *L64 ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 2
l += 8
return l
}
func (rr *LOC ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l ++
l ++
l ++
l ++
l += 4
l += 4
l += 4
return l
}
func (rr *LP ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 2
l += domainNameLen (rr .Fqdn , off +l , compression , false )
return l
}
func (rr *MB ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += domainNameLen (rr .Mb , off +l , compression , true )
return l
}
func (rr *MD ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += domainNameLen (rr .Md , off +l , compression , true )
return l
}
func (rr *MF ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += domainNameLen (rr .Mf , off +l , compression , true )
return l
}
func (rr *MG ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += domainNameLen (rr .Mg , off +l , compression , true )
return l
}
func (rr *MINFO ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += domainNameLen (rr .Rmail , off +l , compression , true )
l += domainNameLen (rr .Email , off +l , compression , true )
return l
}
func (rr *MR ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += domainNameLen (rr .Mr , off +l , compression , true )
return l
}
func (rr *MX ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 2
l += domainNameLen (rr .Mx , off +l , compression , true )
return l
}
func (rr *NAPTR ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 2
l += 2
l += len (rr .Flags ) + 1
l += len (rr .Service ) + 1
l += len (rr .Regexp ) + 1
l += domainNameLen (rr .Replacement , off +l , compression , false )
return l
}
func (rr *NID ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 2
l += 8
return l
}
func (rr *NIMLOC ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += len (rr .Locator ) / 2
return l
}
func (rr *NINFO ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
for _ , x := range rr .ZSData {
l += len (x ) + 1
}
return l
}
func (rr *NS ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += domainNameLen (rr .Ns , off +l , compression , true )
return l
}
func (rr *NSAPPTR ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += domainNameLen (rr .Ptr , off +l , compression , false )
return l
}
func (rr *NSEC3PARAM ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l ++
l ++
l += 2
l ++
l += len (rr .Salt ) / 2
return l
}
func (rr *NULL ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += len (rr .Data )
return l
}
func (rr *NXNAME ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
return l
}
func (rr *OPENPGPKEY ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += base64 .StdEncoding .DecodedLen (len (rr .PublicKey ))
return l
}
func (rr *PTR ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += domainNameLen (rr .Ptr , off +l , compression , true )
return l
}
func (rr *PX ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 2
l += domainNameLen (rr .Map822 , off +l , compression , false )
l += domainNameLen (rr .Mapx400 , off +l , compression , false )
return l
}
func (rr *RESINFO ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
for _ , x := range rr .Txt {
l += len (x ) + 1
}
return l
}
func (rr *RFC3597 ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += len (rr .Rdata ) / 2
return l
}
func (rr *RKEY ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 2
l ++
l ++
l += base64 .StdEncoding .DecodedLen (len (rr .PublicKey ))
return l
}
func (rr *RP ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += domainNameLen (rr .Mbox , off +l , compression , false )
l += domainNameLen (rr .Txt , off +l , compression , false )
return l
}
func (rr *RRSIG ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 2
l ++
l ++
l += 4
l += 4
l += 4
l += 2
l += domainNameLen (rr .SignerName , off +l , compression , false )
l += base64 .StdEncoding .DecodedLen (len (rr .Signature ))
return l
}
func (rr *RT ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 2
l += domainNameLen (rr .Host , off +l , compression , false )
return l
}
func (rr *SMIMEA ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l ++
l ++
l ++
l += len (rr .Certificate ) / 2
return l
}
func (rr *SOA ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += domainNameLen (rr .Ns , off +l , compression , true )
l += domainNameLen (rr .Mbox , off +l , compression , true )
l += 4
l += 4
l += 4
l += 4
l += 4
return l
}
func (rr *SPF ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
for _ , x := range rr .Txt {
l += len (x ) + 1
}
return l
}
func (rr *SRV ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 2
l += 2
l += 2
l += domainNameLen (rr .Target , off +l , compression , false )
return l
}
func (rr *SSHFP ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l ++
l ++
l += len (rr .FingerPrint ) / 2
return l
}
func (rr *SVCB ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 2
l += domainNameLen (rr .Target , off +l , compression , false )
for _ , x := range rr .Value {
l += 4 + int (x .len ())
}
return l
}
func (rr *TA ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 2
l ++
l ++
l += len (rr .Digest ) / 2
return l
}
func (rr *TALINK ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += domainNameLen (rr .PreviousName , off +l , compression , false )
l += domainNameLen (rr .NextName , off +l , compression , false )
return l
}
func (rr *TKEY ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += domainNameLen (rr .Algorithm , off +l , compression , false )
l += 4
l += 4
l += 2
l += 2
l += 2
l += len (rr .Key ) / 2
l += 2
l += len (rr .OtherData ) / 2
return l
}
func (rr *TLSA ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l ++
l ++
l ++
l += len (rr .Certificate ) / 2
return l
}
func (rr *TSIG ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += domainNameLen (rr .Algorithm , off +l , compression , false )
l += 6
l += 2
l += 2
l += len (rr .MAC ) / 2
l += 2
l += 2
l += 2
l += len (rr .OtherData ) / 2
return l
}
func (rr *TXT ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
for _ , x := range rr .Txt {
l += len (x ) + 1
}
return l
}
func (rr *UID ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 4
return l
}
func (rr *UINFO ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += len (rr .Uinfo ) + 1
return l
}
func (rr *URI ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 2
l += 2
l += len (rr .Target )
return l
}
func (rr *X25 ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += len (rr .PSDNAddress ) + 1
return l
}
func (rr *ZONEMD ) len (off int , compression map [string ]struct {}) int {
l := rr .Hdr .len (off , compression )
l += 4
l ++
l ++
l += len (rr .Digest ) / 2
return l
}
func (rr *A ) copy () RR {
return &A {rr .Hdr , cloneSlice (rr .A )}
}
func (rr *AAAA ) copy () RR {
return &AAAA {rr .Hdr , cloneSlice (rr .AAAA )}
}
func (rr *AFSDB ) copy () RR {
return &AFSDB {rr .Hdr , rr .Subtype , rr .Hostname }
}
func (rr *AMTRELAY ) copy () RR {
return &AMTRELAY {
rr .Hdr ,
rr .Precedence ,
rr .GatewayType ,
cloneSlice (rr .GatewayAddr ),
rr .GatewayHost ,
}
}
func (rr *ANY ) copy () RR {
return &ANY {rr .Hdr }
}
func (rr *APL ) copy () RR {
Prefixes := make ([]APLPrefix , len (rr .Prefixes ))
for i , e := range rr .Prefixes {
Prefixes [i ] = e .copy ()
}
return &APL {rr .Hdr , Prefixes }
}
func (rr *AVC ) copy () RR {
return &AVC {rr .Hdr , cloneSlice (rr .Txt )}
}
func (rr *CAA ) copy () RR {
return &CAA {
rr .Hdr ,
rr .Flag ,
rr .Tag ,
rr .Value ,
}
}
func (rr *CDNSKEY ) copy () RR {
return &CDNSKEY {*rr .DNSKEY .copy ().(*DNSKEY )}
}
func (rr *CDS ) copy () RR {
return &CDS {*rr .DS .copy ().(*DS )}
}
func (rr *CERT ) copy () RR {
return &CERT {
rr .Hdr ,
rr .Type ,
rr .KeyTag ,
rr .Algorithm ,
rr .Certificate ,
}
}
func (rr *CNAME ) copy () RR {
return &CNAME {rr .Hdr , rr .Target }
}
func (rr *CSYNC ) copy () RR {
return &CSYNC {
rr .Hdr ,
rr .Serial ,
rr .Flags ,
cloneSlice (rr .TypeBitMap ),
}
}
func (rr *DHCID ) copy () RR {
return &DHCID {rr .Hdr , rr .Digest }
}
func (rr *DLV ) copy () RR {
return &DLV {*rr .DS .copy ().(*DS )}
}
func (rr *DNAME ) copy () RR {
return &DNAME {rr .Hdr , rr .Target }
}
func (rr *DNSKEY ) copy () RR {
return &DNSKEY {
rr .Hdr ,
rr .Flags ,
rr .Protocol ,
rr .Algorithm ,
rr .PublicKey ,
}
}
func (rr *DS ) copy () RR {
return &DS {
rr .Hdr ,
rr .KeyTag ,
rr .Algorithm ,
rr .DigestType ,
rr .Digest ,
}
}
func (rr *EID ) copy () RR {
return &EID {rr .Hdr , rr .Endpoint }
}
func (rr *EUI48 ) copy () RR {
return &EUI48 {rr .Hdr , rr .Address }
}
func (rr *EUI64 ) copy () RR {
return &EUI64 {rr .Hdr , rr .Address }
}
func (rr *GID ) copy () RR {
return &GID {rr .Hdr , rr .Gid }
}
func (rr *GPOS ) copy () RR {
return &GPOS {
rr .Hdr ,
rr .Longitude ,
rr .Latitude ,
rr .Altitude ,
}
}
func (rr *HINFO ) copy () RR {
return &HINFO {rr .Hdr , rr .Cpu , rr .Os }
}
func (rr *HIP ) copy () RR {
return &HIP {
rr .Hdr ,
rr .HitLength ,
rr .PublicKeyAlgorithm ,
rr .PublicKeyLength ,
rr .Hit ,
rr .PublicKey ,
cloneSlice (rr .RendezvousServers ),
}
}
func (rr *HTTPS ) copy () RR {
return &HTTPS {*rr .SVCB .copy ().(*SVCB )}
}
func (rr *IPSECKEY ) copy () RR {
return &IPSECKEY {
rr .Hdr ,
rr .Precedence ,
rr .GatewayType ,
rr .Algorithm ,
cloneSlice (rr .GatewayAddr ),
rr .GatewayHost ,
rr .PublicKey ,
}
}
func (rr *ISDN ) copy () RR {
return &ISDN {rr .Hdr , rr .Address , rr .SubAddress }
}
func (rr *KEY ) copy () RR {
return &KEY {*rr .DNSKEY .copy ().(*DNSKEY )}
}
func (rr *KX ) copy () RR {
return &KX {rr .Hdr , rr .Preference , rr .Exchanger }
}
func (rr *L32 ) copy () RR {
return &L32 {rr .Hdr , rr .Preference , cloneSlice (rr .Locator32 )}
}
func (rr *L64 ) copy () RR {
return &L64 {rr .Hdr , rr .Preference , rr .Locator64 }
}
func (rr *LOC ) copy () RR {
return &LOC {
rr .Hdr ,
rr .Version ,
rr .Size ,
rr .HorizPre ,
rr .VertPre ,
rr .Latitude ,
rr .Longitude ,
rr .Altitude ,
}
}
func (rr *LP ) copy () RR {
return &LP {rr .Hdr , rr .Preference , rr .Fqdn }
}
func (rr *MB ) copy () RR {
return &MB {rr .Hdr , rr .Mb }
}
func (rr *MD ) copy () RR {
return &MD {rr .Hdr , rr .Md }
}
func (rr *MF ) copy () RR {
return &MF {rr .Hdr , rr .Mf }
}
func (rr *MG ) copy () RR {
return &MG {rr .Hdr , rr .Mg }
}
func (rr *MINFO ) copy () RR {
return &MINFO {rr .Hdr , rr .Rmail , rr .Email }
}
func (rr *MR ) copy () RR {
return &MR {rr .Hdr , rr .Mr }
}
func (rr *MX ) copy () RR {
return &MX {rr .Hdr , rr .Preference , rr .Mx }
}
func (rr *NAPTR ) copy () RR {
return &NAPTR {
rr .Hdr ,
rr .Order ,
rr .Preference ,
rr .Flags ,
rr .Service ,
rr .Regexp ,
rr .Replacement ,
}
}
func (rr *NID ) copy () RR {
return &NID {rr .Hdr , rr .Preference , rr .NodeID }
}
func (rr *NIMLOC ) copy () RR {
return &NIMLOC {rr .Hdr , rr .Locator }
}
func (rr *NINFO ) copy () RR {
return &NINFO {rr .Hdr , cloneSlice (rr .ZSData )}
}
func (rr *NS ) copy () RR {
return &NS {rr .Hdr , rr .Ns }
}
func (rr *NSAPPTR ) copy () RR {
return &NSAPPTR {rr .Hdr , rr .Ptr }
}
func (rr *NSEC ) copy () RR {
return &NSEC {rr .Hdr , rr .NextDomain , cloneSlice (rr .TypeBitMap )}
}
func (rr *NSEC3 ) copy () RR {
return &NSEC3 {
rr .Hdr ,
rr .Hash ,
rr .Flags ,
rr .Iterations ,
rr .SaltLength ,
rr .Salt ,
rr .HashLength ,
rr .NextDomain ,
cloneSlice (rr .TypeBitMap ),
}
}
func (rr *NSEC3PARAM ) copy () RR {
return &NSEC3PARAM {
rr .Hdr ,
rr .Hash ,
rr .Flags ,
rr .Iterations ,
rr .SaltLength ,
rr .Salt ,
}
}
func (rr *NULL ) copy () RR {
return &NULL {rr .Hdr , rr .Data }
}
func (rr *NXNAME ) copy () RR {
return &NXNAME {rr .Hdr }
}
func (rr *NXT ) copy () RR {
return &NXT {*rr .NSEC .copy ().(*NSEC )}
}
func (rr *OPENPGPKEY ) copy () RR {
return &OPENPGPKEY {rr .Hdr , rr .PublicKey }
}
func (rr *OPT ) copy () RR {
Option := make ([]EDNS0 , len (rr .Option ))
for i , e := range rr .Option {
Option [i ] = e .copy ()
}
return &OPT {rr .Hdr , Option }
}
func (rr *PTR ) copy () RR {
return &PTR {rr .Hdr , rr .Ptr }
}
func (rr *PX ) copy () RR {
return &PX {
rr .Hdr ,
rr .Preference ,
rr .Map822 ,
rr .Mapx400 ,
}
}
func (rr *RESINFO ) copy () RR {
return &RESINFO {rr .Hdr , cloneSlice (rr .Txt )}
}
func (rr *RFC3597 ) copy () RR {
return &RFC3597 {rr .Hdr , rr .Rdata }
}
func (rr *RKEY ) copy () RR {
return &RKEY {
rr .Hdr ,
rr .Flags ,
rr .Protocol ,
rr .Algorithm ,
rr .PublicKey ,
}
}
func (rr *RP ) copy () RR {
return &RP {rr .Hdr , rr .Mbox , rr .Txt }
}
func (rr *RRSIG ) copy () RR {
return &RRSIG {
rr .Hdr ,
rr .TypeCovered ,
rr .Algorithm ,
rr .Labels ,
rr .OrigTtl ,
rr .Expiration ,
rr .Inception ,
rr .KeyTag ,
rr .SignerName ,
rr .Signature ,
}
}
func (rr *RT ) copy () RR {
return &RT {rr .Hdr , rr .Preference , rr .Host }
}
func (rr *SIG ) copy () RR {
return &SIG {*rr .RRSIG .copy ().(*RRSIG )}
}
func (rr *SMIMEA ) copy () RR {
return &SMIMEA {
rr .Hdr ,
rr .Usage ,
rr .Selector ,
rr .MatchingType ,
rr .Certificate ,
}
}
func (rr *SOA ) copy () RR {
return &SOA {
rr .Hdr ,
rr .Ns ,
rr .Mbox ,
rr .Serial ,
rr .Refresh ,
rr .Retry ,
rr .Expire ,
rr .Minttl ,
}
}
func (rr *SPF ) copy () RR {
return &SPF {rr .Hdr , cloneSlice (rr .Txt )}
}
func (rr *SRV ) copy () RR {
return &SRV {
rr .Hdr ,
rr .Priority ,
rr .Weight ,
rr .Port ,
rr .Target ,
}
}
func (rr *SSHFP ) copy () RR {
return &SSHFP {
rr .Hdr ,
rr .Algorithm ,
rr .Type ,
rr .FingerPrint ,
}
}
func (rr *SVCB ) copy () RR {
Value := make ([]SVCBKeyValue , len (rr .Value ))
for i , e := range rr .Value {
Value [i ] = e .copy ()
}
return &SVCB {
rr .Hdr ,
rr .Priority ,
rr .Target ,
Value ,
}
}
func (rr *TA ) copy () RR {
return &TA {
rr .Hdr ,
rr .KeyTag ,
rr .Algorithm ,
rr .DigestType ,
rr .Digest ,
}
}
func (rr *TALINK ) copy () RR {
return &TALINK {rr .Hdr , rr .PreviousName , rr .NextName }
}
func (rr *TKEY ) copy () RR {
return &TKEY {
rr .Hdr ,
rr .Algorithm ,
rr .Inception ,
rr .Expiration ,
rr .Mode ,
rr .Error ,
rr .KeySize ,
rr .Key ,
rr .OtherLen ,
rr .OtherData ,
}
}
func (rr *TLSA ) copy () RR {
return &TLSA {
rr .Hdr ,
rr .Usage ,
rr .Selector ,
rr .MatchingType ,
rr .Certificate ,
}
}
func (rr *TSIG ) copy () RR {
return &TSIG {
rr .Hdr ,
rr .Algorithm ,
rr .TimeSigned ,
rr .Fudge ,
rr .MACSize ,
rr .MAC ,
rr .OrigId ,
rr .Error ,
rr .OtherLen ,
rr .OtherData ,
}
}
func (rr *TXT ) copy () RR {
return &TXT {rr .Hdr , cloneSlice (rr .Txt )}
}
func (rr *UID ) copy () RR {
return &UID {rr .Hdr , rr .Uid }
}
func (rr *UINFO ) copy () RR {
return &UINFO {rr .Hdr , rr .Uinfo }
}
func (rr *URI ) copy () RR {
return &URI {
rr .Hdr ,
rr .Priority ,
rr .Weight ,
rr .Target ,
}
}
func (rr *X25 ) copy () RR {
return &X25 {rr .Hdr , rr .PSDNAddress }
}
func (rr *ZONEMD ) copy () RR {
return &ZONEMD {
rr .Hdr ,
rr .Serial ,
rr .Scheme ,
rr .Hash ,
rr .Digest ,
}
}
The pages are generated with Golds v0.8.2 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .