diff options
Diffstat (limited to 'sandbox')
| -rw-r--r-- | sandbox/seccomp/syscall.go | 28 | ||||
| -rw-r--r-- | sandbox/seccomp/syscall_test.go | 6 |
2 files changed, 33 insertions, 1 deletions
diff --git a/sandbox/seccomp/syscall.go b/sandbox/seccomp/syscall.go new file mode 100644 index 00000000..36a988aa --- /dev/null +++ b/sandbox/seccomp/syscall.go @@ -0,0 +1,28 @@ +package seccomp + +import "iter" + +// Syscalls returns an iterator over all wired syscalls. +func Syscalls() iter.Seq2[string, int] { + return func(yield func(string, int) bool) { + for name, num := range syscallNum { + if !yield(name, num) { + return + } + } + for name, num := range syscallNumExtra { + if !yield(name, num) { + return + } + } + } +} + +// SyscallResolveName resolves a syscall number from its string representation. +func SyscallResolveName(name string) (num int, ok bool) { + if num, ok = syscallNum[name]; ok { + return + } + num, ok = syscallNumExtra[name] + return +} diff --git a/sandbox/seccomp/syscall_test.go b/sandbox/seccomp/syscall_test.go index 81f470aa..933f060b 100644 --- a/sandbox/seccomp/syscall_test.go +++ b/sandbox/seccomp/syscall_test.go @@ -5,12 +5,16 @@ import ( ) func TestSyscallResolveName(t *testing.T) { - for name, want := range syscallNum { + for name, want := range Syscalls() { t.Run(name, func(t *testing.T) { if got := syscallResolveName(name); got != want { t.Errorf("syscallResolveName(%q) = %d, want %d", name, got, want) } + if got, ok := SyscallResolveName(name); !ok || got != want { + t.Errorf("SyscallResolveName(%q) = %d, want %d", + name, got, want) + } }) } } |
