Class NetMask
The constructor takes a string as an argument which represents a netmask, as per the CIDR notation -- whether this
netmask be IPv4 or IPv6. It then extracts the network address (before the /) and the CIDR prefix (after the /), and
tells through the #matches() method whether a candidate InetAddress
object fits in the recorded range.
As byte arrays as returned by InetAddress.getByName()
are always in network byte order, finding a match
is therefore as simple as testing whether the n first bits (where n is the CIDR) are the same in both byte arrays
(the one of the network address and the one of the candidate address). We do that by first doing byte comparisons,
then testing the last bits if any (that is, if the remainder of the integer division of the CIDR by 8 is not 0).
As a bonus, if no '/' is found in the input, it is assumed that an exact address match is required.
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
int
hashCode()
boolean
matches
(InetAddress addr) Test if a given address matches this netmask.boolean
matches
(InetAddress addr, boolean checkedPort) Test if a given address matches this netmask.boolean
matches
(InetAddress addr, int port) Test if a given address and port matches this netmask.toString()
-
Constructor Details
-
NetMask
Constructor- Parameters:
input
- the CIDR netmask- Throws:
IllegalArgumentException
- if the netmask is not correct (invalid address specification, malformed CIDR prefix, etc)
-
-
Method Details
-
matches
Test if a given address and port matches this netmask.- Parameters:
addr
- TheInetAddress
to testport
- The port to test- Returns:
- true on match, false otherwise
-
matches
Test if a given address matches this netmask.- Parameters:
addr
- TheInetAddress
to test- Returns:
- true on match, false otherwise
-
matches
Test if a given address matches this netmask.- Parameters:
addr
- TheInetAddress
to testcheckedPort
- Indicates, whether we already checked the port- Returns:
- true on match, false otherwise
-
toString
-
equals
-
hashCode
public int hashCode()
-