diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java
index 8dbed733593562314254ff6e2f50e608f679a74c..3fb3d7f9601905858c3ff6127083d89616a9299e 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java
@@ -462,7 +462,8 @@ public class EditBean extends IndexBean {
 
     /** @since 0.8.3 */
     public Set<String> interfaceSet() {
-        return Addresses.getAllAddresses();
+        // exclude IPv6 temporary
+        return Addresses.getAddresses(true, true, true, false);
     }
 
     /** @since 0.9.12 */
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigClientsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigClientsHelper.java
index ee7fec3dfe7a43780365a6ff23f2e80d58b905ce..8e07d426a3141833a031890f6c7d5f1b36f82554 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigClientsHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigClientsHelper.java
@@ -82,7 +82,8 @@ public class ConfigClientsHelper extends HelperBase {
 
     /** @since 0.8.3 */
     public String[] intfcAddresses() {
-        ArrayList<String> al = new ArrayList<String>(Addresses.getAllAddresses());
+        // Exclude IPv6 temporary
+        ArrayList<String> al = new ArrayList<String>(Addresses.getAddresses(true, true, true, false));
         return al.toArray(new String[al.size()]);
     }
 
diff --git a/core/java/src/net/i2p/util/Addresses.java b/core/java/src/net/i2p/util/Addresses.java
index 213340aec65485c4ca1488b1682447ede6bdf6cc..a846b72705c40e33beaf6f3da1c7e3a0e67c6585 100644
--- a/core/java/src/net/i2p/util/Addresses.java
+++ b/core/java/src/net/i2p/util/Addresses.java
@@ -151,6 +151,30 @@ public abstract class Addresses {
     public static SortedSet<String> getAddresses(boolean includeSiteLocal,
                                                  boolean includeLoopbackAndWildcard,
                                                  boolean includeIPv6) {
+        return getAddresses(includeSiteLocal, includeLoopbackAndWildcard, includeIPv6, includeIPv6);
+    }
+
+    /**
+     *  Warning: When includeSiteLocal and includeLoopbackAndWildcard are false,
+     *  all returned addresses should be routable, but they are not necessarily
+     *  appropriate for external use. For example, Teredo and 6to4 addresses
+     *  are included with IPv6 results. Additional validation is recommended.
+     *  See e.g. TransportUtil.isPubliclyRoutable().
+     *
+     *  Warning, very slow on Windows, appx. 200ms + 50ms/interface
+     *
+     *  @return a sorted set of all addresses
+     *  @param includeSiteLocal whether to include private like 192.168.x.x
+     *  @param includeLoopbackAndWildcard whether to include 127.x.x.x and 0.0.0.0
+     *  @param includeIPv6 whether to include IPV6
+     *  @param includeIPv6Temporary whether to include IPV6 temporary addresses
+     *  @return a Set of all addresses
+     *  @since 0.9.46
+     */
+    public static SortedSet<String> getAddresses(boolean includeSiteLocal,
+                                                 boolean includeLoopbackAndWildcard,
+                                                 boolean includeIPv6,
+                                                 boolean includeIPv6Temporary) {
         boolean haveIPv4 = false;
         boolean haveIPv6 = false;
         SortedSet<String> rv = new TreeSet<String>();
@@ -165,10 +189,6 @@ public abstract class Addresses {
                         haveIPv4 = true;
                     else
                         haveIPv6 = true;
-                    if (omitDeprecated && !isv4) {
-                        if (isDeprecated((Inet6Address) allMyIps[i]))
-                            continue;
-                    }
                     if (shouldInclude(allMyIps[i], includeSiteLocal,
                                       includeLoopbackAndWildcard, includeIPv6)) {
                         rv.add(stripScope(allMyIps[i].getHostAddress()));
@@ -207,6 +227,10 @@ public abstract class Addresses {
                             if (isDeprecated((Inet6Address) addr))
                                 continue;
                         }
+                        if (!includeIPv6Temporary && !isv4) {
+                            if (isTemporary((Inet6Address) addr))
+                                continue;
+                        }
                         if (shouldInclude(addr, includeSiteLocal,
                                           includeLoopbackAndWildcard, includeIPv6)) {
                             rv.add(stripScope(addr.getHostAddress()));