OpenVPN
manage.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 MANAGE_H
24#define MANAGE_H
25
26/* management_open flags */
27#define MF_SERVER (1u << 0)
28#define MF_QUERY_PASSWORDS (1u << 1)
29#define MF_HOLD (1u << 2)
30#define MF_SIGNAL (1u << 3)
31#define MF_FORGET_DISCONNECT (1u << 4)
32#define MF_CONNECT_AS_CLIENT (1u << 5)
33#define MF_CLIENT_AUTH (1u << 6)
34/* #define MF_CLIENT_PF (1u << 7) *REMOVED FEATURE* */
35#define MF_UNIX_SOCK (1u << 8)
36#define MF_EXTERNAL_KEY (1u << 9)
37#define MF_EXTERNAL_KEY_NOPADDING (1u << 10)
38#define MF_EXTERNAL_KEY_PKCS1PAD (1u << 11)
39#define MF_UP_DOWN (1u << 12)
40#define MF_QUERY_REMOTE (1u << 13)
41#define MF_QUERY_PROXY (1u << 14)
42#define MF_EXTERNAL_CERT (1u << 15)
43#define MF_EXTERNAL_KEY_PSSPAD (1u << 16)
44#define MF_EXTERNAL_KEY_DIGEST (1u << 17)
45
46#ifdef ENABLE_MANAGEMENT
47
48#include "misc.h"
49#include "event.h"
50#include "socket_util.h"
51#include "mroute.h"
52
53#define MANAGEMENT_VERSION 5
54#define MANAGEMENT_N_PASSWORD_RETRIES 3
55#define MANAGEMENT_LOG_HISTORY_INITIAL_SIZE 100
56#define MANAGEMENT_ECHO_BUFFER_SIZE 100
57#define MANAGEMENT_STATE_BUFFER_SIZE 100
58
59/*
60 * Management-interface-based deferred authentication
61 */
63{
64 unsigned long cid;
65
66#define DAF_CONNECTION_ESTABLISHED (1u << 0)
67#define DAF_CONNECTION_CLOSED (1u << 1)
68#define DAF_INITIAL_AUTH (1u << 2)
69 unsigned int flags;
70
71 unsigned int mda_key_id_counter;
72};
73
74/*
75 * Manage build-up of command line
76 */
78{
79 struct buffer buf;
81};
82
83struct command_line *command_line_new(const int buf_len);
84
85void command_line_free(struct command_line *cl);
86
87void command_line_add(struct command_line *cl, const unsigned char *buf, const int len);
88
89const char *command_line_get(struct command_line *cl);
90
91void command_line_reset(struct command_line *cl);
92
93void command_line_next(struct command_line *cl);
94
95/*
96 * Manage log file history
97 */
98
100{
101 unsigned int msg_flags;
102 int state;
104};
105
107{
108 time_t timestamp;
109 const char *string;
110 in_addr_t local_ip;
111 struct in6_addr local_ip6;
115};
116
117#define LOG_PRINT_LOG_PREFIX (1u << 0)
118#define LOG_PRINT_ECHO_PREFIX (1u << 1)
119#define LOG_PRINT_STATE_PREFIX (1u << 2)
120
121#define LOG_PRINT_INT_DATE (1u << 3)
122#define LOG_PRINT_MSG_FLAGS (1u << 4)
123#define LOG_PRINT_STATE (1u << 5)
124#define LOG_PRINT_LOCAL_IP (1u << 6)
125
126#define LOG_PRINT_CRLF (1u << 7)
127#define LOG_FATAL_NOTIFY (1u << 8)
128
129#define LOG_PRINT_INTVAL (1u << 9)
130
131#define LOG_PRINT_REMOTE_IP (1u << 10)
132
133#define LOG_ECHO_TO_LOG (1u << 11)
134
135const char *log_entry_print(const struct log_entry *e, unsigned int flags, struct gc_arena *gc);
136
138{
139 int base;
140 int size;
143};
144
145struct log_history *log_history_init(const int capacity);
146
147void log_history_close(struct log_history *h);
148
149void log_history_add(struct log_history *h, const struct log_entry *le);
150
151void log_history_resize(struct log_history *h, const int capacity);
152
153const struct log_entry *log_history_ref(const struct log_history *h, const int index);
154
155static inline int
157{
158 return h->size;
159}
160
161static inline int
163{
164 return h->capacity;
165}
166
167/*
168 * Callbacks for 'status' and 'kill' commands.
169 * Also for management-based deferred authentication and packet filter.
170 */
172{
173 void *arg;
174
175#define MCF_SERVER (1u << 0) /* is OpenVPN being run as a server? */
176 unsigned int flags;
177
178 void (*status)(void *arg, const int version, struct status_output *so);
179 void (*show_net)(void *arg, const int msglevel);
180 int (*kill_by_cn)(void *arg, const char *common_name);
181 int (*kill_by_addr)(void *arg, const in_addr_t addr, const int port, const int proto);
182 void (*delete_event)(void *arg, event_t event);
183 int (*n_clients)(void *arg);
184 bool (*send_cc_message)(void *arg, const char *message, const char *parameter);
185 bool (*kill_by_cid)(void *arg, const unsigned long cid, const char *kill_msg);
186 bool (*client_auth)(void *arg, const unsigned long cid, const unsigned int mda_key_id,
187 const bool auth, const char *reason, const char *client_reason,
188 struct buffer_list *cc_config); /* ownership transferred */
189 bool (*client_pending_auth)(void *arg, const unsigned long cid, const unsigned int kid,
190 const char *extra, unsigned int timeout);
191 char *(*get_peer_info)(void *arg, const unsigned long cid);
192 bool (*proxy_cmd)(void *arg, const char **p);
193 bool (*remote_cmd)(void *arg, const char **p);
194#ifdef TARGET_ANDROID
195 int (*network_change)(void *arg, bool samenetwork);
196#endif
197 unsigned int (*remote_entry_count)(void *arg);
198 bool (*remote_entry_get)(void *arg, unsigned int index, char **remote);
199 bool (*push_update_broadcast)(void *arg, const char *options);
200 bool (*push_update_by_cid)(void *arg, unsigned long cid, const char *options);
201};
202
203/*
204 * Management object, split into three components:
205 *
206 * struct man_persist : Data elements which are persistent across
207 * man_connection open and close.
208 *
209 * struct man_settings : management parameters.
210 *
211 * struct man_connection : created on socket binding and listen,
212 * deleted on socket unbind, may
213 * handle multiple sequential client
214 * connections.
215 */
216
218{
220
223
226
227 struct log_history *echo; /* saved --echo strings */
229
231
232 const char *special_state_msg;
233
236};
237
239{
241 unsigned int flags; /* MF_x flags */
242 struct addrinfo *local;
243#if UNIX_SOCK_SUPPORT
244 struct sockaddr_un local_unix;
245#endif
247 struct user_pass up;
253
254/* flags for handling the management interface "signal" command */
255#define MANSIG_IGNORE_USR1_HUP (1u << 0)
256#define MANSIG_MAP_USR1_TO_HUP (1u << 1)
257#define MANSIG_MAP_USR1_TO_TERM (1u << 2)
258 unsigned int mansig;
259};
260
261/* up_query modes */
262#define UP_QUERY_DISABLED 0
263#define UP_QUERY_USER_PASS 1
264#define UP_QUERY_PASS 2
265#define UP_QUERY_NEED_OK 3
266#define UP_QUERY_NEED_STR 4
267
268/* states */
269#define MS_INITIAL 0 /* all sockets are closed */
270#define MS_LISTEN 1 /* no client is connected */
271#define MS_CC_WAIT_READ 2 /* client is connected, waiting for read on socket */
272#define MS_CC_WAIT_WRITE 3 /* client is connected, waiting for ability to write to socket */
273
275{
276 int state;
277
281
282#ifdef _WIN32
284#endif
285
286 bool halt;
289
292
293#define IEC_UNDEF 0
294#define IEC_CLIENT_AUTH 1
295/* #define IEC_CLIENT_PF 2 *REMOVED FEATURE* */
296#define IEC_RSA_SIGN 3
297#define IEC_CERTIFICATE 4
298#define IEC_PK_SIGN 5
301 unsigned long in_extra_cid;
302 unsigned int in_extra_kid;
303#define EKS_UNDEF 0
304#define EKS_SOLICIT 1
305#define EKS_INPUT 2
306#define EKS_READY 3
311 struct event_set *es;
313
319
320 const char *up_query_type;
323
324#ifdef TARGET_ANDROID
325 int fdtosend;
326 int lastfdreceived;
327#endif
329};
330
337
338extern struct management *management;
339
340struct user_pass;
341
342struct management *management_init(void);
343
344bool management_open(struct management *man, const char *addr, const char *port,
345 const char *pass_file, const char *client_user, const char *client_group,
346 const int log_history_cache, const int echo_buffer_size,
347 const int state_buffer_size, const int remap_sigusr1,
348 const unsigned int flags);
349
350void management_close(struct management *man);
351
352void management_post_tunnel_open(struct management *man, const in_addr_t tun_local_ip);
353
355
356void management_socket_set(struct management *man, struct event_set *es, void *arg,
357 unsigned int *persistent);
358
359void management_io(struct management *man);
360
361void management_set_callback(struct management *man, const struct management_callback *cb);
362
363void management_clear_callback(struct management *man);
364
365bool management_query_user_pass(struct management *man, struct user_pass *up, const char *type,
366 const unsigned int flags, const char *static_challenge);
367
368#ifdef TARGET_ANDROID
369bool management_android_control(struct management *man, const char *command, const char *msg);
370
371#define ANDROID_KEEP_OLD_TUN 1
372#define ANDROID_OPEN_BEFORE_CLOSE 2
373int managment_android_persisttun_action(struct management *man);
374
375#endif
376
377bool management_would_hold(struct management *man);
378
379bool management_hold(struct management *man, int holdtime);
380
381void management_event_loop_n_seconds(struct management *man, int sec);
382
383void management_up_down(struct management *man, const char *updown, const struct env_set *es);
384
385void management_notify(struct management *man, const char *severity, const char *type,
386 const char *text);
387
388void management_notify_generic(struct management *man, const char *str);
389
391 const unsigned int auth_id,
392 struct man_def_auth_context *mdac,
393 const struct env_set *es);
394
396 struct man_def_auth_context *mdac, const struct env_set *es);
397
399 struct man_def_auth_context *mdac, const struct env_set *es);
400
402 const struct mroute_addr *addr, const bool primary);
403
404void management_notify_client_cr_response(unsigned mda_key_id,
405 const struct man_def_auth_context *mdac,
406 const struct env_set *es, const char *response);
407
408char *management_query_pk_sig(struct management *man, const char *b64_data, const char *algorithm);
409
410char *management_query_cert(struct management *man, const char *cert_name);
411
412static inline bool
414{
416}
417
418static inline bool
423
424static inline bool
426{
428}
429
430static inline bool
432{
433 return BOOL_CAST(man->settings.flags & MF_QUERY_PROXY);
434}
435
436
437static inline bool
439{
440 return man && BOOL_CAST(man->settings.flags & MF_CLIENT_AUTH);
441}
442
443/*
444 * OpenVPN tells the management layer what state it's in
445 */
446
447/* client/server states */
448#define OPENVPN_STATE_INITIAL 0 /* Initial, undefined state */
449#define OPENVPN_STATE_CONNECTING 1 /* Management interface has been initialized */
450#define OPENVPN_STATE_ASSIGN_IP 2 /* Assigning IP address to virtual network interface */
451#define OPENVPN_STATE_ADD_ROUTES 3 /* Adding routes to system */
452#define OPENVPN_STATE_CONNECTED 4 /* Initialization sequence completed */
453#define OPENVPN_STATE_RECONNECTING 5 /* Restart */
454#define OPENVPN_STATE_EXITING 6 /* Exit */
455
456/* client-only states */
457#define OPENVPN_STATE_WAIT 7 /* Waiting for initial response from server */
458#define OPENVPN_STATE_AUTH 8 /* Authenticating with server */
459#define OPENVPN_STATE_GET_CONFIG 9 /* Downloading configuration from server */
460#define OPENVPN_STATE_RESOLVE 10 /* DNS lookup */
461#define OPENVPN_STATE_TCP_CONNECT 11 /* Connecting to TCP server */
462#define OPENVPN_STATE_AUTH_PENDING \
463 12 /* Waiting in auth-pending mode \
464 * technically variant of GET_CONFIG */
466#define OPENVPN_STATE_CLIENT_BASE 7 /* Base index of client-only states */
467
468void management_set_state(struct management *man, const int state, const char *detail,
469 const in_addr_t *tun_local_ip, const struct in6_addr *tun_local_ip6,
470 const struct openvpn_sockaddr *local_addr,
471 const struct openvpn_sockaddr *remote_addr);
472
473/*
474 * The management object keeps track of OpenVPN --echo
475 * parameters.
476 */
477void management_echo(struct management *man, const char *string, const bool pull);
478
479/*
480 * OpenVPN calls here to indicate a password failure
481 */
482
483void management_auth_failure(struct management *man, const char *type, const char *reason);
484
485/*
486 * Echo an authentication token to management interface
487 */
488void management_auth_token(struct management *man, const char *token);
489
490/*
491 * These functions drive the bytecount in/out counters.
492 */
493
494void management_check_bytecount_client(struct context *c, struct management *man, struct timeval *timeval);
495
497
498void man_persist_client_stats(struct management *man, struct context *c);
499
500#endif /* ifdef ENABLE_MANAGEMENT */
501
506void management_sleep(const int n);
507
508#endif /* ifndef MANAGE_H */
static int buf_len(const struct buffer *buf)
Definition buffer.h:253
uint64_t counter_type
Definition common.h:29
void management_pre_tunnel_close(struct management *man)
Definition manage.c:3097
void management_auth_failure(struct management *man, const char *type, const char *reason)
Definition manage.c:3106
void log_history_close(struct log_history *h)
Definition manage.c:4069
static bool management_query_remote_enabled(const struct management *man)
Definition manage.h:425
void management_notify_client_close(struct management *management, struct man_def_auth_context *mdac, const struct env_set *es)
Definition manage.c:3015
void management_check_bytecount_server(struct multi_context *multi)
Definition manage.c:4178
static int log_history_capacity(const struct log_history *h)
Definition manage.h:162
#define MF_CLIENT_AUTH
Definition manage.h:33
void management_socket_set(struct management *man, struct event_set *es, void *arg, unsigned int *persistent)
Definition manage.c:3141
void command_line_free(struct command_line *cl)
Definition manage.c:3893
void command_line_next(struct command_line *cl)
Definition manage.c:3938
void management_clear_callback(struct management *man)
Definition manage.c:2769
char * management_query_cert(struct management *man, const char *cert_name)
Definition manage.c:3794
#define MS_CC_WAIT_WRITE
Definition manage.h:272
bool management_hold(struct management *man, int holdtime)
Definition manage.c:3823
static bool management_query_proxy_enabled(const struct management *man)
Definition manage.h:431
#define MS_CC_WAIT_READ
Definition manage.h:271
void management_set_state(struct management *man, const int state, const char *detail, const in_addr_t *tun_local_ip, const struct in6_addr *tun_local_ip6, const struct openvpn_sockaddr *local_addr, const struct openvpn_sockaddr *remote_addr)
Definition manage.c:2778
static bool management_query_user_pass_enabled(const struct management *man)
Definition manage.h:419
struct log_history * log_history_init(const int capacity)
Definition manage.c:4048
void management_learn_addr(struct management *management, struct man_def_auth_context *mdac, const struct mroute_addr *addr, const bool primary)
Definition manage.c:3027
struct command_line * command_line_new(const int buf_len)
Definition manage.c:3876
struct management * management_init(void)
Definition manage.c:2699
void command_line_reset(struct command_line *cl)
Definition manage.c:3886
#define MF_QUERY_PROXY
Definition manage.h:41
bool management_would_hold(struct management *man)
Definition manage.c:3813
bool management_query_user_pass(struct management *man, struct user_pass *up, const char *type, const unsigned int flags, const char *static_challenge)
Definition manage.c:3505
void command_line_add(struct command_line *cl, const unsigned char *buf, const int len)
Definition manage.c:3906
static bool management_connected(const struct management *man)
Definition manage.h:413
void log_history_add(struct log_history *h, const struct log_entry *le)
Definition manage.c:4076
static int log_history_size(const struct log_history *h)
Definition manage.h:156
void management_event_loop_n_seconds(struct management *man, int sec)
Definition manage.c:3452
void management_close(struct management *man)
Definition manage.c:2752
#define MF_QUERY_REMOTE
Definition manage.h:40
const char * log_entry_print(const struct log_entry *e, unsigned int flags, struct gc_arena *gc)
Definition manage.c:3950
void management_auth_token(struct management *man, const char *token)
Definition manage.c:3119
#define MF_QUERY_PASSWORDS
Definition manage.h:28
void management_io(struct management *man)
Definition manage.c:3179
bool management_open(struct management *man, const char *addr, const char *port, const char *pass_file, const char *client_user, const char *client_group, const int log_history_cache, const int echo_buffer_size, const int state_buffer_size, const int remap_sigusr1, const unsigned int flags)
Definition manage.c:2713
void management_notify_generic(struct management *man, const char *str)
Definition manage.c:2929
void management_connection_established(struct management *management, struct man_def_auth_context *mdac, const struct env_set *es)
Definition manage.c:3005
void man_persist_client_stats(struct management *man, struct context *c)
Definition manage.c:4221
static bool management_enable_def_auth(const struct management *man)
Definition manage.h:438
void management_set_callback(struct management *man, const struct management_callback *cb)
Definition manage.c:2762
void management_notify_client_cr_response(unsigned mda_key_id, const struct man_def_auth_context *mdac, const struct env_set *es, const char *response)
Definition manage.c:2985
void management_echo(struct management *man, const char *string, const bool pull)
Definition manage.c:3040
const struct log_entry * log_history_ref(const struct log_history *h, const int index)
Definition manage.c:4118
void management_check_bytecount_client(struct context *c, struct management *man, struct timeval *timeval)
Definition manage.c:4155
void management_up_down(struct management *man, const char *updown, const struct env_set *es)
Definition manage.c:2913
char * management_query_pk_sig(struct management *man, const char *b64_data, const char *algorithm)
Definition manage.c:3768
const char * command_line_get(struct command_line *cl)
Definition manage.c:3922
void management_sleep(const int n)
A sleep function that services the management layer for n seconds rather than doing nothing.
Definition manage.c:4131
void management_notify_client_needing_auth(struct management *management, const unsigned int auth_id, struct man_def_auth_context *mdac, const struct env_set *es)
Definition manage.c:2963
void log_history_resize(struct log_history *h, const int capacity)
Definition manage.c:4097
void management_notify(struct management *man, const char *severity, const char *type, const char *text)
Definition manage.c:2923
void management_post_tunnel_open(struct management *man, const in_addr_t tun_local_ip)
Definition manage.c:3074
#define BOOL_CAST(x)
Definition basic.h:26
#define msg(flags,...)
Definition error.h:150
Wrapper structure for dynamically allocated memory.
Definition buffer.h:60
struct buffer residual
Definition manage.h:80
struct buffer buf
Definition manage.h:79
Contains all state information for one tunnel.
Definition openvpn.h:474
Garbage collection arena used to keep track of dynamically allocated memory.
Definition buffer.h:116
Definition manage.h:107
struct in6_addr local_ip6
Definition manage.h:111
struct openvpn_sockaddr local_sock
Definition manage.h:112
struct openvpn_sockaddr remote_sock
Definition manage.h:113
time_t timestamp
Definition manage.h:108
const char * string
Definition manage.h:109
in_addr_t local_ip
Definition manage.h:110
union log_entry_union u
Definition manage.h:114
int capacity
Definition manage.h:141
struct log_entry * array
Definition manage.h:142
struct event_set * es
Definition manage.h:311
unsigned long in_extra_cid
Definition manage.h:301
const char * up_query_type
Definition manage.h:320
bool password_verified
Definition manage.h:287
int env_filter_level
Definition manage.h:312
struct user_pass up_query
Definition manage.h:322
socket_descriptor_t sd_top
Definition manage.h:278
struct buffer_list * ext_cert_input
Definition manage.h:310
struct command_line * in
Definition manage.h:290
unsigned int in_extra_kid
Definition manage.h:302
struct openvpn_sockaddr remote
Definition manage.h:280
socket_descriptor_t sd_cli
Definition manage.h:279
struct buffer_list * ext_key_input
Definition manage.h:308
int up_query_mode
Definition manage.h:321
int bytecount_update_seconds
Definition manage.h:317
int in_extra_cmd
Definition manage.h:299
struct buffer_list * in_extra
Definition manage.h:300
bool echo_realtime
Definition manage.h:316
bool state_realtime
Definition manage.h:314
struct event_timeout bytecount_update_interval
Definition manage.h:318
int ext_cert_state
Definition manage.h:309
struct buffer_list * out
Definition manage.h:291
int password_tries
Definition manage.h:288
int client_version
Definition manage.h:328
bool log_realtime
Definition manage.h:315
struct net_event_win32 ne32
Definition manage.h:283
int ext_key_state
Definition manage.h:307
unsigned long cid
Definition manage.h:64
unsigned int mda_key_id_counter
Definition manage.h:71
unsigned int flags
Definition manage.h:69
counter_type bytes_in
Definition manage.h:234
struct log_history * state
Definition manage.h:228
struct management_callback callback
Definition manage.h:225
struct log_history * log
Definition manage.h:221
struct virtual_output vout
Definition manage.h:222
bool standalone_disabled
Definition manage.h:224
bool defined
Definition manage.h:219
bool hold_release
Definition manage.h:230
struct log_history * echo
Definition manage.h:227
const char * special_state_msg
Definition manage.h:232
counter_type bytes_out
Definition manage.h:235
bool management_over_tunnel
Definition manage.h:246
struct addrinfo * local
Definition manage.h:242
unsigned int flags
Definition manage.h:241
int echo_buffer_size
Definition manage.h:249
int client_uid
Definition manage.h:251
unsigned int mansig
Definition manage.h:258
int state_buffer_size
Definition manage.h:250
bool defined
Definition manage.h:240
int client_gid
Definition manage.h:252
int log_history_cache
Definition manage.h:248
struct user_pass up
Definition manage.h:247
bool(* client_auth)(void *arg, const unsigned long cid, const unsigned int mda_key_id, const bool auth, const char *reason, const char *client_reason, struct buffer_list *cc_config)
Definition manage.h:186
void(* delete_event)(void *arg, event_t event)
Definition manage.h:182
bool(* push_update_broadcast)(void *arg, const char *options)
Definition manage.h:199
bool(* push_update_by_cid)(void *arg, unsigned long cid, const char *options)
Definition manage.h:200
int(* kill_by_addr)(void *arg, const in_addr_t addr, const int port, const int proto)
Definition manage.h:181
bool(* client_pending_auth)(void *arg, const unsigned long cid, const unsigned int kid, const char *extra, unsigned int timeout)
Definition manage.h:189
int(* n_clients)(void *arg)
Definition manage.h:183
void(* status)(void *arg, const int version, struct status_output *so)
Definition manage.h:178
bool(* remote_entry_get)(void *arg, unsigned int index, char **remote)
Definition manage.h:198
unsigned int(* remote_entry_count)(void *arg)
Definition manage.h:197
bool(* send_cc_message)(void *arg, const char *message, const char *parameter)
Definition manage.h:184
bool(* proxy_cmd)(void *arg, const char **p)
Definition manage.h:192
unsigned int flags
Definition manage.h:176
bool(* remote_cmd)(void *arg, const char **p)
Definition manage.h:193
int(* kill_by_cn)(void *arg, const char *common_name)
Definition manage.h:180
bool(* kill_by_cid)(void *arg, const unsigned long cid, const char *kill_msg)
Definition manage.h:185
void(* show_net)(void *arg, const int msglevel)
Definition manage.h:179
struct man_persist persist
Definition manage.h:333
struct man_connection connection
Definition manage.h:335
struct man_settings settings
Definition manage.h:334
Main OpenVPN server state structure.
Definition multi.h:164
SOCKET socket_descriptor_t
Definition syshead.h:440
struct env_set * es
struct gc_arena gc
Definition test_ssl.c:154
Definition manage.h:100
unsigned int msg_flags
Definition manage.h:101
int state
Definition manage.h:102
int intval
Definition manage.h:103