48 lines
1.3 KiB
Java
48 lines
1.3 KiB
Java
/*
|
|
* Copyright © 2018 Samuel Holland <samuel@sholland.org>
|
|
* Copyright © 2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
*/
|
|
|
|
package com.wireguard.config;
|
|
|
|
import java.net.Inet4Address;
|
|
import java.net.Inet6Address;
|
|
import java.net.InetAddress;
|
|
import java.util.Locale;
|
|
|
|
public class IPCidr {
|
|
private final InetAddress address;
|
|
private int cidr;
|
|
|
|
public IPCidr(String in) {
|
|
cidr = -1;
|
|
final 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 (final Exception ignored) {
|
|
}
|
|
}
|
|
address = Attribute.parseIPString(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(Locale.getDefault(), "%s/%d", address.getHostAddress(), cidr);
|
|
}
|
|
}
|