From ce53714ba168878760a94a7fa77883c8757b7fda Mon Sep 17 00:00:00 2001 From: zzz <zzz@i2pmail.org> Date: Tue, 1 Mar 2022 05:48:20 -0500 Subject: [PATCH] Util: Add AddressType enum --- core/java/src/net/i2p/util/AddressType.java | 8 ++++++++ core/java/src/net/i2p/util/Addresses.java | 22 ++++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 core/java/src/net/i2p/util/AddressType.java diff --git a/core/java/src/net/i2p/util/AddressType.java b/core/java/src/net/i2p/util/AddressType.java new file mode 100644 index 0000000000..e7462553fd --- /dev/null +++ b/core/java/src/net/i2p/util/AddressType.java @@ -0,0 +1,8 @@ +package net.i2p.util; + +/** + * @since 0.9.54 + */ +public enum AddressType { + IPV4, IPV6, YGG +} diff --git a/core/java/src/net/i2p/util/Addresses.java b/core/java/src/net/i2p/util/Addresses.java index 5220e6e0dc..c228954298 100644 --- a/core/java/src/net/i2p/util/Addresses.java +++ b/core/java/src/net/i2p/util/Addresses.java @@ -54,6 +54,26 @@ public abstract class Addresses { private static final Set<String> _macCache = new HashSet<String>(); private static final boolean TEST_IPV6_ONLY = false; + /** + * Do we have any address of this type? + * Warning, very slow on Windows, appx. 200ms + 50ms/interface + * + * @since 0.9.54 + */ + public static boolean isConnected(AddressType type) { + switch(type) { + case IPV6: + return isConnectedIPv6(); + + case YGG: + return getYggdrasilAddress() != null; + + case IPV4: + default: + return isConnected(); + } + } + /** * Do we have any non-loop, non-wildcard IPv4 address at all? * Warning, very slow on Windows, appx. 200ms + 50ms/interface @@ -266,7 +286,7 @@ public abstract class Addresses { /** * Warning, very slow on Windows. Caller should cache. * - * @return the IPv6 address with prefix 02xx: or 03xx: + * @return the IPv6 address with prefix 02xx: or 03xx:, or null * @since 0.9.49 */ public static byte[] getYggdrasilAddress() { -- GitLab