File Coverage

blib/lib/Net/DNS/RR/A.pm
Criterion Covered Total %
statement 27 27 100.0
branch 2 2 100.0
condition n/a
subroutine 9 9 100.0
pod 1 1 100.0
total 39 39 100.0


line stmt bran cond sub pod time code
1             package Net::DNS::RR::A;
2              
3 26     26   212 use strict;
  26         52  
  26         1092  
4 26     26   128 use warnings;
  26         42  
  26         2543  
5             our $VERSION = (qw$Id: A.pm 2003 2025-01-21 12:06:06Z willem $)[2];
6              
7 26     26   164 use base qw(Net::DNS::RR);
  26         54  
  26         2640  
8              
9              
10             =head1 NAME
11              
12             Net::DNS::RR::A - DNS A resource record
13              
14             =cut
15              
16 26     26   177 use integer;
  26         59  
  26         162  
17              
18              
19             sub _decode_rdata { ## decode rdata from wire-format octet string
20 308     308   2828 my ( $self, $data, $offset ) = @_;
21              
22 308         1244 $self->{address} = unpack "\@$offset a4", $$data;
23 308         711 return;
24             }
25              
26              
27             sub _encode_rdata { ## encode rdata as wire-format octet string
28 507     507   727 my $self = shift;
29              
30 507         1497 return pack 'a4', $self->{address};
31             }
32              
33              
34             sub _format_rdata { ## format rdata portion of RR string.
35 53     53   86 my $self = shift;
36              
37 53         146 return $self->address;
38             }
39              
40              
41             sub _parse_rdata { ## populate RR from rdata in argument list
42 124     124   281 my ( $self, @argument ) = @_;
43              
44 124         340 $self->address(@argument);
45 124         283 return;
46             }
47              
48              
49             my $pad = pack 'x4';
50              
51             sub address {
52 404     404 1 819 my ( $self, $addr ) = @_;
53              
54 404 100       2529 return join '.', unpack 'C4', $self->{address} . $pad unless defined $addr;
55              
56             # Note: pack masks overlarge values, mostly without warning
57 155         484 my @part = split /\./, $addr;
58 155         319 my $last = pop(@part);
59 155         1118 return $self->{address} = pack 'C4', @part, (0) x ( 3 - @part ), $last;
60             }
61              
62              
63             1;
64             __END__