File Coverage

blib/lib/Net/IP/Identifier/Plugin/Comcast.pm
Criterion Covered Total %
statement 18 18 100.0
branch n/a
condition 1 3 33.3
subroutine 6 6 100.0
pod 1 2 50.0
total 26 29 89.6


line stmt bran cond sub pod time code
1             #===============================================================================
2             # PODNAME: Net::IP::Identifier::Plugin::Comcast
3             # ABSTRACT: identify Comcast owned IP addresses
4             #
5             # AUTHOR: Reid Augustin (REID)
6             # EMAIL: reid@hellosix.com
7             # CREATED: Thu Nov 6 11:03:17 PST 2014
8             #===============================================================================
9              
10 1     1   29 use 5.008;
  1         2  
  1         37  
11 1     1   4 use strict;
  1         1  
  1         34  
12 1     1   3 use warnings;
  1         2  
  1         36  
13              
14             package Net::IP::Identifier::Plugin::Comcast;
15              
16 1     1   4 use Role::Tiny::With;
  1         3  
  1         273  
17             with qw( Net::IP::Identifier_Role );
18              
19             our $VERSION = '0.111'; # VERSION
20              
21             sub new {
22 1     1 1 3 my ($class, %opts) = @_;
23              
24 1         2 my $self = {};
25 1   33     6 bless $self, (ref $class || $class);
26              
27             # List of known Comcast IP blocks as of May 2015
28 1         6 $self->ips(
29             # 89 Network Blocks
30             '12.41.68.0/22',
31             '12.109.232.0/22',
32             '23.24.0.0/15',
33             '23.30.0.0/15',
34             '23.68.0.0/14',
35             # extending 24.0.0.0/12 to include 24.16.0.0/13
36             '24.0.0.0-24.23.255.255',
37             # extending 24.30.0.0/18 to include 24.30.64.0/19
38             # extending 24.30.0.0-24.30.95.255 to include 24.30.96.0/19
39             '24.30.0.0/17',
40             '24.34.0.0/16',
41             # extending 24.40.0.0/18 to include 24.40.64.0/20
42             '24.40.0.0-24.40.79.255',
43             '24.60.0.0/14',
44             '24.91.0.0/16',
45             '24.98.0.0/15',
46             # extending 24.104.0.0/17 to include 24.104.128.0/19
47             '24.104.0.0-24.104.159.255',
48             '24.118.0.0/16',
49             # extending 24.124.128.0/17 to include 24.125.0.0/16
50             # extending 24.124.128.0-24.125.255.255 to include 24.126.0.0/15
51             # extending 24.124.128.0-24.127.255.255 to include 24.128.0.0/16
52             # extending 24.124.128.0-24.128.255.255 to include 24.129.0.0/17
53             '24.124.128.0-24.129.127.255',
54             '24.130.0.0/15',
55             '24.147.0.0/16',
56             '24.149.128.0/17',
57             '24.153.64.0/19',
58             '24.218.0.0/16',
59             '24.245.0.0/18',
60             '50.73.0.0/16',
61             '50.76.0.0/14',
62             '50.128.0.0/9',
63             '64.56.32.0/19',
64             '64.78.64.0/18',
65             '64.139.64.0/19',
66             '64.235.160.0/19',
67             '65.34.128.0/17',
68             # extending 65.96.0.0/16 to include 65.97.0.0/19
69             '65.96.0.0-65.97.31.255',
70             '66.30.0.0/15',
71             '66.41.0.0/16',
72             '66.56.0.0/18',
73             '66.176.0.0/15',
74             '66.208.192.0/18',
75             '66.229.0.0/16',
76             '66.240.0.0/18',
77             '67.160.0.0/11',
78             '68.32.0.0/11',
79             '68.80.0.0/13',
80             '69.136.0.0/13',
81             '69.180.0.0/15',
82             '69.240.0.0/12',
83             '70.88.0.0/14',
84             '71.24.0.0/14',
85             '71.56.0.0/13',
86             '71.192.0.0/12',
87             '71.224.0.0/12',
88             '72.55.0.0/17',
89             '73.0.0.0/8',
90             '74.16.0.0/12',
91             '74.81.128.0/19',
92             '74.92.0.0/14',
93             '74.144.0.0/12',
94             # extending 75.64.0.0/13 to include 75.72.0.0/15
95             # extending 75.64.0.0-75.73.255.255 to include 75.74.0.0/16
96             # extending 75.64.0.0-75.74.255.255 to include 75.75.0.0/17
97             # extending 75.64.0.0-75.75.127.255 to include 75.75.128.0/18
98             '75.64.0.0-75.75.191.255',
99             '75.144.0.0/13',
100             '76.16.0.0/12',
101             # extending 76.96.0.0/11 to include 76.128.0.0/11
102             '76.96.0.0-76.159.255.255',
103             # extending 96.64.0.0/11 to include 96.96.0.0/12
104             # extending 96.64.0.0-96.111.255.255 to include 96.112.0.0/13
105             # extending 96.64.0.0-96.119.255.255 to include 96.120.0.0/14
106             # extending 96.64.0.0-96.123.255.255 to include 96.124.0.0/16
107             '96.64.0.0-96.124.255.255',
108             # extending 96.128.0.0/10 to include 96.192.0.0/11
109             '96.128.0.0-96.223.255.255',
110             '98.32.0.0/11',
111             '98.192.0.0/10',
112             # extending 107.0.0.0/14 to include 107.4.0.0/15
113             '107.0.0.0-107.5.255.255',
114             '108.171.224.0/20',
115             '147.191.0.0/16',
116             '162.17.0.0/16',
117             '162.148.0.0/14',
118             '165.137.0.0/16',
119             '169.152.0.0/16',
120             '172.244.0.0/16',
121             '173.8.0.0/13',
122             '173.160.0.0/13',
123             '174.48.0.0/12',
124             '174.160.0.0/11',
125             # extending 184.108.0.0/14 to include 184.112.0.0/12
126             '184.108.0.0-184.127.255.255',
127             '198.0.0.0/16',
128             '198.137.252.0/23',
129             '198.178.8.0/21',
130             '199.182.100.0/22',
131             '206.18.184.0/24',
132             '207.223.0.0/20',
133             '208.39.128.0/18',
134             '208.110.192.0/19',
135             '209.23.192.0/18',
136             '216.45.128.0/17',
137             # extending 2001:558::/31 to include 2001:55a::/31
138             # extending 2001:558::/30 to include 2001:55c::/30
139             '2001:558::/29',
140             '2601::/20',
141             '2604:6a00::/32',
142             '2620:fd:8000::/48',
143             );
144 1         8 return $self;
145             }
146              
147             sub name {
148 3     3 0 11 return 'Comcast';
149             }
150              
151             1;
152              
153             __END__