1
//go:build aix || darwin || dragonfly || freebsd || netbsd || openbsd || solaris || zos
3
// Signal handling for Linux only.
14
SIGWINCH = syscall.SIGWINCH
17
// SignalMap is a map of Linux signals.
18
// These constants are sourced from the Linux version of golang.org/x/sys/unix
19
// (I don't see much risk of this changing).
20
// This should work as long as Podman only runs containers on Linux, which seems
21
// a safe assumption for now.
22
var SignalMap = map[string]syscall.Signal{
23
"ABRT": syscall.Signal(0x6),
24
"ALRM": syscall.Signal(0xe),
25
"BUS": syscall.Signal(0x7),
26
"CHLD": syscall.Signal(0x11),
27
"CLD": syscall.Signal(0x11),
28
"CONT": syscall.Signal(0x12),
29
"FPE": syscall.Signal(0x8),
30
"HUP": syscall.Signal(0x1),
31
"ILL": syscall.Signal(0x4),
32
"INT": syscall.Signal(0x2),
33
"IO": syscall.Signal(0x1d),
34
"IOT": syscall.Signal(0x6),
35
"KILL": syscall.Signal(0x9),
36
"PIPE": syscall.Signal(0xd),
37
"POLL": syscall.Signal(0x1d),
38
"PROF": syscall.Signal(0x1b),
39
"PWR": syscall.Signal(0x1e),
40
"QUIT": syscall.Signal(0x3),
41
"SEGV": syscall.Signal(0xb),
42
"STKFLT": syscall.Signal(0x10),
43
"STOP": syscall.Signal(0x13),
44
"SYS": syscall.Signal(0x1f),
45
"TERM": syscall.Signal(0xf),
46
"TRAP": syscall.Signal(0x5),
47
"TSTP": syscall.Signal(0x14),
48
"TTIN": syscall.Signal(0x15),
49
"TTOU": syscall.Signal(0x16),
50
"URG": syscall.Signal(0x17),
51
"USR1": syscall.Signal(0xa),
52
"USR2": syscall.Signal(0xc),
53
"VTALRM": syscall.Signal(0x1a),
54
"WINCH": syscall.Signal(0x1c),
55
"XCPU": syscall.Signal(0x18),
56
"XFSZ": syscall.Signal(0x19),
58
"RTMIN+1": sigrtmin + 1,
59
"RTMIN+2": sigrtmin + 2,
60
"RTMIN+3": sigrtmin + 3,
61
"RTMIN+4": sigrtmin + 4,
62
"RTMIN+5": sigrtmin + 5,
63
"RTMIN+6": sigrtmin + 6,
64
"RTMIN+7": sigrtmin + 7,
65
"RTMIN+8": sigrtmin + 8,
66
"RTMIN+9": sigrtmin + 9,
67
"RTMIN+10": sigrtmin + 10,
68
"RTMIN+11": sigrtmin + 11,
69
"RTMIN+12": sigrtmin + 12,
70
"RTMIN+13": sigrtmin + 13,
71
"RTMIN+14": sigrtmin + 14,
72
"RTMIN+15": sigrtmin + 15,
73
"RTMAX-14": sigrtmax - 14,
74
"RTMAX-13": sigrtmax - 13,
75
"RTMAX-12": sigrtmax - 12,
76
"RTMAX-11": sigrtmax - 11,
77
"RTMAX-10": sigrtmax - 10,
78
"RTMAX-9": sigrtmax - 9,
79
"RTMAX-8": sigrtmax - 8,
80
"RTMAX-7": sigrtmax - 7,
81
"RTMAX-6": sigrtmax - 6,
82
"RTMAX-5": sigrtmax - 5,
83
"RTMAX-4": sigrtmax - 4,
84
"RTMAX-3": sigrtmax - 3,
85
"RTMAX-2": sigrtmax - 2,
86
"RTMAX-1": sigrtmax - 1,
90
// IsSignalIgnoredBySigProxy determines whether sig-proxy should ignore syscall signal
91
func IsSignalIgnoredBySigProxy(s syscall.Signal) bool {
92
// Ignore SIGCHLD and SIGPIPE - these are most likely intended for the podman command itself.
93
// SIGURG was added because of golang 1.14 and its preemptive changes causing more signals to "show up".
94
// https://github.com/containers/podman/issues/5483
95
return s == syscall.SIGCHLD || s == syscall.SIGPIPE || s == syscall.SIGURG