File Coverage

blib/lib/Net/Frame/Layer/OSPF/Lsa/Router.pm
Criterion Covered Total %
statement 15 46 32.6
branch 0 4 0.0
condition 0 3 0.0
subroutine 5 10 50.0
pod 5 5 100.0
total 25 68 36.7


line stmt bran cond sub pod time code
1             #
2             # $Id: Router.pm,v 1.4 2007/03/08 16:32:32 gomor Exp $
3             #
4             package Net::Frame::Layer::OSPF::Lsa::Router;
5 2     2   8 use strict;
  2         2  
  2         41  
6 2     2   5 use warnings;
  2         2  
  2         39  
7              
8 2     2   6 use Net::Frame::Layer qw(:consts :subs);
  2         2  
  2         404  
9             our @ISA = qw(Net::Frame::Layer);
10              
11             our @AS = qw(
12             flags
13             zero
14             nLink
15             );
16             our @AA = qw(
17             linkList
18             );
19             __PACKAGE__->cgBuildIndices;
20             __PACKAGE__->cgBuildAccessorsScalar(\@AS);
21             __PACKAGE__->cgBuildAccessorsArray (\@AA);
22              
23 2     2   8 use Net::Frame::Layer::OSPF qw(:consts);
  2         3  
  2         338  
24 2     2   701 use Net::Frame::Layer::OSPF::Lsa::Router::Link;
  2         3  
  2         602  
25              
26             sub new {
27             shift->SUPER::new(
28 0     0 1   flags => 0,
29             zero => 0,
30             nLink => 0,
31             linkList => [],
32             @_,
33             );
34             }
35              
36             sub getLength {
37 0     0 1   my $self = shift;
38 0           my $len = 4;
39 0           for ($self->linkList) {
40 0           $len += $_->getLength;
41             }
42 0           $len;
43             }
44              
45             sub pack {
46 0     0 1   my $self = shift;
47              
48 0 0         my $raw = $self->SUPER::pack('CCn', $self->flags, $self->zero, $self->nLink)
49             or return undef;
50              
51 0           for ($self->linkList) {
52 0           $raw .= $_->pack;
53             }
54              
55 0           $self->raw($raw);
56             }
57              
58             sub unpack {
59 0     0 1   my $self = shift;
60              
61 0 0         my ($flags, $zero, $nLink, $payload) = $self->SUPER::unpack('CCn a*',
62             $self->raw)
63             or return undef;
64              
65 0           $self->flags($flags);
66 0           $self->zero($zero);
67 0           $self->nLink($nLink);
68              
69 0           my @linkList = ();
70 0   0       while ($payload && length($payload) > 0) {
71 0           my $r = Net::Frame::Layer::OSPF::Lsa::Router::Link->new(raw => $payload);
72 0           $r->unpack;
73 0           $payload = $r->payload;
74 0           push @linkList, $r;
75             }
76 0           $self->linkList(\@linkList);
77              
78 0           $self->payload($payload);
79              
80 0           $self;
81             }
82              
83             sub print {
84 0     0 1   my $self = shift;
85              
86 0           my $l = $self->layer;
87 0           my $buf = sprintf
88             "$l: flags:0x%02x zero:0x%02x nLink:%d",
89             $self->flags,
90             $self->zero,
91             $self->nLink,
92             ;
93              
94 0           for ($self->linkList) {
95 0           $buf .= "\n".$_->print;
96             }
97 0           $buf;
98             }
99              
100             1;
101              
102             __END__