UPnP: IPv6 part 10

Enable IPv6 by default
Don't force listen sockets to IPv4 only
This commit is contained in:
zzz
2021-03-02 08:15:13 -05:00
parent 63e9b7f034
commit e1cd22e6ee
4 changed files with 30 additions and 7 deletions

View File

@ -1,4 +1,26 @@
2021-03-02 zzz
* UPnP:
- Limit event subscription time
- Subscribe to IPv6 service also
2021-03-01 zzz
* UPnP:
- Fix mappings not being renewed before expiration
- IPv6 port forwarding fixes
- Continue to forward deprecated addresses for a while
2021-02-28 zzz
* SSU: Fix set of states requiring address confirmation
* UPnP:
- Add support for IPv6 firewall addresses
- Add support for forwarding IPv6 addresses
2021-02-27 zzz
* UPnP: Move IPv6 checks from Parser to ControlPoint
2021-02-25 zzz
* NetDB: Fix NPE validating expired blinded LS2
* NTCP: Don't publish IP at startup when configured as firewalled
* SSU: Enable RelayRequest over IPv6
* Transports: Adjust conn limits for some platforms

View File

@ -18,7 +18,7 @@ public class RouterVersion {
/** deprecated */
public final static String ID = "Git";
public final static String VERSION = CoreVersion.VERSION;
public final static long BUILD = 3;
public final static long BUILD = 4;
/** for example "-test" */
public final static String EXTRA = "";

View File

@ -87,8 +87,8 @@ public class TransportManager implements TransportEventListener {
public final static String PROP_ENABLE_NTCP = "i2np.ntcp.enable";
/** default true */
public final static String PROP_ENABLE_UPNP = "i2np.upnp.enable";
/** default false for now */
public final static String PROP_ENABLE_UPNP_IPV6 = "i2np.upnp.ipv6.enable";
public static final boolean DEFAULT_ENABLE_UPNP_IPV6 = true;
private static final String PROP_JAVA_PROXY1 = "socksProxyHost";
private static final String PROP_JAVA_PROXY2 = "java.net.useSystemProxies";
private static final String PROP_JAVA_PROXY3 = "http.proxyHost";
@ -813,7 +813,7 @@ public class TransportManager implements TransportEventListener {
// ipv4
rv.add(new Port(t.getStyle(), port));
// ipv6
if (_context.getBooleanProperty(PROP_ENABLE_UPNP_IPV6)) {
if (_context.getProperty(PROP_ENABLE_UPNP_IPV6, DEFAULT_ENABLE_UPNP_IPV6)) {
RouterAddress ra = t.getCurrentAddress(true);
if (ra == null) {
if (t.getStyle().equals(UDPTransport.STYLE)) {

View File

@ -71,9 +71,10 @@ class UPnPManager {
_context = context;
_manager = manager;
_log = _context.logManager().getLog(UPnPManager.class);
// UPnP wants to bind to IPv6 link local interfaces by default, but what UPnP router
// is going to want to talk IPv6 anyway? Just make it easy and force IPv4 only
org.cybergarage.upnp.UPnP.setEnable(org.cybergarage.upnp.UPnP.USE_ONLY_IPV4_ADDR);
// this controls what sockets UPnP listens on
// not clear it makes any practical difference though
if (!context.getProperty(TransportManager.PROP_ENABLE_UPNP_IPV6, TransportManager.DEFAULT_ENABLE_UPNP_IPV6))
org.cybergarage.upnp.UPnP.setEnable(org.cybergarage.upnp.UPnP.USE_ONLY_IPV4_ADDR);
// set up logging in the UPnP package
Debug.initialize(context);
int ssdpPort = _context.getProperty(PROP_SSDP_PORT, DEFAULT_SSDP_PORT);
@ -189,7 +190,7 @@ class UPnPManager {
if (_scannerCallback != null)
_scannerCallback.beforeScan();
if (_log.shouldLog(Log.DEBUG))
_log.debug("UPnP Rescan");
_log.debug("UPnP Rescan", new Exception());
// TODO default search MX (jitter) is 3 seconds... reduce?
// See also:
// Adaptive Jitter Control for UPnP M-Search