File Coverage

blib/lib/Zonemaster/LDNS/RR.pm
Criterion Covered Total %
statement 234 235 99.5
branch 1 2 50.0
condition n/a
subroutine 79 79 100.0
pod 4 4 100.0
total 318 320 99.3


line stmt bran cond sub pod time code
1             package Zonemaster::LDNS::RR;
2              
3 13     13   3128 use Zonemaster::LDNS::RR::A;
  13         29  
  13         324  
4 13     13   2954 use Zonemaster::LDNS::RR::A6;
  13         30  
  13         319  
5 13     13   2853 use Zonemaster::LDNS::RR::AAAA;
  13         30  
  13         364  
6 13     13   3035 use Zonemaster::LDNS::RR::AFSDB;
  13         31  
  13         335  
7 13     13   2927 use Zonemaster::LDNS::RR::APL;
  13         29  
  13         346  
8 13     13   2809 use Zonemaster::LDNS::RR::ATMA;
  13         27  
  13         351  
9 13     13   2890 use Zonemaster::LDNS::RR::CAA;
  13         30  
  13         381  
10 13     13   3159 use Zonemaster::LDNS::RR::CDS;
  13         28  
  13         351  
11 13     13   2849 use Zonemaster::LDNS::RR::CERT;
  13         30  
  13         394  
12 13     13   2899 use Zonemaster::LDNS::RR::CNAME;
  13         28  
  13         387  
13 13     13   2795 use Zonemaster::LDNS::RR::DHCID;
  13         30  
  13         376  
14 13     13   2862 use Zonemaster::LDNS::RR::DLV;
  13         27  
  13         386  
15 13     13   2834 use Zonemaster::LDNS::RR::DNAME;
  13         27  
  13         420  
16 13     13   3109 use Zonemaster::LDNS::RR::DNSKEY;
  13         31  
  13         422  
17 13     13   2787 use Zonemaster::LDNS::RR::DS;
  13         27  
  13         415  
18 13     13   2823 use Zonemaster::LDNS::RR::EID;
  13         39  
  13         420  
19 13     13   2735 use Zonemaster::LDNS::RR::EUI48;
  13         28  
  13         417  
20 13     13   3147 use Zonemaster::LDNS::RR::EUI64;
  13         29  
  13         468  
21 13     13   3022 use Zonemaster::LDNS::RR::GID;
  13         31  
  13         501  
22 13     13   2981 use Zonemaster::LDNS::RR::GPOS;
  13         31  
  13         474  
23 13     13   2753 use Zonemaster::LDNS::RR::HINFO;
  13         29  
  13         457  
24 13     13   2768 use Zonemaster::LDNS::RR::HIP;
  13         27  
  13         519  
25 13     13   2993 use Zonemaster::LDNS::RR::IPSECKEY;
  13         26  
  13         505  
26 13     13   2914 use Zonemaster::LDNS::RR::ISDN;
  13         27  
  13         529  
27 13     13   2946 use Zonemaster::LDNS::RR::KEY;
  13         29  
  13         523  
28 13     13   2894 use Zonemaster::LDNS::RR::KX;
  13         30  
  13         526  
29 13     13   2866 use Zonemaster::LDNS::RR::L32;
  13         29  
  13         548  
30 13     13   2942 use Zonemaster::LDNS::RR::L64;
  13         30  
  13         531  
31 13     13   2777 use Zonemaster::LDNS::RR::LOC;
  13         27  
  13         544  
32 13     13   2714 use Zonemaster::LDNS::RR::LP;
  13         29  
  13         570  
33 13     13   2959 use Zonemaster::LDNS::RR::MAILA;
  13         28  
  13         548  
34 13     13   2708 use Zonemaster::LDNS::RR::MAILB;
  13         27  
  13         679  
35 13     13   2907 use Zonemaster::LDNS::RR::MB;
  13         26  
  13         632  
36 13     13   2905 use Zonemaster::LDNS::RR::MD;
  13         30  
  13         580  
37 13     13   2861 use Zonemaster::LDNS::RR::MF;
  13         28  
  13         602  
38 13     13   2980 use Zonemaster::LDNS::RR::MG;
  13         29  
  13         595  
39 13     13   2828 use Zonemaster::LDNS::RR::MINFO;
  13         26  
  13         635  
40 13     13   3243 use Zonemaster::LDNS::RR::MR;
  13         31  
  13         650  
41 13     13   2924 use Zonemaster::LDNS::RR::MX;
  13         35  
  13         630  
42 13     13   2896 use Zonemaster::LDNS::RR::NAPTR;
  13         29  
  13         633  
43 13     13   2884 use Zonemaster::LDNS::RR::NID;
  13         27  
  13         688  
44 13     13   2822 use Zonemaster::LDNS::RR::NIMLOC;
  13         29  
  13         656  
45 13     13   2774 use Zonemaster::LDNS::RR::NINFO;
  13         28  
  13         647  
46 13     13   2778 use Zonemaster::LDNS::RR::NS;
  13         31  
  13         675  
47 13     13   2818 use Zonemaster::LDNS::RR::NSAP;
  13         33  
  13         685  
48 13     13   3002 use Zonemaster::LDNS::RR::NSEC;
  13         31  
  13         665  
49 13     13   2941 use Zonemaster::LDNS::RR::NSEC3;
  13         29  
  13         704  
50 13     13   2908 use Zonemaster::LDNS::RR::NSEC3PARAM;
  13         29  
  13         758  
51 13     13   2891 use Zonemaster::LDNS::RR::NULL;
  13         30  
  13         754  
52 13     13   2958 use Zonemaster::LDNS::RR::NXT;
  13         29  
  13         766  
53 13     13   3048 use Zonemaster::LDNS::RR::PTR;
  13         29  
  13         739  
54 13     13   2875 use Zonemaster::LDNS::RR::PX;
  13         32  
  13         754  
55 13     13   2896 use Zonemaster::LDNS::RR::RKEY;
  13         30  
  13         791  
56 13     13   2910 use Zonemaster::LDNS::RR::RP;
  13         30  
  13         771  
57 13     13   2949 use Zonemaster::LDNS::RR::RRSIG;
  13         73  
  13         852  
58 13     13   2943 use Zonemaster::LDNS::RR::RT;
  13         30  
  13         923  
59 13     13   2893 use Zonemaster::LDNS::RR::SINK;
  13         33  
  13         829  
60 13     13   2879 use Zonemaster::LDNS::RR::SOA;
  13         29  
  13         816  
61 13     13   2952 use Zonemaster::LDNS::RR::SPF;
  13         29  
  13         824  
62 13     13   2983 use Zonemaster::LDNS::RR::SRV;
  13         39  
  13         895  
63 13     13   2876 use Zonemaster::LDNS::RR::SSHFP;
  13         30  
  13         847  
64 13     13   2819 use Zonemaster::LDNS::RR::TA;
  13         29  
  13         874  
65 13     13   3008 use Zonemaster::LDNS::RR::TALINK;
  13         30  
  13         871  
66 13     13   2797 use Zonemaster::LDNS::RR::TKEY;
  13         26  
  13         1018  
67 13     13   2719 use Zonemaster::LDNS::RR::TLSA;
  13         30  
  13         879  
68 13     13   2835 use Zonemaster::LDNS::RR::TXT;
  13         28  
  13         860  
69 13     13   2779 use Zonemaster::LDNS::RR::TYPE;
  13         27  
  13         912  
70 13     13   2883 use Zonemaster::LDNS::RR::UID;
  13         34  
  13         890  
71 13     13   2845 use Zonemaster::LDNS::RR::UINFO;
  13         28  
  13         870  
72 13     13   3057 use Zonemaster::LDNS::RR::UNSPEC;
  13         28  
  13         951  
73 13     13   3108 use Zonemaster::LDNS::RR::URI;
  13         28  
  13         993  
74 13     13   3026 use Zonemaster::LDNS::RR::WKS;
  13         28  
  13         1146  
75 13     13   2771 use Zonemaster::LDNS::RR::X25;
  13         31  
  13         940  
76              
77 13     13   72 use Carp;
  13         23  
  13         1919  
78              
79 13     13   8445 use overload '<=>' => \&do_compare, 'cmp' => \&do_compare, '""' => \&to_string;
  13         7650  
  13         852  
80              
81             sub new {
82 10     10 1 2188032 my ( $class, $string ) = @_;
83              
84 10 50       32 if ( $string ) {
85 10         710 return $class->new_from_string( $string );
86             }
87             else {
88 0         0 croak "Must provide string to create RR";
89             }
90             }
91              
92             sub name {
93 1     1 1 2517 my ( $self ) = @_;
94              
95 1         43 return $self->owner;
96             }
97              
98             sub do_compare {
99 3     3 1 317627 my ( $self, $other, $swapped ) = @_;
100              
101 3         30 return $self->compare( $other );
102             }
103              
104             sub to_string {
105 13     13 1 22405 my ( $self ) = @_;
106              
107 13         406 return $self->string;
108             }
109              
110             1;
111              
112             =head1 NAME
113              
114             Zonemaster::LDNS::RR - common baseclass for all classes representing resource records.
115              
116             =head1 SYNOPSIS
117              
118             my $rr = Zonemaster::LDNS::RR->new('www.iis.se IN A 91.226.36.46');
119              
120             =head1 OVERLOADS
121              
122             This class overloads stringify and comparisons ('""', '<=>' and 'cmp').
123              
124             =head1 CLASS METHOD
125              
126             =over
127              
128             =item new($string)
129              
130             Creates a new RR object of a suitable subclass, given a string representing an RR in common presentation format.
131              
132             =back
133              
134             =head1 INSTANCE METHODS
135              
136             =over
137              
138             =item owner()
139              
140             =item name()
141              
142             These two both return the owner name of the RR.
143              
144             =item ttl()
145              
146             Returns the ttl of the RR.
147              
148             =item type()
149              
150             Return the type of the RR.
151              
152             =item class()
153              
154             Returns the class of the RR.
155              
156             =item string()
157              
158             Returns a string with the RR in presentation format.
159              
160             =item do_compare($other)
161              
162             Calls the XS C method with the arguments it needs, rather than the ones overloading gives.
163              
164             =item to_string
165              
166             Calls the XS C method with the arguments it needs, rather than the ones overloading gives. Functionally identical to L from the
167             Perl level, except for being a tiny little bit slower.
168              
169             =item rd_count()
170              
171             The number of RDATA objects in this RR.
172              
173             =item rdf($postion)
174              
175             The raw data of the RDATA object in the given position. The first item is in
176             position 0. If an attempt is made to fetch RDATA from a position that doesn't
177             have any, an exception will be thrown.
178              
179             =back