Skip to content

Commit c871109

Browse files
authored
Merge pull request #322 from AikidoSec/fix/iplist-blocklist-scan-perf
Replace linear IP blocklist scan with indexed trie lookup
2 parents 0c3a030 + 6a2a934 commit c871109

1 file changed

Lines changed: 4 additions & 11 deletions

File tree

  • agent_api/src/main/java/dev/aikido/agent_api/helpers/net

agent_api/src/main/java/dev/aikido/agent_api/helpers/net/IPList.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,13 @@
22

33
import inet.ipaddr.IPAddress;
44
import inet.ipaddr.IPAddressString;
5-
6-
import java.util.HashSet;
7-
import java.util.Set;
5+
import inet.ipaddr.format.util.DualIPv4v6Tries;
86

97
public class IPList {
10-
private Set<IPAddress> ipAddresses;
8+
private final DualIPv4v6Tries ipAddresses;
119

1210
public IPList() {
13-
this.ipAddresses = new HashSet<>();
11+
this.ipAddresses = new DualIPv4v6Tries();
1412
}
1513

1614
public void add(String ipOrCIDR) {
@@ -56,12 +54,7 @@ public boolean matches(String ip) {
5654
}
5755

5856
private boolean containsAddress(IPAddress ipAddress) {
59-
for (IPAddress subnet : ipAddresses) {
60-
if (subnet.contains(ipAddress)) {
61-
return true;
62-
}
63-
}
64-
return false;
57+
return ipAddresses.elementContains(ipAddress);
6558
}
6659
public int length() {
6760
return ipAddresses.size();

0 commit comments

Comments
 (0)