# File lib/cidr.rb, line 2152
    def CIDRv6.unique_local(eui)

        if (eui.kind_of?(NetAddr::EUI48) )
            eui = eui.to_eui64.to_s
        elsif (eui.kind_of?(NetAddr::EUI64) )
            eui = eui.to_s
        else
            raise ArgumentError, "Expected NetAddr::EUI object but #{eui.class} received."
        end

        ntp_time = ''

        # get current time (32-bits), convert to 4-byte string, and append to ntp_time
        time = Time.now.to_i
        4.times do
            ntp_time.insert(0, (time & 0xff).chr )
            time = time >> 8
        end

        # create 32-bit fractional, convert to 4-byte string, and append to ntp_time
        fract = rand(2**32-1)
        4.times do
            ntp_time.insert(0, (fract & 0xff).chr )
            fract = fract >> 8
        end

        # create sha1 hash
        pre_hash = ntp_time << eui
        gid = Digest::SHA1.hexdigest(pre_hash).slice!(30..39)
        addr = 'fd' << gid << '00000000000000000000'

        return( NetAddr::CIDRv6.new(addr.to_i(16), 0xffffffffffff00000000000000000000 ) )
    end