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/OpenFlowSwitch.java b/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitch.java
index 4dbbaf5..3b8358f 100644
--- a/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitch.java
+++ b/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitch.java
@@ -142,4 +142,9 @@
*/
public boolean isOptical();
+ /**
+ * Identifies the channel used to communicate with the switch.
+ */
+ public String channelId();
+
}
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
//************************