...

Source file src/github.com/miekg/dns/ztypes.go

Documentation: github.com/miekg/dns

     1  // Code generated by "go run types_generate.go"; DO NOT EDIT.
     2  
     3  package dns
     4  
     5  import (
     6  	"encoding/base64"
     7  	"net"
     8  )
     9  
    10  // TypeToRR is a map of constructors for each RR type.
    11  var TypeToRR = map[uint16]func() RR{
    12  	TypeA:          func() RR { return new(A) },
    13  	TypeAAAA:       func() RR { return new(AAAA) },
    14  	TypeAFSDB:      func() RR { return new(AFSDB) },
    15  	TypeAMTRELAY:   func() RR { return new(AMTRELAY) },
    16  	TypeANY:        func() RR { return new(ANY) },
    17  	TypeAPL:        func() RR { return new(APL) },
    18  	TypeAVC:        func() RR { return new(AVC) },
    19  	TypeCAA:        func() RR { return new(CAA) },
    20  	TypeCDNSKEY:    func() RR { return new(CDNSKEY) },
    21  	TypeCDS:        func() RR { return new(CDS) },
    22  	TypeCERT:       func() RR { return new(CERT) },
    23  	TypeCNAME:      func() RR { return new(CNAME) },
    24  	TypeCSYNC:      func() RR { return new(CSYNC) },
    25  	TypeDHCID:      func() RR { return new(DHCID) },
    26  	TypeDLV:        func() RR { return new(DLV) },
    27  	TypeDNAME:      func() RR { return new(DNAME) },
    28  	TypeDNSKEY:     func() RR { return new(DNSKEY) },
    29  	TypeDS:         func() RR { return new(DS) },
    30  	TypeEID:        func() RR { return new(EID) },
    31  	TypeEUI48:      func() RR { return new(EUI48) },
    32  	TypeEUI64:      func() RR { return new(EUI64) },
    33  	TypeGID:        func() RR { return new(GID) },
    34  	TypeGPOS:       func() RR { return new(GPOS) },
    35  	TypeHINFO:      func() RR { return new(HINFO) },
    36  	TypeHIP:        func() RR { return new(HIP) },
    37  	TypeHTTPS:      func() RR { return new(HTTPS) },
    38  	TypeIPSECKEY:   func() RR { return new(IPSECKEY) },
    39  	TypeKEY:        func() RR { return new(KEY) },
    40  	TypeKX:         func() RR { return new(KX) },
    41  	TypeL32:        func() RR { return new(L32) },
    42  	TypeL64:        func() RR { return new(L64) },
    43  	TypeLOC:        func() RR { return new(LOC) },
    44  	TypeLP:         func() RR { return new(LP) },
    45  	TypeMB:         func() RR { return new(MB) },
    46  	TypeMD:         func() RR { return new(MD) },
    47  	TypeMF:         func() RR { return new(MF) },
    48  	TypeMG:         func() RR { return new(MG) },
    49  	TypeMINFO:      func() RR { return new(MINFO) },
    50  	TypeMR:         func() RR { return new(MR) },
    51  	TypeMX:         func() RR { return new(MX) },
    52  	TypeNAPTR:      func() RR { return new(NAPTR) },
    53  	TypeNID:        func() RR { return new(NID) },
    54  	TypeNIMLOC:     func() RR { return new(NIMLOC) },
    55  	TypeNINFO:      func() RR { return new(NINFO) },
    56  	TypeNS:         func() RR { return new(NS) },
    57  	TypeNSAPPTR:    func() RR { return new(NSAPPTR) },
    58  	TypeNSEC:       func() RR { return new(NSEC) },
    59  	TypeNSEC3:      func() RR { return new(NSEC3) },
    60  	TypeNSEC3PARAM: func() RR { return new(NSEC3PARAM) },
    61  	TypeNULL:       func() RR { return new(NULL) },
    62  	TypeOPENPGPKEY: func() RR { return new(OPENPGPKEY) },
    63  	TypeOPT:        func() RR { return new(OPT) },
    64  	TypePTR:        func() RR { return new(PTR) },
    65  	TypePX:         func() RR { return new(PX) },
    66  	TypeRKEY:       func() RR { return new(RKEY) },
    67  	TypeRP:         func() RR { return new(RP) },
    68  	TypeRRSIG:      func() RR { return new(RRSIG) },
    69  	TypeRT:         func() RR { return new(RT) },
    70  	TypeSIG:        func() RR { return new(SIG) },
    71  	TypeSMIMEA:     func() RR { return new(SMIMEA) },
    72  	TypeSOA:        func() RR { return new(SOA) },
    73  	TypeSPF:        func() RR { return new(SPF) },
    74  	TypeSRV:        func() RR { return new(SRV) },
    75  	TypeSSHFP:      func() RR { return new(SSHFP) },
    76  	TypeSVCB:       func() RR { return new(SVCB) },
    77  	TypeTA:         func() RR { return new(TA) },
    78  	TypeTALINK:     func() RR { return new(TALINK) },
    79  	TypeTKEY:       func() RR { return new(TKEY) },
    80  	TypeTLSA:       func() RR { return new(TLSA) },
    81  	TypeTSIG:       func() RR { return new(TSIG) },
    82  	TypeTXT:        func() RR { return new(TXT) },
    83  	TypeUID:        func() RR { return new(UID) },
    84  	TypeUINFO:      func() RR { return new(UINFO) },
    85  	TypeURI:        func() RR { return new(URI) },
    86  	TypeX25:        func() RR { return new(X25) },
    87  	TypeZONEMD:     func() RR { return new(ZONEMD) },
    88  }
    89  
    90  // TypeToString is a map of strings for each RR type.
    91  var TypeToString = map[uint16]string{
    92  	TypeA:          "A",
    93  	TypeAAAA:       "AAAA",
    94  	TypeAFSDB:      "AFSDB",
    95  	TypeAMTRELAY:   "AMTRELAY",
    96  	TypeANY:        "ANY",
    97  	TypeAPL:        "APL",
    98  	TypeATMA:       "ATMA",
    99  	TypeAVC:        "AVC",
   100  	TypeAXFR:       "AXFR",
   101  	TypeCAA:        "CAA",
   102  	TypeCDNSKEY:    "CDNSKEY",
   103  	TypeCDS:        "CDS",
   104  	TypeCERT:       "CERT",
   105  	TypeCNAME:      "CNAME",
   106  	TypeCSYNC:      "CSYNC",
   107  	TypeDHCID:      "DHCID",
   108  	TypeDLV:        "DLV",
   109  	TypeDNAME:      "DNAME",
   110  	TypeDNSKEY:     "DNSKEY",
   111  	TypeDS:         "DS",
   112  	TypeEID:        "EID",
   113  	TypeEUI48:      "EUI48",
   114  	TypeEUI64:      "EUI64",
   115  	TypeGID:        "GID",
   116  	TypeGPOS:       "GPOS",
   117  	TypeHINFO:      "HINFO",
   118  	TypeHIP:        "HIP",
   119  	TypeHTTPS:      "HTTPS",
   120  	TypeIPSECKEY:   "IPSECKEY",
   121  	TypeISDN:       "ISDN",
   122  	TypeIXFR:       "IXFR",
   123  	TypeKEY:        "KEY",
   124  	TypeKX:         "KX",
   125  	TypeL32:        "L32",
   126  	TypeL64:        "L64",
   127  	TypeLOC:        "LOC",
   128  	TypeLP:         "LP",
   129  	TypeMAILA:      "MAILA",
   130  	TypeMAILB:      "MAILB",
   131  	TypeMB:         "MB",
   132  	TypeMD:         "MD",
   133  	TypeMF:         "MF",
   134  	TypeMG:         "MG",
   135  	TypeMINFO:      "MINFO",
   136  	TypeMR:         "MR",
   137  	TypeMX:         "MX",
   138  	TypeNAPTR:      "NAPTR",
   139  	TypeNID:        "NID",
   140  	TypeNIMLOC:     "NIMLOC",
   141  	TypeNINFO:      "NINFO",
   142  	TypeNS:         "NS",
   143  	TypeNSEC:       "NSEC",
   144  	TypeNSEC3:      "NSEC3",
   145  	TypeNSEC3PARAM: "NSEC3PARAM",
   146  	TypeNULL:       "NULL",
   147  	TypeNXT:        "NXT",
   148  	TypeNone:       "None",
   149  	TypeOPENPGPKEY: "OPENPGPKEY",
   150  	TypeOPT:        "OPT",
   151  	TypePTR:        "PTR",
   152  	TypePX:         "PX",
   153  	TypeRKEY:       "RKEY",
   154  	TypeRP:         "RP",
   155  	TypeRRSIG:      "RRSIG",
   156  	TypeRT:         "RT",
   157  	TypeReserved:   "Reserved",
   158  	TypeSIG:        "SIG",
   159  	TypeSMIMEA:     "SMIMEA",
   160  	TypeSOA:        "SOA",
   161  	TypeSPF:        "SPF",
   162  	TypeSRV:        "SRV",
   163  	TypeSSHFP:      "SSHFP",
   164  	TypeSVCB:       "SVCB",
   165  	TypeTA:         "TA",
   166  	TypeTALINK:     "TALINK",
   167  	TypeTKEY:       "TKEY",
   168  	TypeTLSA:       "TLSA",
   169  	TypeTSIG:       "TSIG",
   170  	TypeTXT:        "TXT",
   171  	TypeUID:        "UID",
   172  	TypeUINFO:      "UINFO",
   173  	TypeUNSPEC:     "UNSPEC",
   174  	TypeURI:        "URI",
   175  	TypeX25:        "X25",
   176  	TypeZONEMD:     "ZONEMD",
   177  	TypeNSAPPTR:    "NSAP-PTR",
   178  }
   179  
   180  func (rr *A) Header() *RR_Header          { return &rr.Hdr }
   181  func (rr *AAAA) Header() *RR_Header       { return &rr.Hdr }
   182  func (rr *AFSDB) Header() *RR_Header      { return &rr.Hdr }
   183  func (rr *AMTRELAY) Header() *RR_Header   { return &rr.Hdr }
   184  func (rr *ANY) Header() *RR_Header        { return &rr.Hdr }
   185  func (rr *APL) Header() *RR_Header        { return &rr.Hdr }
   186  func (rr *AVC) Header() *RR_Header        { return &rr.Hdr }
   187  func (rr *CAA) Header() *RR_Header        { return &rr.Hdr }
   188  func (rr *CDNSKEY) Header() *RR_Header    { return &rr.Hdr }
   189  func (rr *CDS) Header() *RR_Header        { return &rr.Hdr }
   190  func (rr *CERT) Header() *RR_Header       { return &rr.Hdr }
   191  func (rr *CNAME) Header() *RR_Header      { return &rr.Hdr }
   192  func (rr *CSYNC) Header() *RR_Header      { return &rr.Hdr }
   193  func (rr *DHCID) Header() *RR_Header      { return &rr.Hdr }
   194  func (rr *DLV) Header() *RR_Header        { return &rr.Hdr }
   195  func (rr *DNAME) Header() *RR_Header      { return &rr.Hdr }
   196  func (rr *DNSKEY) Header() *RR_Header     { return &rr.Hdr }
   197  func (rr *DS) Header() *RR_Header         { return &rr.Hdr }
   198  func (rr *EID) Header() *RR_Header        { return &rr.Hdr }
   199  func (rr *EUI48) Header() *RR_Header      { return &rr.Hdr }
   200  func (rr *EUI64) Header() *RR_Header      { return &rr.Hdr }
   201  func (rr *GID) Header() *RR_Header        { return &rr.Hdr }
   202  func (rr *GPOS) Header() *RR_Header       { return &rr.Hdr }
   203  func (rr *HINFO) Header() *RR_Header      { return &rr.Hdr }
   204  func (rr *HIP) Header() *RR_Header        { return &rr.Hdr }
   205  func (rr *HTTPS) Header() *RR_Header      { return &rr.Hdr }
   206  func (rr *IPSECKEY) Header() *RR_Header   { return &rr.Hdr }
   207  func (rr *KEY) Header() *RR_Header        { return &rr.Hdr }
   208  func (rr *KX) Header() *RR_Header         { return &rr.Hdr }
   209  func (rr *L32) Header() *RR_Header        { return &rr.Hdr }
   210  func (rr *L64) Header() *RR_Header        { return &rr.Hdr }
   211  func (rr *LOC) Header() *RR_Header        { return &rr.Hdr }
   212  func (rr *LP) Header() *RR_Header         { return &rr.Hdr }
   213  func (rr *MB) Header() *RR_Header         { return &rr.Hdr }
   214  func (rr *MD) Header() *RR_Header         { return &rr.Hdr }
   215  func (rr *MF) Header() *RR_Header         { return &rr.Hdr }
   216  func (rr *MG) Header() *RR_Header         { return &rr.Hdr }
   217  func (rr *MINFO) Header() *RR_Header      { return &rr.Hdr }
   218  func (rr *MR) Header() *RR_Header         { return &rr.Hdr }
   219  func (rr *MX) Header() *RR_Header         { return &rr.Hdr }
   220  func (rr *NAPTR) Header() *RR_Header      { return &rr.Hdr }
   221  func (rr *NID) Header() *RR_Header        { return &rr.Hdr }
   222  func (rr *NIMLOC) Header() *RR_Header     { return &rr.Hdr }
   223  func (rr *NINFO) Header() *RR_Header      { return &rr.Hdr }
   224  func (rr *NS) Header() *RR_Header         { return &rr.Hdr }
   225  func (rr *NSAPPTR) Header() *RR_Header    { return &rr.Hdr }
   226  func (rr *NSEC) Header() *RR_Header       { return &rr.Hdr }
   227  func (rr *NSEC3) Header() *RR_Header      { return &rr.Hdr }
   228  func (rr *NSEC3PARAM) Header() *RR_Header { return &rr.Hdr }
   229  func (rr *NULL) Header() *RR_Header       { return &rr.Hdr }
   230  func (rr *OPENPGPKEY) Header() *RR_Header { return &rr.Hdr }
   231  func (rr *OPT) Header() *RR_Header        { return &rr.Hdr }
   232  func (rr *PTR) Header() *RR_Header        { return &rr.Hdr }
   233  func (rr *PX) Header() *RR_Header         { return &rr.Hdr }
   234  func (rr *RFC3597) Header() *RR_Header    { return &rr.Hdr }
   235  func (rr *RKEY) Header() *RR_Header       { return &rr.Hdr }
   236  func (rr *RP) Header() *RR_Header         { return &rr.Hdr }
   237  func (rr *RRSIG) Header() *RR_Header      { return &rr.Hdr }
   238  func (rr *RT) Header() *RR_Header         { return &rr.Hdr }
   239  func (rr *SIG) Header() *RR_Header        { return &rr.Hdr }
   240  func (rr *SMIMEA) Header() *RR_Header     { return &rr.Hdr }
   241  func (rr *SOA) Header() *RR_Header        { return &rr.Hdr }
   242  func (rr *SPF) Header() *RR_Header        { return &rr.Hdr }
   243  func (rr *SRV) Header() *RR_Header        { return &rr.Hdr }
   244  func (rr *SSHFP) Header() *RR_Header      { return &rr.Hdr }
   245  func (rr *SVCB) Header() *RR_Header       { return &rr.Hdr }
   246  func (rr *TA) Header() *RR_Header         { return &rr.Hdr }
   247  func (rr *TALINK) Header() *RR_Header     { return &rr.Hdr }
   248  func (rr *TKEY) Header() *RR_Header       { return &rr.Hdr }
   249  func (rr *TLSA) Header() *RR_Header       { return &rr.Hdr }
   250  func (rr *TSIG) Header() *RR_Header       { return &rr.Hdr }
   251  func (rr *TXT) Header() *RR_Header        { return &rr.Hdr }
   252  func (rr *UID) Header() *RR_Header        { return &rr.Hdr }
   253  func (rr *UINFO) Header() *RR_Header      { return &rr.Hdr }
   254  func (rr *URI) Header() *RR_Header        { return &rr.Hdr }
   255  func (rr *X25) Header() *RR_Header        { return &rr.Hdr }
   256  func (rr *ZONEMD) Header() *RR_Header     { return &rr.Hdr }
   257  
   258  // len() functions
   259  func (rr *A) len(off int, compression map[string]struct{}) int {
   260  	l := rr.Hdr.len(off, compression)
   261  	if len(rr.A) != 0 {
   262  		l += net.IPv4len
   263  	}
   264  	return l
   265  }
   266  
   267  func (rr *AAAA) len(off int, compression map[string]struct{}) int {
   268  	l := rr.Hdr.len(off, compression)
   269  	if len(rr.AAAA) != 0 {
   270  		l += net.IPv6len
   271  	}
   272  	return l
   273  }
   274  
   275  func (rr *AFSDB) len(off int, compression map[string]struct{}) int {
   276  	l := rr.Hdr.len(off, compression)
   277  	l += 2 // Subtype
   278  	l += domainNameLen(rr.Hostname, off+l, compression, false)
   279  	return l
   280  }
   281  
   282  func (rr *AMTRELAY) len(off int, compression map[string]struct{}) int {
   283  	l := rr.Hdr.len(off, compression)
   284  	l++ // Precedence
   285  	l++ // GatewayType
   286  	switch rr.GatewayType {
   287  	case AMTRELAYIPv4:
   288  		l += net.IPv4len
   289  	case AMTRELAYIPv6:
   290  		l += net.IPv6len
   291  	case AMTRELAYHost:
   292  		l += len(rr.GatewayHost) + 1
   293  	}
   294  	return l
   295  }
   296  
   297  func (rr *ANY) len(off int, compression map[string]struct{}) int {
   298  	l := rr.Hdr.len(off, compression)
   299  	return l
   300  }
   301  
   302  func (rr *APL) len(off int, compression map[string]struct{}) int {
   303  	l := rr.Hdr.len(off, compression)
   304  	for _, x := range rr.Prefixes {
   305  		l += x.len()
   306  	}
   307  	return l
   308  }
   309  
   310  func (rr *AVC) len(off int, compression map[string]struct{}) int {
   311  	l := rr.Hdr.len(off, compression)
   312  	for _, x := range rr.Txt {
   313  		l += len(x) + 1
   314  	}
   315  	return l
   316  }
   317  
   318  func (rr *CAA) len(off int, compression map[string]struct{}) int {
   319  	l := rr.Hdr.len(off, compression)
   320  	l++ // Flag
   321  	l += len(rr.Tag) + 1
   322  	l += len(rr.Value)
   323  	return l
   324  }
   325  
   326  func (rr *CERT) len(off int, compression map[string]struct{}) int {
   327  	l := rr.Hdr.len(off, compression)
   328  	l += 2 // Type
   329  	l += 2 // KeyTag
   330  	l++    // Algorithm
   331  	l += base64.StdEncoding.DecodedLen(len(rr.Certificate))
   332  	return l
   333  }
   334  
   335  func (rr *CNAME) len(off int, compression map[string]struct{}) int {
   336  	l := rr.Hdr.len(off, compression)
   337  	l += domainNameLen(rr.Target, off+l, compression, true)
   338  	return l
   339  }
   340  
   341  func (rr *DHCID) len(off int, compression map[string]struct{}) int {
   342  	l := rr.Hdr.len(off, compression)
   343  	l += base64.StdEncoding.DecodedLen(len(rr.Digest))
   344  	return l
   345  }
   346  
   347  func (rr *DNAME) len(off int, compression map[string]struct{}) int {
   348  	l := rr.Hdr.len(off, compression)
   349  	l += domainNameLen(rr.Target, off+l, compression, false)
   350  	return l
   351  }
   352  
   353  func (rr *DNSKEY) len(off int, compression map[string]struct{}) int {
   354  	l := rr.Hdr.len(off, compression)
   355  	l += 2 // Flags
   356  	l++    // Protocol
   357  	l++    // Algorithm
   358  	l += base64.StdEncoding.DecodedLen(len(rr.PublicKey))
   359  	return l
   360  }
   361  
   362  func (rr *DS) len(off int, compression map[string]struct{}) int {
   363  	l := rr.Hdr.len(off, compression)
   364  	l += 2 // KeyTag
   365  	l++    // Algorithm
   366  	l++    // DigestType
   367  	l += len(rr.Digest) / 2
   368  	return l
   369  }
   370  
   371  func (rr *EID) len(off int, compression map[string]struct{}) int {
   372  	l := rr.Hdr.len(off, compression)
   373  	l += len(rr.Endpoint) / 2
   374  	return l
   375  }
   376  
   377  func (rr *EUI48) len(off int, compression map[string]struct{}) int {
   378  	l := rr.Hdr.len(off, compression)
   379  	l += 6 // Address
   380  	return l
   381  }
   382  
   383  func (rr *EUI64) len(off int, compression map[string]struct{}) int {
   384  	l := rr.Hdr.len(off, compression)
   385  	l += 8 // Address
   386  	return l
   387  }
   388  
   389  func (rr *GID) len(off int, compression map[string]struct{}) int {
   390  	l := rr.Hdr.len(off, compression)
   391  	l += 4 // Gid
   392  	return l
   393  }
   394  
   395  func (rr *GPOS) len(off int, compression map[string]struct{}) int {
   396  	l := rr.Hdr.len(off, compression)
   397  	l += len(rr.Longitude) + 1
   398  	l += len(rr.Latitude) + 1
   399  	l += len(rr.Altitude) + 1
   400  	return l
   401  }
   402  
   403  func (rr *HINFO) len(off int, compression map[string]struct{}) int {
   404  	l := rr.Hdr.len(off, compression)
   405  	l += len(rr.Cpu) + 1
   406  	l += len(rr.Os) + 1
   407  	return l
   408  }
   409  
   410  func (rr *HIP) len(off int, compression map[string]struct{}) int {
   411  	l := rr.Hdr.len(off, compression)
   412  	l++    // HitLength
   413  	l++    // PublicKeyAlgorithm
   414  	l += 2 // PublicKeyLength
   415  	l += len(rr.Hit) / 2
   416  	l += base64.StdEncoding.DecodedLen(len(rr.PublicKey))
   417  	for _, x := range rr.RendezvousServers {
   418  		l += domainNameLen(x, off+l, compression, false)
   419  	}
   420  	return l
   421  }
   422  
   423  func (rr *IPSECKEY) len(off int, compression map[string]struct{}) int {
   424  	l := rr.Hdr.len(off, compression)
   425  	l++ // Precedence
   426  	l++ // GatewayType
   427  	l++ // Algorithm
   428  	switch rr.GatewayType {
   429  	case IPSECGatewayIPv4:
   430  		l += net.IPv4len
   431  	case IPSECGatewayIPv6:
   432  		l += net.IPv6len
   433  	case IPSECGatewayHost:
   434  		l += len(rr.GatewayHost) + 1
   435  	}
   436  	l += base64.StdEncoding.DecodedLen(len(rr.PublicKey))
   437  	return l
   438  }
   439  
   440  func (rr *KX) len(off int, compression map[string]struct{}) int {
   441  	l := rr.Hdr.len(off, compression)
   442  	l += 2 // Preference
   443  	l += domainNameLen(rr.Exchanger, off+l, compression, false)
   444  	return l
   445  }
   446  
   447  func (rr *L32) len(off int, compression map[string]struct{}) int {
   448  	l := rr.Hdr.len(off, compression)
   449  	l += 2 // Preference
   450  	if len(rr.Locator32) != 0 {
   451  		l += net.IPv4len
   452  	}
   453  	return l
   454  }
   455  
   456  func (rr *L64) len(off int, compression map[string]struct{}) int {
   457  	l := rr.Hdr.len(off, compression)
   458  	l += 2 // Preference
   459  	l += 8 // Locator64
   460  	return l
   461  }
   462  
   463  func (rr *LOC) len(off int, compression map[string]struct{}) int {
   464  	l := rr.Hdr.len(off, compression)
   465  	l++    // Version
   466  	l++    // Size
   467  	l++    // HorizPre
   468  	l++    // VertPre
   469  	l += 4 // Latitude
   470  	l += 4 // Longitude
   471  	l += 4 // Altitude
   472  	return l
   473  }
   474  
   475  func (rr *LP) len(off int, compression map[string]struct{}) int {
   476  	l := rr.Hdr.len(off, compression)
   477  	l += 2 // Preference
   478  	l += domainNameLen(rr.Fqdn, off+l, compression, false)
   479  	return l
   480  }
   481  
   482  func (rr *MB) len(off int, compression map[string]struct{}) int {
   483  	l := rr.Hdr.len(off, compression)
   484  	l += domainNameLen(rr.Mb, off+l, compression, true)
   485  	return l
   486  }
   487  
   488  func (rr *MD) len(off int, compression map[string]struct{}) int {
   489  	l := rr.Hdr.len(off, compression)
   490  	l += domainNameLen(rr.Md, off+l, compression, true)
   491  	return l
   492  }
   493  
   494  func (rr *MF) len(off int, compression map[string]struct{}) int {
   495  	l := rr.Hdr.len(off, compression)
   496  	l += domainNameLen(rr.Mf, off+l, compression, true)
   497  	return l
   498  }
   499  
   500  func (rr *MG) len(off int, compression map[string]struct{}) int {
   501  	l := rr.Hdr.len(off, compression)
   502  	l += domainNameLen(rr.Mg, off+l, compression, true)
   503  	return l
   504  }
   505  
   506  func (rr *MINFO) len(off int, compression map[string]struct{}) int {
   507  	l := rr.Hdr.len(off, compression)
   508  	l += domainNameLen(rr.Rmail, off+l, compression, true)
   509  	l += domainNameLen(rr.Email, off+l, compression, true)
   510  	return l
   511  }
   512  
   513  func (rr *MR) len(off int, compression map[string]struct{}) int {
   514  	l := rr.Hdr.len(off, compression)
   515  	l += domainNameLen(rr.Mr, off+l, compression, true)
   516  	return l
   517  }
   518  
   519  func (rr *MX) len(off int, compression map[string]struct{}) int {
   520  	l := rr.Hdr.len(off, compression)
   521  	l += 2 // Preference
   522  	l += domainNameLen(rr.Mx, off+l, compression, true)
   523  	return l
   524  }
   525  
   526  func (rr *NAPTR) len(off int, compression map[string]struct{}) int {
   527  	l := rr.Hdr.len(off, compression)
   528  	l += 2 // Order
   529  	l += 2 // Preference
   530  	l += len(rr.Flags) + 1
   531  	l += len(rr.Service) + 1
   532  	l += len(rr.Regexp) + 1
   533  	l += domainNameLen(rr.Replacement, off+l, compression, false)
   534  	return l
   535  }
   536  
   537  func (rr *NID) len(off int, compression map[string]struct{}) int {
   538  	l := rr.Hdr.len(off, compression)
   539  	l += 2 // Preference
   540  	l += 8 // NodeID
   541  	return l
   542  }
   543  
   544  func (rr *NIMLOC) len(off int, compression map[string]struct{}) int {
   545  	l := rr.Hdr.len(off, compression)
   546  	l += len(rr.Locator) / 2
   547  	return l
   548  }
   549  
   550  func (rr *NINFO) len(off int, compression map[string]struct{}) int {
   551  	l := rr.Hdr.len(off, compression)
   552  	for _, x := range rr.ZSData {
   553  		l += len(x) + 1
   554  	}
   555  	return l
   556  }
   557  
   558  func (rr *NS) len(off int, compression map[string]struct{}) int {
   559  	l := rr.Hdr.len(off, compression)
   560  	l += domainNameLen(rr.Ns, off+l, compression, true)
   561  	return l
   562  }
   563  
   564  func (rr *NSAPPTR) len(off int, compression map[string]struct{}) int {
   565  	l := rr.Hdr.len(off, compression)
   566  	l += domainNameLen(rr.Ptr, off+l, compression, false)
   567  	return l
   568  }
   569  
   570  func (rr *NSEC3PARAM) len(off int, compression map[string]struct{}) int {
   571  	l := rr.Hdr.len(off, compression)
   572  	l++    // Hash
   573  	l++    // Flags
   574  	l += 2 // Iterations
   575  	l++    // SaltLength
   576  	l += len(rr.Salt) / 2
   577  	return l
   578  }
   579  
   580  func (rr *NULL) len(off int, compression map[string]struct{}) int {
   581  	l := rr.Hdr.len(off, compression)
   582  	l += len(rr.Data)
   583  	return l
   584  }
   585  
   586  func (rr *OPENPGPKEY) len(off int, compression map[string]struct{}) int {
   587  	l := rr.Hdr.len(off, compression)
   588  	l += base64.StdEncoding.DecodedLen(len(rr.PublicKey))
   589  	return l
   590  }
   591  
   592  func (rr *PTR) len(off int, compression map[string]struct{}) int {
   593  	l := rr.Hdr.len(off, compression)
   594  	l += domainNameLen(rr.Ptr, off+l, compression, true)
   595  	return l
   596  }
   597  
   598  func (rr *PX) len(off int, compression map[string]struct{}) int {
   599  	l := rr.Hdr.len(off, compression)
   600  	l += 2 // Preference
   601  	l += domainNameLen(rr.Map822, off+l, compression, false)
   602  	l += domainNameLen(rr.Mapx400, off+l, compression, false)
   603  	return l
   604  }
   605  
   606  func (rr *RFC3597) len(off int, compression map[string]struct{}) int {
   607  	l := rr.Hdr.len(off, compression)
   608  	l += len(rr.Rdata) / 2
   609  	return l
   610  }
   611  
   612  func (rr *RKEY) len(off int, compression map[string]struct{}) int {
   613  	l := rr.Hdr.len(off, compression)
   614  	l += 2 // Flags
   615  	l++    // Protocol
   616  	l++    // Algorithm
   617  	l += base64.StdEncoding.DecodedLen(len(rr.PublicKey))
   618  	return l
   619  }
   620  
   621  func (rr *RP) len(off int, compression map[string]struct{}) int {
   622  	l := rr.Hdr.len(off, compression)
   623  	l += domainNameLen(rr.Mbox, off+l, compression, false)
   624  	l += domainNameLen(rr.Txt, off+l, compression, false)
   625  	return l
   626  }
   627  
   628  func (rr *RRSIG) len(off int, compression map[string]struct{}) int {
   629  	l := rr.Hdr.len(off, compression)
   630  	l += 2 // TypeCovered
   631  	l++    // Algorithm
   632  	l++    // Labels
   633  	l += 4 // OrigTtl
   634  	l += 4 // Expiration
   635  	l += 4 // Inception
   636  	l += 2 // KeyTag
   637  	l += domainNameLen(rr.SignerName, off+l, compression, false)
   638  	l += base64.StdEncoding.DecodedLen(len(rr.Signature))
   639  	return l
   640  }
   641  
   642  func (rr *RT) len(off int, compression map[string]struct{}) int {
   643  	l := rr.Hdr.len(off, compression)
   644  	l += 2 // Preference
   645  	l += domainNameLen(rr.Host, off+l, compression, false)
   646  	return l
   647  }
   648  
   649  func (rr *SMIMEA) len(off int, compression map[string]struct{}) int {
   650  	l := rr.Hdr.len(off, compression)
   651  	l++ // Usage
   652  	l++ // Selector
   653  	l++ // MatchingType
   654  	l += len(rr.Certificate) / 2
   655  	return l
   656  }
   657  
   658  func (rr *SOA) len(off int, compression map[string]struct{}) int {
   659  	l := rr.Hdr.len(off, compression)
   660  	l += domainNameLen(rr.Ns, off+l, compression, true)
   661  	l += domainNameLen(rr.Mbox, off+l, compression, true)
   662  	l += 4 // Serial
   663  	l += 4 // Refresh
   664  	l += 4 // Retry
   665  	l += 4 // Expire
   666  	l += 4 // Minttl
   667  	return l
   668  }
   669  
   670  func (rr *SPF) len(off int, compression map[string]struct{}) int {
   671  	l := rr.Hdr.len(off, compression)
   672  	for _, x := range rr.Txt {
   673  		l += len(x) + 1
   674  	}
   675  	return l
   676  }
   677  
   678  func (rr *SRV) len(off int, compression map[string]struct{}) int {
   679  	l := rr.Hdr.len(off, compression)
   680  	l += 2 // Priority
   681  	l += 2 // Weight
   682  	l += 2 // Port
   683  	l += domainNameLen(rr.Target, off+l, compression, false)
   684  	return l
   685  }
   686  
   687  func (rr *SSHFP) len(off int, compression map[string]struct{}) int {
   688  	l := rr.Hdr.len(off, compression)
   689  	l++ // Algorithm
   690  	l++ // Type
   691  	l += len(rr.FingerPrint) / 2
   692  	return l
   693  }
   694  
   695  func (rr *SVCB) len(off int, compression map[string]struct{}) int {
   696  	l := rr.Hdr.len(off, compression)
   697  	l += 2 // Priority
   698  	l += domainNameLen(rr.Target, off+l, compression, false)
   699  	for _, x := range rr.Value {
   700  		l += 4 + int(x.len())
   701  	}
   702  	return l
   703  }
   704  
   705  func (rr *TA) len(off int, compression map[string]struct{}) int {
   706  	l := rr.Hdr.len(off, compression)
   707  	l += 2 // KeyTag
   708  	l++    // Algorithm
   709  	l++    // DigestType
   710  	l += len(rr.Digest) / 2
   711  	return l
   712  }
   713  
   714  func (rr *TALINK) len(off int, compression map[string]struct{}) int {
   715  	l := rr.Hdr.len(off, compression)
   716  	l += domainNameLen(rr.PreviousName, off+l, compression, false)
   717  	l += domainNameLen(rr.NextName, off+l, compression, false)
   718  	return l
   719  }
   720  
   721  func (rr *TKEY) len(off int, compression map[string]struct{}) int {
   722  	l := rr.Hdr.len(off, compression)
   723  	l += domainNameLen(rr.Algorithm, off+l, compression, false)
   724  	l += 4 // Inception
   725  	l += 4 // Expiration
   726  	l += 2 // Mode
   727  	l += 2 // Error
   728  	l += 2 // KeySize
   729  	l += len(rr.Key) / 2
   730  	l += 2 // OtherLen
   731  	l += len(rr.OtherData) / 2
   732  	return l
   733  }
   734  
   735  func (rr *TLSA) len(off int, compression map[string]struct{}) int {
   736  	l := rr.Hdr.len(off, compression)
   737  	l++ // Usage
   738  	l++ // Selector
   739  	l++ // MatchingType
   740  	l += len(rr.Certificate) / 2
   741  	return l
   742  }
   743  
   744  func (rr *TSIG) len(off int, compression map[string]struct{}) int {
   745  	l := rr.Hdr.len(off, compression)
   746  	l += domainNameLen(rr.Algorithm, off+l, compression, false)
   747  	l += 6 // TimeSigned
   748  	l += 2 // Fudge
   749  	l += 2 // MACSize
   750  	l += len(rr.MAC) / 2
   751  	l += 2 // OrigId
   752  	l += 2 // Error
   753  	l += 2 // OtherLen
   754  	l += len(rr.OtherData) / 2
   755  	return l
   756  }
   757  
   758  func (rr *TXT) len(off int, compression map[string]struct{}) int {
   759  	l := rr.Hdr.len(off, compression)
   760  	for _, x := range rr.Txt {
   761  		l += len(x) + 1
   762  	}
   763  	return l
   764  }
   765  
   766  func (rr *UID) len(off int, compression map[string]struct{}) int {
   767  	l := rr.Hdr.len(off, compression)
   768  	l += 4 // Uid
   769  	return l
   770  }
   771  
   772  func (rr *UINFO) len(off int, compression map[string]struct{}) int {
   773  	l := rr.Hdr.len(off, compression)
   774  	l += len(rr.Uinfo) + 1
   775  	return l
   776  }
   777  
   778  func (rr *URI) len(off int, compression map[string]struct{}) int {
   779  	l := rr.Hdr.len(off, compression)
   780  	l += 2 // Priority
   781  	l += 2 // Weight
   782  	l += len(rr.Target)
   783  	return l
   784  }
   785  
   786  func (rr *X25) len(off int, compression map[string]struct{}) int {
   787  	l := rr.Hdr.len(off, compression)
   788  	l += len(rr.PSDNAddress) + 1
   789  	return l
   790  }
   791  
   792  func (rr *ZONEMD) len(off int, compression map[string]struct{}) int {
   793  	l := rr.Hdr.len(off, compression)
   794  	l += 4 // Serial
   795  	l++    // Scheme
   796  	l++    // Hash
   797  	l += len(rr.Digest) / 2
   798  	return l
   799  }
   800  
   801  // copy() functions
   802  func (rr *A) copy() RR {
   803  	return &A{rr.Hdr, cloneSlice(rr.A)}
   804  }
   805  
   806  func (rr *AAAA) copy() RR {
   807  	return &AAAA{rr.Hdr, cloneSlice(rr.AAAA)}
   808  }
   809  
   810  func (rr *AFSDB) copy() RR {
   811  	return &AFSDB{rr.Hdr, rr.Subtype, rr.Hostname}
   812  }
   813  
   814  func (rr *AMTRELAY) copy() RR {
   815  	return &AMTRELAY{
   816  		rr.Hdr,
   817  		rr.Precedence,
   818  		rr.GatewayType,
   819  		cloneSlice(rr.GatewayAddr),
   820  		rr.GatewayHost,
   821  	}
   822  }
   823  
   824  func (rr *ANY) copy() RR {
   825  	return &ANY{rr.Hdr}
   826  }
   827  
   828  func (rr *APL) copy() RR {
   829  	Prefixes := make([]APLPrefix, len(rr.Prefixes))
   830  	for i, e := range rr.Prefixes {
   831  		Prefixes[i] = e.copy()
   832  	}
   833  	return &APL{rr.Hdr, Prefixes}
   834  }
   835  
   836  func (rr *AVC) copy() RR {
   837  	return &AVC{rr.Hdr, cloneSlice(rr.Txt)}
   838  }
   839  
   840  func (rr *CAA) copy() RR {
   841  	return &CAA{
   842  		rr.Hdr,
   843  		rr.Flag,
   844  		rr.Tag,
   845  		rr.Value,
   846  	}
   847  }
   848  
   849  func (rr *CDNSKEY) copy() RR {
   850  	return &CDNSKEY{*rr.DNSKEY.copy().(*DNSKEY)}
   851  }
   852  
   853  func (rr *CDS) copy() RR {
   854  	return &CDS{*rr.DS.copy().(*DS)}
   855  }
   856  
   857  func (rr *CERT) copy() RR {
   858  	return &CERT{
   859  		rr.Hdr,
   860  		rr.Type,
   861  		rr.KeyTag,
   862  		rr.Algorithm,
   863  		rr.Certificate,
   864  	}
   865  }
   866  
   867  func (rr *CNAME) copy() RR {
   868  	return &CNAME{rr.Hdr, rr.Target}
   869  }
   870  
   871  func (rr *CSYNC) copy() RR {
   872  	return &CSYNC{
   873  		rr.Hdr,
   874  		rr.Serial,
   875  		rr.Flags,
   876  		cloneSlice(rr.TypeBitMap),
   877  	}
   878  }
   879  
   880  func (rr *DHCID) copy() RR {
   881  	return &DHCID{rr.Hdr, rr.Digest}
   882  }
   883  
   884  func (rr *DLV) copy() RR {
   885  	return &DLV{*rr.DS.copy().(*DS)}
   886  }
   887  
   888  func (rr *DNAME) copy() RR {
   889  	return &DNAME{rr.Hdr, rr.Target}
   890  }
   891  
   892  func (rr *DNSKEY) copy() RR {
   893  	return &DNSKEY{
   894  		rr.Hdr,
   895  		rr.Flags,
   896  		rr.Protocol,
   897  		rr.Algorithm,
   898  		rr.PublicKey,
   899  	}
   900  }
   901  
   902  func (rr *DS) copy() RR {
   903  	return &DS{
   904  		rr.Hdr,
   905  		rr.KeyTag,
   906  		rr.Algorithm,
   907  		rr.DigestType,
   908  		rr.Digest,
   909  	}
   910  }
   911  
   912  func (rr *EID) copy() RR {
   913  	return &EID{rr.Hdr, rr.Endpoint}
   914  }
   915  
   916  func (rr *EUI48) copy() RR {
   917  	return &EUI48{rr.Hdr, rr.Address}
   918  }
   919  
   920  func (rr *EUI64) copy() RR {
   921  	return &EUI64{rr.Hdr, rr.Address}
   922  }
   923  
   924  func (rr *GID) copy() RR {
   925  	return &GID{rr.Hdr, rr.Gid}
   926  }
   927  
   928  func (rr *GPOS) copy() RR {
   929  	return &GPOS{
   930  		rr.Hdr,
   931  		rr.Longitude,
   932  		rr.Latitude,
   933  		rr.Altitude,
   934  	}
   935  }
   936  
   937  func (rr *HINFO) copy() RR {
   938  	return &HINFO{rr.Hdr, rr.Cpu, rr.Os}
   939  }
   940  
   941  func (rr *HIP) copy() RR {
   942  	return &HIP{
   943  		rr.Hdr,
   944  		rr.HitLength,
   945  		rr.PublicKeyAlgorithm,
   946  		rr.PublicKeyLength,
   947  		rr.Hit,
   948  		rr.PublicKey,
   949  		cloneSlice(rr.RendezvousServers),
   950  	}
   951  }
   952  
   953  func (rr *HTTPS) copy() RR {
   954  	return &HTTPS{*rr.SVCB.copy().(*SVCB)}
   955  }
   956  
   957  func (rr *IPSECKEY) copy() RR {
   958  	return &IPSECKEY{
   959  		rr.Hdr,
   960  		rr.Precedence,
   961  		rr.GatewayType,
   962  		rr.Algorithm,
   963  		cloneSlice(rr.GatewayAddr),
   964  		rr.GatewayHost,
   965  		rr.PublicKey,
   966  	}
   967  }
   968  
   969  func (rr *KEY) copy() RR {
   970  	return &KEY{*rr.DNSKEY.copy().(*DNSKEY)}
   971  }
   972  
   973  func (rr *KX) copy() RR {
   974  	return &KX{rr.Hdr, rr.Preference, rr.Exchanger}
   975  }
   976  
   977  func (rr *L32) copy() RR {
   978  	return &L32{rr.Hdr, rr.Preference, cloneSlice(rr.Locator32)}
   979  }
   980  
   981  func (rr *L64) copy() RR {
   982  	return &L64{rr.Hdr, rr.Preference, rr.Locator64}
   983  }
   984  
   985  func (rr *LOC) copy() RR {
   986  	return &LOC{
   987  		rr.Hdr,
   988  		rr.Version,
   989  		rr.Size,
   990  		rr.HorizPre,
   991  		rr.VertPre,
   992  		rr.Latitude,
   993  		rr.Longitude,
   994  		rr.Altitude,
   995  	}
   996  }
   997  
   998  func (rr *LP) copy() RR {
   999  	return &LP{rr.Hdr, rr.Preference, rr.Fqdn}
  1000  }
  1001  
  1002  func (rr *MB) copy() RR {
  1003  	return &MB{rr.Hdr, rr.Mb}
  1004  }
  1005  
  1006  func (rr *MD) copy() RR {
  1007  	return &MD{rr.Hdr, rr.Md}
  1008  }
  1009  
  1010  func (rr *MF) copy() RR {
  1011  	return &MF{rr.Hdr, rr.Mf}
  1012  }
  1013  
  1014  func (rr *MG) copy() RR {
  1015  	return &MG{rr.Hdr, rr.Mg}
  1016  }
  1017  
  1018  func (rr *MINFO) copy() RR {
  1019  	return &MINFO{rr.Hdr, rr.Rmail, rr.Email}
  1020  }
  1021  
  1022  func (rr *MR) copy() RR {
  1023  	return &MR{rr.Hdr, rr.Mr}
  1024  }
  1025  
  1026  func (rr *MX) copy() RR {
  1027  	return &MX{rr.Hdr, rr.Preference, rr.Mx}
  1028  }
  1029  
  1030  func (rr *NAPTR) copy() RR {
  1031  	return &NAPTR{
  1032  		rr.Hdr,
  1033  		rr.Order,
  1034  		rr.Preference,
  1035  		rr.Flags,
  1036  		rr.Service,
  1037  		rr.Regexp,
  1038  		rr.Replacement,
  1039  	}
  1040  }
  1041  
  1042  func (rr *NID) copy() RR {
  1043  	return &NID{rr.Hdr, rr.Preference, rr.NodeID}
  1044  }
  1045  
  1046  func (rr *NIMLOC) copy() RR {
  1047  	return &NIMLOC{rr.Hdr, rr.Locator}
  1048  }
  1049  
  1050  func (rr *NINFO) copy() RR {
  1051  	return &NINFO{rr.Hdr, cloneSlice(rr.ZSData)}
  1052  }
  1053  
  1054  func (rr *NS) copy() RR {
  1055  	return &NS{rr.Hdr, rr.Ns}
  1056  }
  1057  
  1058  func (rr *NSAPPTR) copy() RR {
  1059  	return &NSAPPTR{rr.Hdr, rr.Ptr}
  1060  }
  1061  
  1062  func (rr *NSEC) copy() RR {
  1063  	return &NSEC{rr.Hdr, rr.NextDomain, cloneSlice(rr.TypeBitMap)}
  1064  }
  1065  
  1066  func (rr *NSEC3) copy() RR {
  1067  	return &NSEC3{
  1068  		rr.Hdr,
  1069  		rr.Hash,
  1070  		rr.Flags,
  1071  		rr.Iterations,
  1072  		rr.SaltLength,
  1073  		rr.Salt,
  1074  		rr.HashLength,
  1075  		rr.NextDomain,
  1076  		cloneSlice(rr.TypeBitMap),
  1077  	}
  1078  }
  1079  
  1080  func (rr *NSEC3PARAM) copy() RR {
  1081  	return &NSEC3PARAM{
  1082  		rr.Hdr,
  1083  		rr.Hash,
  1084  		rr.Flags,
  1085  		rr.Iterations,
  1086  		rr.SaltLength,
  1087  		rr.Salt,
  1088  	}
  1089  }
  1090  
  1091  func (rr *NULL) copy() RR {
  1092  	return &NULL{rr.Hdr, rr.Data}
  1093  }
  1094  
  1095  func (rr *OPENPGPKEY) copy() RR {
  1096  	return &OPENPGPKEY{rr.Hdr, rr.PublicKey}
  1097  }
  1098  
  1099  func (rr *OPT) copy() RR {
  1100  	Option := make([]EDNS0, len(rr.Option))
  1101  	for i, e := range rr.Option {
  1102  		Option[i] = e.copy()
  1103  	}
  1104  	return &OPT{rr.Hdr, Option}
  1105  }
  1106  
  1107  func (rr *PTR) copy() RR {
  1108  	return &PTR{rr.Hdr, rr.Ptr}
  1109  }
  1110  
  1111  func (rr *PX) copy() RR {
  1112  	return &PX{
  1113  		rr.Hdr,
  1114  		rr.Preference,
  1115  		rr.Map822,
  1116  		rr.Mapx400,
  1117  	}
  1118  }
  1119  
  1120  func (rr *RFC3597) copy() RR {
  1121  	return &RFC3597{rr.Hdr, rr.Rdata}
  1122  }
  1123  
  1124  func (rr *RKEY) copy() RR {
  1125  	return &RKEY{
  1126  		rr.Hdr,
  1127  		rr.Flags,
  1128  		rr.Protocol,
  1129  		rr.Algorithm,
  1130  		rr.PublicKey,
  1131  	}
  1132  }
  1133  
  1134  func (rr *RP) copy() RR {
  1135  	return &RP{rr.Hdr, rr.Mbox, rr.Txt}
  1136  }
  1137  
  1138  func (rr *RRSIG) copy() RR {
  1139  	return &RRSIG{
  1140  		rr.Hdr,
  1141  		rr.TypeCovered,
  1142  		rr.Algorithm,
  1143  		rr.Labels,
  1144  		rr.OrigTtl,
  1145  		rr.Expiration,
  1146  		rr.Inception,
  1147  		rr.KeyTag,
  1148  		rr.SignerName,
  1149  		rr.Signature,
  1150  	}
  1151  }
  1152  
  1153  func (rr *RT) copy() RR {
  1154  	return &RT{rr.Hdr, rr.Preference, rr.Host}
  1155  }
  1156  
  1157  func (rr *SIG) copy() RR {
  1158  	return &SIG{*rr.RRSIG.copy().(*RRSIG)}
  1159  }
  1160  
  1161  func (rr *SMIMEA) copy() RR {
  1162  	return &SMIMEA{
  1163  		rr.Hdr,
  1164  		rr.Usage,
  1165  		rr.Selector,
  1166  		rr.MatchingType,
  1167  		rr.Certificate,
  1168  	}
  1169  }
  1170  
  1171  func (rr *SOA) copy() RR {
  1172  	return &SOA{
  1173  		rr.Hdr,
  1174  		rr.Ns,
  1175  		rr.Mbox,
  1176  		rr.Serial,
  1177  		rr.Refresh,
  1178  		rr.Retry,
  1179  		rr.Expire,
  1180  		rr.Minttl,
  1181  	}
  1182  }
  1183  
  1184  func (rr *SPF) copy() RR {
  1185  	return &SPF{rr.Hdr, cloneSlice(rr.Txt)}
  1186  }
  1187  
  1188  func (rr *SRV) copy() RR {
  1189  	return &SRV{
  1190  		rr.Hdr,
  1191  		rr.Priority,
  1192  		rr.Weight,
  1193  		rr.Port,
  1194  		rr.Target,
  1195  	}
  1196  }
  1197  
  1198  func (rr *SSHFP) copy() RR {
  1199  	return &SSHFP{
  1200  		rr.Hdr,
  1201  		rr.Algorithm,
  1202  		rr.Type,
  1203  		rr.FingerPrint,
  1204  	}
  1205  }
  1206  
  1207  func (rr *SVCB) copy() RR {
  1208  	Value := make([]SVCBKeyValue, len(rr.Value))
  1209  	for i, e := range rr.Value {
  1210  		Value[i] = e.copy()
  1211  	}
  1212  	return &SVCB{
  1213  		rr.Hdr,
  1214  		rr.Priority,
  1215  		rr.Target,
  1216  		Value,
  1217  	}
  1218  }
  1219  
  1220  func (rr *TA) copy() RR {
  1221  	return &TA{
  1222  		rr.Hdr,
  1223  		rr.KeyTag,
  1224  		rr.Algorithm,
  1225  		rr.DigestType,
  1226  		rr.Digest,
  1227  	}
  1228  }
  1229  
  1230  func (rr *TALINK) copy() RR {
  1231  	return &TALINK{rr.Hdr, rr.PreviousName, rr.NextName}
  1232  }
  1233  
  1234  func (rr *TKEY) copy() RR {
  1235  	return &TKEY{
  1236  		rr.Hdr,
  1237  		rr.Algorithm,
  1238  		rr.Inception,
  1239  		rr.Expiration,
  1240  		rr.Mode,
  1241  		rr.Error,
  1242  		rr.KeySize,
  1243  		rr.Key,
  1244  		rr.OtherLen,
  1245  		rr.OtherData,
  1246  	}
  1247  }
  1248  
  1249  func (rr *TLSA) copy() RR {
  1250  	return &TLSA{
  1251  		rr.Hdr,
  1252  		rr.Usage,
  1253  		rr.Selector,
  1254  		rr.MatchingType,
  1255  		rr.Certificate,
  1256  	}
  1257  }
  1258  
  1259  func (rr *TSIG) copy() RR {
  1260  	return &TSIG{
  1261  		rr.Hdr,
  1262  		rr.Algorithm,
  1263  		rr.TimeSigned,
  1264  		rr.Fudge,
  1265  		rr.MACSize,
  1266  		rr.MAC,
  1267  		rr.OrigId,
  1268  		rr.Error,
  1269  		rr.OtherLen,
  1270  		rr.OtherData,
  1271  	}
  1272  }
  1273  
  1274  func (rr *TXT) copy() RR {
  1275  	return &TXT{rr.Hdr, cloneSlice(rr.Txt)}
  1276  }
  1277  
  1278  func (rr *UID) copy() RR {
  1279  	return &UID{rr.Hdr, rr.Uid}
  1280  }
  1281  
  1282  func (rr *UINFO) copy() RR {
  1283  	return &UINFO{rr.Hdr, rr.Uinfo}
  1284  }
  1285  
  1286  func (rr *URI) copy() RR {
  1287  	return &URI{
  1288  		rr.Hdr,
  1289  		rr.Priority,
  1290  		rr.Weight,
  1291  		rr.Target,
  1292  	}
  1293  }
  1294  
  1295  func (rr *X25) copy() RR {
  1296  	return &X25{rr.Hdr, rr.PSDNAddress}
  1297  }
  1298  
  1299  func (rr *ZONEMD) copy() RR {
  1300  	return &ZONEMD{
  1301  		rr.Hdr,
  1302  		rr.Serial,
  1303  		rr.Scheme,
  1304  		rr.Hash,
  1305  		rr.Digest,
  1306  	}
  1307  }
  1308  

View as plain text