zduplicate.go raw

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