diff options
author | Tobias Brunner <tobias@strongswan.org> | 2017-06-21 16:22:11 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2017-07-03 10:27:51 +0200 |
commit | 54714331e41eceb2591f704748d652e0054dd388 (patch) | |
tree | d0cb7ab7a1dd07e60a308ff32ea460e17475a985 | |
parent | 78b20efb298371c2f487d51eef18d333afef4ca6 (diff) | |
download | strongswan-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.java | 16 | ||||
-rw-r--r-- | src/frontends/android/app/src/test/java/org/strongswan/android/test/IPRangeSetTest.java | 20 |
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"); |