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   4745 use Zonemaster::LDNS::RR::A;
  13         47  
  13         489  
4 13     13   5189 use Zonemaster::LDNS::RR::A6;
  13         46  
  13         531  
5 13     13   4664 use Zonemaster::LDNS::RR::AAAA;
  13         45  
  13         603  
6 13     13   4351 use Zonemaster::LDNS::RR::AFSDB;
  13         47  
  13         488  
7 13     13   4351 use Zonemaster::LDNS::RR::APL;
  13         49  
  13         533  
8 13     13   4702 use Zonemaster::LDNS::RR::ATMA;
  13         44  
  13         558  
9 13     13   4440 use Zonemaster::LDNS::RR::CAA;
  13         46  
  13         802  
10 13     13   4402 use Zonemaster::LDNS::RR::CDS;
  13         44  
  13         562  
11 13     13   4484 use Zonemaster::LDNS::RR::CERT;
  13         46  
  13         584  
12 13     13   4554 use Zonemaster::LDNS::RR::CNAME;
  13         46  
  13         598  
13 13     13   4404 use Zonemaster::LDNS::RR::DHCID;
  13         42  
  13         583  
14 13     13   4364 use Zonemaster::LDNS::RR::DLV;
  13         49  
  13         639  
15 13     13   4525 use Zonemaster::LDNS::RR::DNAME;
  13         45  
  13         663  
16 13     13   4635 use Zonemaster::LDNS::RR::DNSKEY;
  13         45  
  13         647  
17 13     13   4195 use Zonemaster::LDNS::RR::DS;
  13         44  
  13         653  
18 13     13   4697 use Zonemaster::LDNS::RR::EID;
  13         47  
  13         712  
19 13     13   4568 use Zonemaster::LDNS::RR::EUI48;
  13         46  
  13         690  
20 13     13   4145 use Zonemaster::LDNS::RR::EUI64;
  13         45  
  13         688  
21 13     13   4462 use Zonemaster::LDNS::RR::GID;
  13         49  
  13         673  
22 13     13   4257 use Zonemaster::LDNS::RR::GPOS;
  13         43  
  13         680  
23 13     13   4320 use Zonemaster::LDNS::RR::HINFO;
  13         44  
  13         704  
24 13     13   4375 use Zonemaster::LDNS::RR::HIP;
  13         107  
  13         832  
25 13     13   4563 use Zonemaster::LDNS::RR::IPSECKEY;
  13         50  
  13         897  
26 13     13   4386 use Zonemaster::LDNS::RR::ISDN;
  13         46  
  13         770  
27 13     13   4296 use Zonemaster::LDNS::RR::KEY;
  13         47  
  13         816  
28 13     13   4409 use Zonemaster::LDNS::RR::KX;
  13         45  
  13         1022  
29 13     13   4263 use Zonemaster::LDNS::RR::L32;
  13         53  
  13         790  
30 13     13   4307 use Zonemaster::LDNS::RR::L64;
  13         42  
  13         789  
31 13     13   4269 use Zonemaster::LDNS::RR::LOC;
  13         44  
  13         830  
32 13     13   4542 use Zonemaster::LDNS::RR::LP;
  13         44  
  13         831  
33 13     13   4052 use Zonemaster::LDNS::RR::MAILA;
  13         45  
  13         851  
34 13     13   4229 use Zonemaster::LDNS::RR::MAILB;
  13         47  
  13         848  
35 13     13   4235 use Zonemaster::LDNS::RR::MB;
  13         43  
  13         877  
36 13     13   4475 use Zonemaster::LDNS::RR::MD;
  13         42  
  13         893  
37 13     13   4284 use Zonemaster::LDNS::RR::MF;
  13         45  
  13         886  
38 13     13   4172 use Zonemaster::LDNS::RR::MG;
  13         44  
  13         957  
39 13     13   4250 use Zonemaster::LDNS::RR::MINFO;
  13         43  
  13         933  
40 13     13   4124 use Zonemaster::LDNS::RR::MR;
  13         46  
  13         904  
41 13     13   4212 use Zonemaster::LDNS::RR::MX;
  13         52  
  13         1086  
42 13     13   4427 use Zonemaster::LDNS::RR::NAPTR;
  13         47  
  13         1009  
43 13     13   4463 use Zonemaster::LDNS::RR::NID;
  13         50  
  13         1004  
44 13     13   4389 use Zonemaster::LDNS::RR::NIMLOC;
  13         46  
  13         1053  
45 13     13   4489 use Zonemaster::LDNS::RR::NINFO;
  13         46  
  13         999  
46 13     13   4128 use Zonemaster::LDNS::RR::NS;
  13         42  
  13         1016  
47 13     13   4218 use Zonemaster::LDNS::RR::NSAP;
  13         49  
  13         1061  
48 13     13   4399 use Zonemaster::LDNS::RR::NSEC;
  13         46  
  13         1002  
49 13     13   4186 use Zonemaster::LDNS::RR::NSEC3;
  13         43  
  13         1047  
50 13     13   4354 use Zonemaster::LDNS::RR::NSEC3PARAM;
  13         47  
  13         1120  
51 13     13   4371 use Zonemaster::LDNS::RR::NULL;
  13         44  
  13         1109  
52 13     13   4426 use Zonemaster::LDNS::RR::NXT;
  13         49  
  13         1194  
53 13     13   4238 use Zonemaster::LDNS::RR::PTR;
  13         50  
  13         1133  
54 13     13   4217 use Zonemaster::LDNS::RR::PX;
  13         48  
  13         1145  
55 13     13   4225 use Zonemaster::LDNS::RR::RKEY;
  13         46  
  13         1167  
56 13     13   4318 use Zonemaster::LDNS::RR::RP;
  13         51  
  13         1228  
57 13     13   4410 use Zonemaster::LDNS::RR::RRSIG;
  13         101  
  13         1481  
58 13     13   4357 use Zonemaster::LDNS::RR::RT;
  13         49  
  13         1329  
59 13     13   4477 use Zonemaster::LDNS::RR::SINK;
  13         48  
  13         1230  
60 13     13   4207 use Zonemaster::LDNS::RR::SOA;
  13         50  
  13         1245  
61 13     13   4729 use Zonemaster::LDNS::RR::SPF;
  13         52  
  13         1487  
62 13     13   4363 use Zonemaster::LDNS::RR::SRV;
  13         47  
  13         1211  
63 13     13   4229 use Zonemaster::LDNS::RR::SSHFP;
  13         48  
  13         1249  
64 13     13   4348 use Zonemaster::LDNS::RR::TA;
  13         46  
  13         1253  
65 13     13   4346 use Zonemaster::LDNS::RR::TALINK;
  13         43  
  13         1235  
66 13     13   4334 use Zonemaster::LDNS::RR::TKEY;
  13         43  
  13         1517  
67 13     13   4206 use Zonemaster::LDNS::RR::TLSA;
  13         44  
  13         1272  
68 13     13   4403 use Zonemaster::LDNS::RR::TXT;
  13         47  
  13         1398  
69 13     13   4397 use Zonemaster::LDNS::RR::TYPE;
  13         48  
  13         1435  
70 13     13   5306 use Zonemaster::LDNS::RR::UID;
  13         44  
  13         1352  
71 13     13   7101 use Zonemaster::LDNS::RR::UINFO;
  13         44  
  13         1366  
72 13     13   4365 use Zonemaster::LDNS::RR::UNSPEC;
  13         45  
  13         1530  
73 13     13   4374 use Zonemaster::LDNS::RR::URI;
  13         48  
  13         1393  
74 13     13   4399 use Zonemaster::LDNS::RR::WKS;
  13         50  
  13         1738  
75 13     13   4272 use Zonemaster::LDNS::RR::X25;
  13         47  
  13         1462  
76              
77 13     13   113 use Carp;
  13         32  
  13         2611  
78              
79 13     13   12937 use overload '<=>' => \&do_compare, 'cmp' => \&do_compare, '""' => \&to_string;
  13         11479  
  13         1699  
80              
81             sub new {
82 10     10 1 1322524 my ( $class, $string ) = @_;
83              
84 10 50       50 if ( $string ) {
85 10         1341 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 3289 my ( $self ) = @_;
94              
95 1         29 return $self->owner;
96             }
97              
98             sub do_compare {
99 3     3 1 1443067 my ( $self, $other, $swapped ) = @_;
100              
101 3         43 return $self->compare( $other );
102             }
103              
104             sub to_string {
105 13     13 1 63229 my ( $self ) = @_;
106              
107 13         641 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