OpenVPN
openvpn.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 OPENVPN_H
25 #define OPENVPN_H
26 
27 #include "buffer.h"
28 #include "options.h"
29 #include "socket.h"
30 #include "crypto.h"
31 #include "ssl.h"
32 #include "packet_id.h"
33 #include "comp.h"
34 #include "tun.h"
35 #include "interval.h"
36 #include "status.h"
37 #include "fragment.h"
38 #include "shaper.h"
39 #include "route.h"
40 #include "proxy.h"
41 #include "socks.h"
42 #include "sig.h"
43 #include "misc.h"
44 #include "mbuf.h"
45 #include "pool.h"
46 #include "plugin.h"
47 #include "manage.h"
48 
49 /*
50  * Our global key schedules, packaged thusly
51  * to facilitate key persistence.
52  */
53 
55 {
56  /* which cipher, HMAC digest, and key sizes are we using? */
58 
59  /* pre-shared static key, read from a file */
61 
62  /* our global SSL context */
64 
65  /* optional TLS control channel wrapping */
74 };
75 
76 /*
77  * struct packet_id_persist should be empty if we are not
78  * building with crypto.
79  */
80 #ifndef PACKET_ID_H
82 {
83  int dummy;
84 };
85 static inline void
87 {
88 }
89 #endif
90 
91 /*
92  * Packet processing buffers.
93  */
95 {
96  /* miscellaneous buffer, used by ping, occ, etc. */
97  struct buffer aux_buf;
98 
99  /* workspace buffers used by crypto routines */
102 
103  /* workspace buffers for compression */
104 #ifdef USE_COMP
105  struct buffer compress_buf;
106  struct buffer decompress_buf;
107 #endif
108 
109  /*
110  * Buffers used to read from TUN device
111  * and TCP/UDP port.
112  */
115 };
116 
117 /*
118  * always-persistent context variables
119  */
121 {
123 };
124 
125 
126 /**************************************************************************/
135 struct context_0
136 {
137  /* workspace for --user/--group */
139  /* helper which tells us whether we should keep trying to drop privileges */
143 };
144 
145 
155 struct context_1
156 {
161  /* tunnel session keys */
162  struct key_schedule ks;
163 
164  /* preresolved and cached host names */
166 
167  /* persist crypto sequence number to/from file */
169 
170  struct tuntap *tuntap;
179  /* list of --route-ipv6 directives */
181 
182  /* --status file */
185 
186  /* HTTP proxy object */
189 
190  /* SOCKS proxy object */
193 
194  /* persist --ifconfig-pool db to file */
197 
198  /* if client mode, hash of option strings we pulled from server */
207 };
208 
209 
210 static inline bool
212 {
213  return cas == CAS_PENDING || cas == CAS_PENDING_DEFERRED
215 }
216 
226 struct context_2
227 {
228  struct gc_arena gc;
232  /* our global wait events */
236 
237  /* bitmask for event status. Check event.h for possible values */
238  unsigned int event_set_status;
239 
240  struct link_socket *link_socket; /* socket used for TCP/UDP connection to remote */
242 
245  const struct link_socket *accept_from; /* possibly do accept() on a parent link_socket */
246 
247  struct link_socket_actual *to_link_addr; /* IP address of remote */
248  struct link_socket_actual from; /* address of incoming datagram */
249 
250  /* MTU frame parameters */
251  struct frame frame; /* Active frame parameters */
252 
253 #ifdef ENABLE_FRAGMENT
254  /* Object to handle advanced MTU negotiation and datagram fragmentation */
257 #endif
258 
259  /*
260  * Traffic shaper object.
261  */
262  struct shaper shaper;
263 
264  /*
265  * Statistics
266  */
274 #ifdef PACKET_TRUNCATION_CHECK
275  counter_type n_trunc_tun_read;
276  counter_type n_trunc_tun_write;
277  counter_type n_trunc_pre_encrypt;
278  counter_type n_trunc_post_decrypt;
279 #endif
280 
281  /*
282  * Timer objects for ping and inactivity
283  * timeout features.
284  */
288 
289  /* --inactive */
292 
294 
295  /* auth token renewal timer */
297 
298  /* the option strings must match across peers */
301 
302  int occ_op; /* INIT to -1 */
305 
306  /*
307  * Keep track of maximum packet size received so far
308  * (of authenticated packets).
309  */
310  int original_recv_size; /* temporary */
311  int max_recv_size_local; /* max packet size received */
312  int max_recv_size_remote; /* max packet size received by remote */
313  int max_send_size_local; /* max packet size sent */
314  int max_send_size_remote; /* max packet size sent by remote */
315 
316 
317  /* remote wants us to send back a load test packet of this size */
319 
322 
323  /*
324  * TLS-mode crypto objects.
325  */
346  /* used to optimize calls to tls_multi_process */
348 
349  /* throw this signal on TLS errors */
351 
359 
360 #ifdef USE_COMP
361  struct compress_context *comp_context;
365 #endif
366 
367  /*
368  * Buffers used for packet processing.
369  */
371  bool buffers_owned; /* if true, we should free all buffers on close */
372 
373  /*
374  * These buffers don't actually allocate storage, they are used
375  * as pointers to the allocated buffers in
376  * struct context_buffers.
377  */
378  struct buffer buf;
379  struct buffer to_tun;
380  struct buffer to_link;
381 
382  /* should we print R|W|r|w to console on packet transfers? */
383  bool log_rw;
384 
385  /* route stuff */
388 
389  /* did we open tun/tap dev during this cycle? */
391 
392  /*
393  * Event loop info
394  */
395 
399  struct timeval timeval;
400 
401  /* next wakeup for processing coarse timers (>1 sec resolution) */
403 
404  /* maintain a random delta to add to timeouts to avoid contexts
405  * waking up simultaneously */
408 
409  /* Timer for everything up to the first packet from the *OpenVPN* server
410  * socks, http proxy, and tcp packets do not count */
412 
413  /* indicates that the do_up_delay function has run */
414  bool do_up_ran;
415 
416  /* indicates that we have received a SIGTERM when
417  * options->explicit_exit_notification is enabled,
418  * but we have not exited yet */
421 
422  /* environmental variables to pass to scripts */
423  struct env_set *es;
424  bool es_owned;
425 
426  /* don't wait for TUN/TAP/UDP to be ready to accept write */
427  bool fast_io;
428 
429  /* --ifconfig endpoints to be pushed to client */
436 
438  struct in6_addr push_ifconfig_ipv6_local;
440  struct in6_addr push_ifconfig_ipv6_remote;
441 
444 
445  /* hash of pulled options, so we can compare when options change */
449 
452 
453  /* packet filter */
454 
455 #ifdef ENABLE_MANAGEMENT
457 #endif
458 
459 #ifdef ENABLE_ASYNC_PUSH
460  int inotify_fd; /* descriptor for monitoring file changes */
461 #endif
462 };
463 
464 
476 struct context
477 {
478  struct options options;
481  bool first_time;
484  /* context modes */
485 #define CM_P2P 0 /* standalone point-to-point session or client */
486 #define CM_TOP 1 /* top level of a multi-client or point-to-multipoint server */
487 #define CM_TOP_CLONE 2 /* clone of a CM_TOP context for one thread */
488 #define CM_CHILD_UDP 3 /* child context of a CM_TOP or CM_THREAD */
489 #define CM_CHILD_TCP 4 /* child context of a CM_TOP or CM_THREAD */
490  int mode;
495  struct gc_arena gc;
499  struct env_set *es;
503  struct signal_info *sig;
515  struct context_0 *c0;
516  struct context_1 c1;
517  struct context_2 c2;
518 };
519 
520 /*
521  * Check for a signal when inside an event loop
522  */
523 #define EVENT_LOOP_CHECK_SIGNAL(c, func, arg) \
524  if (IS_SIG(c)) \
525  { \
526  const int brk = func(arg); \
527  perf_pop(); \
528  if (brk) { \
529  break;} \
530  else { \
531  continue;} \
532  }
533 
534 /*
535  * Macros for referencing objects which may not
536  * have been compiled in.
537  */
538 
539 #define TLS_MODE(c) ((c)->c2.tls_multi != NULL)
540 #define PROTO_DUMP_FLAGS (check_debug_level(D_LINK_RW_VERBOSE) ? (PD_SHOW_DATA|PD_VERBOSE) : 0)
541 #define PROTO_DUMP(buf, gc) protocol_dump((buf), \
542  PROTO_DUMP_FLAGS \
543  |(c->c2.tls_multi ? PD_TLS : 0) \
544  |(c->options.tls_auth_file ? md_kt_size(c->c1.ks.key_type.digest) : 0) \
545  |(c->options.tls_crypt_file || c->options.tls_crypt_v2_file ? PD_TLS_CRYPT : 0), \
546  gc)
547 
548 /* this represents "disabled peer-id" */
549 #define MAX_PEER_ID 0xFFFFFF
550 
551 #endif /* ifndef OPENVPN_H */
context_2::max_send_size_local
int max_send_size_local
Definition: openvpn.h:313
context_2::pulled_options_digest_init_done
bool pulled_options_digest_init_done
Definition: openvpn.h:446
context_2::route_wakeup
struct event_timeout route_wakeup
Definition: openvpn.h:386
context_2::event_set_status
unsigned int event_set_status
Definition: openvpn.h:238
context_2::tls_auth_standalone
struct tls_auth_standalone * tls_auth_standalone
TLS state structure required for the initial authentication of a client's connection attempt.
Definition: openvpn.h:329
context_2::occ_mtu_load_n_tries
int occ_mtu_load_n_tries
Definition: openvpn.h:321
CAS_PENDING_DEFERRED
@ CAS_PENDING_DEFERRED
Waiting on an async option import handler.
Definition: ssl_common.h:565
context_2::accept_from
const struct link_socket * accept_from
Definition: openvpn.h:245
hmac_ctx_t
mbedtls_md_context_t hmac_ctx_t
Generic HMAC context.
Definition: crypto_mbedtls.h:46
context_2::to_link
struct buffer to_link
Definition: openvpn.h:380
context_2::tls_multi
struct tls_multi * tls_multi
TLS state structure for this VPN tunnel.
Definition: openvpn.h:326
route_list
Definition: route.h:206
context_1::status_output_owned
bool status_output_owned
Definition: openvpn.h:184
context::persist
struct context_persist persist
Persistent context.
Definition: openvpn.h:513
context_2::buf
struct buffer buf
Definition: openvpn.h:378
fragment_master
Fragmentation and reassembly state for one VPN tunnel instance.
Definition: fragment.h:136
md_ctx_t
mbedtls_md_context_t md_ctx_t
Generic message digest context.
Definition: crypto_mbedtls.h:43
context_1::tuntap
struct tuntap * tuntap
Tun/tap virtual network interface.
Definition: openvpn.h:170
context_2::es_owned
bool es_owned
Definition: openvpn.h:424
manage.h
context_2::max_recv_size_local
int max_recv_size_local
Definition: openvpn.h:311
context_2::link_write_bytes
counter_type link_write_bytes
Definition: openvpn.h:272
context_1::tuntap_owned
bool tuntap_owned
Whether the tun/tap interface should be cleaned up when this context is cleaned up.
Definition: openvpn.h:171
context
Contains all state information for one tunnel.
Definition: openvpn.h:476
key_schedule::auth_token_key
struct key_ctx auth_token_key
Definition: openvpn.h:73
context_2::auth_token_renewal_interval
struct event_timeout auth_token_renewal_interval
Definition: openvpn.h:296
context_2::tun_read_bytes
counter_type tun_read_bytes
Definition: openvpn.h:267
http_proxy_info
Definition: proxy.h:70
context_2::push_ifconfig_ipv6_local
struct in6_addr push_ifconfig_ipv6_local
Definition: openvpn.h:438
context_2::tmp_int
struct interval tmp_int
Definition: openvpn.h:347
context::plugins
struct plugin_list * plugins
List of plug-ins.
Definition: openvpn.h:505
packet_id_persist::dummy
int dummy
Definition: openvpn.h:83
context_2::log_rw
bool log_rw
Definition: openvpn.h:383
context_2::es
struct env_set * es
Definition: openvpn.h:423
context_2::push_ifconfig_defined
bool push_ifconfig_defined
Definition: openvpn.h:431
context_1::socks_proxy_owned
bool socks_proxy_owned
Definition: openvpn.h:192
context_2::push_ifconfig_local
in_addr_t push_ifconfig_local
Definition: openvpn.h:433
route_ipv6_list
Definition: route.h:219
packet_id_persist_init
static void packet_id_persist_init(struct packet_id_persist *p)
Definition: openvpn.h:86
context_2::inactivity_interval
struct event_timeout inactivity_interval
Definition: openvpn.h:290
CAS_PENDING
@ CAS_PENDING
Options import (Connect script/plugin, ccd,...)
Definition: ssl_common.h:564
context::c0
struct context_0 * c0
Level 0 context.
Definition: openvpn.h:515
context_0::uid_gid_chroot_set
bool uid_gid_chroot_set
Definition: openvpn.h:140
context_2::buffers
struct context_buffers * buffers
Definition: openvpn.h:370
openvpn_net_ctx_t
void * openvpn_net_ctx_t
Definition: networking.h:28
context_2::did_open_tun
bool did_open_tun
Definition: openvpn.h:390
context_2::route_wakeup_expire
struct event_timeout route_wakeup_expire
Definition: openvpn.h:387
context_buffers::decrypt_buf
struct buffer decrypt_buf
Definition: openvpn.h:101
plugin.h
context_2::pulled_options_state
md_ctx_t * pulled_options_state
Definition: openvpn.h:447
platform_state_group
Definition: platform.h:74
options.h
ifconfig_pool_persist
Definition: pool.h:65
context::mode
int mode
Role of this context within the OpenVPN process.
Definition: openvpn.h:490
context_2::link_socket_info
struct link_socket_info * link_socket_info
This variable is used instead link_socket->info for P2MP UDP childs.
Definition: openvpn.h:244
frame
Packet geometry parameters.
Definition: mtu.h:98
tls_multi
Security parameter state for a single VPN tunnel.
Definition: ssl_common.h:590
context_2::to_link_addr
struct link_socket_actual * to_link_addr
Definition: openvpn.h:247
shaper.h
context_2::push_request_received
bool push_request_received
Definition: openvpn.h:430
interval.h
context_2::link_read_bytes
counter_type link_read_bytes
Definition: openvpn.h:269
context_2::occ_interval
struct event_timeout occ_interval
Definition: openvpn.h:304
context_2::occ_mtu_load_size
int occ_mtu_load_size
Definition: openvpn.h:318
key_schedule::tls_wrap_key
struct key_ctx_bi tls_wrap_key
Definition: openvpn.h:67
multi_status
multi_status
Definition: ssl_common.h:561
context_persist
Definition: openvpn.h:120
context_0
Level 0 context containing information related to the OpenVPN process.
Definition: openvpn.h:135
context_1::route_list
struct route_list * route_list
List of routing information.
Definition: openvpn.h:175
context_2::wait_for_connect
struct event_timeout wait_for_connect
Definition: openvpn.h:285
man_def_auth_context
Definition: manage.h:64
context::c2
struct context_2 c2
Level 2 context.
Definition: openvpn.h:517
context_2::push_ifconfig_ipv6_remote
struct in6_addr push_ifconfig_ipv6_remote
Definition: openvpn.h:440
key_ctx_bi
Container for two sets of OpenSSL cipher and/or HMAC contexts for both sending and receiving directio...
Definition: crypto.h:217
context_2::gc
struct gc_arena gc
Garbage collection arena for allocations done in the level 2 scope of this context_2 structure.
Definition: openvpn.h:228
counter_type
uint64_t counter_type
Definition: common.h:30
key_schedule::ssl_ctx
struct tls_root_ctx ssl_ctx
Definition: openvpn.h:63
key_schedule::tls_crypt_v2_server_key
struct key_ctx tls_crypt_v2_server_key
Definition: openvpn.h:71
context::gc
struct gc_arena gc
Garbage collection arena for allocations done in the scope of this context structure.
Definition: openvpn.h:495
context_2::event_set_max
int event_set_max
Definition: openvpn.h:234
tun.h
packet_id.h
key_schedule::tls_auth_key_type
struct key_type tls_auth_key_type
Definition: openvpn.h:66
context::plugins_owned
bool plugins_owned
Whether the plug-ins should be cleaned up when this context is cleaned up.
Definition: openvpn.h:506
key_schedule
Definition: openvpn.h:54
context_1::socks_proxy
struct socks_proxy_info * socks_proxy
Definition: openvpn.h:191
context_2::occ_n_tries
int occ_n_tries
Definition: openvpn.h:303
context_buffers
Definition: openvpn.h:94
misc.h
context::first_time
bool first_time
True on the first iteration of OpenVPN's main loop.
Definition: openvpn.h:481
route.h
context_2::dco_write_bytes
counter_type dco_write_bytes
Definition: openvpn.h:273
mbuf.h
context_1::route_ipv6_list
struct route_ipv6_list * route_ipv6_list
Definition: openvpn.h:180
key_ctx
Container for one set of cipher and/or HMAC contexts.
Definition: crypto.h:162
context_2::ping_send_interval
struct event_timeout ping_send_interval
Definition: openvpn.h:286
context_0::uid_gid_specified
bool uid_gid_specified
Definition: openvpn.h:138
options
Definition: options.h:236
pool.h
context_2::push_ifconfig_local_alias
in_addr_t push_ifconfig_local_alias
Definition: openvpn.h:435
crypto.h
is_cas_pending
static bool is_cas_pending(enum multi_status cas)
Definition: openvpn.h:211
status_output
Definition: status.h:48
context_2::explicit_exit_notification_time_wait
time_t explicit_exit_notification_time_wait
Definition: openvpn.h:419
context_2::push_ifconfig_ipv6_netbits
int push_ifconfig_ipv6_netbits
Definition: openvpn.h:439
context_2::frame_fragment
struct frame frame_fragment
Definition: openvpn.h:256
context::did_we_daemonize
bool did_we_daemonize
Whether demonization has already taken place.
Definition: openvpn.h:510
context_2::tun_write_bytes
counter_type tun_write_bytes
Definition: openvpn.h:268
context_2::session_id_hmac
hmac_ctx_t * session_id_hmac
the HMAC we use to generate and verify our syn cookie like session ids from the server.
Definition: openvpn.h:341
buffer
Wrapper structure for dynamically allocated memory.
Definition: buffer.h:60
fragment.h
context_2::buffers_owned
bool buffers_owned
Definition: openvpn.h:371
context_2::sent_push_reply_expiry
time_t sent_push_reply_expiry
Definition: openvpn.h:432
context_2::max_send_size_remote
int max_send_size_remote
Definition: openvpn.h:314
context_2::push_request_timeout
time_t push_request_timeout
Definition: openvpn.h:443
context_2::scheduled_exit_signal
int scheduled_exit_signal
Definition: openvpn.h:451
context_2::options_string_remote
char * options_string_remote
Definition: openvpn.h:300
key_type
Definition: crypto.h:139
context_2::event_set
struct event_set * event_set
Definition: openvpn.h:233
ssl.h
context_buffers::read_link_buf
struct buffer read_link_buf
Definition: openvpn.h:113
context_buffers::aux_buf
struct buffer aux_buf
Definition: openvpn.h:97
context_2::timeout_random_component
struct timeval timeout_random_component
Definition: openvpn.h:407
context_2::timeval
struct timeval timeval
Time to next event of timers and similar.
Definition: openvpn.h:399
context_2::max_recv_size_remote
int max_recv_size_remote
Definition: openvpn.h:312
buffer.h
context_2::explicit_exit_notification_interval
struct event_timeout explicit_exit_notification_interval
Definition: openvpn.h:420
proxy.h
context_2::scheduled_exit
struct event_timeout scheduled_exit
Definition: openvpn.h:450
context_2::link_socket
struct link_socket * link_socket
Definition: openvpn.h:240
context_persist::restart_sleep_seconds
int restart_sleep_seconds
Definition: openvpn.h:122
shaper
Definition: shaper.h:47
context_1::ifconfig_pool_persist_owned
bool ifconfig_pool_persist_owned
Definition: openvpn.h:196
interval
Definition: interval.h:42
socks_proxy_info
Definition: socks.h:37
context_1::http_proxy
struct http_proxy_info * http_proxy
Definition: openvpn.h:187
gc_arena
Garbage collection arena used to keep track of dynamically allocated memory.
Definition: buffer.h:116
context::sig
struct signal_info * sig
Internal error signaling object.
Definition: openvpn.h:503
cached_dns_entry
Definition: socket.h:76
key_schedule::tls_crypt_v2_wkc
struct buffer tls_crypt_v2_wkc
Wrapped client key.
Definition: openvpn.h:72
context_1
Level 1 context containing state that persists across SIGUSR1 restarts.
Definition: openvpn.h:155
env_set
Definition: env_set.h:42
context_2::occ_mtu_load_test_interval
struct event_timeout occ_mtu_load_test_interval
Definition: openvpn.h:320
plugin_list
Definition: plugin.h:94
comp.h
context::es
struct env_set * es
Set of environment variables.
Definition: openvpn.h:499
context_2::update_timeout_random_component
time_t update_timeout_random_component
Definition: openvpn.h:406
context_2::packet_id_persist_interval
struct event_timeout packet_id_persist_interval
Definition: openvpn.h:358
event_set
Definition: event.h:124
context_2::inactivity_bytes
int64_t inactivity_bytes
Definition: openvpn.h:291
context_2::mda_context
struct man_def_auth_context mda_context
Definition: openvpn.h:456
platform_state_user
Definition: platform.h:63
context_2::to_tun
struct buffer to_tun
Definition: openvpn.h:379
packet_id_persist
Definition: openvpn.h:81
context_2::fragment
struct fragment_master * fragment
Definition: openvpn.h:255
tls_root_ctx
Structure that wraps the TLS context.
Definition: ssl_mbedtls.h:106
signal_info
Definition: sig.h:41
context_1::ks
struct key_schedule ks
Definition: openvpn.h:162
context_2::dco_read_bytes
counter_type dco_read_bytes
Definition: openvpn.h:270
context_2::push_ifconfig_remote_netmask
in_addr_t push_ifconfig_remote_netmask
Definition: openvpn.h:434
context_1::auth_user_pass
struct user_pass * auth_user_pass
Username and password for authentication.
Definition: openvpn.h:204
key_schedule::original_wrap_keydata
struct key2 original_wrap_keydata
original tls-crypt key preserved to xored into the tls_crypt renegotiation key
Definition: openvpn.h:70
tuntap
Definition: tun.h:171
socket.h
context_2::pulled_options_digest
struct sha256_digest pulled_options_digest
Definition: openvpn.h:448
context_1::pulled_options_digest_save
struct sha256_digest pulled_options_digest_save
Hash of option strings received from the remote OpenVPN server.
Definition: openvpn.h:199
context_buffers::encrypt_buf
struct buffer encrypt_buf
Definition: openvpn.h:100
context_1::status_output
struct status_output * status_output
Definition: openvpn.h:183
CAS_PENDING_DEFERRED_PARTIAL
@ CAS_PENDING_DEFERRED_PARTIAL
at least handler succeeded but another is still pending
Definition: ssl_common.h:566
context_2::from
struct link_socket_actual from
Definition: openvpn.h:248
context_1::ifconfig_pool_persist
struct ifconfig_pool_persist * ifconfig_pool_persist
Definition: openvpn.h:195
event_timeout
Definition: interval.h:136
context_1::pid_persist
struct packet_id_persist pid_persist
Definition: openvpn.h:168
key2
Container for bidirectional cipher and HMAC key material.
Definition: crypto.h:179
context_2::tls_exit_signal
int tls_exit_signal
Definition: openvpn.h:350
context_2::link_read_bytes_auth
counter_type link_read_bytes_auth
Definition: openvpn.h:271
context_2::push_request_interval
struct event_timeout push_request_interval
Definition: openvpn.h:442
context_2::server_poll_interval
struct event_timeout server_poll_interval
Definition: openvpn.h:411
context_2::push_ifconfig_ipv6_defined
bool push_ifconfig_ipv6_defined
Definition: openvpn.h:437
context_2
Level 2 context containing state that is reset on both SIGHUP and SIGUSR1 restarts.
Definition: openvpn.h:226
sha256_digest
Wrapper struct to pass around SHA256 digests.
Definition: crypto.h:132
context_2::options_string_local
char * options_string_local
Definition: openvpn.h:299
context_2::session_interval
struct event_timeout session_interval
Definition: openvpn.h:293
sig.h
context_2::link_socket_owned
bool link_socket_owned
Definition: openvpn.h:241
user_pass
Definition: misc.h:56
context_buffers::read_tun_buf
struct buffer read_tun_buf
Definition: openvpn.h:114
context_2::occ_op
int occ_op
Definition: openvpn.h:302
context_2::ping_rec_interval
struct event_timeout ping_rec_interval
Definition: openvpn.h:287
context_2::original_recv_size
int original_recv_size
Definition: openvpn.h:310
context_2::coarse_timer_wakeup
time_t coarse_timer_wakeup
Definition: openvpn.h:402
context_2::event_set_owned
bool event_set_owned
Definition: openvpn.h:235
context_1::dns_cache
struct cached_dns_entry * dns_cache
Definition: openvpn.h:165
status.h
key_schedule::static_key
struct key_ctx_bi static_key
Definition: openvpn.h:60
context_2::do_up_ran
bool do_up_ran
Definition: openvpn.h:414
socks.h
context_1::http_proxy_owned
bool http_proxy_owned
Definition: openvpn.h:188
crypto_options
Security parameter state for processing data channel packets.
Definition: crypto.h:230
context::c1
struct context_1 c1
Level 1 context.
Definition: openvpn.h:516
tls_auth_standalone
Definition: ssl_pkt.h:77
context_2::fast_io
bool fast_io
Definition: openvpn.h:427
context::net_ctx
openvpn_net_ctx_t net_ctx
Networking API opaque context.
Definition: openvpn.h:501