You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by GitBox <gi...@apache.org> on 2019/09/16 21:35:55 UTC
[GitHub] [commons-net] nikunjb removed a comment on issue #41: [NET-405]
Support for IPv6 in SubnetUtils
nikunjb removed a comment on issue #41: [NET-405] Support for IPv6 in SubnetUtils
URL: https://github.com/apache/commons-net/pull/41#issuecomment-531967768
Following patch fixes the IPV4 isInRange() regression :
diff --git a/src/main/java/org/apache/commons/net/util/IP4Subnet.java b/src/main/java/org/apache/commons/net/util/IP4Subnet.java
index 72d787d8..6f6202cc 100644
--- a/src/main/java/org/apache/commons/net/util/IP4Subnet.java
+++ b/src/main/java/org/apache/commons/net/util/IP4Subnet.java
@@ -216,7 +216,7 @@ public final class IP4Subnet extends SubnetUtils.SubnetInfo
/**
* Returns {@code true} if the parameter {@code address} is in the range of usable endpoint addresses for this subnet.
- * This excludes the network and broadcast addresses.
+ * This excludes the network and broadcast addresses if inclusiveHostCount is false.
*
* @param address a dot-delimited IPv4 address, e.g. "192.168.0.1"
* @return {@code true} if in range, {@code false} otherwise
@@ -229,7 +229,7 @@ public final class IP4Subnet extends SubnetUtils.SubnetInfo
/**
* Returns {@code true} if the parameter {@code address} is in the range of usable endpoint addresses for this subnet.
- * This excludes the network and broadcast addresses.
+ * This excludes the network and broadcast addresses if inclusiveHostCount is false.
*
* @param address an IPv4 address in binary
* @return {@code true} if in range, {@code false} otherwise
@@ -239,7 +239,13 @@ public final class IP4Subnet extends SubnetUtils.SubnetInfo
{
long addLong = address & UNSIGNED_INT_MASK;
- return (addLong > networkLong()) && (addLong < broadcastLong());
+ long n = networkLong();
+ long b = broadcastLong();
+
+ long low = inclusiveHostCount ? n - 1: n;
+ long high = inclusiveHostCount ? b + 1 : b;
+
+ return (addLong > low) && (addLong < high);
}
/**
diff --git a/src/main/java/org/apache/commons/net/util/SubnetUtils.java b/src/main/java/org/apache/commons/net/util/SubnetUtils.java
index 3a7093fd..ad4787b0 100644
--- a/src/main/java/org/apache/commons/net/util/SubnetUtils.java
+++ b/src/main/java/org/apache/commons/net/util/SubnetUtils.java
@@ -197,7 +197,6 @@ public class SubnetUtils
/**
* Returns {@code true} if the parameter {@code address} is in the range of usable endpoint addresses for this subnet.
- * This excludes the network and broadcast addresses if the address is IPv4 address.
*
* @param address a dot-delimited IPv4 address, e.g. "192.168.0.1", or
* a colon-hexadecimal IPv6 address, e.g. "2001:db8::ff00:42:8329"
@@ -207,7 +206,6 @@ public class SubnetUtils
/**
* Returns {@code true} if the parameter {@code address} is in the range of usable endpoint addresses for this subnet.
- * This excludes the network and broadcast addresses if the address is IPv4 address.
*
* @param address the address to check
* @return {@code true} if it is in range
diff --git a/src/test/java/org/apache/commons/net/SubnetUtilsTest.java b/src/test/java/org/apache/commons/net/SubnetUtilsTest.java
index b93e3b10..f5d856d6 100644
--- a/src/test/java/org/apache/commons/net/SubnetUtilsTest.java
+++ b/src/test/java/org/apache/commons/net/SubnetUtilsTest.java
@@ -203,6 +203,7 @@ public class SubnetUtilsTest extends TestCase {
info = utils.getInfo();
assertEquals("255.255.255.255", info.getNetmask());
assertEquals(1, info.getAddressCount());
+ assertTrue(info.isInRange("192.168.0.1"));
new SubnetUtils("192.168.0.1/1");
}
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services