aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2017-06-21 16:22:11 +0200
committerTobias Brunner <tobias@strongswan.org>2017-07-03 10:27:51 +0200
commit54714331e41eceb2591f704748d652e0054dd388 (patch)
treed0cb7ab7a1dd07e60a308ff32ea460e17475a985
parent78b20efb298371c2f487d51eef18d333afef4ca6 (diff)
downloadstrongswan-54714331e41eceb2591f704748d652e0054dd388.tar.bz2
strongswan-54714331e41eceb2591f704748d652e0054dd388.tar.xz
android: Add ability to remove a range set from another
-rw-r--r--src/frontends/android/app/src/main/java/org/strongswan/android/utils/IPRangeSet.java16
-rw-r--r--src/frontends/android/app/src/test/java/org/strongswan/android/test/IPRangeSetTest.java20
2 files changed, 36 insertions, 0 deletions
diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/utils/IPRangeSet.java b/src/frontends/android/app/src/main/java/org/strongswan/android/utils/IPRangeSet.java
index e6884c65e..3749ac02c 100644
--- a/src/frontends/android/app/src/main/java/org/strongswan/android/utils/IPRangeSet.java
+++ b/src/frontends/android/app/src/main/java/org/strongswan/android/utils/IPRangeSet.java
@@ -109,6 +109,22 @@ public class IPRangeSet
}
/**
+ * Remove the given ranges from ranges in this set.
+ */
+ public void remove(IPRangeSet ranges)
+ {
+ if (ranges == this)
+ {
+ mRanges.clear();
+ return;
+ }
+ for (IPRange range : ranges.mRanges)
+ {
+ remove(range);
+ }
+ }
+
+ /**
* Returns the subnets derived from all the ranges in this set.
*/
public Enumeration<IPRange> getSubnets()
diff --git a/src/frontends/android/app/src/test/java/org/strongswan/android/test/IPRangeSetTest.java b/src/frontends/android/app/src/test/java/org/strongswan/android/test/IPRangeSetTest.java
index 3f0e33e62..6c6e1593f 100644
--- a/src/frontends/android/app/src/test/java/org/strongswan/android/test/IPRangeSetTest.java
+++ b/src/frontends/android/app/src/test/java/org/strongswan/android/test/IPRangeSetTest.java
@@ -167,6 +167,26 @@ public class IPRangeSetTest
}
@Test
+ public void testRemoveRangesIdent() throws UnknownHostException
+ {
+ IPRangeSet set = IPRangeSet.fromString("192.168.1.0/24 192.168.4.0/24");
+ set.remove(set);
+ assertEquals("size", 0, set.size());
+ assertSubnets(set.getSubnets());
+ }
+
+ @Test
+ public void testRemoveRanges() throws UnknownHostException
+ {
+ IPRangeSet set = IPRangeSet.fromString("192.168.0.0/16");
+ IPRangeSet remove = IPRangeSet.fromString("192.168.1.0/24 192.168.3.0/24 192.168.16.0-192.168.255.255");
+ set.remove(remove);
+ assertEquals("size", 3, set.size());
+ assertSubnets(set.getSubnets(), new IPRange("192.168.0.0/24"), new IPRange("192.168.2.0/24"),
+ new IPRange("192.168.4.0/22"), new IPRange("192.168.8.0/21"));
+ }
+
+ @Test
public void testFromStringSingle() throws UnknownHostException
{
IPRangeSet set = IPRangeSet.fromString("192.168.1.0/24");