mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Enable netstack save/restore in cloud/gvisor by default.
PiperOrigin-RevId: 712978128
This commit is contained in:
committed by
gVisor bot
parent
bf9d60db96
commit
cd31d0522a
@@ -1966,6 +1966,14 @@ func (s *Stack) Pause() {
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Stack) getNICs() map[tcpip.NICID]*nic {
|
||||
s.mu.RLock()
|
||||
defer s.mu.RUnlock()
|
||||
|
||||
nics := s.nics
|
||||
return nics
|
||||
}
|
||||
|
||||
// ReplaceConfig replaces config in the loaded stack.
|
||||
func (s *Stack) ReplaceConfig(st *Stack) {
|
||||
if st == nil {
|
||||
@@ -1976,12 +1984,11 @@ func (s *Stack) ReplaceConfig(st *Stack) {
|
||||
s.SetRouteTable(st.GetRouteTable())
|
||||
|
||||
// Update NICs.
|
||||
st.mu.Lock()
|
||||
defer st.mu.Unlock()
|
||||
nics := st.getNICs()
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
s.nics = make(map[tcpip.NICID]*nic)
|
||||
for id, nic := range st.nics {
|
||||
for id, nic := range nics {
|
||||
nic.stack = s
|
||||
s.nics[id] = nic
|
||||
_ = s.NextNICID()
|
||||
|
||||
@@ -321,9 +321,6 @@ PosixErrorOr<sockaddr_storage> InetLoopbackAddr(int family) {
|
||||
// pages one valid and one guard page succeeds as long as the write is
|
||||
// for exactly the size of 1 page.
|
||||
TEST_F(PartialBadBufferTest, SendMsgTCP) {
|
||||
// FIXME(b/171436815): Netstack save/restore is broken.
|
||||
const DisableSave ds;
|
||||
|
||||
auto listen_socket =
|
||||
ASSERT_NO_ERRNO_AND_VALUE(Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP));
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
|
||||
#include <fcntl.h>
|
||||
|
||||
#include <memory>
|
||||
|
||||
#ifdef __linux__
|
||||
#include <linux/filter.h>
|
||||
#include <sys/epoll.h>
|
||||
@@ -1317,23 +1319,22 @@ TEST_P(SimpleTcpSocketTest, ListenConnectParallel) {
|
||||
std::vector<std::unique_ptr<ScopedThread>> threads;
|
||||
threads.reserve(num_threads);
|
||||
for (int i = 0; i < num_threads; i++) {
|
||||
threads.push_back(
|
||||
std::make_unique<ScopedThread>([&addr, &addrlen, family]() {
|
||||
const FileDescriptor c = ASSERT_NO_ERRNO_AND_VALUE(
|
||||
Socket(family, SOCK_STREAM | SOCK_NONBLOCK, IPPROTO_TCP));
|
||||
threads.push_back(std::make_unique<ScopedThread>([&addr, &addrlen,
|
||||
family]() {
|
||||
const FileDescriptor c = ASSERT_NO_ERRNO_AND_VALUE(
|
||||
Socket(family, SOCK_STREAM | SOCK_NONBLOCK, IPPROTO_TCP));
|
||||
|
||||
// Now connect to the bound address and this should fail as nothing
|
||||
// is listening on the bound address.
|
||||
EXPECT_THAT(RetryEINTR(connect)(c.get(), AsSockAddr(&addr), addrlen),
|
||||
SyscallFailsWithErrno(EINPROGRESS));
|
||||
// Wait for the connect to fail or succeed as it can race with the
|
||||
// socket listening.
|
||||
struct pollfd poll_fd = {c.get(), POLLERR | POLLOUT, 0};
|
||||
const int timeout =
|
||||
GvisorPlatform() == Platform::kFuchsia ? -1 : 1000;
|
||||
EXPECT_THAT(RetryEINTR(poll)(&poll_fd, 1, timeout),
|
||||
SyscallSucceedsWithValue(1));
|
||||
}));
|
||||
// Now connect to the bound address and this should fail as nothing
|
||||
// is listening on the bound address.
|
||||
EXPECT_THAT(RetryEINTR(connect)(c.get(), AsSockAddr(&addr), addrlen),
|
||||
SyscallFailsWithErrno(EINPROGRESS));
|
||||
// Wait for the connect to fail or succeed as it can race with the
|
||||
// socket listening.
|
||||
struct pollfd poll_fd = {c.get(), POLLERR | POLLOUT, 0};
|
||||
const int timeout = GvisorPlatform() == Platform::kFuchsia ? -1 : 1000;
|
||||
EXPECT_THAT(RetryEINTR(poll)(&poll_fd, 1, timeout),
|
||||
SyscallSucceedsWithValue(1));
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2458,24 +2459,18 @@ void ShutdownConnectingSocket(int domain, int shutdown_mode) {
|
||||
}
|
||||
|
||||
TEST_P(SimpleTcpSocketTest, ShutdownReadConnectingSocket) {
|
||||
// TODO(b/171436815): Re-enable when S/R is fixed.
|
||||
const DisableSave disable_save;
|
||||
// TODO(b/175409607): Fix this test for hostinet.
|
||||
SKIP_IF(IsRunningWithHostinet());
|
||||
ShutdownConnectingSocket(GetParam(), SHUT_RD);
|
||||
}
|
||||
|
||||
TEST_P(SimpleTcpSocketTest, ShutdownWriteConnectingSocket) {
|
||||
// TODO(b/171436815): Re-enable when S/R is fixed.
|
||||
const DisableSave disable_save;
|
||||
// TODO(b/175409607): Fix this test for hostinet.
|
||||
SKIP_IF(IsRunningWithHostinet());
|
||||
ShutdownConnectingSocket(GetParam(), SHUT_WR);
|
||||
}
|
||||
|
||||
TEST_P(SimpleTcpSocketTest, ShutdownReadWriteConnectingSocket) {
|
||||
// TODO(b/171436815): Re-enable when S/R is fixed.
|
||||
const DisableSave disable_save;
|
||||
// TODO(b/175409607): Fix this test for hostinet.
|
||||
SKIP_IF(IsRunningWithHostinet());
|
||||
ShutdownConnectingSocket(GetParam(), SHUT_RDWR);
|
||||
|
||||
Reference in New Issue
Block a user