12#ifndef OPENVPN_COMMON_SIGNAL_H
13#define OPENVPN_COMMON_SIGNAL_H
17#if !defined(OPENVPN_PLATFORM_WIN)
53 sigemptyset(&sa.sa_mask);
54 sa.sa_flags = SA_RESTART;
71 sa.sa_handler = SIG_DFL;
72 sigemptyset(&sa.sa_mask);
78 static void sigconf(
struct sigaction &sa,
const unsigned int flags)
94 static void sigact(
struct sigaction &sa,
const int sig)
96 if (sigaction(sig, &sa,
nullptr) == -1)
114 sigemptyset(&new_mask);
116 sigaddset(&new_mask, SIGINT);
118 sigaddset(&new_mask, SIGTERM);
120 sigaddset(&new_mask, SIGHUP);
122 sigaddset(&new_mask, SIGUSR1);
124 sigaddset(&new_mask, SIGUSR2);
126 sigaddset(&new_mask, SIGPIPE);
142 pthread_sigmask(SIG_SETMASK, &
old_mask_, 0);
const sigset_t * orig_sigset() const
SignalBlocker(const SignalBlocker &)=delete
SignalBlocker(const unsigned int flags)
SignalBlocker & operator=(const SignalBlocker &)=delete
static void reset_to_defaults(const unsigned int flags)
Signal(const handler_t handler, const unsigned int flags)
void(* handler_t)(int signum)
static void reset_all_to_defaults()
static void sigact(struct sigaction &sa, const int sig)
static void sigconf(struct sigaction &sa, const unsigned int flags)
OPENVPN_SIMPLE_EXCEPTION(signal_error)
~Signal() noexcept(false)
static void handler(int signum)