summaryrefslogtreecommitdiff
path: root/src/main/java/io/trygvis/rules/network/Ipv4Cidr.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/io/trygvis/rules/network/Ipv4Cidr.java')
-rw-r--r--src/main/java/io/trygvis/rules/network/Ipv4Cidr.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/main/java/io/trygvis/rules/network/Ipv4Cidr.java b/src/main/java/io/trygvis/rules/network/Ipv4Cidr.java
new file mode 100644
index 0000000..34b3a0b
--- /dev/null
+++ b/src/main/java/io/trygvis/rules/network/Ipv4Cidr.java
@@ -0,0 +1,40 @@
+package io.trygvis.rules.network;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.Collection;
+
+public class Ipv4Cidr {
+ public final int network;
+ public final int netmask;
+ public final int size;
+ public final int bits;
+
+ public Ipv4Cidr(int network, int netmask, int size, int bits) {
+ this.network = network;
+ this.netmask = netmask;
+ this.size = size;
+ this.bits = bits;
+ }
+
+ @Override
+ public String toString() {
+ return "%d.%d.%d.%d/%d".formatted(
+ network >> 24 & 0xff,
+ network >> 16 & 0xff,
+ network >> 8 & 0xff,
+ network & 0xff,
+ bits);
+ }
+
+ public Collection<Ipv4Address> addresses() {
+ var end = network + size;
+ var addresses = new ArrayList<Ipv4Address>(size);
+ for (int address = network; address < end; address++) {
+ addresses.add(new Ipv4Address(address));
+ }
+
+ return addresses;
+ }
+}