@@ -141,6 +141,11 @@ static std::string allocateSocketAddress() {
141141 return ret;
142142};
143143
144+ static unsigned int allocateVsockPort () {
145+ static unsigned int vsockPort = 34567 ;
146+ return vsockPort++;
147+ }
148+
144149static unique_fd initUnixSocket (std::string addr) {
145150 auto socket_addr = UnixSocketAddress (addr.c_str ());
146151 unique_fd fd (TEMP_FAILURE_RETRY (socket (socket_addr.addr ()->sa_family , SOCK_STREAM, AF_UNIX)));
@@ -295,6 +300,7 @@ std::unique_ptr<ProcessSession> BinderRpc::createRpcTestSocketServerProcessEtc(
295300 serverConfig.socketType = static_cast <int32_t >(socketType);
296301 serverConfig.rpcSecurity = static_cast <int32_t >(rpcSecurity);
297302 serverConfig.serverVersion = serverVersion;
303+ serverConfig.vsockPort = allocateVsockPort ();
298304 serverConfig.addr = addr;
299305 serverConfig.socketFd = socketFd.get ();
300306 for (auto mode : options.serverSupportedFileDescriptorTransportModes ) {
@@ -373,7 +379,7 @@ std::unique_ptr<ProcessSession> BinderRpc::createRpcTestSocketServerProcessEtc(
373379 unique_fd (dup (bootstrapClientFd.get ())));
374380 break ;
375381 case SocketType::VSOCK:
376- status = session->setupVsockClient (VMADDR_CID_LOCAL, serverInfo. port );
382+ status = session->setupVsockClient (VMADDR_CID_LOCAL, serverConfig. vsockPort );
377383 break ;
378384 case SocketType::INET:
379385 status = session->setupInetClient (" 127.0.0.1" , serverInfo.port );
@@ -1146,6 +1152,8 @@ INSTANTIATE_TEST_SUITE_P(Trusty, BinderRpc, ::testing::ValuesIn(getTrustyBinderR
11461152#else // BINDER_RPC_TO_TRUSTY_TEST
11471153bool testSupportVsockLoopback () {
11481154 // We don't need to enable TLS to know if vsock is supported.
1155+ unsigned int vsockPort = allocateVsockPort ();
1156+
11491157 unique_fd serverFd (
11501158 TEMP_FAILURE_RETRY (socket (AF_VSOCK, SOCK_STREAM | SOCK_CLOEXEC | SOCK_NONBLOCK, 0 )));
11511159
@@ -1157,12 +1165,12 @@ bool testSupportVsockLoopback() {
11571165
11581166 sockaddr_vm serverAddr{
11591167 .svm_family = AF_VSOCK,
1160- .svm_port = VMADDR_PORT_ANY ,
1168+ .svm_port = vsockPort ,
11611169 .svm_cid = VMADDR_CID_ANY,
11621170 };
11631171 int ret = TEMP_FAILURE_RETRY (
11641172 bind (serverFd.get (), reinterpret_cast <sockaddr*>(&serverAddr), sizeof (serverAddr)));
1165- LOG_ALWAYS_FATAL_IF (0 != ret, " Could not bind socket to port VMADDR_PORT_ANY : %s" ,
1173+ LOG_ALWAYS_FATAL_IF (0 != ret, " Could not bind socket to port %u : %s" , vsockPort ,
11661174 strerror (errno));
11671175
11681176 socklen_t len = sizeof (serverAddr);
@@ -1172,7 +1180,7 @@ bool testSupportVsockLoopback() {
11721180 " getsockname didn't read the full addr struct" );
11731181
11741182 ret = TEMP_FAILURE_RETRY (listen (serverFd.get (), 1 /* backlog*/ ));
1175- LOG_ALWAYS_FATAL_IF (0 != ret, " Could not listen socket on port %u: %s" , serverAddr. svm_port ,
1183+ LOG_ALWAYS_FATAL_IF (0 != ret, " Could not listen socket on port %u: %s" , vsockPort ,
11761184 strerror (errno));
11771185
11781186 // Try to connect to the server using the VMADDR_CID_LOCAL cid
@@ -1181,13 +1189,13 @@ bool testSupportVsockLoopback() {
11811189 // and they return ETIMEDOUT after that.
11821190 unique_fd connectFd (
11831191 TEMP_FAILURE_RETRY (socket (AF_VSOCK, SOCK_STREAM | SOCK_CLOEXEC | SOCK_NONBLOCK, 0 )));
1184- LOG_ALWAYS_FATAL_IF (!connectFd.ok (), " Could not create socket for port %u: %s" ,
1185- serverAddr. svm_port , strerror (errno));
1192+ LOG_ALWAYS_FATAL_IF (!connectFd.ok (), " Could not create socket for port %u: %s" , vsockPort,
1193+ strerror (errno));
11861194
11871195 bool success = false ;
11881196 sockaddr_vm connectAddr{
11891197 .svm_family = AF_VSOCK,
1190- .svm_port = serverAddr. svm_port ,
1198+ .svm_port = vsockPort ,
11911199 .svm_cid = VMADDR_CID_LOCAL,
11921200 };
11931201 ret = TEMP_FAILURE_RETRY (connect (connectFd.get (), reinterpret_cast <sockaddr*>(&connectAddr),
@@ -1536,9 +1544,8 @@ class RpcTransportTestUtils {
15361544 };
15371545 } break ;
15381546 case SocketType::VSOCK: {
1539- unsigned port;
1540- auto status =
1541- rpcServer->setupVsockServer (VMADDR_CID_LOCAL, VMADDR_PORT_ANY, &port);
1547+ auto port = allocateVsockPort ();
1548+ auto status = rpcServer->setupVsockServer (VMADDR_CID_LOCAL, port);
15421549 if (status != OK) {
15431550 return AssertionFailure () << " setupVsockServer: " << statusToString (status);
15441551 }
0 commit comments