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-2026 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 6
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 size_t 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 size_t 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
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 msglvl_t 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 uint16_t port, const uint8_t 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
187 bool (*client_auth)(void *arg, const unsigned long cid, const unsigned int mda_key_id,
188 const bool auth, const char *reason, const char *client_reason,
189 struct buffer_list *cc_config); /* ownership transferred */
190 bool (*client_pending_auth)(void *arg, const unsigned long cid, const unsigned int kid,
191 const char *extra, unsigned int timeout);
192 char *(*get_peer_info)(void *arg, const unsigned long cid);
193 bool (*client_acc_msg)(void *arg,
194 const unsigned long cid,
195 const unsigned int mda_key_id,
196 struct buffer_list *msg);
197 bool (*acc_msg)(void *arg,
198 struct buffer_list *msg);
199 bool (*proxy_cmd)(void *arg, const char **p);
200 bool (*remote_cmd)(void *arg, const char **p);
201#ifdef TARGET_ANDROID
202 int (*network_change)(void *arg, bool samenetwork);
203#endif
204 unsigned int (*remote_entry_count)(void *arg);
205 bool (*remote_entry_get)(void *arg, unsigned int index, char **remote);
206 bool (*push_update_broadcast)(void *arg, const char *options);
207 bool (*push_update_by_cid)(void *arg, unsigned long cid, const char *options);
208};
209
210/*
211 * Management object, split into three components:
212 *
213 * struct man_persist : Data elements which are persistent across
214 * man_connection open and close.
215 *
216 * struct man_settings : management parameters.
217 *
218 * struct man_connection : created on socket binding and listen,
219 * deleted on socket unbind, may
220 * handle multiple sequential client
221 * connections.
222 */
223
225{
227
230
233
234 struct log_history *echo; /* saved --echo strings */
236
238
239 const char *special_state_msg;
240
243};
244
246{
248 unsigned int flags; /* MF_x flags */
249 struct addrinfo *local;
250#if UNIX_SOCK_SUPPORT
251 struct sockaddr_un local_unix;
252 struct platform_state_user user;
253 struct platform_state_group group;
254#endif
256 struct user_pass up;
260
261/* flags for handling the management interface "signal" command */
262#define MANSIG_IGNORE_USR1_HUP (1u << 0)
263#define MANSIG_MAP_USR1_TO_HUP (1u << 1)
264#define MANSIG_MAP_USR1_TO_TERM (1u << 2)
265 unsigned int mansig;
266};
267
268/* up_query modes */
269#define UP_QUERY_DISABLED 0
270#define UP_QUERY_USER_PASS 1
271#define UP_QUERY_PASS 2
272#define UP_QUERY_NEED_OK 3
273#define UP_QUERY_NEED_STR 4
274#define UP_QUERY_USERNAME 5
275
276/* states */
277#define MS_INITIAL 0 /* all sockets are closed */
278#define MS_LISTEN 1 /* no client is connected */
279#define MS_CC_WAIT_READ 2 /* client is connected, waiting for read on socket */
280#define MS_CC_WAIT_WRITE 3 /* client is connected, waiting for ability to write to socket */
281
283{
284 int state;
285
289
290#ifdef _WIN32
292#endif
293
294 bool halt;
297
300
301#define IEC_UNDEF 0
302#define IEC_CLIENT_AUTH 1
303/* #define IEC_CLIENT_PF 2 *REMOVED FEATURE* */
304#define IEC_RSA_SIGN 3
305#define IEC_CERTIFICATE 4
306#define IEC_PK_SIGN 5
307#define IEC_PASSWORD 6
308#define IEC_CLIENT_ACC_MSG 7
309#define IEC_ACC_MSG 8
312 unsigned long in_extra_cid;
313 unsigned int in_extra_kid;
314#define EKS_UNDEF 0
315#define EKS_SOLICIT 1
316#define EKS_INPUT 2
317#define EKS_READY 3
322 struct event_set *es;
324
330
331 const char *up_query_type;
334
335#ifdef TARGET_ANDROID
336 int fdtosend;
337 int lastfdreceived;
338#endif
340};
341
348
349extern struct management *management;
350
351struct user_pass;
352
353struct management *management_init(void);
354
355bool management_open(struct management *man, const char *addr, const char *port,
356 const char *pass_file, const char *client_user, const char *client_group,
357 const int log_history_cache, const int echo_buffer_size,
358 const int state_buffer_size, const int remap_sigusr1,
359 const unsigned int flags);
360
361void management_close(struct management *man);
362
363void management_post_tunnel_open(struct management *man, const in_addr_t tun_local_ip);
364
366
367void management_socket_set(struct management *man, struct event_set *es, void *arg,
368 unsigned int *persistent);
369
370void management_io(struct management *man);
371
372void management_set_callback(struct management *man, const struct management_callback *cb);
373
374void management_clear_callback(struct management *man);
375
376bool management_query_user_pass(struct management *man, struct user_pass *up, const char *type,
377 const unsigned int flags, const char *static_challenge);
378
379#ifdef TARGET_ANDROID
380bool management_android_control(const struct management *man, const char *command, const char *msg);
381
382#define ANDROID_KEEP_OLD_TUN 1
383#define ANDROID_OPEN_BEFORE_CLOSE 2
384int managment_android_persisttun_action(struct management *man);
385
386#endif
387
388bool management_would_hold(struct management *man);
389
390bool management_hold(struct management *man, int holdtime);
391
392void management_event_loop_n_seconds(struct management *man, int sec);
393
394void management_up_down(const struct management *man, const char *updown, const struct env_set *es);
395
396void management_notify(const char *severity, const char *type,
397 const char *text);
398
399void management_notify_generic(const char *str);
400
402 const unsigned int auth_id,
403 struct man_def_auth_context *mdac,
404 const struct env_set *es);
405
407 struct man_def_auth_context *mdac, const struct env_set *es);
408
409void management_notify_client_close(const struct management *man,
410 struct man_def_auth_context *mdac, const struct env_set *es);
411
413 const struct mroute_addr *addr, const bool primary);
414
415void management_notify_client_cr_response(unsigned mda_key_id,
416 const struct man_def_auth_context *mdac,
417 const struct env_set *es, const char *response);
418
419char *management_query_pk_sig(struct management *man, const char *b64_data, const char *algorithm);
420
421char *management_query_cert(struct management *man, const char *cert_name);
422
423static inline bool
425{
427}
428
429static inline bool
434
435static inline bool
437{
439}
440
441static inline bool
443{
444 return BOOL_CAST(man->settings.flags & MF_QUERY_PROXY);
445}
446
447
448static inline bool
450{
451 return man && BOOL_CAST(man->settings.flags & MF_CLIENT_AUTH);
452}
453
454/*
455 * OpenVPN tells the management layer what state it's in
456 */
457
458/* client/server states */
459#define OPENVPN_STATE_INITIAL 0 /* Initial, undefined state */
460#define OPENVPN_STATE_CONNECTING 1 /* Management interface has been initialized */
461#define OPENVPN_STATE_ASSIGN_IP 2 /* Assigning IP address to virtual network interface */
462#define OPENVPN_STATE_ADD_ROUTES 3 /* Adding routes to system */
463#define OPENVPN_STATE_CONNECTED 4 /* Initialization sequence completed */
464#define OPENVPN_STATE_RECONNECTING 5 /* Restart */
465#define OPENVPN_STATE_EXITING 6 /* Exit */
466
467/* client-only states */
468#define OPENVPN_STATE_WAIT 7 /* Waiting for initial response from server */
469#define OPENVPN_STATE_AUTH 8 /* Authenticating with server */
470#define OPENVPN_STATE_GET_CONFIG 9 /* Downloading configuration from server */
471#define OPENVPN_STATE_RESOLVE 10 /* DNS lookup */
472#define OPENVPN_STATE_TCP_CONNECT 11 /* Connecting to TCP server */
473#define OPENVPN_STATE_AUTH_PENDING \
474 12 /* Waiting in auth-pending mode \
475 * technically variant of GET_CONFIG */
477#define OPENVPN_STATE_CLIENT_BASE 7 /* Base index of client-only states */
478
479void management_set_state(struct management *man, const int state, const char *detail,
480 const in_addr_t *tun_local_ip, const struct in6_addr *tun_local_ip6,
481 const struct openvpn_sockaddr *local_addr,
482 const struct openvpn_sockaddr *remote_addr);
483
484/*
485 * The management object keeps track of OpenVPN --echo
486 * parameters.
487 */
488void management_echo(struct management *man, const char *string, const bool pull);
489
490/*
491 * OpenVPN calls here to indicate a password failure
492 */
493
494void management_auth_failure(const struct management *man, const char *type, const char *reason);
495
496/*
497 * Echo an authentication token to management interface
498 */
499void management_auth_token(const char *token);
500
501/*
502 * These functions drive the bytecount in/out counters.
503 */
504
505void management_check_bytecount_client(struct context *c, struct management *man, struct timeval *timeval);
506
507void management_check_bytecount_server(struct multi_context *multi, struct timeval *timeval);
508
509void man_persist_client_stats(struct management *man, struct context *c);
510
514struct tls_session;
515struct tls_multi;
516bool
517management_send_acc_message(struct context *c, struct tls_multi *multi,
518 struct tls_session *session, struct buffer_list *input);
519#endif /* ifdef ENABLE_MANAGEMENT */
520
525void management_sleep(const int n);
526
527#endif /* ifndef MANAGE_H */
static int buf_len(const struct buffer *buf)
Return the length of the buffer content.
Definition buffer.h:462
uint64_t counter_type
Definition common.h:31
const struct rw_handle * event_t
Definition event.h:89
void management_pre_tunnel_close(struct management *man)
Definition manage.c:3265
void log_history_close(struct log_history *h)
Definition manage.c:4265
void management_check_bytecount_server(struct multi_context *multi, struct timeval *timeval)
Definition manage.c:4374
void management_notify_client_needing_auth(struct management *man, const unsigned int auth_id, struct man_def_auth_context *mdac, const struct env_set *es)
Definition manage.c:3129
void management_auth_token(const char *token)
Definition manage.c:3287
static bool management_query_remote_enabled(const struct management *man)
Definition manage.h:436
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:3309
void command_line_free(struct command_line *cl)
Definition manage.c:4091
void command_line_next(struct command_line *cl)
Definition manage.c:4134
void management_clear_callback(struct management *man)
Definition manage.c:2932
char * management_query_cert(struct management *man, const char *cert_name)
Definition manage.c:3992
struct command_line * command_line_new(const size_t buf_len)
Definition manage.c:4074
#define MS_CC_WAIT_WRITE
Definition manage.h:280
bool management_send_acc_message(struct context *c, struct tls_multi *multi, struct tls_session *session, struct buffer_list *input)
Definition manage.c:4429
void management_connection_established(struct management *man, struct man_def_auth_context *mdac, const struct env_set *es)
Definition manage.c:3172
bool management_hold(struct management *man, int holdtime)
Definition manage.c:4021
static bool management_query_proxy_enabled(const struct management *man)
Definition manage.h:442
#define MS_CC_WAIT_READ
Definition manage.h:279
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:2941
static bool management_query_user_pass_enabled(const struct management *man)
Definition manage.h:430
struct log_history * log_history_init(const int capacity)
Definition manage.c:4244
struct management * management_init(void)
Definition manage.c:2862
void command_line_reset(struct command_line *cl)
Definition manage.c:4084
#define MF_QUERY_PROXY
Definition manage.h:41
bool management_would_hold(struct management *man)
Definition manage.c:4011
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:3672
static bool management_connected(const struct management *man)
Definition manage.h:424
void log_history_add(struct log_history *h, const struct log_entry *le)
Definition manage.c:4272
void management_notify_client_close(const struct management *man, struct man_def_auth_context *mdac, const struct env_set *es)
Definition manage.c:3182
static int log_history_size(const struct log_history *h)
Definition manage.h:156
void management_notify_generic(const char *str)
Definition manage.c:3094
void management_event_loop_n_seconds(struct management *man, int sec)
Definition manage.c:3619
void management_close(struct management *man)
Definition manage.c:2915
#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:4146
#define MF_QUERY_PASSWORDS
Definition manage.h:28
void management_io(struct management *man)
Definition manage.c:3347
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:2876
void man_persist_client_stats(struct management *man, struct context *c)
Definition manage.c:4415
void management_auth_failure(const struct management *man, const char *type, const char *reason)
Definition manage.c:3274
static bool management_enable_def_auth(const struct management *man)
Definition manage.h:449
void management_set_callback(struct management *man, const struct management_callback *cb)
Definition manage.c:2925
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:3151
void management_echo(struct management *man, const char *string, const bool pull)
Definition manage.c:3208
const struct log_entry * log_history_ref(const struct log_history *h, const int index)
Definition manage.c:4314
void management_check_bytecount_client(struct context *c, struct management *man, struct timeval *timeval)
Definition manage.c:4351
void management_notify(const char *severity, const char *type, const char *text)
Definition manage.c:3088
char * management_query_pk_sig(struct management *man, const char *b64_data, const char *algorithm)
Definition manage.c:3966
void management_learn_addr(struct man_def_auth_context *mdac, const struct mroute_addr *addr, const bool primary)
Definition manage.c:3195
void command_line_add(struct command_line *cl, const unsigned char *buf, const size_t len)
Definition manage.c:4104
const char * command_line_get(struct command_line *cl)
Definition manage.c:4119
void management_sleep(const int n)
A sleep function that services the management layer for n seconds rather than doing nothing.
Definition manage.c:4327
void log_history_resize(struct log_history *h, const int capacity)
Definition manage.c:4293
void management_post_tunnel_open(struct management *man, const in_addr_t tun_local_ip)
Definition manage.c:3242
void management_up_down(const struct management *man, const char *updown, const struct env_set *es)
Definition manage.c:3078
#define BOOL_CAST(x)
Definition basic.h:26
#define msg(flags,...)
Definition error.h:152
unsigned int msglvl_t
Definition error.h:77
A singly-linked list of buffers, with head/tail pointers for O(1) push.
Definition buffer.h:2159
Wrapper structure for dynamically allocated memory.
Definition buffer.h:71
struct buffer residual
Definition manage.h:80
struct buffer buf
Definition manage.h:79
Contains all state information for one tunnel.
Definition openvpn.h:471
Garbage collection arena used to keep track of dynamically allocated memory.
Definition buffer.h:127
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:322
unsigned long in_extra_cid
Definition manage.h:312
const char * up_query_type
Definition manage.h:331
bool password_verified
Definition manage.h:295
int env_filter_level
Definition manage.h:323
struct user_pass up_query
Definition manage.h:333
socket_descriptor_t sd_top
Definition manage.h:286
struct buffer_list * ext_cert_input
Definition manage.h:321
struct command_line * in
Definition manage.h:298
unsigned int in_extra_kid
Definition manage.h:313
struct openvpn_sockaddr remote
Definition manage.h:288
socket_descriptor_t sd_cli
Definition manage.h:287
struct buffer_list * ext_key_input
Definition manage.h:319
int up_query_mode
Definition manage.h:332
int bytecount_update_seconds
Definition manage.h:328
int in_extra_cmd
Definition manage.h:310
struct buffer_list * in_extra
Definition manage.h:311
bool echo_realtime
Definition manage.h:327
bool state_realtime
Definition manage.h:325
struct event_timeout bytecount_update_interval
Definition manage.h:329
int ext_cert_state
Definition manage.h:320
struct buffer_list * out
Definition manage.h:299
int password_tries
Definition manage.h:296
int client_version
Definition manage.h:339
bool log_realtime
Definition manage.h:326
struct net_event_win32 ne32
Definition manage.h:291
int ext_key_state
Definition manage.h:318
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:241
struct log_history * state
Definition manage.h:235
struct management_callback callback
Definition manage.h:232
struct log_history * log
Definition manage.h:228
struct virtual_output vout
Definition manage.h:229
bool standalone_disabled
Definition manage.h:231
bool defined
Definition manage.h:226
bool hold_release
Definition manage.h:237
struct log_history * echo
Definition manage.h:234
const char * special_state_msg
Definition manage.h:239
counter_type bytes_out
Definition manage.h:242
bool management_over_tunnel
Definition manage.h:255
struct addrinfo * local
Definition manage.h:249
unsigned int flags
Definition manage.h:248
int echo_buffer_size
Definition manage.h:258
unsigned int mansig
Definition manage.h:265
int state_buffer_size
Definition manage.h:259
bool defined
Definition manage.h:247
int log_history_cache
Definition manage.h:257
struct user_pass up
Definition manage.h:256
bool(* client_acc_msg)(void *arg, const unsigned long cid, const unsigned int mda_key_id, struct buffer_list *msg)
Definition manage.h:193
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:187
int(* kill_by_addr)(void *arg, const in_addr_t addr, const uint16_t port, const uint8_t proto)
Definition manage.h:181
void(* delete_event)(void *arg, event_t event)
Definition manage.h:182
bool(* push_update_broadcast)(void *arg, const char *options)
Definition manage.h:206
bool(* push_update_by_cid)(void *arg, unsigned long cid, const char *options)
Definition manage.h:207
bool(* acc_msg)(void *arg, struct buffer_list *msg)
Definition manage.h:197
bool(* client_pending_auth)(void *arg, const unsigned long cid, const unsigned int kid, const char *extra, unsigned int timeout)
Definition manage.h:190
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:205
unsigned int(* remote_entry_count)(void *arg)
Definition manage.h:204
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:199
void(* show_net)(void *arg, const msglvl_t msglevel)
Definition manage.h:179
unsigned int flags
Definition manage.h:176
bool(* remote_cmd)(void *arg, const char **p)
Definition manage.h:200
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
struct man_persist persist
Definition manage.h:344
struct man_connection connection
Definition manage.h:346
struct man_settings settings
Definition manage.h:345
Main OpenVPN server state structure.
Definition multi.h:170
Security parameter state for a single VPN tunnel.
Definition ssl_common.h:619
Security parameter state of a single session within a VPN tunnel.
Definition ssl_common.h:497
SOCKET socket_descriptor_t
Definition syshead.h:445
uint32_t in_addr_t
Definition syshead.h:52
struct gc_arena gc
Definition test_ssl.c:138
Definition manage.h:100
unsigned int msg_flags
Definition manage.h:101
int state
Definition manage.h:102
int intval
Definition manage.h:103