|
@@ -16,7 +16,9 @@
|
|
|
|
|
|
package org.elasticsearch.common.network;
|
|
|
|
|
|
+import org.elasticsearch.common.collect.Tuple;
|
|
|
import org.elasticsearch.test.ESTestCase;
|
|
|
+import org.hamcrest.Matchers;
|
|
|
|
|
|
import java.net.InetAddress;
|
|
|
import java.net.UnknownHostException;
|
|
@@ -214,4 +216,34 @@ public class InetAddressesTests extends ESTestCase {
|
|
|
InetAddress ip = InetAddresses.forString(ipStr);
|
|
|
assertEquals("[3ffe::1]", InetAddresses.toUriString(ip));
|
|
|
}
|
|
|
+
|
|
|
+ public void testParseCidr() {
|
|
|
+ IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> InetAddresses.parseCidr(""));
|
|
|
+ assertThat(e.getMessage(), Matchers.containsString("Expected [ip/prefix] but was []"));
|
|
|
+
|
|
|
+ e = expectThrows(IllegalArgumentException.class, () -> InetAddresses.parseCidr("192.168.1.42/33"));
|
|
|
+ assertThat(e.getMessage(), Matchers.containsString("Illegal prefix length"));
|
|
|
+
|
|
|
+ e = expectThrows(IllegalArgumentException.class, () -> InetAddresses.parseCidr("::1/129"));
|
|
|
+ assertThat(e.getMessage(), Matchers.containsString("Illegal prefix length"));
|
|
|
+
|
|
|
+ e = expectThrows(IllegalArgumentException.class, () -> InetAddresses.parseCidr("::ffff:0:0/96"));
|
|
|
+ assertThat(e.getMessage(), Matchers.containsString("CIDR notation is not allowed with IPv6-mapped IPv4 address"));
|
|
|
+
|
|
|
+ Tuple<InetAddress, Integer> cidr = InetAddresses.parseCidr("192.168.0.0/24");
|
|
|
+ assertEquals(InetAddresses.forString("192.168.0.0"), cidr.v1());
|
|
|
+ assertEquals(Integer.valueOf(24), cidr.v2());
|
|
|
+
|
|
|
+ cidr = InetAddresses.parseCidr("::fffe:0:0/95");
|
|
|
+ assertEquals(InetAddresses.forString("::fffe:0:0"), cidr.v1());
|
|
|
+ assertEquals(Integer.valueOf(95), cidr.v2());
|
|
|
+
|
|
|
+ cidr = InetAddresses.parseCidr("192.168.0.0/32");
|
|
|
+ assertEquals(InetAddresses.forString("192.168.0.0"), cidr.v1());
|
|
|
+ assertEquals(Integer.valueOf(32), cidr.v2());
|
|
|
+
|
|
|
+ cidr = InetAddresses.parseCidr("::fffe:0:0/128");
|
|
|
+ assertEquals(InetAddresses.forString("::fffe:0:0"), cidr.v1());
|
|
|
+ assertEquals(Integer.valueOf(128), cidr.v2());
|
|
|
+ }
|
|
|
}
|