Bug #13399
Updated by nobu (Nobuyoshi Nakada) over 7 years ago
API Class `IPAddr` IPAddr can be initialised with e.g. '1.2.3.4/255.255.255.1', which is an invalid mask for an IPv4 address, however, `IPAddr.new` IPAddr.new won't throw `ArgumentError`, ArgumentError, nor `ip.ipv4?` ip.ipv4? will return `false`. false. ```ruby $ cat iptest.rb require 'ipaddr' begin ip = IPAddr.new('1.2.3.4/255.255.255.1') rescue ArgumentError puts 'ArgumentError was thrown' end puts 'IP address is valid' if ip.ipv4? ``` ``` $ ruby iptest.rb IP address is valid ``` ``` $ ipcalc 1.2.3.4/255.255.255.1 INVALID NETMASK INVALID MASK1: 255.255.255.1 Address: 1.2.3.4 00000001.00000010.00000011. 00000100 Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000 Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111 => Network: 1.2.3.0/24 00000001.00000010.00000011. 00000000 HostMin: 1.2.3.1 00000001.00000010.00000011. 00000001 HostMax: 1.2.3.254 00000001.00000010.00000011. 11111110 Broadcast: 1.2.3.255 00000001.00000010.00000011. 11111111 Hosts/Net: 254 Class A