ONOS-535 - capture and display ip address and port of switches

Change-Id: I1671113b35853e258986568cec3a385c281e1147
diff --git a/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/AbstractOpenFlowSwitch.java b/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/AbstractOpenFlowSwitch.java
index 38f8dbb..bd5547e 100644
--- a/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/AbstractOpenFlowSwitch.java
+++ b/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/AbstractOpenFlowSwitch.java
@@ -17,11 +17,15 @@
 package org.onosproject.openflow.controller.driver;
 
 import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
 import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.jboss.netty.channel.Channel;
+import org.onlab.packet.Ip4Address;
+import org.onlab.packet.IpAddress;
 import org.onosproject.openflow.controller.Dpid;
 import org.onosproject.openflow.controller.RoleState;
 import org.projectfloodlight.openflow.protocol.OFDescStatsReply;
@@ -48,6 +52,7 @@
     protected final Logger log = LoggerFactory.getLogger(getClass());
 
     protected Channel channel;
+    protected String channelId;
 
     private boolean connected;
     protected boolean startDriverHandshakeCalled = false;
@@ -123,8 +128,24 @@
     @Override
     public final void setChannel(Channel channel) {
         this.channel = channel;
+        final SocketAddress address = channel.getRemoteAddress();
+        if (address instanceof InetSocketAddress) {
+            final InetSocketAddress inetAddress = (InetSocketAddress) address;
+            final IpAddress ipAddress = IpAddress.valueOf(inetAddress.getAddress());
+            if (ipAddress.version() == Ip4Address.VERSION) {
+                channelId = ipAddress.toString() + ':' + inetAddress.getPort();
+            } else {
+                channelId = '[' + ipAddress.toString() + "]:" + inetAddress.getPort();
+            }
+        }
     };
 
+    @Override
+    public String channelId() {
+        return channelId;
+    }
+
+
     //************************
     // Switch features related
     //************************