noop upon IP_PMTUDISC_INTERFACE and IP_PMTUDISC_OMIT

This is what we did previously, and doing so avoids breaking some users.

Fixes #10760.

PiperOrigin-RevId: 663358270
This commit is contained in:
Kevin Krakauer
2024-08-15 10:35:00 -07:00
committed by gVisor bot
parent b508258e39
commit 626010438a
2 changed files with 16 additions and 0 deletions
+2
View File
@@ -2625,6 +2625,8 @@ func setSockOptIP(t *kernel.Task, s socket.Socket, ep commonEndpoint, name int,
v = int32(tcpip.PMTUDiscoveryDo)
case linux.IP_PMTUDISC_PROBE:
v = int32(tcpip.PMTUDiscoveryProbe)
case linux.IP_PMTUDISC_INTERFACE, linux.IP_PMTUDISC_OMIT:
return nil // Noop.
default:
return syserr.ErrNotSupported
}
+14
View File
@@ -2755,6 +2755,20 @@ TEST_P(SimpleTcpSocketTest, SetTCPCorkOff) {
}
#endif // __linux__
TEST_P(SimpleTcpSocketTest, SetUnsupportedPMTUDISC) {
int fd;
ASSERT_THAT(fd = socket(GetParam(), SOCK_STREAM, IPPROTO_TCP),
SyscallSucceeds());
int set = IP_PMTUDISC_INTERFACE;
socklen_t length = sizeof(set);
EXPECT_THAT(setsockopt(fd, IPPROTO_IP, IP_MTU_DISCOVER, &set, length),
SyscallSucceeds());
set = IP_PMTUDISC_OMIT;
EXPECT_THAT(setsockopt(fd, IPPROTO_IP, IP_MTU_DISCOVER, &set, length),
SyscallSucceeds());
}
INSTANTIATE_TEST_SUITE_P(AllInetTests, SimpleTcpSocketTest,
::testing::Values(AF_INET, AF_INET6));