import com.google.common.annotations.Beta;
import com.google.common.base.Preconditions;
+import com.google.common.net.InetAddresses;
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
* @throws NullPointerException if addr is null
*/
@Nonnull public final P6 ipv6PrefixFor(@Nonnull final InetAddress addr) {
- return prefix6Factory.newInstance(addr.getHostAddress() + "/128");
+ return prefix6Factory.newInstance(addressStringV6(addr) + "/128");
}
/**
Preconditions.checkNotNull(addr, "Address must not be null");
Preconditions.checkArgument(addr instanceof Inet6Address, "Address has to be an Inet6Address");
Preconditions.checkArgument(mask >= 0 && mask <= 128, "Invalid mask %s", mask);
- return prefix6Factory.newInstance(addr.getHostAddress() + '/' + mask);
+ return prefix6Factory.newInstance(addressStringV6(addr) + '/' + mask);
}
private static void appendIpv4String(final StringBuilder sb, final byte[] bytes) {
Preconditions.checkArgument(bytes.length == 16, "IPv6 address length is 16 bytes");
try {
- return Inet6Address.getByAddress(bytes).getHostAddress();
+ return addressStringV6(Inet6Address.getByAddress(bytes));
} catch (UnknownHostException e) {
throw new IllegalArgumentException(String.format("Invalid input %s", bytes), e);
}
}
+ private static String addressStringV6(final InetAddress addr) {
+ return InetAddresses.toAddrString(addr);
+ }
+
private static String prefixStringV4(final byte[] bytes) {
final StringBuilder sb = new StringBuilder(18);
appendIpv4String(sb, bytes);