def nth(index, options=nil)
known_args = [:Objectify, :Short]
objectify = false
short = false
raise ArgumentError, "Integer expected for argument 'index' but " +
"#{index.class} provided." if (!index.kind_of?(Integer) )
if (options)
raise ArgumentError, "Hash expected for argument 'options' but #{options.class} provided." if (!options.kind_of?(Hash) )
NetAddr.validate_args(options.keys,known_args)
if( options.has_key?(:Short) && options[:Short] == true )
short = true
end
if( options.has_key?(:Objectify) && options[:Objectify] == true )
objectify = true
end
end
my_ip = @network + index
if ( (@hostmask | my_ip) == (@hostmask | @network) )
if (!objectify)
my_ip = NetAddr.ip_int_to_str(my_ip, @version)
my_ip = NetAddr.shorten(my_ip) if (short && @version == 6)
else
my_ip = NetAddr.cidr_build(@version,my_ip)
end
else
raise BoundaryError, "Index of #{index} returns IP that is out of " +
"bounds of CIDR network."
end
return(my_ip)
end