VOL-2854: Add command line option to specify interface name in openolt on which gRPC server will run
- OLT management interface or inband interface can be given as command line input and gRPC
server will listen on given interface's IP address
- If no interface name given gRPC server will listen on "0.0.0.0:9191"
Change-Id: I506fabf7ae81bf4d4ed8f6199107801daff62941
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();
}