From 4936f0821289bbbd7eed786b7e6a0d33f18b08ae Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Fri, 30 Jan 2015 17:26:45 +0000
Subject: [PATCH] Console: Don't display invalid IPv6 addresses as options on
 /confignet

---
 .../java/src/net/i2p/router/web/ConfigNetHelper.java       | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java
index 7f13242d3d..c008449b11 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java
@@ -2,6 +2,7 @@ package net.i2p.router.web;
 
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.Set;
 
 import net.i2p.data.DataHelper;
@@ -185,6 +186,12 @@ public class ConfigNetHelper extends HelperBase {
     /** @since IPv6 */
     public String getAddressSelector() {
         Set<String> addrs = getAddresses();
+        // isPubliclyRoutable() rejects some IPv6 addresses that getAddresses() allows
+        for (Iterator<String> iter = addrs.iterator(); iter.hasNext(); ) {
+            byte[] ip = Addresses.getIP(iter.next());
+            if (ip == null || !TransportUtil.isPubliclyRoutable(ip, true))
+                iter.remove();
+        }
         Set<String> configs;
         String cs = getUdphostname();
         if (cs.length() <= 0) {
-- 
GitLab