Enable hostinet for netdevice tests.

This was just a matter of passing a few more IOCTL commands to the host.

PiperOrigin-RevId: 523540572
This commit is contained in:
Nicolas Lacasse
2023-04-11 16:46:35 -07:00
committed by gVisor bot
parent 5c792e384d
commit e64fa26613
3 changed files with 32 additions and 32 deletions
+8 -22
View File
@@ -68,7 +68,13 @@ func ioctl(ctx context.Context, fd int, io usermem.IO, sysno uintptr, args arch.
AddressSpaceActive: true,
})
return 0, err
case unix.SIOCGIFFLAGS:
case linux.SIOCGIFFLAGS,
linux.SIOCGIFHWADDR,
linux.SIOCGIFINDEX,
linux.SIOCGIFMTU,
linux.SIOCGIFNAME,
linux.SIOCGIFNETMASK,
linux.SIOCGIFTXQLEN:
cc := &usermem.IOCopyContext{
Ctx: ctx,
IO: io,
@@ -85,7 +91,7 @@ func ioctl(ctx context.Context, fd int, io usermem.IO, sysno uintptr, args arch.
}
_, err := ifr.CopyOut(cc, args[2].Pointer())
return 0, err
case unix.SIOCGIFCONF:
case linux.SIOCGIFCONF:
cc := &usermem.IOCopyContext{
Ctx: ctx,
IO: io,
@@ -187,26 +193,6 @@ func ioctl(ctx context.Context, fd int, io usermem.IO, sysno uintptr, args arch.
}
return 0, nil
case linux.SIOCGIFTXQLEN:
cc := &usermem.IOCopyContext{
Ctx: ctx,
IO: io,
Opts: usermem.IOOpts{
AddressSpaceActive: true,
},
}
var ifr linux.IFReq
if _, err := ifr.CopyIn(cc, args[2].Pointer()); err != nil {
return 0, err
}
if _, _, errno := unix.Syscall(unix.SYS_IOCTL, uintptr(fd), cmd, uintptr(unsafe.Pointer(&ifr))); errno != 0 {
return 0, translateIOSyscallError(errno)
}
_, err := ifr.CopyOut(cc, args[2].Pointer())
return 0, err
default:
return 0, linuxerr.ENOTTY
}
+24 -5
View File
@@ -39,11 +39,11 @@ func hostInetFilters(allowRawSockets bool) seccomp.SyscallRules {
unix.SYS_IOCTL: []seccomp.Rule{
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.TIOCOUTQ),
seccomp.EqualTo(unix.SIOCGIFCONF),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.TIOCINQ),
seccomp.EqualTo(unix.SIOCETHTOOL),
},
{
seccomp.MatchAny{},
@@ -51,12 +51,31 @@ func hostInetFilters(allowRawSockets bool) seccomp.SyscallRules {
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SIOCGIFCONF),
seccomp.EqualTo(unix.SIOCGIFHWADDR),
},
// Needed to query netlink sockets.
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SIOCETHTOOL),
seccomp.EqualTo(unix.SIOCGIFINDEX),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SIOCGIFMTU),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SIOCGIFNAME),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SIOCGIFNETMASK),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.TIOCOUTQ),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.TIOCINQ),
},
},
unix.SYS_LISTEN: {},
-5
View File
@@ -37,7 +37,6 @@ using ::testing::AnyOf;
using ::testing::Eq;
TEST(NetdeviceTest, Loopback) {
SKIP_IF(IsRunningWithHostinet());
FileDescriptor sock =
ASSERT_NO_ERRNO_AND_VALUE(Socket(AF_INET, SOCK_DGRAM, 0));
@@ -61,7 +60,6 @@ TEST(NetdeviceTest, Loopback) {
}
TEST(NetdeviceTest, Netmask) {
SKIP_IF(IsRunningWithHostinet());
// We need an interface index to identify the loopback device.
FileDescriptor sock =
ASSERT_NO_ERRNO_AND_VALUE(Socket(AF_INET, SOCK_DGRAM, 0));
@@ -137,7 +135,6 @@ TEST(NetdeviceTest, Netmask) {
}
TEST(NetdeviceTest, InterfaceName) {
SKIP_IF(IsRunningWithHostinet());
FileDescriptor sock =
ASSERT_NO_ERRNO_AND_VALUE(Socket(AF_INET, SOCK_DGRAM, 0));
@@ -171,7 +168,6 @@ TEST(NetdeviceTest, InterfaceFlags) {
}
TEST(NetdeviceTest, InterfaceMTU) {
SKIP_IF(IsRunningWithHostinet());
FileDescriptor sock =
ASSERT_NO_ERRNO_AND_VALUE(Socket(AF_INET, SOCK_DGRAM, 0));
@@ -203,7 +199,6 @@ TEST(NetdeviceTest, InterfaceQLEN) {
}
TEST(NetdeviceTest, EthtoolGetTSInfo) {
SKIP_IF(IsRunningWithHostinet());
FileDescriptor sock =
ASSERT_NO_ERRNO_AND_VALUE(Socket(AF_INET, SOCK_DGRAM, 0));