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