Move hostinet seccomp filters into their own file.

The list is getting pretty long, and this is similar to how we handle all the
other "extra" filters that can be installed.

PiperOrigin-RevId: 506372912
This commit is contained in:
Nicolas Lacasse
2023-02-01 11:27:15 -08:00
committed by gVisor bot
parent 4374a0a375
commit e0b9cf05fe
3 changed files with 438 additions and 416 deletions
+1
View File
@@ -10,6 +10,7 @@ go_library(
"config_arm64.go",
"config_profile.go",
"extra_filters.go",
"extra_filters_hostinet.go",
"extra_filters_msan.go",
"extra_filters_race.go",
"extra_filters_race_amd64.go",
-416
View File
@@ -345,422 +345,6 @@ var allowedSyscalls = seccomp.SyscallRules{
},
}
// hostInetFilters contains syscalls that are needed by sentry/socket/hostinet.
func hostInetFilters() seccomp.SyscallRules {
return seccomp.SyscallRules{
unix.SYS_ACCEPT4: []seccomp.Rule{
{
seccomp.MatchAny{},
seccomp.MatchAny{},
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOCK_NONBLOCK | unix.SOCK_CLOEXEC),
},
},
unix.SYS_BIND: {},
unix.SYS_CONNECT: {},
unix.SYS_GETPEERNAME: {},
unix.SYS_GETSOCKNAME: {},
unix.SYS_GETSOCKOPT: []seccomp.Rule{
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_TOS),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_RECVTOS),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_TTL),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_RECVTTL),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_PKTINFO),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_RECVORIGDSTADDR),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_RECVERR),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_TCLASS),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_RECVTCLASS),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_RECVPKTINFO),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_UNICAST_HOPS),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_MULTICAST_HOPS),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_RECVHOPLIMIT),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_RECVERR),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_V6ONLY),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(linux.IPV6_RECVORIGDSTADDR),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_BROADCAST),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_ERROR),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_KEEPALIVE),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_SNDBUF),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_RCVBUF),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_REUSEADDR),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_TYPE),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_LINGER),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_TIMESTAMP),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_RCVTIMEO),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_SNDTIMEO),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_TCP),
seccomp.EqualTo(unix.TCP_NODELAY),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_TCP),
seccomp.EqualTo(unix.TCP_INFO),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_TCP),
seccomp.EqualTo(linux.TCP_INQ),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_TCP),
seccomp.EqualTo(linux.TCP_MAXSEG),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_TCP),
seccomp.EqualTo(linux.TCP_CONGESTION),
},
},
unix.SYS_IOCTL: []seccomp.Rule{
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.TIOCOUTQ),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.TIOCINQ),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SIOCGIFFLAGS),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SIOCGIFCONF),
},
},
unix.SYS_LISTEN: {},
unix.SYS_READV: {},
unix.SYS_RECVFROM: {},
unix.SYS_RECVMSG: {},
unix.SYS_SENDMSG: {},
unix.SYS_SENDTO: {},
unix.SYS_SETSOCKOPT: []seccomp.Rule{
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_BROADCAST),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_SNDBUF),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_RCVBUF),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_REUSEADDR),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_TIMESTAMP),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_TCP),
seccomp.EqualTo(unix.TCP_NODELAY),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_TCP),
seccomp.EqualTo(linux.TCP_INQ),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_TCP),
seccomp.EqualTo(linux.TCP_MAXSEG),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_TCP),
seccomp.EqualTo(linux.TCP_CONGESTION),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_TOS),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_RECVTOS),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_TTL),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_RECVTTL),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_PKTINFO),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_RECVPKTINFO),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_RECVORIGDSTADDR),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_RECVERR),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_TCLASS),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_RECVTCLASS),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_UNICAST_HOPS),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_MULTICAST_HOPS),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_RECVHOPLIMIT),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(linux.IPV6_RECVORIGDSTADDR),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_RECVERR),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_V6ONLY),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
},
unix.SYS_SHUTDOWN: []seccomp.Rule{
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SHUT_RD),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SHUT_WR),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SHUT_RDWR),
},
},
unix.SYS_SOCKET: []seccomp.Rule{
{
seccomp.EqualTo(unix.AF_INET),
seccomp.EqualTo(unix.SOCK_STREAM | unix.SOCK_NONBLOCK | unix.SOCK_CLOEXEC),
seccomp.EqualTo(0),
},
{
seccomp.EqualTo(unix.AF_INET),
seccomp.EqualTo(unix.SOCK_DGRAM | unix.SOCK_NONBLOCK | unix.SOCK_CLOEXEC),
seccomp.EqualTo(0),
},
{
seccomp.EqualTo(unix.AF_INET6),
seccomp.EqualTo(unix.SOCK_STREAM | unix.SOCK_NONBLOCK | unix.SOCK_CLOEXEC),
seccomp.EqualTo(0),
},
{
seccomp.EqualTo(unix.AF_INET6),
seccomp.EqualTo(unix.SOCK_DGRAM | unix.SOCK_NONBLOCK | unix.SOCK_CLOEXEC),
seccomp.EqualTo(0),
},
},
unix.SYS_WRITEV: {},
}
}
func controlServerFilters(fd int) seccomp.SyscallRules {
return seccomp.SyscallRules{
unix.SYS_ACCEPT4: []seccomp.Rule{
+437
View File
@@ -0,0 +1,437 @@
// Copyright 2023 The gVisor Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package filter
import (
"golang.org/x/sys/unix"
"gvisor.dev/gvisor/pkg/abi/linux"
"gvisor.dev/gvisor/pkg/seccomp"
)
// hostInetFilters contains syscalls that are needed by sentry/socket/hostinet.
func hostInetFilters() seccomp.SyscallRules {
return seccomp.SyscallRules{
unix.SYS_ACCEPT4: []seccomp.Rule{
{
seccomp.MatchAny{},
seccomp.MatchAny{},
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOCK_NONBLOCK | unix.SOCK_CLOEXEC),
},
},
unix.SYS_BIND: {},
unix.SYS_CONNECT: {},
unix.SYS_GETPEERNAME: {},
unix.SYS_GETSOCKNAME: {},
unix.SYS_GETSOCKOPT: []seccomp.Rule{
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_TOS),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_RECVTOS),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_TTL),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_RECVTTL),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_PKTINFO),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_RECVORIGDSTADDR),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_RECVERR),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_TCLASS),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_RECVTCLASS),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_RECVPKTINFO),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_UNICAST_HOPS),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_MULTICAST_HOPS),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_RECVHOPLIMIT),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_RECVERR),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_V6ONLY),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(linux.IPV6_RECVORIGDSTADDR),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_BROADCAST),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_ERROR),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_KEEPALIVE),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_SNDBUF),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_RCVBUF),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_REUSEADDR),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_TYPE),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_LINGER),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_TIMESTAMP),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_RCVTIMEO),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_SNDTIMEO),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_TCP),
seccomp.EqualTo(unix.TCP_NODELAY),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_TCP),
seccomp.EqualTo(unix.TCP_INFO),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_TCP),
seccomp.EqualTo(linux.TCP_INQ),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_TCP),
seccomp.EqualTo(linux.TCP_MAXSEG),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_TCP),
seccomp.EqualTo(linux.TCP_CONGESTION),
},
},
unix.SYS_IOCTL: []seccomp.Rule{
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.TIOCOUTQ),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.TIOCINQ),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SIOCGIFFLAGS),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SIOCGIFCONF),
},
},
unix.SYS_LISTEN: {},
unix.SYS_READV: {},
unix.SYS_RECVFROM: {},
unix.SYS_RECVMSG: {},
unix.SYS_SENDMSG: {},
unix.SYS_SENDTO: {},
unix.SYS_SETSOCKOPT: []seccomp.Rule{
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_BROADCAST),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_SNDBUF),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_RCVBUF),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_REUSEADDR),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_SOCKET),
seccomp.EqualTo(unix.SO_TIMESTAMP),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_TCP),
seccomp.EqualTo(unix.TCP_NODELAY),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_TCP),
seccomp.EqualTo(linux.TCP_INQ),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_TCP),
seccomp.EqualTo(linux.TCP_MAXSEG),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_TCP),
seccomp.EqualTo(linux.TCP_CONGESTION),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_TOS),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_RECVTOS),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_TTL),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_RECVTTL),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_PKTINFO),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_RECVPKTINFO),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_RECVORIGDSTADDR),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IP),
seccomp.EqualTo(unix.IP_RECVERR),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_TCLASS),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_RECVTCLASS),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_UNICAST_HOPS),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_MULTICAST_HOPS),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_RECVHOPLIMIT),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(linux.IPV6_RECVORIGDSTADDR),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_RECVERR),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SOL_IPV6),
seccomp.EqualTo(unix.IPV6_V6ONLY),
seccomp.MatchAny{},
seccomp.EqualTo(4),
},
},
unix.SYS_SHUTDOWN: []seccomp.Rule{
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SHUT_RD),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SHUT_WR),
},
{
seccomp.MatchAny{},
seccomp.EqualTo(unix.SHUT_RDWR),
},
},
unix.SYS_SOCKET: []seccomp.Rule{
{
seccomp.EqualTo(unix.AF_INET),
seccomp.EqualTo(unix.SOCK_STREAM | unix.SOCK_NONBLOCK | unix.SOCK_CLOEXEC),
seccomp.EqualTo(0),
},
{
seccomp.EqualTo(unix.AF_INET),
seccomp.EqualTo(unix.SOCK_DGRAM | unix.SOCK_NONBLOCK | unix.SOCK_CLOEXEC),
seccomp.EqualTo(0),
},
{
seccomp.EqualTo(unix.AF_INET6),
seccomp.EqualTo(unix.SOCK_STREAM | unix.SOCK_NONBLOCK | unix.SOCK_CLOEXEC),
seccomp.EqualTo(0),
},
{
seccomp.EqualTo(unix.AF_INET6),
seccomp.EqualTo(unix.SOCK_DGRAM | unix.SOCK_NONBLOCK | unix.SOCK_CLOEXEC),
seccomp.EqualTo(0),
},
},
unix.SYS_WRITEV: {},
}
}