summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/ipaddr.rb5
-rw-r--r--test/test_ipaddr.rb11
2 files changed, 16 insertions, 0 deletions
diff --git a/lib/ipaddr.rb b/lib/ipaddr.rb
index 6c0ded2a77..c21c0cbf12 100644
--- a/lib/ipaddr.rb
+++ b/lib/ipaddr.rb
@@ -466,6 +466,11 @@ class IPAddr
af, _to_string(@addr), _to_string(@mask_addr))
end
+ # Returns the netmask in string format e.g. 255.255.0.0
+ def netmask
+ _to_string(@mask_addr)
+ end
+
protected
# Set +@addr+, the internal stored ip address, to given +addr+. The
diff --git a/test/test_ipaddr.rb b/test/test_ipaddr.rb
index 2b6e5c7524..c055f4b2c4 100644
--- a/test/test_ipaddr.rb
+++ b/test/test_ipaddr.rb
@@ -220,6 +220,17 @@ class TC_IPAddr < Test::Unit::TestCase
assert_equal("3ffe:0505:0002:0000:0000:0000:0000:0001", IPAddr.new("3ffe:505:2::1").to_string)
assert_equal("3ffe:505:2::1", IPAddr.new("3ffe:505:2::1").to_s)
end
+
+ def test_netmask
+ a = IPAddr.new("192.168.1.2/8")
+ assert_equal(a.netmask, "255.0.0.0")
+
+ a = IPAddr.new("192.168.1.2/16")
+ assert_equal(a.netmask, "255.255.0.0")
+
+ a = IPAddr.new("192.168.1.2/24")
+ assert_equal(a.netmask, "255.255.255.0")
+ end
end
class TC_Operator < Test::Unit::TestCase