diff --git a/router/java/src/net/i2p/router/transport/tcp/TCPConnection.java b/router/java/src/net/i2p/router/transport/tcp/TCPConnection.java
index bbcfc1fc5871a832576c9f2798a221db2aac6089..7e36498b47685249ca7d15701d437dd9f3ebc296 100644
--- a/router/java/src/net/i2p/router/transport/tcp/TCPConnection.java
+++ b/router/java/src/net/i2p/router/transport/tcp/TCPConnection.java
@@ -30,6 +30,7 @@ public class TCPConnection {
     private RouterIdentity _ident;
     private Hash _attemptedPeer;
     private TCPAddress _remoteAddress;
+    private String _shownAddress;
     private List _pendingMessages;
     private InputStream _in;
     private OutputStream _out;
@@ -49,6 +50,7 @@ public class TCPConnection {
         _pendingMessages = new ArrayList(4);
         _ident = null;
         _remoteAddress = null;
+        _shownAddress = null;
         _in = null;
         _out = null;
         _socket = null;
@@ -75,6 +77,10 @@ public class TCPConnection {
     public void setRemoteAddress(TCPAddress addr) { _remoteAddress = addr; }
     /** Who we initially were trying to contact */
     public void setAttemptedPeer(Hash peer) { _attemptedPeer = peer; }
+    /** What address the peer said we are reachable on */
+    public void setShownAddress(String ip) { _shownAddress = ip; }
+    /** What address the peer said we are reachable on */
+    public String getShownAddress() { return _shownAddress; } 
     
     /** 
      * Actually start processing the messages on the connection (and reading