Mercurial > repos > other > Puppet
comparison modules/firewall/lib/puppet/util/ipcidr.rb @ 39:d6f2a0ee45c0 puppet-3.6
Add "Firewall" module
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 14 Mar 2015 20:58:03 +0000 |
parents | |
children | d9352a684e62 |
comparison
equal
deleted
inserted
replaced
38:a1960fb961c5 | 39:d6f2a0ee45c0 |
---|---|
1 require 'ipaddr' | |
2 | |
3 # IPCidr object wrapper for IPAddr | |
4 module Puppet | |
5 module Util | |
6 class IPCidr < IPAddr | |
7 def initialize(ipaddr) | |
8 begin | |
9 super(ipaddr) | |
10 rescue ArgumentError => e | |
11 if e.message =~ /invalid address/ | |
12 raise ArgumentError, "Invalid address from IPAddr.new: #{ipaddr}" | |
13 else | |
14 raise e | |
15 end | |
16 end | |
17 end | |
18 | |
19 def netmask | |
20 _to_string(@mask_addr) | |
21 end | |
22 | |
23 def prefixlen | |
24 m = case @family | |
25 when Socket::AF_INET | |
26 IN4MASK | |
27 when Socket::AF_INET6 | |
28 IN6MASK | |
29 else | |
30 raise "unsupported address family" | |
31 end | |
32 return $1.length if /\A(1*)(0*)\z/ =~ (@mask_addr & m).to_s(2) | |
33 raise "bad addr_mask format" | |
34 end | |
35 | |
36 def cidr | |
37 cidr = sprintf("%s/%s", self.to_s, self.prefixlen) | |
38 cidr | |
39 end | |
40 end | |
41 end | |
42 end |