1
2
3 package dns
4
5
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 *KEY) isDuplicate(_r2 RR) bool {
485 r2, ok := _r2.(*KEY)
486 if !ok {
487 return false
488 }
489 _ = r2
490 if r1.Flags != r2.Flags {
491 return false
492 }
493 if r1.Protocol != r2.Protocol {
494 return false
495 }
496 if r1.Algorithm != r2.Algorithm {
497 return false
498 }
499 if r1.PublicKey != r2.PublicKey {
500 return false
501 }
502 return true
503 }
504
505 func (r1 *KX) isDuplicate(_r2 RR) bool {
506 r2, ok := _r2.(*KX)
507 if !ok {
508 return false
509 }
510 _ = r2
511 if r1.Preference != r2.Preference {
512 return false
513 }
514 if !isDuplicateName(r1.Exchanger, r2.Exchanger) {
515 return false
516 }
517 return true
518 }
519
520 func (r1 *L32) isDuplicate(_r2 RR) bool {
521 r2, ok := _r2.(*L32)
522 if !ok {
523 return false
524 }
525 _ = r2
526 if r1.Preference != r2.Preference {
527 return false
528 }
529 if !r1.Locator32.Equal(r2.Locator32) {
530 return false
531 }
532 return true
533 }
534
535 func (r1 *L64) isDuplicate(_r2 RR) bool {
536 r2, ok := _r2.(*L64)
537 if !ok {
538 return false
539 }
540 _ = r2
541 if r1.Preference != r2.Preference {
542 return false
543 }
544 if r1.Locator64 != r2.Locator64 {
545 return false
546 }
547 return true
548 }
549
550 func (r1 *LOC) isDuplicate(_r2 RR) bool {
551 r2, ok := _r2.(*LOC)
552 if !ok {
553 return false
554 }
555 _ = r2
556 if r1.Version != r2.Version {
557 return false
558 }
559 if r1.Size != r2.Size {
560 return false
561 }
562 if r1.HorizPre != r2.HorizPre {
563 return false
564 }
565 if r1.VertPre != r2.VertPre {
566 return false
567 }
568 if r1.Latitude != r2.Latitude {
569 return false
570 }
571 if r1.Longitude != r2.Longitude {
572 return false
573 }
574 if r1.Altitude != r2.Altitude {
575 return false
576 }
577 return true
578 }
579
580 func (r1 *LP) isDuplicate(_r2 RR) bool {
581 r2, ok := _r2.(*LP)
582 if !ok {
583 return false
584 }
585 _ = r2
586 if r1.Preference != r2.Preference {
587 return false
588 }
589 if !isDuplicateName(r1.Fqdn, r2.Fqdn) {
590 return false
591 }
592 return true
593 }
594
595 func (r1 *MB) isDuplicate(_r2 RR) bool {
596 r2, ok := _r2.(*MB)
597 if !ok {
598 return false
599 }
600 _ = r2
601 if !isDuplicateName(r1.Mb, r2.Mb) {
602 return false
603 }
604 return true
605 }
606
607 func (r1 *MD) isDuplicate(_r2 RR) bool {
608 r2, ok := _r2.(*MD)
609 if !ok {
610 return false
611 }
612 _ = r2
613 if !isDuplicateName(r1.Md, r2.Md) {
614 return false
615 }
616 return true
617 }
618
619 func (r1 *MF) isDuplicate(_r2 RR) bool {
620 r2, ok := _r2.(*MF)
621 if !ok {
622 return false
623 }
624 _ = r2
625 if !isDuplicateName(r1.Mf, r2.Mf) {
626 return false
627 }
628 return true
629 }
630
631 func (r1 *MG) isDuplicate(_r2 RR) bool {
632 r2, ok := _r2.(*MG)
633 if !ok {
634 return false
635 }
636 _ = r2
637 if !isDuplicateName(r1.Mg, r2.Mg) {
638 return false
639 }
640 return true
641 }
642
643 func (r1 *MINFO) isDuplicate(_r2 RR) bool {
644 r2, ok := _r2.(*MINFO)
645 if !ok {
646 return false
647 }
648 _ = r2
649 if !isDuplicateName(r1.Rmail, r2.Rmail) {
650 return false
651 }
652 if !isDuplicateName(r1.Email, r2.Email) {
653 return false
654 }
655 return true
656 }
657
658 func (r1 *MR) isDuplicate(_r2 RR) bool {
659 r2, ok := _r2.(*MR)
660 if !ok {
661 return false
662 }
663 _ = r2
664 if !isDuplicateName(r1.Mr, r2.Mr) {
665 return false
666 }
667 return true
668 }
669
670 func (r1 *MX) isDuplicate(_r2 RR) bool {
671 r2, ok := _r2.(*MX)
672 if !ok {
673 return false
674 }
675 _ = r2
676 if r1.Preference != r2.Preference {
677 return false
678 }
679 if !isDuplicateName(r1.Mx, r2.Mx) {
680 return false
681 }
682 return true
683 }
684
685 func (r1 *NAPTR) isDuplicate(_r2 RR) bool {
686 r2, ok := _r2.(*NAPTR)
687 if !ok {
688 return false
689 }
690 _ = r2
691 if r1.Order != r2.Order {
692 return false
693 }
694 if r1.Preference != r2.Preference {
695 return false
696 }
697 if r1.Flags != r2.Flags {
698 return false
699 }
700 if r1.Service != r2.Service {
701 return false
702 }
703 if r1.Regexp != r2.Regexp {
704 return false
705 }
706 if !isDuplicateName(r1.Replacement, r2.Replacement) {
707 return false
708 }
709 return true
710 }
711
712 func (r1 *NID) isDuplicate(_r2 RR) bool {
713 r2, ok := _r2.(*NID)
714 if !ok {
715 return false
716 }
717 _ = r2
718 if r1.Preference != r2.Preference {
719 return false
720 }
721 if r1.NodeID != r2.NodeID {
722 return false
723 }
724 return true
725 }
726
727 func (r1 *NIMLOC) isDuplicate(_r2 RR) bool {
728 r2, ok := _r2.(*NIMLOC)
729 if !ok {
730 return false
731 }
732 _ = r2
733 if r1.Locator != r2.Locator {
734 return false
735 }
736 return true
737 }
738
739 func (r1 *NINFO) isDuplicate(_r2 RR) bool {
740 r2, ok := _r2.(*NINFO)
741 if !ok {
742 return false
743 }
744 _ = r2
745 if len(r1.ZSData) != len(r2.ZSData) {
746 return false
747 }
748 for i := 0; i < len(r1.ZSData); i++ {
749 if r1.ZSData[i] != r2.ZSData[i] {
750 return false
751 }
752 }
753 return true
754 }
755
756 func (r1 *NS) isDuplicate(_r2 RR) bool {
757 r2, ok := _r2.(*NS)
758 if !ok {
759 return false
760 }
761 _ = r2
762 if !isDuplicateName(r1.Ns, r2.Ns) {
763 return false
764 }
765 return true
766 }
767
768 func (r1 *NSAPPTR) isDuplicate(_r2 RR) bool {
769 r2, ok := _r2.(*NSAPPTR)
770 if !ok {
771 return false
772 }
773 _ = r2
774 if !isDuplicateName(r1.Ptr, r2.Ptr) {
775 return false
776 }
777 return true
778 }
779
780 func (r1 *NSEC) isDuplicate(_r2 RR) bool {
781 r2, ok := _r2.(*NSEC)
782 if !ok {
783 return false
784 }
785 _ = r2
786 if !isDuplicateName(r1.NextDomain, r2.NextDomain) {
787 return false
788 }
789 if len(r1.TypeBitMap) != len(r2.TypeBitMap) {
790 return false
791 }
792 for i := 0; i < len(r1.TypeBitMap); i++ {
793 if r1.TypeBitMap[i] != r2.TypeBitMap[i] {
794 return false
795 }
796 }
797 return true
798 }
799
800 func (r1 *NSEC3) isDuplicate(_r2 RR) bool {
801 r2, ok := _r2.(*NSEC3)
802 if !ok {
803 return false
804 }
805 _ = r2
806 if r1.Hash != r2.Hash {
807 return false
808 }
809 if r1.Flags != r2.Flags {
810 return false
811 }
812 if r1.Iterations != r2.Iterations {
813 return false
814 }
815 if r1.SaltLength != r2.SaltLength {
816 return false
817 }
818 if r1.Salt != r2.Salt {
819 return false
820 }
821 if r1.HashLength != r2.HashLength {
822 return false
823 }
824 if r1.NextDomain != r2.NextDomain {
825 return false
826 }
827 if len(r1.TypeBitMap) != len(r2.TypeBitMap) {
828 return false
829 }
830 for i := 0; i < len(r1.TypeBitMap); i++ {
831 if r1.TypeBitMap[i] != r2.TypeBitMap[i] {
832 return false
833 }
834 }
835 return true
836 }
837
838 func (r1 *NSEC3PARAM) isDuplicate(_r2 RR) bool {
839 r2, ok := _r2.(*NSEC3PARAM)
840 if !ok {
841 return false
842 }
843 _ = r2
844 if r1.Hash != r2.Hash {
845 return false
846 }
847 if r1.Flags != r2.Flags {
848 return false
849 }
850 if r1.Iterations != r2.Iterations {
851 return false
852 }
853 if r1.SaltLength != r2.SaltLength {
854 return false
855 }
856 if r1.Salt != r2.Salt {
857 return false
858 }
859 return true
860 }
861
862 func (r1 *NULL) isDuplicate(_r2 RR) bool {
863 r2, ok := _r2.(*NULL)
864 if !ok {
865 return false
866 }
867 _ = r2
868 if r1.Data != r2.Data {
869 return false
870 }
871 return true
872 }
873
874 func (r1 *OPENPGPKEY) isDuplicate(_r2 RR) bool {
875 r2, ok := _r2.(*OPENPGPKEY)
876 if !ok {
877 return false
878 }
879 _ = r2
880 if r1.PublicKey != r2.PublicKey {
881 return false
882 }
883 return true
884 }
885
886 func (r1 *PTR) isDuplicate(_r2 RR) bool {
887 r2, ok := _r2.(*PTR)
888 if !ok {
889 return false
890 }
891 _ = r2
892 if !isDuplicateName(r1.Ptr, r2.Ptr) {
893 return false
894 }
895 return true
896 }
897
898 func (r1 *PX) isDuplicate(_r2 RR) bool {
899 r2, ok := _r2.(*PX)
900 if !ok {
901 return false
902 }
903 _ = r2
904 if r1.Preference != r2.Preference {
905 return false
906 }
907 if !isDuplicateName(r1.Map822, r2.Map822) {
908 return false
909 }
910 if !isDuplicateName(r1.Mapx400, r2.Mapx400) {
911 return false
912 }
913 return true
914 }
915
916 func (r1 *RFC3597) isDuplicate(_r2 RR) bool {
917 r2, ok := _r2.(*RFC3597)
918 if !ok {
919 return false
920 }
921 _ = r2
922 if r1.Rdata != r2.Rdata {
923 return false
924 }
925 return true
926 }
927
928 func (r1 *RKEY) isDuplicate(_r2 RR) bool {
929 r2, ok := _r2.(*RKEY)
930 if !ok {
931 return false
932 }
933 _ = r2
934 if r1.Flags != r2.Flags {
935 return false
936 }
937 if r1.Protocol != r2.Protocol {
938 return false
939 }
940 if r1.Algorithm != r2.Algorithm {
941 return false
942 }
943 if r1.PublicKey != r2.PublicKey {
944 return false
945 }
946 return true
947 }
948
949 func (r1 *RP) isDuplicate(_r2 RR) bool {
950 r2, ok := _r2.(*RP)
951 if !ok {
952 return false
953 }
954 _ = r2
955 if !isDuplicateName(r1.Mbox, r2.Mbox) {
956 return false
957 }
958 if !isDuplicateName(r1.Txt, r2.Txt) {
959 return false
960 }
961 return true
962 }
963
964 func (r1 *RRSIG) isDuplicate(_r2 RR) bool {
965 r2, ok := _r2.(*RRSIG)
966 if !ok {
967 return false
968 }
969 _ = r2
970 if r1.TypeCovered != r2.TypeCovered {
971 return false
972 }
973 if r1.Algorithm != r2.Algorithm {
974 return false
975 }
976 if r1.Labels != r2.Labels {
977 return false
978 }
979 if r1.OrigTtl != r2.OrigTtl {
980 return false
981 }
982 if r1.Expiration != r2.Expiration {
983 return false
984 }
985 if r1.Inception != r2.Inception {
986 return false
987 }
988 if r1.KeyTag != r2.KeyTag {
989 return false
990 }
991 if !isDuplicateName(r1.SignerName, r2.SignerName) {
992 return false
993 }
994 if r1.Signature != r2.Signature {
995 return false
996 }
997 return true
998 }
999
1000 func (r1 *RT) isDuplicate(_r2 RR) bool {
1001 r2, ok := _r2.(*RT)
1002 if !ok {
1003 return false
1004 }
1005 _ = r2
1006 if r1.Preference != r2.Preference {
1007 return false
1008 }
1009 if !isDuplicateName(r1.Host, r2.Host) {
1010 return false
1011 }
1012 return true
1013 }
1014
1015 func (r1 *SIG) isDuplicate(_r2 RR) bool {
1016 r2, ok := _r2.(*SIG)
1017 if !ok {
1018 return false
1019 }
1020 _ = r2
1021 if r1.TypeCovered != r2.TypeCovered {
1022 return false
1023 }
1024 if r1.Algorithm != r2.Algorithm {
1025 return false
1026 }
1027 if r1.Labels != r2.Labels {
1028 return false
1029 }
1030 if r1.OrigTtl != r2.OrigTtl {
1031 return false
1032 }
1033 if r1.Expiration != r2.Expiration {
1034 return false
1035 }
1036 if r1.Inception != r2.Inception {
1037 return false
1038 }
1039 if r1.KeyTag != r2.KeyTag {
1040 return false
1041 }
1042 if !isDuplicateName(r1.SignerName, r2.SignerName) {
1043 return false
1044 }
1045 if r1.Signature != r2.Signature {
1046 return false
1047 }
1048 return true
1049 }
1050
1051 func (r1 *SMIMEA) isDuplicate(_r2 RR) bool {
1052 r2, ok := _r2.(*SMIMEA)
1053 if !ok {
1054 return false
1055 }
1056 _ = r2
1057 if r1.Usage != r2.Usage {
1058 return false
1059 }
1060 if r1.Selector != r2.Selector {
1061 return false
1062 }
1063 if r1.MatchingType != r2.MatchingType {
1064 return false
1065 }
1066 if r1.Certificate != r2.Certificate {
1067 return false
1068 }
1069 return true
1070 }
1071
1072 func (r1 *SOA) isDuplicate(_r2 RR) bool {
1073 r2, ok := _r2.(*SOA)
1074 if !ok {
1075 return false
1076 }
1077 _ = r2
1078 if !isDuplicateName(r1.Ns, r2.Ns) {
1079 return false
1080 }
1081 if !isDuplicateName(r1.Mbox, r2.Mbox) {
1082 return false
1083 }
1084 if r1.Serial != r2.Serial {
1085 return false
1086 }
1087 if r1.Refresh != r2.Refresh {
1088 return false
1089 }
1090 if r1.Retry != r2.Retry {
1091 return false
1092 }
1093 if r1.Expire != r2.Expire {
1094 return false
1095 }
1096 if r1.Minttl != r2.Minttl {
1097 return false
1098 }
1099 return true
1100 }
1101
1102 func (r1 *SPF) isDuplicate(_r2 RR) bool {
1103 r2, ok := _r2.(*SPF)
1104 if !ok {
1105 return false
1106 }
1107 _ = r2
1108 if len(r1.Txt) != len(r2.Txt) {
1109 return false
1110 }
1111 for i := 0; i < len(r1.Txt); i++ {
1112 if r1.Txt[i] != r2.Txt[i] {
1113 return false
1114 }
1115 }
1116 return true
1117 }
1118
1119 func (r1 *SRV) isDuplicate(_r2 RR) bool {
1120 r2, ok := _r2.(*SRV)
1121 if !ok {
1122 return false
1123 }
1124 _ = r2
1125 if r1.Priority != r2.Priority {
1126 return false
1127 }
1128 if r1.Weight != r2.Weight {
1129 return false
1130 }
1131 if r1.Port != r2.Port {
1132 return false
1133 }
1134 if !isDuplicateName(r1.Target, r2.Target) {
1135 return false
1136 }
1137 return true
1138 }
1139
1140 func (r1 *SSHFP) isDuplicate(_r2 RR) bool {
1141 r2, ok := _r2.(*SSHFP)
1142 if !ok {
1143 return false
1144 }
1145 _ = r2
1146 if r1.Algorithm != r2.Algorithm {
1147 return false
1148 }
1149 if r1.Type != r2.Type {
1150 return false
1151 }
1152 if r1.FingerPrint != r2.FingerPrint {
1153 return false
1154 }
1155 return true
1156 }
1157
1158 func (r1 *SVCB) isDuplicate(_r2 RR) bool {
1159 r2, ok := _r2.(*SVCB)
1160 if !ok {
1161 return false
1162 }
1163 _ = r2
1164 if r1.Priority != r2.Priority {
1165 return false
1166 }
1167 if !isDuplicateName(r1.Target, r2.Target) {
1168 return false
1169 }
1170 if len(r1.Value) != len(r2.Value) {
1171 return false
1172 }
1173 if !areSVCBPairArraysEqual(r1.Value, r2.Value) {
1174 return false
1175 }
1176 return true
1177 }
1178
1179 func (r1 *TA) isDuplicate(_r2 RR) bool {
1180 r2, ok := _r2.(*TA)
1181 if !ok {
1182 return false
1183 }
1184 _ = r2
1185 if r1.KeyTag != r2.KeyTag {
1186 return false
1187 }
1188 if r1.Algorithm != r2.Algorithm {
1189 return false
1190 }
1191 if r1.DigestType != r2.DigestType {
1192 return false
1193 }
1194 if r1.Digest != r2.Digest {
1195 return false
1196 }
1197 return true
1198 }
1199
1200 func (r1 *TALINK) isDuplicate(_r2 RR) bool {
1201 r2, ok := _r2.(*TALINK)
1202 if !ok {
1203 return false
1204 }
1205 _ = r2
1206 if !isDuplicateName(r1.PreviousName, r2.PreviousName) {
1207 return false
1208 }
1209 if !isDuplicateName(r1.NextName, r2.NextName) {
1210 return false
1211 }
1212 return true
1213 }
1214
1215 func (r1 *TKEY) isDuplicate(_r2 RR) bool {
1216 r2, ok := _r2.(*TKEY)
1217 if !ok {
1218 return false
1219 }
1220 _ = r2
1221 if !isDuplicateName(r1.Algorithm, r2.Algorithm) {
1222 return false
1223 }
1224 if r1.Inception != r2.Inception {
1225 return false
1226 }
1227 if r1.Expiration != r2.Expiration {
1228 return false
1229 }
1230 if r1.Mode != r2.Mode {
1231 return false
1232 }
1233 if r1.Error != r2.Error {
1234 return false
1235 }
1236 if r1.KeySize != r2.KeySize {
1237 return false
1238 }
1239 if r1.Key != r2.Key {
1240 return false
1241 }
1242 if r1.OtherLen != r2.OtherLen {
1243 return false
1244 }
1245 if r1.OtherData != r2.OtherData {
1246 return false
1247 }
1248 return true
1249 }
1250
1251 func (r1 *TLSA) isDuplicate(_r2 RR) bool {
1252 r2, ok := _r2.(*TLSA)
1253 if !ok {
1254 return false
1255 }
1256 _ = r2
1257 if r1.Usage != r2.Usage {
1258 return false
1259 }
1260 if r1.Selector != r2.Selector {
1261 return false
1262 }
1263 if r1.MatchingType != r2.MatchingType {
1264 return false
1265 }
1266 if r1.Certificate != r2.Certificate {
1267 return false
1268 }
1269 return true
1270 }
1271
1272 func (r1 *TSIG) isDuplicate(_r2 RR) bool {
1273 r2, ok := _r2.(*TSIG)
1274 if !ok {
1275 return false
1276 }
1277 _ = r2
1278 if !isDuplicateName(r1.Algorithm, r2.Algorithm) {
1279 return false
1280 }
1281 if r1.TimeSigned != r2.TimeSigned {
1282 return false
1283 }
1284 if r1.Fudge != r2.Fudge {
1285 return false
1286 }
1287 if r1.MACSize != r2.MACSize {
1288 return false
1289 }
1290 if r1.MAC != r2.MAC {
1291 return false
1292 }
1293 if r1.OrigId != r2.OrigId {
1294 return false
1295 }
1296 if r1.Error != r2.Error {
1297 return false
1298 }
1299 if r1.OtherLen != r2.OtherLen {
1300 return false
1301 }
1302 if r1.OtherData != r2.OtherData {
1303 return false
1304 }
1305 return true
1306 }
1307
1308 func (r1 *TXT) isDuplicate(_r2 RR) bool {
1309 r2, ok := _r2.(*TXT)
1310 if !ok {
1311 return false
1312 }
1313 _ = r2
1314 if len(r1.Txt) != len(r2.Txt) {
1315 return false
1316 }
1317 for i := 0; i < len(r1.Txt); i++ {
1318 if r1.Txt[i] != r2.Txt[i] {
1319 return false
1320 }
1321 }
1322 return true
1323 }
1324
1325 func (r1 *UID) isDuplicate(_r2 RR) bool {
1326 r2, ok := _r2.(*UID)
1327 if !ok {
1328 return false
1329 }
1330 _ = r2
1331 if r1.Uid != r2.Uid {
1332 return false
1333 }
1334 return true
1335 }
1336
1337 func (r1 *UINFO) isDuplicate(_r2 RR) bool {
1338 r2, ok := _r2.(*UINFO)
1339 if !ok {
1340 return false
1341 }
1342 _ = r2
1343 if r1.Uinfo != r2.Uinfo {
1344 return false
1345 }
1346 return true
1347 }
1348
1349 func (r1 *URI) isDuplicate(_r2 RR) bool {
1350 r2, ok := _r2.(*URI)
1351 if !ok {
1352 return false
1353 }
1354 _ = r2
1355 if r1.Priority != r2.Priority {
1356 return false
1357 }
1358 if r1.Weight != r2.Weight {
1359 return false
1360 }
1361 if r1.Target != r2.Target {
1362 return false
1363 }
1364 return true
1365 }
1366
1367 func (r1 *X25) isDuplicate(_r2 RR) bool {
1368 r2, ok := _r2.(*X25)
1369 if !ok {
1370 return false
1371 }
1372 _ = r2
1373 if r1.PSDNAddress != r2.PSDNAddress {
1374 return false
1375 }
1376 return true
1377 }
1378
1379 func (r1 *ZONEMD) isDuplicate(_r2 RR) bool {
1380 r2, ok := _r2.(*ZONEMD)
1381 if !ok {
1382 return false
1383 }
1384 _ = r2
1385 if r1.Serial != r2.Serial {
1386 return false
1387 }
1388 if r1.Scheme != r2.Scheme {
1389 return false
1390 }
1391 if r1.Hash != r2.Hash {
1392 return false
1393 }
1394 if r1.Digest != r2.Digest {
1395 return false
1396 }
1397 return true
1398 }
1399
View as plain text