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-2024 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, write to the Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22 */
23
24#ifndef INIT_H
25#define INIT_H
26
27#include "openvpn.h"
28
29/*
30 * Baseline maximum number of events
31 * to wait for.
32 */
33#define BASE_N_EVENTS 5
34
35void context_clear(struct context *c);
36
37void context_clear_1(struct context *c);
38
39void context_clear_2(struct context *c);
40
41void context_init_1(struct context *c);
42
44
45bool init_static(void);
46
47void uninit_static(void);
48
49#define IVM_LEVEL_1 (1<<0)
50#define IVM_LEVEL_2 (1<<1)
51void init_verb_mute(struct context *c, unsigned int flags);
52
53void init_options_dev(struct options *options);
54
55bool print_openssl_info(const struct options *options);
56
57bool do_genkey(const struct options *options);
58
60
61bool possibly_become_daemon(const struct options *options);
62
63void pre_setup(const struct options *options);
64
65void init_instance_handle_signals(struct context *c, const struct env_set *env, 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,
78
79void close_instance(struct context *c);
80
81bool do_test_crypto(const struct options *o);
82
83void context_gc_free(struct context *c);
84
85bool do_up(struct context *c,
86 bool pulled_options,
87 unsigned int option_types_found);
88
89unsigned int pull_permission_mask(const struct context *c);
90
91const char *format_common_name(struct context *c, struct gc_arena *gc);
92
93void reset_coarse_timers(struct context *c);
94
95bool do_deferred_options(struct context *c, const unsigned int found);
96
97void inherit_context_child(struct context *dest,
98 const struct context *src,
99 struct link_socket *sock);
100
101void inherit_context_top(struct context *dest,
102 const struct context *src);
103
104#define CC_GC_FREE (1<<0)
105#define CC_USR1_TO_HUP (1<<1)
106#define CC_HARD_USR1_TO_HUP (1<<2)
107#define CC_NO_CLOSE (1<<3)
108
109void close_context(struct context *c, int sig, unsigned int flags);
110
111struct context_buffers *init_context_buffers(const struct frame *frame);
112
114
115#define ISC_ERRORS (1<<0)
116#define ISC_SERVER (1<<1)
117#define ISC_ROUTE_ERRORS (1<<2)
118void initialization_sequence_completed(struct context *c, const unsigned int flags);
119
120#ifdef ENABLE_MANAGEMENT
121
122void init_management(void);
123
124bool open_management(struct context *c);
125
126void close_management(void);
127
128void management_show_net_callback(void *arg, const int msglevel);
129
130#endif
131
133
135
136#ifdef ENABLE_PLUGIN
137void init_plugins(struct context *c);
138
139void open_plugins(struct context *c, const bool import_options, int init_point);
140
141#endif
142
143void tun_abort(void);
144
145void write_pid_file(const char *filename, const char *chroot_dir);
146
147void remove_pid_file(void);
148
149void persist_client_stats(struct context *c);
150
151#endif /* ifndef INIT_H */
void uninit_management_callback(void)
Definition init.c:4532
bool open_management(struct context *c)
Definition init.c:4469
bool do_genkey(const struct options *options)
Definition init.c:1031
void initialization_sequence_completed(struct context *c, const unsigned int flags)
Definition init.c:1590
void open_plugins(struct context *c, const bool import_options, int init_point)
Definition init.c:4303
void init_verb_mute(struct context *c, unsigned int flags)
Definition init.c:959
const char * format_common_name(struct context *c, struct gc_arena *gc)
Definition init.c:1303
void init_instance(struct context *c, const struct env_set *env, const unsigned int flags)
Definition init.c:4580
void close_instance(struct context *c)
Definition init.c:4872
void persist_client_stats(struct context *c)
Definition init.c:4543
void inherit_context_top(struct context *dest, const struct context *src)
Definition init.c:5037
void context_clear_1(struct context *c)
Definition init.c:83
bool do_test_crypto(const struct options *o)
Definition init.c:5187
void init_plugins(struct context *c)
Definition init.c:4293
void free_context_buffers(struct context_buffers *b)
Definition init.c:3777
void context_init_1(struct context *c)
Definition init.c:747
void pre_setup(const struct options *options)
Definition init.c:1314
void reset_coarse_timers(struct context *c)
Definition init.c:1342
void init_management(void)
Definition init.c:4460
void uninit_static(void)
Definition init.c:941
void init_instance_handle_signals(struct context *c, const struct env_set *env, const unsigned int flags)
Definition init.c:4558
void write_pid_file(const char *filename, const char *chroot_dir)
Definition init.c:5116
void context_gc_free(struct context *c)
Definition init.c:798
void init_options_dev(struct options *options)
Definition init.c:982
void init_query_passwords(const struct context *c)
Query for private key and auth-user-pass username/passwords.
Definition init.c:651
void inherit_context_child(struct context *dest, const struct context *src, struct link_socket *sock)
Definition init.c:4947
void context_clear_2(struct context *c)
Definition init.c:89
void context_clear(struct context *c)
Definition init.c:77
void remove_pid_file(void)
Definition init.c:5150
bool print_openssl_info(const struct options *options)
Definition init.c:992
void close_context(struct context *c, int sig, unsigned int flags)
Definition init.c:5084
bool do_persist_tuntap(struct options *options, openvpn_net_ctx_t *ctx)
Definition init.c:1114
bool do_up(struct context *c, bool pulled_options, unsigned int option_types_found)
Definition init.c:2457
void tun_abort(void)
Definition init.c:2255
bool init_static(void)
Definition init.c:837
bool possibly_become_daemon(const struct options *options)
Definition init.c:1177
unsigned int pull_permission_mask(const struct context *c)
Definition init.c:2592
void init_management_callback_p2p(struct context *c)
Definition init.c:4434
void management_show_net_callback(void *arg, const int msglevel)
Definition init.c:4372
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:1717
void context_clear_all_except_first_time(struct context *c)
Definition init.c:95
struct context_buffers * init_context_buffers(const struct frame *frame)
Definition init.c:3752
bool do_deferred_options(struct context *c, const unsigned int found)
Definition init.c:2670
void close_management(void)
Definition init.c:4519
void * openvpn_net_ctx_t
Definition networking.h:39
Contains all state information for one tunnel.
Definition openvpn.h:474
Packet geometry parameters.
Definition mtu.h:98
Garbage collection arena used to keep track of dynamically allocated memory.
Definition buffer.h:117
Definition tun.h:181
struct env_set * es
struct gc_arena gc
Definition test_ssl.c:155