aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/app/src/main/java/com/wireguard/config/IPCidr.java
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2018-04-18 05:28:31 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2018-04-18 05:28:31 +0200
commit40df38418f60ba8068988b2f91c13fbe2e7bab4b (patch)
treee89533bb3a3e95f0c88c1739225c76cf07d21583 /app/src/main/java/com/wireguard/config/IPCidr.java
parentVersion bump (diff)
downloadwireguard-android-40df38418f60ba8068988b2f91c13fbe2e7bab4b.tar.xz
wireguard-android-40df38418f60ba8068988b2f91c13fbe2e7bab4b.zip
More javafication
Diffstat (limited to 'app/src/main/java/com/wireguard/config/IPCidr.java')
-rw-r--r--app/src/main/java/com/wireguard/config/IPCidr.java79
1 files changed, 79 insertions, 0 deletions
diff --git a/app/src/main/java/com/wireguard/config/IPCidr.java b/app/src/main/java/com/wireguard/config/IPCidr.java
new file mode 100644
index 00000000..adc778c0
--- /dev/null
+++ b/app/src/main/java/com/wireguard/config/IPCidr.java
@@ -0,0 +1,79 @@
+package com.wireguard.config;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.net.Inet4Address;
+import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+public class IPCidr implements Parcelable {
+ InetAddress address;
+ int cidr;
+
+
+ public static final Parcelable.Creator<IPCidr> CREATOR = new Parcelable.Creator<IPCidr>() {
+ @Override
+ public IPCidr createFromParcel(final Parcel in) {
+ return new IPCidr(in);
+ }
+
+ @Override
+ public IPCidr[] newArray(final int size) {
+ return new IPCidr[size];
+ }
+ };
+
+ public IPCidr(String in) throws UnknownHostException {
+ parse(in);
+ }
+
+ private void parse(String in) throws UnknownHostException {
+ cidr = -1;
+ int slash = in.lastIndexOf('/');
+ if (slash != -1 && slash < in.length() - 1) {
+ try {
+ cidr = Integer.parseInt(in.substring(slash + 1), 10);
+ in = in.substring(0, slash);
+ } catch (Exception e) {
+ }
+ }
+ address = InetAddress.getByName(in);
+ if ((address instanceof Inet6Address) && (cidr > 128 || cidr < 0))
+ cidr = 128;
+ else if ((address instanceof Inet4Address) && (cidr > 32 || cidr < 0))
+ cidr = 32;
+ }
+
+ public InetAddress getAddress() {
+ return address;
+ }
+
+ public int getCidr() {
+ return cidr;
+ }
+
+ @Override
+ public String toString() {
+ return String.format("%s/%d", address.getHostAddress(), cidr);
+ }
+
+ @Override
+ public void writeToParcel(final Parcel dest, final int flags) {
+ dest.writeString(this.toString());
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ private IPCidr(final Parcel in) {
+ try {
+ parse(in.readString());
+ } catch (Exception e) {
+ }
+ }
+
+}