From fe16ccb4342d74bde19de1a35f86a597b975a6fb Mon Sep 17 00:00:00 2001 From: zzz Date: Mon, 10 Feb 2020 14:43:57 +0000 Subject: [PATCH] Transport: Mark yggdrasil IPv6 prefix as not routable Minor cleanup of the checking code --- .../i2p/router/transport/TransportUtil.java | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/router/java/src/net/i2p/router/transport/TransportUtil.java b/router/java/src/net/i2p/router/transport/TransportUtil.java index 55f5f0e174..7ae32d7286 100644 --- a/router/java/src/net/i2p/router/transport/TransportUtil.java +++ b/router/java/src/net/i2p/router/transport/TransportUtil.java @@ -203,17 +203,23 @@ public abstract class TransportUtil { if (addr[2] == 0x0d && (addr[3] & 0xff) == 0xb8) return false; } + } else if ((addr[0] & 0xfe) == 0xfc) { + // disallow fc00::/8 and fd00::/8 (Unique local addresses RFC 4193) + // not recognized as local by InetAddress + return false; + } else if (addr[0] == 0x26) { + // Hamachi IPv6 + if (addr[1] == 0x20 && addr[2] == 0x00 && (addr[3] & 0xff) == 0x9b) + return false; + } else if (addr[0] == 0x3f) { + // 6bone RFC 2471 + if ((addr[1] & 0xff) == 0xfe) + return false; + } else if ((addr[0] & 0xfe) == 0x02) { + // Yggdrasil 0200:/7 + // https://yggdrasil-network.github.io/faq.html + return false; } - // disallow fc00::/8 and fd00::/8 (Unique local addresses RFC 4193) - // not recognized as local by InetAddress - if ((addr[0] & 0xfe) == 0xfc) - return false; - // Hamachi IPv6 - if (addr[0] == 0x26 && addr[1] == 0x20 && addr[2] == 0x00 && (addr[3] & 0xff) == 0x9b) - return false; - // 6bone RFC 2471 - if (addr[0] == 0x3f && (addr[1] & 0xff) == 0xfe) - return false; try { InetAddress ia = InetAddress.getByAddress(addr); return