OpenVPN
init.h
Go to the documentation of this file.
1/*
2 * OpenVPN -- An application to securely tunnel IP networks
3 * over a single TCP/UDP port, with support for SSL/TLS-based
4 * session authentication and key exchange,
5 * packet encryption, packet authentication, and
6 * packet compression.
7 *
8 * Copyright (C) 2002-2025 OpenVPN Inc <sales@openvpn.net>
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License version 2
12 * as published by the Free Software Foundation.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License along
20 * with this program; if not, see <https://www.gnu.org/licenses/>.
21 */
22
23#ifndef INIT_H
24#define INIT_H
25
26#include "openvpn.h"
27
28/*
29 * Baseline maximum number of events
30 * to wait for.
31 */
32#define BASE_N_EVENTS 5
33
34void context_clear(struct context *c);
35
36void context_clear_1(struct context *c);
37
38void context_clear_2(struct context *c);
39
40void context_init_1(struct context *c);
41
43
44bool init_static(void);
45
46void uninit_static(void);
47
48#define IVM_LEVEL_1 (1 << 0)
49#define IVM_LEVEL_2 (1 << 1)
50void init_verb_mute(struct context *c, unsigned int flags);
51
52void init_options_dev(struct options *options);
53
54bool print_openssl_info(const struct options *options);
55
56bool do_genkey(const struct options *options);
57
59
60bool possibly_become_daemon(const struct options *options);
61
62void pre_setup(const struct options *options);
63
64void init_instance_handle_signals(struct context *c, const struct env_set *env,
65 const unsigned int flags);
66
67void init_instance(struct context *c, const struct env_set *env, const unsigned int flags);
68
72void init_query_passwords(const struct context *c);
73
74bool do_route(const struct options *options, struct route_list *route_list,
75 struct route_ipv6_list *route_ipv6_list, const struct tuntap *tt,
76 const struct plugin_list *plugins, struct env_set *es, openvpn_net_ctx_t *ctx);
77
78void close_instance(struct context *c);
79
80bool do_test_crypto(const struct options *o);
81
82void context_gc_free(struct context *c);
83
84bool do_up(struct context *c, bool pulled_options, unsigned int option_types_found);
85
96bool do_update(struct context *c, unsigned int option_types_found);
97
98unsigned int pull_permission_mask(const struct context *c);
99
100const char *format_common_name(struct context *c, struct gc_arena *gc);
101
102void reset_coarse_timers(struct context *c);
103
104/*
105 * Handle non-tun-related pulled options.
106 * Set `is_update` param to true to skip NCP check.
107 */
108bool do_deferred_options(struct context *c, const unsigned int found, const bool is_update);
109
110void inherit_context_child(struct context *dest, const struct context *src,
111 struct link_socket *sock);
112
113void inherit_context_top(struct context *dest, const struct context *src);
114
115#define CC_GC_FREE (1 << 0)
116#define CC_USR1_TO_HUP (1 << 1)
117#define CC_HARD_USR1_TO_HUP (1 << 2)
118#define CC_NO_CLOSE (1 << 3)
119
120void close_context(struct context *c, int sig, unsigned int flags);
121
122struct context_buffers *init_context_buffers(const struct frame *frame);
123
125
126#define ISC_ERRORS (1 << 0)
127#define ISC_SERVER (1 << 1)
128#define ISC_ROUTE_ERRORS (1 << 2)
129void initialization_sequence_completed(struct context *c, const unsigned int flags);
130
131#ifdef ENABLE_MANAGEMENT
132
133void init_management(void);
134
135bool open_management(struct context *c);
136
137void close_management(void);
138
139void management_show_net_callback(void *arg, const msglvl_t msglevel);
140
141#endif
142
144
146
147#ifdef ENABLE_PLUGIN
148void init_plugins(struct context *c);
149
150void open_plugins(struct context *c, const bool import_options, int init_point);
151
152#endif
153
154void tun_abort(void);
155
156void write_pid_file(const char *filename, const char *chroot_dir);
157
158void remove_pid_file(void);
159
160void persist_client_stats(struct context *c);
161
162#endif /* ifndef INIT_H */
void uninit_management_callback(void)
Definition init.c:4435
bool open_management(struct context *c)
Definition init.c:4382
bool do_genkey(const struct options *options)
Definition init.c:1021
void initialization_sequence_completed(struct context *c, const unsigned int flags)
Definition init.c:1552
void open_plugins(struct context *c, const bool import_options, int init_point)
Definition init.c:4219
void init_verb_mute(struct context *c, unsigned int flags)
Definition init.c:949
const char * format_common_name(struct context *c, struct gc_arena *gc)
Definition init.c:1286
void init_instance(struct context *c, const struct env_set *env, const unsigned int flags)
Definition init.c:4483
void close_instance(struct context *c)
Definition init.c:4775
void persist_client_stats(struct context *c)
Definition init.c:4446
void inherit_context_top(struct context *dest, const struct context *src)
Definition init.c:4936
void context_clear_1(struct context *c)
Definition init.c:82
bool do_test_crypto(const struct options *o)
Definition init.c:5085
void init_plugins(struct context *c)
Definition init.c:4209
void free_context_buffers(struct context_buffers *b)
Definition init.c:3705
void context_init_1(struct context *c)
Definition init.c:740
void pre_setup(const struct options *options)
Definition init.c:1297
void reset_coarse_timers(struct context *c)
Definition init.c:1320
void init_management(void)
Definition init.c:4373
void uninit_static(void)
Definition init.c:931
void init_instance_handle_signals(struct context *c, const struct env_set *env, const unsigned int flags)
Definition init.c:4461
bool do_update(struct context *c, unsigned int option_types_found)
A simplified version of the do_up() function.
Definition init.c:2491
void write_pid_file(const char *filename, const char *chroot_dir)
Definition init.c:5014
void context_gc_free(struct context *c)
Definition init.c:791
void init_options_dev(struct options *options)
Definition init.c:972
void init_query_passwords(const struct context *c)
Query for private key and auth-user-pass username/passwords.
Definition init.c:645
bool do_deferred_options(struct context *c, const unsigned int found, const bool is_update)
Definition init.c:2605
void inherit_context_child(struct context *dest, const struct context *src, struct link_socket *sock)
Definition init.c:4848
void context_clear_2(struct context *c)
Definition init.c:88
void context_clear(struct context *c)
Definition init.c:76
void remove_pid_file(void)
Definition init.c:5048
bool print_openssl_info(const struct options *options)
Definition init.c:983
void close_context(struct context *c, int sig, unsigned int flags)
Definition init.c:4982
bool do_persist_tuntap(struct options *options, openvpn_net_ctx_t *ctx)
Definition init.c:1102
bool do_up(struct context *c, bool pulled_options, unsigned int option_types_found)
Definition init.c:2356
void tun_abort(void)
Definition init.c:2159
bool init_static(void)
Definition init.c:829
bool possibly_become_daemon(const struct options *options)
Definition init.c:1161
unsigned int pull_permission_mask(const struct context *c)
Definition init.c:2544
void init_management_callback_p2p(struct context *c)
Definition init.c:4347
bool do_route(const struct options *options, struct route_list *route_list, struct route_ipv6_list *route_ipv6_list, const struct tuntap *tt, const struct plugin_list *plugins, struct env_set *es, openvpn_net_ctx_t *ctx)
Definition init.c:1673
void context_clear_all_except_first_time(struct context *c)
Definition init.c:94
struct context_buffers * init_context_buffers(const struct frame *frame)
Definition init.c:3680
void close_management(void)
Definition init.c:4422
void management_show_net_callback(void *arg, const msglvl_t msglevel)
Definition init.c:4285
void * openvpn_net_ctx_t
Definition networking.h:38
unsigned int msglvl_t
Definition error.h:77
Contains all state information for one tunnel.
Definition openvpn.h:474
Packet geometry parameters.
Definition mtu.h:103
Garbage collection arena used to keep track of dynamically allocated memory.
Definition buffer.h:116
Definition tun.h:183
struct env_set * es
struct gc_arena gc
Definition test_ssl.c:131