diff --git a/agent/common/core.h b/agent/common/core.h
index f73051e..31e10ed 100644
--- a/agent/common/core.h
+++ b/agent/common/core.h
@@ -238,6 +238,7 @@
 void stats_collection();
 Status check_connection();
 Status check_bal_ready();
+std::string get_ip_address(const char* nw_intf);
 
 // Stubbed defntions of bcmolt_cfg_get required for unit-test
 #ifdef TEST_MODE
diff --git a/agent/common/main.cc b/agent/common/main.cc
index 49d1175..4ebe2b8 100644
--- a/agent/common/main.cc
+++ b/agent/common/main.cc
@@ -137,7 +137,7 @@
     }
     else
         pushOltOperInd(0, "nni", "up");
-    RunServer();
+    RunServer(argc, argv);
 
     return 0;
 }
diff --git a/agent/common/server.cc b/agent/common/server.cc
index e33938b..13017a7 100644
--- a/agent/common/server.cc
+++ b/agent/common/server.cc
@@ -309,23 +309,32 @@
     };
 };
 
-void RunServer() {
-  OpenoltService service;
-  std::string server_address(serverPort);
-  ServerBuilder builder;
+void RunServer(int argc, char** argv) {
+    std::string ipAddress = "0.0.0.0";
 
-  builder.AddListeningPort(server_address, grpc::InsecureServerCredentials());
-  builder.RegisterService(&service);
+    for (int i = 1; i < argc; ++i) {
+        if(strcmp(argv[i-1], "--interface") == 0 || (strcmp(argv[i-1], "--intf") == 0)) {
+            ipAddress = get_ip_address(argv[i]);
+            break;
+        }
+    }
 
-  std::unique_ptr<Server> server(builder.BuildAndStart());
+    serverPort = ipAddress.append(":9191").c_str();
+    OpenoltService service;
+    std::string server_address(serverPort);
+    ServerBuilder builder;
 
-  time_t now;
-  time(&now);
-  signature = (int)now;
+    builder.AddListeningPort(server_address, grpc::InsecureServerCredentials());
+    builder.RegisterService(&service);
 
-  std::cout << "Server listening on " << server_address
-  << ", connection signature : " << signature << std::endl;
+    std::unique_ptr<Server> server(builder.BuildAndStart());
 
+    time_t now;
+    time(&now);
+    signature = (int)now;
 
-  server->Wait();
+    std::cout << "Server listening on " << server_address
+    << ", connection signature : " << signature << std::endl;
+
+    server->Wait();
 }
diff --git a/agent/common/server.h b/agent/common/server.h
index 2238287..f196fa3 100644
--- a/agent/common/server.h
+++ b/agent/common/server.h
@@ -17,6 +17,6 @@
 #ifndef OPENOLT_SERVER_H_
 #define OPENOLT_SERVER_H_
 
-void RunServer();
+void RunServer(int argc, char** argv);
 
 #endif
