File Coverage

blib/lib/Net/DNS/RR/L64.pm
Criterion Covered Total %
statement 33 33 100.0
branch 4 4 100.0
path n/a
condition 2 2 100.0
subroutine 10 10 100.0
pod 2 2 100.0
total 51 51 100.0


line stmt bran path cond sub pod time code
1               package Net::DNS::RR::L64;
2                
3 1       1   6 use strict;
  1           2  
  1           32  
4 1       1   3 use warnings;
  1           1  
  1           84  
5               our $VERSION = (qw$Id: L64.pm 2003 2025-01-21 12:06:06Z willem $)[2];
6                
7 1       1   4 use base qw(Net::DNS::RR);
  1           1  
  1           92  
8                
9                
10               =head1 NAME
11                
12               Net::DNS::RR::L64 - DNS L64 resource record
13                
14               =cut
15                
16 1       1   4 use integer;
  1           1  
  1           6  
17                
18                
19               sub _decode_rdata { ## decode rdata from wire-format octet string
20 1       1   2 my ( $self, $data, $offset ) = @_;
21                
22 1           2 @{$self}{qw(preference locator64)} = unpack "\@$offset n a8", $$data;
  1           3  
23 1           2 return;
24               }
25                
26                
27               sub _encode_rdata { ## encode rdata as wire-format octet string
28 5       5   6 my $self = shift;
29                
30 5           12 return pack 'n a8', $self->{preference}, $self->{locator64};
31               }
32                
33                
34               sub _format_rdata { ## format rdata portion of RR string.
35 2       2   2 my $self = shift;
36                
37 2           4 return join ' ', $self->preference, $self->locator64;
38               }
39                
40                
41               sub _parse_rdata { ## populate RR from rdata in argument list
42 1       1   2 my ( $self, @argument ) = @_;
43                
44 1           1 for (qw(preference locator64)) { $self->$_( shift @argument ) }
  2           6  
45 1           2 return;
46               }
47                
48                
49               sub preference {
50 6       6 1 12 my ( $self, @value ) = @_;
51 6           7 for (@value) { $self->{preference} = 0 + $_ }
  2           6  
52 6     100     21 return $self->{preference} || 0;
53               }
54                
55                
56               sub locator64 {
57 6       6 1 1018 my $self = shift;
58 6           22 my $prfx = shift;
59                
60 6 100         11 $self->{locator64} = pack 'n4', map { hex($_) } split /:/, $prfx if defined $prfx;
  8           15  
61                
62 6 100         37 return $self->{locator64} ? sprintf( '%x:%x:%x:%x', unpack 'n4', $self->{locator64} ) : undef;
63               }
64                
65                
66               my $function = sub { ## sort RRs in numerically ascending order.
67               return $Net::DNS::a->{'preference'} <=> $Net::DNS::b->{'preference'};
68               };
69                
70               __PACKAGE__->set_rrsort_func( 'preference', $function );
71                
72               __PACKAGE__->set_rrsort_func( 'default_sort', $function );
73                
74                
75               1;
76               __END__