[ 
https://issues.apache.org/jira/browse/NET-679?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sebb resolved NET-679.
----------------------
    Resolution: Duplicate

> SubnetUtils.SubnetInfo doesn't represent lowAddress and highAddress.
> --------------------------------------------------------------------
>
>                 Key: NET-679
>                 URL: https://issues.apache.org/jira/browse/NET-679
>             Project: Commons Net
>          Issue Type: Bug
>    Affects Versions: 3.6
>         Environment: JDK 1.8
> Gradle
> MacOS Mojave
>            Reporter: SeHun Shin
>            Priority: Critical
>
>  
> This is my test case.
> CIDR '10.213.160.0/16' should be contain 10.213.0.0 and 10,213.255.255, but 
> shouldn't.
>  
>  
>  
> {code:java}
> // 코드 자리 표시자
> @Test
> void when16bitIsGiven_thenReturnTrue() {
>     // GIVEN
>     final String CIDR = "10.213.160.0/16";
>     SubnetInfo subnetInfo = new SubnetUtils(CIDR).getInfo();
>     final String[] givenIPs = {"10.213.0.0", "10.213.160.0", 
> "10.213.255.255"};
>     // WHEN and THEN
>     assertThat(subnetInfo.getLowAddress()).isEqualTo(givenIPs[0]);
>     assertThat(subnetInfo.getHighAddress()).isEqualTo(givenIPs[2]);
>     Stream.of(givenIPs).forEach(ip -> {
>         assertThat(subnetInfo.isInRange(ip)).isTrue();
>     });
> }
> {code}
>  
>  
> {panel}
> CIDR to IP Range{panel}
> {panel}
> h3. Result
> ||CIDR Range|10.213.160.0/16|
> ||Netmask|255.255.0.0|
> ||Wildcard Bits|0.0.255.255|
> ||First IP|10.213.0.0|
> ||Last IP|10.213.255.255|
> ||Total Host|65536|
> {panel}
>  
> I think we should care about 'SubnetInfo.low' and 'SubnetInfo.high'.
> {code:java}
> // 코드 자리 표시자
>     public final class SubnetInfo {        ...
>         private int low() {
>             return (isInclusiveHostCount() ? network() :
>                 broadcastLong() - networkLong() > 1 ? network() + 1 : 0);
>         }        private int high() {
>             return (isInclusiveHostCount() ? broadcast() :
>                 broadcastLong() - networkLong() > 1 ? broadcast() -1  : 0);
>         }        public boolean isInRange(int address) {
>             long addLong = address & UNSIGNED_INT_MASK;
>             long lowLong = low() & UNSIGNED_INT_MASK;
>             long highLong = high() & UNSIGNED_INT_MASK;
>             return addLong >= lowLong && addLong <= highLong;
>         }
>        ...
>     }
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to