package com.limegroup.gnutella.filters;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
/**
* A mutable list of IP addresses. More specifically, a list of sets of
* addresses, like "18.239.0.*". Provides fast operations to find if an address
* is in the list. Used to implement IPFilter. Not synchronized.
*
* @author Gregorio Roper
*/
public class IPList {
/** The list of IP's. */
private List /* of IP */ ips = new LinkedList();
public IPList () {}
/**
* Adds a certain IP to the IPList.
* @param ip_str a String containing the IP, see IP.java for formatting
*/
public void add(String ip_str) {
IP ip;
try {
ip = new IP(ip_str);
} catch (IllegalArgumentException e) {
return;
}
if (!ips.contains(ip)) {// don't add the same IP more than once
ips.add(ip);
}
}
/**
* @param String equal to an IP
* @returns true if ip_address is contained somewhere in the list of IPs
*/
public boolean contains (IP ip) {
for (Iterator iter=ips.iterator(); iter.hasNext(); ) {
IP pattern=(IP)iter.next();
if (pattern.contains(ip))
return true;
}
return false;
}
}