File Coverage

blib/lib/Socket/Multicast6.pm
Criterion Covered Total %
statement 24 28 85.7
branch 2 6 33.3
condition n/a
subroutine 7 7 100.0
pod n/a
total 33 41 80.4


line stmt bran cond sub pod time code
1             package Socket::Multicast6;
2              
3 5     5   171991 use strict;
  5         11  
  5         184  
4 5     5   25 use warnings;
  5         7  
  5         159  
5 5     5   26 use vars qw(@ISA $VERSION);
  5         11  
  5         284  
6 5     5   26 use Carp;
  5         9  
  5         2173  
7              
8             our $VERSION = '0.04';
9              
10             require XSLoader;
11             XSLoader::load('Socket::Multicast6', $VERSION);
12              
13             require Exporter;
14             our @ISA = qw(Exporter);
15              
16              
17             my @export_ipv4 = qw(
18             IP_MULTICAST_IF
19             IP_MULTICAST_TTL
20             IP_MULTICAST_LOOP
21             IP_ADD_MEMBERSHIP
22             IP_DROP_MEMBERSHIP
23             IP_ADD_SOURCE_MEMBERSHIP
24             IP_DROP_SOURCE_MEMBERSHIP
25             pack_ip_mreq
26             pack_ip_mreq_source
27             );
28              
29             my @export_ipv6 = qw(
30             IPV6_MULTICAST_IF
31             IPV6_MULTICAST_HOPS
32             IPV6_MULTICAST_LOOP
33             IPV6_JOIN_GROUP
34             IPV6_LEAVE_GROUP
35             pack_ipv6_mreq
36             );
37              
38             my @export_independent = qw(
39             MCAST_JOIN_GROUP
40             MCAST_BLOCK_SOURCE
41             MCAST_UNBLOCK_SOURCE
42             MCAST_LEAVE_GROUP
43             MCAST_JOIN_SOURCE_GROUP
44             MCAST_LEAVE_SOURCE_GROUP
45             );
46              
47             our %EXPORT_TAGS = (
48             'ipv4' => [ @export_ipv4 ],
49             'ipv6' => [ @export_ipv6 ],
50             'independent' => [ @export_independent ],
51             'all' => [ @export_ipv4, @export_ipv6, @export_independent ],
52             );
53              
54              
55             our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
56             our @EXPORT = ( );
57              
58             sub AUTOLOAD {
59             # This AUTOLOAD is used to 'autoload' constants from the constant()
60             # XS function. If a constant is not found then control is passed
61             # to the AUTOLOAD in AutoLoader.
62            
63 11     11   7590 my $constname;
64 11         16 our $AUTOLOAD;
65 11         60 ($constname = $AUTOLOAD) =~ s/.*:://;
66 11 50       39 croak "&Socket::Multicast6::constant not defined" if $constname eq 'constant';
67 11         42 my ($error, $val) = constant($constname);
68 11 50       26 if ($error) {
69 0 0       0 if ($error =~ /is not a valid/) {
70 0         0 $AutoLoader::AUTOLOAD = $AUTOLOAD;
71 0         0 goto &AutoLoader::AUTOLOAD;
72             } else {
73 0         0 croak $error;
74             }
75             }
76 5     5   27 no strict 'refs';
  5         8  
  5         414  
77 11     11   76 *$AUTOLOAD = sub { $val };
  11         83  
78 11         45 goto &$AUTOLOAD;
79             }
80              
81              
82              
83             1;
84             __END__