Class: IPAddress::Prefix32
Constant Summary collapse
- IN4MASK =
0xffffffff
Instance Attribute Summary
Attributes inherited from Prefix
Class Method Summary collapse
-
.parse_netmask(netmask) ⇒ Object
Creates a new prefix by parsing a netmask in dotted decimal form.
Instance Method Summary collapse
-
#[](index) ⇒ Object
Shortcut for the octecs in the dotted decimal representation.
-
#bits ⇒ Object
Transforms the prefix into a string of bits representing the netmask.
-
#host_prefix ⇒ Object
Returns the length of the host portion of a netmask.
-
#hostmask ⇒ Object
The hostmask is the contrary of the subnet mask, as it shows the bits that can change within the hosts.
-
#initialize(num) ⇒ Prefix32
constructor
Creates a new prefix object for 32 bits IPv4 addresses.
-
#octets ⇒ Object
An array of octets of the IPv4 dotted decimal format .
-
#to_ip ⇒ Object
Gives the prefix in IPv4 dotted decimal format, i.e.
-
#to_u32 ⇒ Object
Unsigned 32 bits decimal number representing the prefix.
Methods inherited from Prefix
Constructor Details
#initialize(num) ⇒ Prefix32
94 95 96 97 98 99 |
# File 'lib/ipaddress/prefix.rb', line 94 def initialize(num) unless (0..32).include? num raise ArgumentError, "Prefix must be in range 0..32, got: #{num}" end super(num) end |
Class Method Details
.parse_netmask(netmask) ⇒ Object
200 201 202 203 204 |
# File 'lib/ipaddress/prefix.rb', line 200 def self.parse_netmask(netmask) octets = netmask.split(".").map{|i| i.to_i} num = octets.pack("C"*octets.size).unpack("B*").first.count "1" return self.new(num) end |
Instance Method Details
#[](index) ⇒ Object
175 176 177 |
# File 'lib/ipaddress/prefix.rb', line 175 def [](index) octets[index] end |
#bits ⇒ Object
123 124 125 |
# File 'lib/ipaddress/prefix.rb', line 123 def bits "%.32b" % to_u32 end |
#host_prefix ⇒ Object
110 111 112 |
# File 'lib/ipaddress/prefix.rb', line 110 def host_prefix 32 - @prefix end |
#hostmask ⇒ Object
189 190 191 |
# File 'lib/ipaddress/prefix.rb', line 189 def hostmask [~to_u32].pack("N").unpack("CCCC").join(".") end |
#octets ⇒ Object
149 150 151 |
# File 'lib/ipaddress/prefix.rb', line 149 def octets to_ip.split(".").map{|i| i.to_i} end |
#to_ip ⇒ Object
136 137 138 |
# File 'lib/ipaddress/prefix.rb', line 136 def to_ip [bits].pack("B*").unpack("CCCC").join(".") end |