configurable xranc bind address and cleanup functions
diff --git a/src/main/java/org.onosproject.xran/controller/Controller.java b/src/main/java/org.onosproject.xran/controller/Controller.java
index 946a1bd..e8caacc 100644
--- a/src/main/java/org.onosproject.xran/controller/Controller.java
+++ b/src/main/java/org.onosproject.xran/controller/Controller.java
@@ -25,6 +25,7 @@
import io.netty.channel.sctp.nio.NioSctpServerChannel;
import io.netty.handler.logging.LogLevel;
import io.netty.handler.logging.LoggingHandler;
+import org.onlab.packet.IpAddress;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -40,6 +41,7 @@
private EventLoopGroup workerGroup;
private ChannelFuture channel;
private int port = 8007;
+ private IpAddress bindAddress = IpAddress.valueOf("0.0.0.0");
private boolean isRunning = false;
/**
@@ -58,7 +60,7 @@
);
}
});
- channel = b.bind(this.port).sync();
+ channel = b.bind(this.bindAddress.toInetAddress(), this.port).sync();
} catch (Exception e) {
log.warn(e.getMessage());
e.printStackTrace();
@@ -83,25 +85,28 @@
/**
* Initialize controller and start SCTP server.
- *
- * @param deviceAgent device agent
+ * @param deviceAgent device agent
* @param hostAgent host agent
* @param packetAgent packet agent
+ * @param xrancIp
* @param port port of server
*/
- public void start(XranDeviceAgent deviceAgent, XranHostAgent hostAgent, XranPacketProcessor packetAgent, int port) {
- if (isRunning && this.port != port) {
+ public void start(XranDeviceAgent deviceAgent, XranHostAgent hostAgent, XranPacketProcessor packetAgent,
+ IpAddress xrancIp, int port) {
+ if (isRunning && (this.port != port || !this.bindAddress.equals(xrancIp))) {
stop();
this.deviceAgent = deviceAgent;
this.hostAgent = hostAgent;
this.packetAgent = packetAgent;
this.port = port;
+ this.bindAddress = xrancIp;
run();
} else if (!isRunning) {
this.deviceAgent = deviceAgent;
this.hostAgent = hostAgent;
this.packetAgent = packetAgent;
this.port = port;
+ this.bindAddress = xrancIp;
run();
isRunning = true;
}