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 int 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:4426
bool open_management(struct context *c)
Definition init.c:4373
bool do_genkey(const struct options *options)
Definition init.c:1016
void initialization_sequence_completed(struct context *c, const unsigned int flags)
Definition init.c:1547
void open_plugins(struct context *c, const bool import_options, int init_point)
Definition init.c:4210
void init_verb_mute(struct context *c, unsigned int flags)
Definition init.c:944
const char * format_common_name(struct context *c, struct gc_arena *gc)
Definition init.c:1281
void init_instance(struct context *c, const struct env_set *env, const unsigned int flags)
Definition init.c:4474
void close_instance(struct context *c)
Definition init.c:4766
void persist_client_stats(struct context *c)
Definition init.c:4437
void inherit_context_top(struct context *dest, const struct context *src)
Definition init.c:4927
void context_clear_1(struct context *c)
Definition init.c:82
bool do_test_crypto(const struct options *o)
Definition init.c:5076
void init_plugins(struct context *c)
Definition init.c:4200
void free_context_buffers(struct context_buffers *b)
Definition init.c:3696
void context_init_1(struct context *c)
Definition init.c:735
void pre_setup(const struct options *options)
Definition init.c:1292
void reset_coarse_timers(struct context *c)
Definition init.c:1315
void init_management(void)
Definition init.c:4364
void uninit_static(void)
Definition init.c:926
void init_instance_handle_signals(struct context *c, const struct env_set *env, const unsigned int flags)
Definition init.c:4452
bool do_update(struct context *c, unsigned int option_types_found)
A simplified version of the do_up() function.
Definition init.c:2486
void write_pid_file(const char *filename, const char *chroot_dir)
Definition init.c:5005
void context_gc_free(struct context *c)
Definition init.c:786
void init_options_dev(struct options *options)
Definition init.c:967
void init_query_passwords(const struct context *c)
Query for private key and auth-user-pass username/passwords.
Definition init.c:640
bool do_deferred_options(struct context *c, const unsigned int found, const bool is_update)
Definition init.c:2600
void inherit_context_child(struct context *dest, const struct context *src, struct link_socket *sock)
Definition init.c:4839
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:5039
bool print_openssl_info(const struct options *options)
Definition init.c:978
void close_context(struct context *c, int sig, unsigned int flags)
Definition init.c:4973
bool do_persist_tuntap(struct options *options, openvpn_net_ctx_t *ctx)
Definition init.c:1097
bool do_up(struct context *c, bool pulled_options, unsigned int option_types_found)
Definition init.c:2351
void tun_abort(void)
Definition init.c:2154
bool init_static(void)
Definition init.c:824
bool possibly_become_daemon(const struct options *options)
Definition init.c:1156
unsigned int pull_permission_mask(const struct context *c)
Definition init.c:2539
void init_management_callback_p2p(struct context *c)
Definition init.c:4338
void management_show_net_callback(void *arg, const int msglevel)
Definition init.c:4276
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:1668
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:3671
void close_management(void)
Definition init.c:4413
void * openvpn_net_ctx_t
Definition networking.h:38
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:154