File Coverage

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


line stmt bran path cond sub pod time code
1               package Net::DNS::RR::A;
2                
3 26       26   156 use strict;
  26           49  
  26           896  
4 26       26   125 use warnings;
  26           40  
  26           1930  
5               our $VERSION = (qw$Id: A.pm 2003 2025-01-21 12:06:06Z willem $)[2];
6                
7 26       26   125 use base qw(Net::DNS::RR);
  26           42  
  26           2207  
8                
9                
10               =head1 NAME
11                
12               Net::DNS::RR::A - DNS A resource record
13                
14               =cut
15                
16 26       26   153 use integer;
  26           59  
  26           179  
17                
18                
19               sub _decode_rdata { ## decode rdata from wire-format octet string
20 280       280   557 my ( $self, $data, $offset ) = @_;
21                
22 280           784 $self->{address} = unpack "\@$offset a4", $$data;
23 280           494 return;
24               }
25                
26                
27               sub _encode_rdata { ## encode rdata as wire-format octet string
28 507       507   509 my $self = shift;
29                
30 507           904 return pack 'a4', $self->{address};
31               }
32                
33                
34               sub _format_rdata { ## format rdata portion of RR string.
35 53       53   58 my $self = shift;
36                
37 53           77 return $self->address;
38               }
39                
40                
41               sub _parse_rdata { ## populate RR from rdata in argument list
42 124       124   225 my ( $self, @argument ) = @_;
43                
44 124           256 $self->address(@argument);
45 124           225 return;
46               }
47                
48                
49               my $pad = pack 'x4';
50                
51               sub address {
52 394       394 1 587 my ( $self, $addr ) = @_;
53                
54 394 100         1690 return join '.', unpack 'C4', $self->{address} . $pad unless defined $addr;
55                
56               # Note: pack masks overlarge values, mostly without warning
57 155           396 my @part = split /\./, $addr;
58 155           225 my $last = pop(@part);
59 155           971 return $self->{address} = pack 'C4', @part, (0) x ( 3 - @part ), $last;
60               }
61                
62                
63               1;
64               __END__