diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-04-18 05:28:31 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-04-18 05:28:31 +0200 |
commit | 40df38418f60ba8068988b2f91c13fbe2e7bab4b (patch) | |
tree | e89533bb3a3e95f0c88c1739225c76cf07d21583 /app/src/main/java/com/wireguard/config/IPCidr.java | |
parent | Version bump (diff) | |
download | wireguard-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.java | 79 |
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) { + } + } + +} |