# File lib/cidr.rb, line 769
    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