# File common/lib/symbiosis/ipaddr.rb, line 93
  def cidr_mask
    #
    # Hmm.. this is a bit horrid.  But without a log2 function, there's not
    # much else we can do..
    case @family
    when Socket::AF_INET
      @mask_addr = IN4MASK if @mask_addr > IN4MASK
      n_addresses = ((~@mask_addr) & IN4MASK) + 1
      32 - (0..32).find{|m| 2**m == n_addresses}
    when Socket::AF_INET6
      @mask_addr = IN6MASK if @mask_addr > IN6MASK
      n_addresses = ((~@mask_addr) & IN6MASK) + 1
      128 - (0..128).find{|m| 2**m == n_addresses}
    end
  end