diff --git a/src/main/java/net/floodlightcontroller/core/internal/Controller.java b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
index 1a41b9bb7a6c1b5a8850becf8629fd8a358aa278..f2f52cac5d5cf47f7d5894d2fb7b2d6b76dd11e3 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/Controller.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
@@ -174,6 +174,7 @@ public class Controller implements IFloodlightProviderService,
     protected IThreadPoolService threadPool;
 
     // Configuration options
+    protected String openFlowHost = null;
     protected int openFlowPort = 6633;
     protected int workerThreads = 0;
     // The id for this controller node. Should be unique for each controller
@@ -1704,7 +1705,10 @@ public class Controller implements IFloodlightProviderService,
             ChannelPipelineFactory pfact =
                     new OpenflowPipelineFactory(this, null);
             bootstrap.setPipelineFactory(pfact);
-            InetSocketAddress sa = new InetSocketAddress(openFlowPort);
+            InetSocketAddress sa =
+            		(openFlowHost == null)
+            		? new InetSocketAddress(openFlowPort)
+            		: new InetSocketAddress(openFlowHost, openFlowPort);
             final ChannelGroup cg = new DefaultChannelGroup();
             cg.add(bootstrap.bind(sa));
 
@@ -1745,6 +1749,11 @@ public class Controller implements IFloodlightProviderService,
     }
 
     public void setConfigParams(Map<String, String> configParams) {
+    	String ofHost = configParams.get("openflowhost");
+    	if (ofHost != null) {
+    		this.openFlowHost = ofHost;
+        	log.debug("OpenFlow host set to {}", this.openFlowHost);
+    	}
         String ofPort = configParams.get("openflowport");
         if (ofPort != null) {
             this.openFlowPort = Integer.parseInt(ofPort);