OpenVPN
|
#include "syshead.h"
#include "buffer.h"
#include "error.h"
#include "win32.h"
#include "init.h"
#include "status.h"
#include "sig.h"
#include "occ.h"
#include "manage.h"
#include "openvpn.h"
#include "memdbg.h"
Go to the source code of this file.
Data Structures | |
struct | signame |
Macros | |
#define | SM_UNDEF 0 |
#define | SM_PRE_INIT 1 |
#define | SM_POST_INIT 2 |
Functions | |
int | parse_signal (const char *signame) |
const char * | signal_name (const int sig, const bool upper) |
const char * | signal_description (const int signum, const char *sigtext) |
void | throw_signal (const int signum) |
void | throw_signal_soft (const int signum, const char *signal_text) |
static void | signal_reset (struct signal_info *si) |
void | print_signal (const struct signal_info *si, const char *title, int msglevel) |
void | signal_restart_status (const struct signal_info *si) |
static void | signal_handler (const int signum) |
void | pre_init_signal_catch (void) |
void | post_init_signal_catch (void) |
void | restore_signal_state (void) |
void | print_status (const struct context *c, struct status_output *so) |
static void | process_explicit_exit_notification_init (struct context *c) |
void | process_explicit_exit_notification_timer_wakeup (struct context *c) |
void | remap_signal (struct context *c) |
static void | process_sigusr2 (const struct context *c) |
static bool | process_sigterm (struct context *c) |
static bool | ignore_restart_signals (struct context *c) |
If a restart signal is received during exit-notification, reset the signal and return true. More... | |
bool | process_signal (struct context *c) |
void | register_signal (struct context *c, int sig, const char *text) |
Variables | |
struct signal_info | siginfo_static |
static const struct signame | signames [] |
static int | signal_mode |
#define SM_POST_INIT 2 |
Definition at line 231 of file sig.c.
Referenced by post_init_signal_catch(), and restore_signal_state().
#define SM_PRE_INIT 1 |
Definition at line 230 of file sig.c.
Referenced by pre_init_signal_catch(), and restore_signal_state().
|
static |
If a restart signal is received during exit-notification, reset the signal and return true.
If its a soft restart signal from the event loop which implies the loop cannot continue, remap to SIGTERM to exit promptly.
Definition at line 401 of file sig.c.
References context::c2, event_timeout_defined(), context_2::explicit_exit_notification_interval, M_INFO, msg, register_signal(), context::sig, SIG_SOURCE_HARD, SIGHUP, signal_name(), signal_info::signal_received, signal_reset(), SIGTERM, SIGUSR1, and signal_info::source.
Referenced by process_signal().
int parse_signal | ( | const char * | signame | ) |
Definition at line 63 of file sig.c.
References SIZE, signame::upper, and signame::value.
Referenced by man_signal().
void post_init_signal_catch | ( | void | ) |
Definition at line 249 of file sig.c.
References SIGHUP, SIGINT, signal_handler(), signal_mode, SIGTERM, SIGUSR1, SIGUSR2, and SM_POST_INIT.
Referenced by init_instance_handle_signals(), and restore_signal_state().
void pre_init_signal_catch | ( | void | ) |
Definition at line 235 of file sig.c.
References SIGHUP, SIGINT, signal_handler(), signal_mode, SIGTERM, SIGUSR1, SIGUSR2, and SM_PRE_INIT.
Referenced by init_instance_handle_signals(), openvpn_main(), and restore_signal_state().
void print_signal | ( | const struct signal_info * | si, |
const char * | title, | ||
int | msglevel | ||
) |
Definition at line 130 of file sig.c.
References ASSERT, msg, SIG_SOURCE_CONNECTION_FAILED, SIG_SOURCE_HARD, SIG_SOURCE_SOFT, SIGHUP, SIGINT, signal_name(), signal_info::signal_received, signal_info::signal_text, SIGTERM, SIGUSR1, and signal_info::source.
Referenced by multi_close_instance_on_signal(), and openvpn_main().
void print_status | ( | const struct context * | c, |
struct status_output * | so | ||
) |
Definition at line 282 of file sig.c.
References context::c1, context::c2, counter_format, gc_free(), gc_new(), context_2::link_read_bytes, context_2::link_read_bytes_auth, context_2::link_write_bytes, status_flush(), status_printf(), status_reset(), tap_win_getinfo(), time_string(), context_2::tun_read_bytes, context_2::tun_write_bytes, context_1::tuntap, and tuntap_defined().
Referenced by check_status_file(), management_callback_status_p2p(), and process_sigusr2().
|
static |
Definition at line 329 of file sig.c.
References context::c2, event_timeout_init(), context_2::explicit_exit_notification_interval, context_2::explicit_exit_notification_time_wait, halt_non_edge_triggered_signals(), M_INFO, msg, now, reset_coarse_timers(), context::sig, and signal_reset().
Referenced by process_sigterm().
void process_explicit_exit_notification_timer_wakeup | ( | struct context * | c | ) |
Definition at line 340 of file sig.c.
References ASSERT, context::c2, options::ce, ETT_DEFAULT, event_timeout_clear(), event_timeout_trigger(), connection_entry::explicit_exit_notification, context_2::explicit_exit_notification_interval, context_2::explicit_exit_notification_time_wait, now, OCC_EXIT, context_2::occ_op, context::options, context::sig, signal_info::signal_received, signal_info::signal_text, SIGTERM, and context_2::timeval.
Referenced by process_coarse_timers().
bool process_signal | ( | struct context * | c | ) |
Definition at line 426 of file sig.c.
References ignore_restart_signals(), process_sigterm(), process_sigusr2(), context::sig, SIGINT, signal_info::signal_received, SIGTERM, and SIGUSR2.
Referenced by process_signal_p2p().
|
static |
Definition at line 383 of file sig.c.
References context::c2, options::ce, connection_entry::explicit_exit_notification, context_2::explicit_exit_notification_time_wait, context::options, and process_explicit_exit_notification_init().
Referenced by process_signal().
|
static |
Definition at line 374 of file sig.c.
References M_INFO, print_status(), context::sig, signal_reset(), status_close(), and status_open().
Referenced by process_signal().
void register_signal | ( | struct context * | c, |
int | sig, | ||
const char * | text | ||
) |
Definition at line 447 of file sig.c.
References context::sig, signal_info::signal_received, signal_info::signal_text, and SIGTERM.
Referenced by check_add_routes(), check_inactivity_timeout(), check_scheduled_exit(), check_server_poll_timeout(), check_tls(), check_tls_errors_co(), check_tls_errors_nco(), ignore_restart_signals(), incoming_push_message(), multi_client_generate_tls_keys(), process_incoming_link_part1(), process_outgoing_link(), read_incoming_link(), and read_incoming_tun().
void remap_signal | ( | struct context * | c | ) |
Definition at line 365 of file sig.c.
References context::options, options::remap_sigusr1, context::sig, signal_info::signal_received, and SIGUSR1.
Referenced by init_instance_handle_signals(), multi_close_instance_on_signal(), and process_signal_p2p().
void restore_signal_state | ( | void | ) |
Definition at line 264 of file sig.c.
References post_init_signal_catch(), pre_init_signal_catch(), signal_mode, SM_POST_INIT, and SM_PRE_INIT.
Referenced by possibly_become_daemon().
const char* signal_description | ( | const int | signum, |
const char * | sigtext | ||
) |
|
static |
Definition at line 220 of file sig.c.
References throw_signal().
Referenced by post_init_signal_catch(), and pre_init_signal_catch().
const char* signal_name | ( | const int | sig, |
const bool | upper | ||
) |
Definition at line 77 of file sig.c.
References signame::lower, SIZE, signame::upper, and signame::value.
Referenced by ignore_restart_signals(), man_signal(), print_signal(), signal_description(), and signal_restart_status().
|
static |
Definition at line 119 of file sig.c.
References SIG_SOURCE_SOFT, signal_info::signal_received, signal_info::signal_text, and signal_info::source.
Referenced by ignore_restart_signals(), process_explicit_exit_notification_init(), and process_sigusr2().
void signal_restart_status | ( | const struct signal_info * | si | ) |
Definition at line 184 of file sig.c.
References management_set_state(), OPENVPN_STATE_EXITING, OPENVPN_STATE_RECONNECTING, SIGHUP, SIGINT, signal_name(), signal_info::signal_received, signal_info::signal_text, SIGTERM, and SIGUSR1.
Referenced by openvpn_main().
void throw_signal | ( | const int | signum | ) |
Definition at line 104 of file sig.c.
References SIG_SOURCE_HARD, siginfo_static, signal_info::signal_received, and signal_info::source.
Referenced by man_connect(), man_signal(), multi_process_timeout(), signal_handler(), and win_ctrl_handler().
void throw_signal_soft | ( | const int | signum, |
const char * | signal_text | ||
) |
Definition at line 111 of file sig.c.
References SIG_SOURCE_SOFT, siginfo_static, signal_info::signal_received, signal_info::signal_text, and signal_info::source.
Referenced by apply_pull_filter(), do_preresolve(), man_connect(), man_record_peer_info(), and man_reset_client_socket().
struct signal_info siginfo_static |
Definition at line 46 of file sig.c.
Referenced by halt_non_edge_triggered_signals(), openvpn_main(), throw_signal(), throw_signal_soft(), win32_signal_get(), and win_ctrl_handler().
|
static |
Definition at line 232 of file sig.c.
Referenced by post_init_signal_catch(), pre_init_signal_catch(), and restore_signal_state().
|
static |