@ -54,6 +54,7 @@ var TypeToRR = map[uint16]func() RR{
TypeNSEC : func ( ) RR { return new ( NSEC ) } ,
TypeNSEC3 : func ( ) RR { return new ( NSEC3 ) } ,
TypeNSEC3PARAM : func ( ) RR { return new ( NSEC3PARAM ) } ,
TypeNULL : func ( ) RR { return new ( NULL ) } ,
TypeOPENPGPKEY : func ( ) RR { return new ( OPENPGPKEY ) } ,
TypeOPT : func ( ) RR { return new ( OPT ) } ,
TypePTR : func ( ) RR { return new ( PTR ) } ,
@ -209,6 +210,7 @@ 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 * 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 }
@ -236,144 +238,144 @@ func (rr *URI) 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 ( )
func ( rr * A ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += net . IPv4len // A
return l
}
func ( rr * AAAA ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * AAAA ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += net . IPv6len // AAAA
return l
}
func ( rr * AFSDB ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * AFSDB ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 2 // Subtype
l += l en( rr . Hostname ) + 1
l += domainNameL en( rr . Hostname , off + l , compression , false )
return l
}
func ( rr * ANY ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * ANY ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
return l
}
func ( rr * AVC ) len ( ) int {
l := rr . Hdr . len ( )
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 ( ) int {
l := rr . Hdr . len ( )
func ( rr * CAA ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l ++ // Flag
l += len ( rr . Tag ) + 1
l += len ( rr . Value )
return l
}
func ( rr * CERT ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * CERT ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 2 // Type
l += 2 // KeyTag
l ++ // Algorithm
l += base64 . StdEncoding . DecodedLen ( len ( rr . Certificate ) )
return l
}
func ( rr * CNAME ) len ( ) int {
l := rr . Hdr . len ( )
l += l en( rr . Target ) + 1
func ( rr * CNAME ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += domainNameL en( rr . Target , off + l , compression , true )
return l
}
func ( rr * DHCID ) len ( ) int {
l := rr . Hdr . len ( )
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 ( ) int {
l := rr . Hdr . len ( )
l += l en( rr . Target ) + 1
func ( rr * DNAME ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += domainNameL en( rr . Target , off + l , compression , false )
return l
}
func ( rr * DNSKEY ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * DNSKEY ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 2 // Flags
l ++ // Protocol
l ++ // Algorithm
l += base64 . StdEncoding . DecodedLen ( len ( rr . PublicKey ) )
return l
}
func ( rr * DS ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * DS ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 2 // KeyTag
l ++ // Algorithm
l ++ // DigestType
l += len ( rr . Digest ) / 2 + 1
return l
}
func ( rr * EID ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * EID ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += len ( rr . Endpoint ) / 2 + 1
return l
}
func ( rr * EUI48 ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * EUI48 ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 6 // Address
return l
}
func ( rr * EUI64 ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * EUI64 ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 8 // Address
return l
}
func ( rr * GID ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * GID ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 4 // Gid
return l
}
func ( rr * GPOS ) len ( ) int {
l := rr . Hdr . len ( )
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 ( ) int {
l := rr . Hdr . len ( )
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 ( ) int {
l := rr . Hdr . len ( )
func ( rr * HIP ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l ++ // HitLength
l ++ // PublicKeyAlgorithm
l += 2 // PublicKeyLength
l += len ( rr . Hit ) / 2
l += base64 . StdEncoding . DecodedLen ( len ( rr . PublicKey ) )
for _ , x := range rr . RendezvousServers {
l += len ( x ) + 1
l += domainNameLen ( x , off + l , compression , false )
}
return l
}
func ( rr * KX ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * KX ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 2 // Preference
l += l en( rr . Exchanger ) + 1
l += domainNameL en( rr . Exchanger , off + l , compression , false )
return l
}
func ( rr * L32 ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * L32 ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 2 // Preference
l += net . IPv4len // Locator32
return l
}
func ( rr * L64 ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * L64 ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 2 // Preference
l += 8 // Locator64
return l
}
func ( rr * LOC ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * LOC ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l ++ // Version
l ++ // Size
l ++ // HorizPre
@ -383,89 +385,89 @@ func (rr *LOC) len() int {
l += 4 // Altitude
return l
}
func ( rr * LP ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * LP ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 2 // Preference
l += l en( rr . Fqdn ) + 1
l += domainNameL en( rr . Fqdn , off + l , compression , false )
return l
}
func ( rr * MB ) len ( ) int {
l := rr . Hdr . len ( )
l += l en( rr . Mb ) + 1
func ( rr * MB ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += domainNameL en( rr . Mb , off + l , compression , true )
return l
}
func ( rr * MD ) len ( ) int {
l := rr . Hdr . len ( )
l += l en( rr . Md ) + 1
func ( rr * MD ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += domainNameL en( rr . Md , off + l , compression , true )
return l
}
func ( rr * MF ) len ( ) int {
l := rr . Hdr . len ( )
l += l en( rr . Mf ) + 1
func ( rr * MF ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += domainNameL en( rr . Mf , off + l , compression , true )
return l
}
func ( rr * MG ) len ( ) int {
l := rr . Hdr . len ( )
l += l en( rr . Mg ) + 1
func ( rr * MG ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += domainNameL en( rr . Mg , off + l , compression , true )
return l
}
func ( rr * MINFO ) len ( ) int {
l := rr . Hdr . len ( )
l += l en( rr . Rmail ) + 1
l += l en( rr . Email ) + 1
func ( rr * MINFO ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += domainNameL en( rr . Rmail , off + l , compression , true )
l += domainNameL en( rr . Email , off + l , compression , true )
return l
}
func ( rr * MR ) len ( ) int {
l := rr . Hdr . len ( )
l += l en( rr . Mr ) + 1
func ( rr * MR ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += domainNameL en( rr . Mr , off + l , compression , true )
return l
}
func ( rr * MX ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * MX ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 2 // Preference
l += l en( rr . Mx ) + 1
l += domainNameL en( rr . Mx , off + l , compression , true )
return l
}
func ( rr * NAPTR ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * NAPTR ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 2 // Order
l += 2 // Preference
l += len ( rr . Flags ) + 1
l += len ( rr . Service ) + 1
l += len ( rr . Regexp ) + 1
l += l en( rr . Replacement ) + 1
l += domainNameL en( rr . Replacement , off + l , compression , false )
return l
}
func ( rr * NID ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * NID ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 2 // Preference
l += 8 // NodeID
return l
}
func ( rr * NIMLOC ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * NIMLOC ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += len ( rr . Locator ) / 2 + 1
return l
}
func ( rr * NINFO ) len ( ) int {
l := rr . Hdr . len ( )
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 ( ) int {
l := rr . Hdr . len ( )
l += l en( rr . Ns ) + 1
func ( rr * NS ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += domainNameL en( rr . Ns , off + l , compression , true )
return l
}
func ( rr * NSAPPTR ) len ( ) int {
l := rr . Hdr . len ( )
l += l en( rr . Ptr ) + 1
func ( rr * NSAPPTR ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += domainNameL en( rr . Ptr , off + l , compression , false )
return l
}
func ( rr * NSEC3PARAM ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * NSEC3PARAM ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l ++ // Hash
l ++ // Flags
l += 2 // Iterations
@ -473,44 +475,49 @@ func (rr *NSEC3PARAM) len() int {
l += len ( rr . Salt ) / 2
return l
}
func ( rr * OPENPGPKEY ) len ( ) int {
l := rr . Hdr . len ( )
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 * 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 ( ) int {
l := rr . Hdr . len ( )
l += l en( rr . Ptr ) + 1
func ( rr * PTR ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += domainNameL en( rr . Ptr , off + l , compression , true )
return l
}
func ( rr * PX ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * PX ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 2 // Preference
l += l en( rr . Map822 ) + 1
l += l en( rr . Mapx400 ) + 1
l += domainNameL en( rr . Map822 , off + l , compression , false )
l += domainNameL en( rr . Mapx400 , off + l , compression , false )
return l
}
func ( rr * RFC3597 ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * RFC3597 ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += len ( rr . Rdata ) / 2 + 1
return l
}
func ( rr * RKEY ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * RKEY ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 2 // Flags
l ++ // Protocol
l ++ // Algorithm
l += base64 . StdEncoding . DecodedLen ( len ( rr . PublicKey ) )
return l
}
func ( rr * RP ) len ( ) int {
l := rr . Hdr . len ( )
l += l en( rr . Mbox ) + 1
l += l en( rr . Txt ) + 1
func ( rr * RP ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += domainNameL en( rr . Mbox , off + l , compression , false )
l += domainNameL en( rr . Txt , off + l , compression , false )
return l
}
func ( rr * RRSIG ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * RRSIG ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 2 // TypeCovered
l ++ // Algorithm
l ++ // Labels
@ -518,28 +525,28 @@ func (rr *RRSIG) len() int {
l += 4 // Expiration
l += 4 // Inception
l += 2 // KeyTag
l += l en( rr . SignerName ) + 1
l += domainNameL en( rr . SignerName , off + l , compression , false )
l += base64 . StdEncoding . DecodedLen ( len ( rr . Signature ) )
return l
}
func ( rr * RT ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * RT ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 2 // Preference
l += l en( rr . Host ) + 1
l += domainNameL en( rr . Host , off + l , compression , false )
return l
}
func ( rr * SMIMEA ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * SMIMEA ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l ++ // Usage
l ++ // Selector
l ++ // MatchingType
l += len ( rr . Certificate ) / 2 + 1
return l
}
func ( rr * SOA ) len ( ) int {
l := rr . Hdr . len ( )
l += l en( rr . Ns ) + 1
l += l en( rr . Mbox ) + 1
func ( rr * SOA ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += domainNameL en( rr . Ns , off + l , compression , true )
l += domainNameL en( rr . Mbox , off + l , compression , true )
l += 4 // Serial
l += 4 // Refresh
l += 4 // Retry
@ -547,45 +554,45 @@ func (rr *SOA) len() int {
l += 4 // Minttl
return l
}
func ( rr * SPF ) len ( ) int {
l := rr . Hdr . len ( )
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 ( ) int {
l := rr . Hdr . len ( )
func ( rr * SRV ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 2 // Priority
l += 2 // Weight
l += 2 // Port
l += l en( rr . Target ) + 1
l += domainNameL en( rr . Target , off + l , compression , false )
return l
}
func ( rr * SSHFP ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * SSHFP ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l ++ // Algorithm
l ++ // Type
l += len ( rr . FingerPrint ) / 2 + 1
return l
}
func ( rr * TA ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * TA ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 2 // KeyTag
l ++ // Algorithm
l ++ // DigestType
l += len ( rr . Digest ) / 2 + 1
return l
}
func ( rr * TALINK ) len ( ) int {
l := rr . Hdr . len ( )
l += l en( rr . PreviousName ) + 1
l += l en( rr . NextName ) + 1
func ( rr * TALINK ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += domainNameL en( rr . PreviousName , off + l , compression , false )
l += domainNameL en( rr . NextName , off + l , compression , false )
return l
}
func ( rr * TKEY ) len ( ) int {
l := rr . Hdr . len ( )
l += l en( rr . Algorithm ) + 1
func ( rr * TKEY ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += domainNameL en( rr . Algorithm , off + l , compression , false )
l += 4 // Inception
l += 4 // Expiration
l += 2 // Mode
@ -596,17 +603,17 @@ func (rr *TKEY) len() int {
l += len ( rr . OtherData ) / 2
return l
}
func ( rr * TLSA ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * TLSA ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l ++ // Usage
l ++ // Selector
l ++ // MatchingType
l += len ( rr . Certificate ) / 2 + 1
return l
}
func ( rr * TSIG ) len ( ) int {
l := rr . Hdr . len ( )
l += l en( rr . Algorithm ) + 1
func ( rr * TSIG ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += domainNameL en( rr . Algorithm , off + l , compression , false )
l += 6 // TimeSigned
l += 2 // Fudge
l += 2 // MACSize
@ -617,247 +624,252 @@ func (rr *TSIG) len() int {
l += len ( rr . OtherData ) / 2
return l
}
func ( rr * TXT ) len ( ) int {
l := rr . Hdr . len ( )
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 ( ) int {
l := rr . Hdr . len ( )
func ( rr * UID ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 4 // Uid
return l
}
func ( rr * UINFO ) len ( ) int {
l := rr . Hdr . len ( )
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 ( ) int {
l := rr . Hdr . len ( )
func ( rr * URI ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += 2 // Priority
l += 2 // Weight
l += len ( rr . Target )
return l
}
func ( rr * X25 ) len ( ) int {
l := rr . Hdr . len ( )
func ( rr * X25 ) len ( off int , compression map [ string ] struct { } ) int {
l := rr . Hdr . len ( off , compression )
l += len ( rr . PSDNAddress ) + 1
return l
}
// copy() functions
func ( rr * A ) copy ( ) RR {
return & A { * rr . Hdr . copyHeader ( ) , copyIP ( rr . A ) }
return & A { rr . Hdr , copyIP ( rr . A ) }
}
func ( rr * AAAA ) copy ( ) RR {
return & AAAA { * rr . Hdr . copyHeader ( ) , copyIP ( rr . AAAA ) }
return & AAAA { rr . Hdr , copyIP ( rr . AAAA ) }
}
func ( rr * AFSDB ) copy ( ) RR {
return & AFSDB { * rr . Hdr . copyHeader ( ) , rr . Subtype , rr . Hostname }
return & AFSDB { rr . Hdr , rr . Subtype , rr . Hostname }
}
func ( rr * ANY ) copy ( ) RR {
return & ANY { * rr . Hdr . copyHeader ( ) }
return & ANY { rr . Hdr }
}
func ( rr * AVC ) copy ( ) RR {
Txt := make ( [ ] string , len ( rr . Txt ) )
copy ( Txt , rr . Txt )
return & AVC { * rr . Hdr . copyHeader ( ) , Txt }
return & AVC { rr . Hdr , Txt }
}
func ( rr * CAA ) copy ( ) RR {
return & CAA { * rr . Hdr . copyHeader ( ) , rr . Flag , rr . Tag , rr . Value }
return & CAA { rr . Hdr , rr . Flag , rr . Tag , rr . Value }
}
func ( rr * CERT ) copy ( ) RR {
return & CERT { * rr . Hdr . copyHeader ( ) , rr . Type , rr . KeyTag , rr . Algorithm , rr . Certificate }
return & CERT { rr . Hdr , rr . Type , rr . KeyTag , rr . Algorithm , rr . Certificate }
}
func ( rr * CNAME ) copy ( ) RR {
return & CNAME { * rr . Hdr . copyHeader ( ) , rr . Target }
return & CNAME { rr . Hdr , rr . Target }
}
func ( rr * CSYNC ) copy ( ) RR {
TypeBitMap := make ( [ ] uint16 , len ( rr . TypeBitMap ) )
copy ( TypeBitMap , rr . TypeBitMap )
return & CSYNC { * rr . Hdr . copyHeader ( ) , rr . Serial , rr . Flags , TypeBitMap }
return & CSYNC { rr . Hdr , rr . Serial , rr . Flags , TypeBitMap }
}
func ( rr * DHCID ) copy ( ) RR {
return & DHCID { * rr . Hdr . copyHeader ( ) , rr . Digest }
return & DHCID { rr . Hdr , rr . Digest }
}
func ( rr * DNAME ) copy ( ) RR {
return & DNAME { * rr . Hdr . copyHeader ( ) , rr . Target }
return & DNAME { rr . Hdr , rr . Target }
}
func ( rr * DNSKEY ) copy ( ) RR {
return & DNSKEY { * rr . Hdr . copyHeader ( ) , rr . Flags , rr . Protocol , rr . Algorithm , rr . PublicKey }
return & DNSKEY { rr . Hdr , rr . Flags , rr . Protocol , rr . Algorithm , rr . PublicKey }
}
func ( rr * DS ) copy ( ) RR {
return & DS { * rr . Hdr . copyHeader ( ) , rr . KeyTag , rr . Algorithm , rr . DigestType , rr . Digest }
return & DS { rr . Hdr , rr . KeyTag , rr . Algorithm , rr . DigestType , rr . Digest }
}
func ( rr * EID ) copy ( ) RR {
return & EID { * rr . Hdr . copyHeader ( ) , rr . Endpoint }
return & EID { rr . Hdr , rr . Endpoint }
}
func ( rr * EUI48 ) copy ( ) RR {
return & EUI48 { * rr . Hdr . copyHeader ( ) , rr . Address }
return & EUI48 { rr . Hdr , rr . Address }
}
func ( rr * EUI64 ) copy ( ) RR {
return & EUI64 { * rr . Hdr . copyHeader ( ) , rr . Address }
return & EUI64 { rr . Hdr , rr . Address }
}
func ( rr * GID ) copy ( ) RR {
return & GID { * rr . Hdr . copyHeader ( ) , rr . Gid }
return & GID { rr . Hdr , rr . Gid }
}
func ( rr * GPOS ) copy ( ) RR {
return & GPOS { * rr . Hdr . copyHeader ( ) , rr . Longitude , rr . Latitude , rr . Altitude }
return & GPOS { rr . Hdr , rr . Longitude , rr . Latitude , rr . Altitude }
}
func ( rr * HINFO ) copy ( ) RR {
return & HINFO { * rr . Hdr . copyHeader ( ) , rr . Cpu , rr . Os }
return & HINFO { rr . Hdr , rr . Cpu , rr . Os }
}
func ( rr * HIP ) copy ( ) RR {
RendezvousServers := make ( [ ] string , len ( rr . RendezvousServers ) )
copy ( RendezvousServers , rr . RendezvousServers )
return & HIP { * rr . Hdr . copyHeader ( ) , rr . HitLength , rr . PublicKeyAlgorithm , rr . PublicKeyLength , rr . Hit , rr . PublicKey , RendezvousServers }
return & HIP { rr . Hdr , rr . HitLength , rr . PublicKeyAlgorithm , rr . PublicKeyLength , rr . Hit , rr . PublicKey , RendezvousServers }
}
func ( rr * KX ) copy ( ) RR {
return & KX { * rr . Hdr . copyHeader ( ) , rr . Preference , rr . Exchanger }
return & KX { rr . Hdr , rr . Preference , rr . Exchanger }
}
func ( rr * L32 ) copy ( ) RR {
return & L32 { * rr . Hdr . copyHeader ( ) , rr . Preference , copyIP ( rr . Locator32 ) }
return & L32 { rr . Hdr , rr . Preference , copyIP ( rr . Locator32 ) }
}
func ( rr * L64 ) copy ( ) RR {
return & L64 { * rr . Hdr . copyHeader ( ) , rr . Preference , rr . Locator64 }
return & L64 { rr . Hdr , rr . Preference , rr . Locator64 }
}
func ( rr * LOC ) copy ( ) RR {
return & LOC { * rr . Hdr . copyHeader ( ) , rr . Version , rr . Size , rr . HorizPre , rr . VertPre , rr . Latitude , rr . Longitude , rr . Altitude }
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 . copyHeader ( ) , rr . Preference , rr . Fqdn }
return & LP { rr . Hdr , rr . Preference , rr . Fqdn }
}
func ( rr * MB ) copy ( ) RR {
return & MB { * rr . Hdr . copyHeader ( ) , rr . Mb }
return & MB { rr . Hdr , rr . Mb }
}
func ( rr * MD ) copy ( ) RR {
return & MD { * rr . Hdr . copyHeader ( ) , rr . Md }
return & MD { rr . Hdr , rr . Md }
}
func ( rr * MF ) copy ( ) RR {
return & MF { * rr . Hdr . copyHeader ( ) , rr . Mf }
return & MF { rr . Hdr , rr . Mf }
}
func ( rr * MG ) copy ( ) RR {
return & MG { * rr . Hdr . copyHeader ( ) , rr . Mg }
return & MG { rr . Hdr , rr . Mg }
}
func ( rr * MINFO ) copy ( ) RR {
return & MINFO { * rr . Hdr . copyHeader ( ) , rr . Rmail , rr . Email }
return & MINFO { rr . Hdr , rr . Rmail , rr . Email }
}
func ( rr * MR ) copy ( ) RR {
return & MR { * rr . Hdr . copyHeader ( ) , rr . Mr }
return & MR { rr . Hdr , rr . Mr }
}
func ( rr * MX ) copy ( ) RR {
return & MX { * rr . Hdr . copyHeader ( ) , rr . Preference , rr . Mx }
return & MX { rr . Hdr , rr . Preference , rr . Mx }
}
func ( rr * NAPTR ) copy ( ) RR {
return & NAPTR { * rr . Hdr . copyHeader ( ) , rr . Order , rr . Preference , rr . Flags , rr . Service , rr . Regexp , rr . Replacement }
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 . copyHeader ( ) , rr . Preference , rr . NodeID }
return & NID { rr . Hdr , rr . Preference , rr . NodeID }
}
func ( rr * NIMLOC ) copy ( ) RR {
return & NIMLOC { * rr . Hdr . copyHeader ( ) , rr . Locator }
return & NIMLOC { rr . Hdr , rr . Locator }
}
func ( rr * NINFO ) copy ( ) RR {
ZSData := make ( [ ] string , len ( rr . ZSData ) )
copy ( ZSData , rr . ZSData )
return & NINFO { * rr . Hdr . copyHeader ( ) , ZSData }
return & NINFO { rr . Hdr , ZSData }
}
func ( rr * NS ) copy ( ) RR {
return & NS { * rr . Hdr . copyHeader ( ) , rr . Ns }
return & NS { rr . Hdr , rr . Ns }
}
func ( rr * NSAPPTR ) copy ( ) RR {
return & NSAPPTR { * rr . Hdr . copyHeader ( ) , rr . Ptr }
return & NSAPPTR { rr . Hdr , rr . Ptr }
}
func ( rr * NSEC ) copy ( ) RR {
TypeBitMap := make ( [ ] uint16 , len ( rr . TypeBitMap ) )
copy ( TypeBitMap , rr . TypeBitMap )
return & NSEC { * rr . Hdr . copyHeader ( ) , rr . NextDomain , TypeBitMap }
return & NSEC { rr . Hdr , rr . NextDomain , TypeBitMap }
}
func ( rr * NSEC3 ) copy ( ) RR {
TypeBitMap := make ( [ ] uint16 , len ( rr . TypeBitMap ) )
copy ( TypeBitMap , rr . TypeBitMap )
return & NSEC3 { * rr . Hdr . copyHeader ( ) , rr . Hash , rr . Flags , rr . Iterations , rr . SaltLength , rr . Salt , rr . HashLength , rr . NextDomain , TypeBitMap }
return & NSEC3 { rr . Hdr , rr . Hash , rr . Flags , rr . Iterations , rr . SaltLength , rr . Salt , rr . HashLength , rr . NextDomain , TypeBitMap }
}
func ( rr * NSEC3PARAM ) copy ( ) RR {
return & NSEC3PARAM { * rr . Hdr . copyHeader ( ) , rr . Hash , rr . Flags , rr . Iterations , rr . SaltLength , rr . Salt }
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 * OPENPGPKEY ) copy ( ) RR {
return & OPENPGPKEY { * rr . Hdr . copyHeader ( ) , rr . PublicKey }
return & OPENPGPKEY { rr . Hdr , rr . PublicKey }
}
func ( rr * OPT ) copy ( ) RR {
Option := make ( [ ] EDNS0 , len ( rr . Option ) )
copy ( Option , rr . Option )
return & OPT { * rr . Hdr . copyHeader ( ) , 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 . copyHeader ( ) , rr . Ptr }
return & PTR { rr . Hdr , rr . Ptr }
}
func ( rr * PX ) copy ( ) RR {
return & PX { * rr . Hdr . copyHeader ( ) , rr . Preference , rr . Map822 , rr . Mapx400 }
return & PX { rr . Hdr , rr . Preference , rr . Map822 , rr . Mapx400 }
}
func ( rr * RFC3597 ) copy ( ) RR {
return & RFC3597 { * rr . Hdr . copyHeader ( ) , rr . Rdata }
return & RFC3597 { rr . Hdr , rr . Rdata }
}
func ( rr * RKEY ) copy ( ) RR {
return & RKEY { * rr . Hdr . copyHeader ( ) , rr . Flags , rr . Protocol , rr . Algorithm , rr . PublicKey }
return & RKEY { rr . Hdr , rr . Flags , rr . Protocol , rr . Algorithm , rr . PublicKey }
}
func ( rr * RP ) copy ( ) RR {
return & RP { * rr . Hdr . copyHeader ( ) , rr . Mbox , rr . Txt }
return & RP { rr . Hdr , rr . Mbox , rr . Txt }
}
func ( rr * RRSIG ) copy ( ) RR {
return & RRSIG { * rr . Hdr . copyHeader ( ) , rr . TypeCovered , rr . Algorithm , rr . Labels , rr . OrigTtl , rr . Expiration , rr . Inception , rr . KeyTag , rr . SignerName , rr . Signature }
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 . copyHeader ( ) , rr . Preference , rr . Host }
return & RT { rr . Hdr , rr . Preference , rr . Host }
}
func ( rr * SMIMEA ) copy ( ) RR {
return & SMIMEA { * rr . Hdr . copyHeader ( ) , rr . Usage , rr . Selector , rr . MatchingType , rr . Certificate }
return & SMIMEA { rr . Hdr , rr . Usage , rr . Selector , rr . MatchingType , rr . Certificate }
}
func ( rr * SOA ) copy ( ) RR {
return & SOA { * rr . Hdr . copyHeader ( ) , rr . Ns , rr . Mbox , rr . Serial , rr . Refresh , rr . Retry , rr . Expire , rr . Minttl }
return & SOA { rr . Hdr , rr . Ns , rr . Mbox , rr . Serial , rr . Refresh , rr . Retry , rr . Expire , rr . Minttl }
}
func ( rr * SPF ) copy ( ) RR {
Txt := make ( [ ] string , len ( rr . Txt ) )
copy ( Txt , rr . Txt )
return & SPF { * rr . Hdr . copyHeader ( ) , Txt }
return & SPF { rr . Hdr , Txt }
}
func ( rr * SRV ) copy ( ) RR {
return & SRV { * rr . Hdr . copyHeader ( ) , rr . Priority , rr . Weight , rr . Port , rr . Target }
return & SRV { rr . Hdr , rr . Priority , rr . Weight , rr . Port , rr . Target }
}
func ( rr * SSHFP ) copy ( ) RR {
return & SSHFP { * rr . Hdr . copyHeader ( ) , rr . Algorithm , rr . Type , rr . FingerPrint }
return & SSHFP { rr . Hdr , rr . Algorithm , rr . Type , rr . FingerPrint }
}
func ( rr * TA ) copy ( ) RR {
return & TA { * rr . Hdr . copyHeader ( ) , rr . KeyTag , rr . Algorithm , rr . DigestType , rr . Digest }
return & TA { rr . Hdr , rr . KeyTag , rr . Algorithm , rr . DigestType , rr . Digest }
}
func ( rr * TALINK ) copy ( ) RR {
return & TALINK { * rr . Hdr . copyHeader ( ) , rr . PreviousName , rr . NextName }
return & TALINK { rr . Hdr , rr . PreviousName , rr . NextName }
}
func ( rr * TKEY ) copy ( ) RR {
return & TKEY { * rr . Hdr . copyHeader ( ) , rr . Algorithm , rr . Inception , rr . Expiration , rr . Mode , rr . Error , rr . KeySize , rr . Key , rr . OtherLen , rr . OtherData }
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 . copyHeader ( ) , rr . Usage , rr . Selector , rr . MatchingType , rr . Certificate }
return & TLSA { rr . Hdr , rr . Usage , rr . Selector , rr . MatchingType , rr . Certificate }
}
func ( rr * TSIG ) copy ( ) RR {
return & TSIG { * rr . Hdr . copyHeader ( ) , rr . Algorithm , rr . TimeSigned , rr . Fudge , rr . MACSize , rr . MAC , rr . OrigId , rr . Error , rr . OtherLen , rr . OtherData }
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 {
Txt := make ( [ ] string , len ( rr . Txt ) )
copy ( Txt , rr . Txt )
return & TXT { * rr . Hdr . copyHeader ( ) , Txt }
return & TXT { rr . Hdr , Txt }
}
func ( rr * UID ) copy ( ) RR {
return & UID { * rr . Hdr . copyHeader ( ) , rr . Uid }
return & UID { rr . Hdr , rr . Uid }
}
func ( rr * UINFO ) copy ( ) RR {
return & UINFO { * rr . Hdr . copyHeader ( ) , rr . Uinfo }
return & UINFO { rr . Hdr , rr . Uinfo }
}
func ( rr * URI ) copy ( ) RR {
return & URI { * rr . Hdr . copyHeader ( ) , rr . Priority , rr . Weight , rr . Target }
return & URI { rr . Hdr , rr . Priority , rr . Weight , rr . Target }
}
func ( rr * X25 ) copy ( ) RR {
return & X25 { * rr . Hdr . copyHeader ( ) , rr . PSDNAddress }
return & X25 { rr . Hdr , rr . PSDNAddress }
}