inspektor-gadget
1//go:build !docs
2// +build !docs
3
4// Copyright 2019-2022 The Inspektor Gadget authors
5//
6// Licensed under the Apache License, Version 2.0 (the "License");
7// you may not use this file except in compliance with the License.
8// You may obtain a copy of the License at
9//
10// http://www.apache.org/licenses/LICENSE-2.0
11//
12// Unless required by applicable law or agreed to in writing, software
13// distributed under the License is distributed on an "AS IS" BASIS,
14// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15// See the License for the specific language governing permissions and
16// limitations under the License.
17
18package tracer19
20import (21"fmt"22
23"github.com/inspektor-gadget/inspektor-gadget/pkg/utils/syscalls"24)
25
26const (27SECCOMP_RET_KILL_PROCESS = 0x8000000028SECCOMP_RET_KILL_THREAD = 0x0000000029SECCOMP_RET_KILL = SECCOMP_RET_KILL_THREAD30SECCOMP_RET_TRAP = 0x0003000031SECCOMP_RET_ERRNO = 0x0005000032SECCOMP_RET_USER_NOTIF = 0x7fc0000033SECCOMP_RET_TRACE = 0x7ff0000034SECCOMP_RET_LOG = 0x7ffc000035SECCOMP_RET_ALLOW = 0x7fff000036SECCOMP_RET_ACTION_FULL = 0xffff000037)
38
39func syscallToName(syscall int) string {40name, ok := syscalls.GetSyscallNameByNumber(syscall)41if !ok {42name = fmt.Sprintf("syscall%d", syscall)43}44return name45}
46
47func codeToName(code uint) string {48switch code & SECCOMP_RET_ACTION_FULL {49case SECCOMP_RET_KILL_PROCESS:50return "kill_process"51case SECCOMP_RET_KILL_THREAD:52return "kill_thread"53case SECCOMP_RET_TRAP:54return "trap"55case SECCOMP_RET_ERRNO:56return "errno"57case SECCOMP_RET_USER_NOTIF:58return "user_notif"59case SECCOMP_RET_TRACE:60return "trace"61case SECCOMP_RET_LOG:62return "log"63case SECCOMP_RET_ALLOW:64return "allow"65default:66return "unknown"67}68}
69