diff --git a/src/main/java/org/sdnplatform/sync/internal/config/ClusterConfig.java b/src/main/java/org/sdnplatform/sync/internal/config/ClusterConfig.java
index be515f4312c627c730660a00428069742cf241b7..27addf7fe1ff448d154af8222d561604a31e86b3 100644
--- a/src/main/java/org/sdnplatform/sync/internal/config/ClusterConfig.java
+++ b/src/main/java/org/sdnplatform/sync/internal/config/ClusterConfig.java
@@ -25,6 +25,7 @@ public class ClusterConfig {
     private AuthScheme authScheme;
     private String keyStorePath;
     private String keyStorePassword;
+    private String listenAddress;
     
     public ClusterConfig() {
         super();
@@ -38,8 +39,7 @@ public class ClusterConfig {
      */
     public ClusterConfig(List<Node> nodes, short thisNodeId)
             throws SyncException {
-        init(nodes, thisNodeId);
-        this.authScheme = AuthScheme.NO_AUTH;
+        init(nodes, thisNodeId, AuthScheme.NO_AUTH, null, null);
     }
 
     /**
@@ -49,7 +49,7 @@ public class ClusterConfig {
      * @param authScheme the {@link AuthScheme}
      * @param keyStorePath the path to a java key store containing
      * credentials necessary for implementing the {@link AuthScheme}
-     * @param keyStorePassword the password fro the key store.
+     * @param keyStorePassword the password for the key store.
      * @throws SyncException
      */
     public ClusterConfig(List<Node> nodes, short thisNodeId,
@@ -57,12 +57,28 @@ public class ClusterConfig {
                          String keyStorePath, 
                          String keyStorePassword)
             throws SyncException {
-        init(nodes, thisNodeId);
-        this.authScheme = authScheme;
-        if (this.authScheme == null) 
-            this.authScheme = AuthScheme.NO_AUTH;
-        this.keyStorePath = keyStorePath;
-        this.keyStorePassword = keyStorePassword;
+        init(nodes, thisNodeId, authScheme, keyStorePath, keyStorePassword);
+    }
+
+    /**
+     * Initialize a cluster config using a list of nodes
+     * @param nodes the nodes to use
+     * @param thisNodeId the node ID for the current node
+     * @param listenAddress String representing the address to listen on
+     * @param authScheme the {@link AuthScheme}
+     * @param keyStorePath the path to a java key store containing
+     * credentials necessary for implementing the {@link AuthScheme}
+     * @param keyStorePassword the password for the key store.
+     * @throws SyncException
+     */
+    public ClusterConfig(List<Node> nodes, short thisNodeId,
+                         String listenAddress,
+                         AuthScheme authScheme,
+                         String keyStorePath, 
+                         String keyStorePassword)
+            throws SyncException {
+        init(nodes, thisNodeId, authScheme, keyStorePath, keyStorePassword);
+        this.listenAddress = listenAddress;
     }
     
     /**
@@ -107,6 +123,15 @@ public class ClusterConfig {
         return allNodes.get(nodeId);
     }
 
+    /**
+     * Get a string representing the host/address on which the local 
+     * node should listen
+     * @return the listen address
+     */
+    public String getListenAddress() {
+        return listenAddress;
+    }
+
     /**
      * Get the authentication scheme to use for authenticating RPC connections
      * @return the {@link AuthScheme} object
@@ -157,7 +182,10 @@ public class ClusterConfig {
         localDomain.add(node);
     }
 
-    private void init(List<Node> nodes, short thisNodeId)
+    private void init(List<Node> nodes, short thisNodeId,
+                      AuthScheme authScheme,
+                      String keyStorePath, 
+                      String keyStorePassword)
             throws SyncException {
         for (Node n : nodes) {
             addNode(n);
@@ -167,6 +195,11 @@ public class ClusterConfig {
             throw new SyncException("Cannot set thisNode " +
                     "node: No node with ID " + thisNodeId);
         }
+        this.authScheme = authScheme;
+        if (this.authScheme == null) 
+            this.authScheme = AuthScheme.NO_AUTH;
+        this.keyStorePath = keyStorePath;
+        this.keyStorePassword = keyStorePassword;
     }
 
     @Override
diff --git a/src/main/java/org/sdnplatform/sync/internal/config/FallbackCCProvider.java b/src/main/java/org/sdnplatform/sync/internal/config/FallbackCCProvider.java
index 9ee0500ba416316782f824af6da5af276a8059fe..fcdfb6fafc76e25a3f29154828b2072cd8449a03 100644
--- a/src/main/java/org/sdnplatform/sync/internal/config/FallbackCCProvider.java
+++ b/src/main/java/org/sdnplatform/sync/internal/config/FallbackCCProvider.java
@@ -47,6 +47,7 @@ public class FallbackCCProvider implements IClusterConfigProvider {
                                                         Short.MAX_VALUE,
                                                         Short.MAX_VALUE)),
                                                         Short.MAX_VALUE,
+                                                        "localhost",
                                                         authScheme,
                                                         keyStorePath,
                                                         keyStorePassword);
diff --git a/src/main/java/org/sdnplatform/sync/internal/rpc/RPCService.java b/src/main/java/org/sdnplatform/sync/internal/rpc/RPCService.java
index 2de52a7938452a43da412c8da2834593496a4c10..ec6fbb86fe895bf63b0fb42b370ba88fddf44d0b 100644
--- a/src/main/java/org/sdnplatform/sync/internal/rpc/RPCService.java
+++ b/src/main/java/org/sdnplatform/sync/internal/rpc/RPCService.java
@@ -454,7 +454,14 @@ public class RPCService {
         serverBootstrap = bootstrap;
 
         int port = syncManager.getClusterConfig().getNode().getPort();
-        InetSocketAddress sa = new InetSocketAddress(port);
+        InetSocketAddress sa;
+        String listenAddress = 
+                syncManager.getClusterConfig().getListenAddress();
+        if (listenAddress != null)
+            sa = new InetSocketAddress(listenAddress, port);
+        else
+            sa = new InetSocketAddress(port);
+
         cg.add(bootstrap.bind(sa));
 
         logger.info("Listening for internal floodlight RPC on {}", sa);