Class IpSubnet

  • All Implemented Interfaces:
    Comparable<IpSubnet>, IpSet
    Direct Known Subclasses:
    IpSubnetFilterRule

    public class IpSubnet
    extends Object
    implements IpSet, Comparable<IpSubnet>
    This class allows to check if an IP V4 or V6 Address is contained in a subnet.

    Supported IP V4 Formats for the Subnets are: 1.1.1.1/255.255.255.255 or 1.1.1.1/32 (CIDR-Notation) and (InetAddress,Mask) where Mask is a integer for CIDR-notation or a String for Standard Mask notation.


    Example1:
    IpV4Subnet ips = new IpV4Subnet("192.168.1.0/24");
    System.out.println("Result: "+ ips.contains("192.168.1.123"));
    System.out.println("Result: "+ ips.contains(inetAddress2));

    Example1 bis:
    IpV4Subnet ips = new IpV4Subnet(inetAddress, 24);
    where inetAddress is 192.168.1.0 and inetAddress2 is 192.168.1.123


    Example2:
    IpV4Subnet ips = new IpV4Subnet("192.168.1.0/255.255.255.0");
    System.out.println("Result: "+ ips.contains("192.168.1.123"));
    System.out.println("Result: "+ ips.contains(inetAddress2));

    Example2 bis:
    IpV4Subnet ips = new IpV4Subnet(inetAddress, "255.255.255.0");
    where inetAddress is 192.168.1.0 and inetAddress2 is 192.168.1.123

    Supported IP V6 Formats for the Subnets are: a:b:c:d:e:f:g:h/NN (CIDR-Notation) or any IPV6 notations (like a:b:c:d::/NN, a:b:c:d:e:f:w.x.y.z/NN) and (InetAddress,Mask) where Mask is a integer for CIDR-notation and (InetAddress,subnet).


    Example1:
    IpSubnet ips = new IpSubnet("1fff:0:0a88:85a3:0:0:0:0/24");
    IpSubnet ips = new IpSubnet("1fff:0:0a88:85a3::/24");
    System.out.println("Result: "+ ips.contains("1fff:0:0a88:85a3:0:0:ac1f:8001"));
    System.out.println("Result: "+ ips.contains(inetAddress2));

    Example1 bis:
    IpSubnet ips = new IpSubnet(inetAddress, 24);
    where inetAddress2 is 1fff:0:0a88:85a3:0:0:ac1f:8001

    • Constructor Summary

      Constructors 
      Constructor Description
      IpSubnet()
      Create IpSubnet for ALL (used for ALLOW or DENY ALL)
      IpSubnet​(String netAddress)
      Create IpSubnet using the CIDR or normal Notation
      i.e.:
      IpSubnet subnet = new IpSubnet("10.10.10.0/24"); or
      IpSubnet subnet = new IpSubnet("10.10.10.0/255.255.255.0"); or
      IpSubnet subnet = new IpSubnet("1fff:0:0a88:85a3:0:0:0:0/24");
      IpSubnet​(InetAddress inetAddress, int cidrNetMask)
      Create IpSubnet using the CIDR Notation
      IpSubnet​(InetAddress inetAddress, String netMask)
      Create IpSubnet using the normal Notation
    • Constructor Detail

      • IpSubnet

        public IpSubnet()
        Create IpSubnet for ALL (used for ALLOW or DENY ALL)
      • IpSubnet

        public IpSubnet​(String netAddress)
                 throws UnknownHostException
        Create IpSubnet using the CIDR or normal Notation
        i.e.:
        IpSubnet subnet = new IpSubnet("10.10.10.0/24"); or
        IpSubnet subnet = new IpSubnet("10.10.10.0/255.255.255.0"); or
        IpSubnet subnet = new IpSubnet("1fff:0:0a88:85a3:0:0:0:0/24");
        Parameters:
        netAddress - a network address as string.
        Throws:
        UnknownHostException
    • Method Detail

      • contains

        public boolean contains​(String ipAddr)
                         throws UnknownHostException
        Compares the given IP-Address against the Subnet and returns true if the ip is in the subnet-ip-range and false if not.
        Parameters:
        ipAddr - an ipaddress
        Returns:
        returns true if the given IP address is inside the currently set network.
        Throws:
        UnknownHostException
      • contains

        public boolean contains​(InetAddress inetAddress)
        Compares the given InetAddress against the Subnet and returns true if the ip is in the subnet-ip-range and false if not.
        Specified by:
        contains in interface IpSet
        Returns:
        returns true if the given IP address is inside the currently set network.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object