def enumerate(options=nil)
known_args = [:Bitstep, :Limit, :Objectify, :Short]
bitstep = 1
objectify = false
limit = nil
short = false
if (options)
if (!options.kind_of? Hash)
raise ArgumentError, "Expected Hash, but #{options.class} provided."
end
NetAddr.validate_args(options.keys,known_args)
if( options.has_key?(:Bitstep) )
bitstep = options[:Bitstep]
end
if( options.has_key?(:Objectify) && options[:Objectify] == true )
objectify = true
end
if( options.has_key?(:Limit) )
limit = options[:Limit]
end
if( options.has_key?(:Short) && options[:Short] == true )
short = true
end
end
list = []
my_ip = @network
change_mask = @hostmask | my_ip
until ( change_mask != (@hostmask | @network) )
if (!objectify)
my_ip_s = NetAddr.ip_int_to_str(my_ip, @version)
my_ip_s = NetAddr.shorten(my_ip_s) if (short && @version == 6)
list.push( my_ip_s )
else
list.push( NetAddr.cidr_build(@version,my_ip) )
end
my_ip = my_ip + bitstep
change_mask = @hostmask | my_ip
if (limit)
limit = limit -1
break if (limit == 0)
end
end
return(list)
end