# File firewall/lib/symbiosis/firewall/pattern.rb, line 72
      def apply(lines)
        # This returns a has of IPs summed up.
        results = Hash.new{|h,k| h[k] = Hash.new{|i,l| i[l] = 0 }}

        lines.each do |line|
          @patterns.each do |pattern|
            next unless line =~ pattern
            ip = $1

            begin
              ip = IPAddr.new(ip)
            rescue ArgumentError
              warn "Failed to parse IP #{ip.inspect}"
            end

            next unless ip.is_a?(IPAddr)

            #
            # Only apply /64 for ipv6 addresses.
            #
            ip = ip.mask( 64 ) if ip.ipv6?

            @ports.each do |port|
              results[ip.to_s][port] += 1
            end
          end
        end

        results
      end