diff --git a/router/java/src/net/i2p/router/transport/Transport.java b/router/java/src/net/i2p/router/transport/Transport.java
index b3f129d25d51ef715765cfc4e1a59de6d36c89c1..4bd26aac6a5aaee03df583b9979220f4a02c183c 100644
--- a/router/java/src/net/i2p/router/transport/Transport.java
+++ b/router/java/src/net/i2p/router/transport/Transport.java
@@ -196,6 +196,11 @@ public interface Transport {
     @Deprecated
     public void recheckReachability();
 
+    /**
+     *  @since 0.9.50 added to interface
+     */
+    public TransportUtil.IPv6Config getIPv6Config();
+
     public boolean isBacklogged(Hash peer);
 
     /**
diff --git a/router/java/src/net/i2p/router/transport/TransportManager.java b/router/java/src/net/i2p/router/transport/TransportManager.java
index 84516eccf8e0ea011908b07fc8754a01ed4e61e3..544e863f8b2f66ea0c063a2685146752c8deed7e 100644
--- a/router/java/src/net/i2p/router/transport/TransportManager.java
+++ b/router/java/src/net/i2p/router/transport/TransportManager.java
@@ -797,10 +797,13 @@ public class TransportManager implements TransportEventListener {
                     port = udp.getRequestedPort();
             }
             if (port > 0) {
+                TransportUtil.IPv6Config config = t.getIPv6Config();
                 // ipv4
-                rv.add(new Port(t.getStyle(), port));
+                if (config != TransportUtil.IPv6Config.IPV6_ONLY)
+                    rv.add(new Port(t.getStyle(), port));
                 // ipv6
-                if (_context.getProperty(PROP_ENABLE_UPNP_IPV6, DEFAULT_ENABLE_UPNP_IPV6)) {
+                if (_context.getProperty(PROP_ENABLE_UPNP_IPV6, DEFAULT_ENABLE_UPNP_IPV6) &&
+                    config != TransportUtil.IPv6Config.IPV6_DISABLED) {
                     RouterAddress ra = t.getCurrentAddress(true);
                     if (ra == null) {
                         if (t.getStyle().equals(UDPTransport.STYLE)) {