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-2018 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 MANAGE_H
25 #define MANAGE_H
26 
27 #ifdef ENABLE_MANAGEMENT
28 
29 #include "misc.h"
30 #include "event.h"
31 #include "socket.h"
32 #include "mroute.h"
33 
34 #define MANAGEMENT_VERSION 3
35 #define MANAGEMENT_N_PASSWORD_RETRIES 3
36 #define MANAGEMENT_LOG_HISTORY_INITIAL_SIZE 100
37 #define MANAGEMENT_ECHO_BUFFER_SIZE 100
38 #define MANAGEMENT_STATE_BUFFER_SIZE 100
39 
40 /*
41  * Management-interface-based deferred authentication
42  */
44  unsigned long cid;
45 
46 #define DAF_CONNECTION_ESTABLISHED (1<<0)
47 #define DAF_CONNECTION_CLOSED (1<<1)
48 #define DAF_INITIAL_AUTH (1<<2)
49  unsigned int flags;
50 
51  unsigned int mda_key_id_counter;
52 
54 };
55 
56 /*
57  * Manage build-up of command line
58  */
60 {
61  struct buffer buf;
62  struct buffer residual;
63 };
64 
65 struct command_line *command_line_new(const int buf_len);
66 
67 void command_line_free(struct command_line *cl);
68 
69 void command_line_add(struct command_line *cl, const unsigned char *buf, const int len);
70 
71 const char *command_line_get(struct command_line *cl);
72 
73 void command_line_reset(struct command_line *cl);
74 
75 void command_line_next(struct command_line *cl);
76 
77 /*
78  * Manage log file history
79  */
80 
82  unsigned int msg_flags;
83  int state;
84  int intval;
85 };
86 
87 struct log_entry
88 {
89  time_t timestamp;
90  const char *string;
92  struct in6_addr local_ip6;
93  struct openvpn_sockaddr local_sock;
94  struct openvpn_sockaddr remote_sock;
95  union log_entry_union u;
96 };
97 
98 #define LOG_PRINT_LOG_PREFIX (1<<0)
99 #define LOG_PRINT_ECHO_PREFIX (1<<1)
100 #define LOG_PRINT_STATE_PREFIX (1<<2)
101 
102 #define LOG_PRINT_INT_DATE (1<<3)
103 #define LOG_PRINT_MSG_FLAGS (1<<4)
104 #define LOG_PRINT_STATE (1<<5)
105 #define LOG_PRINT_LOCAL_IP (1<<6)
106 
107 #define LOG_PRINT_CRLF (1<<7)
108 #define LOG_FATAL_NOTIFY (1<<8)
109 
110 #define LOG_PRINT_INTVAL (1<<9)
111 
112 #define LOG_PRINT_REMOTE_IP (1<<10)
113 
114 #define LOG_ECHO_TO_LOG (1<<11)
115 
116 const char *log_entry_print(const struct log_entry *e, unsigned int flags, struct gc_arena *gc);
117 
119 {
120  int base;
121  int size;
122  int capacity;
123  struct log_entry *array;
124 };
125 
126 struct log_history *log_history_init(const int capacity);
127 
128 void log_history_close(struct log_history *h);
129 
130 void log_history_add(struct log_history *h, const struct log_entry *le);
131 
132 void log_history_resize(struct log_history *h, const int capacity);
133 
134 const struct log_entry *log_history_ref(const struct log_history *h, const int index);
135 
136 static inline int
138 {
139  return h->size;
140 }
141 
142 static inline int
144 {
145  return h->capacity;
146 }
147 
148 /*
149  * Callbacks for 'status' and 'kill' commands.
150  * Also for management-based deferred authentication and packet filter.
151  */
153 {
154  void *arg;
155 
156 #define MCF_SERVER (1<<0) /* is OpenVPN being run as a server? */
157  unsigned int flags;
158 
159  void (*status) (void *arg, const int version, struct status_output *so);
160  void (*show_net) (void *arg, const int msglevel);
161  int (*kill_by_cn) (void *arg, const char *common_name);
162  int (*kill_by_addr) (void *arg, const in_addr_t addr, const int port);
163  void (*delete_event) (void *arg, event_t event);
164  int (*n_clients) (void *arg);
165  bool (*send_cc_message) (void *arg, const char *message, const char *parameter);
166  bool (*kill_by_cid)(void *arg, const unsigned long cid, const char *kill_msg);
167  bool (*client_auth) (void *arg,
168  const unsigned long cid,
169  const unsigned int mda_key_id,
170  const bool auth,
171  const char *reason,
172  const char *client_reason,
173  struct buffer_list *cc_config); /* ownership transferred */
174  bool (*client_pending_auth) (void *arg,
175  const unsigned long cid,
176  const char *extra,
177  unsigned int timeout);
178  char *(*get_peer_info) (void *arg, const unsigned long cid);
179 #ifdef MANAGEMENT_PF
180  bool (*client_pf)(void *arg,
181  const unsigned long cid,
182  struct buffer_list *pf_config); /* ownership transferred */
183 #endif
184  bool (*proxy_cmd)(void *arg, const char **p);
185  bool (*remote_cmd) (void *arg, const char **p);
186 #ifdef TARGET_ANDROID
187  int (*network_change)(void *arg, bool samenetwork);
188 #endif
189 };
190 
191 /*
192  * Management object, split into three components:
193  *
194  * struct man_persist : Data elements which are persistent across
195  * man_connection open and close.
196  *
197  * struct man_settings : management parameters.
198  *
199  * struct man_connection : created on socket binding and listen,
200  * deleted on socket unbind, may
201  * handle multiple sequential client
202  * connections.
203  */
204 
205 struct man_persist {
206  bool defined;
207 
208  struct log_history *log;
209  struct virtual_output vout;
210 
212  struct management_callback callback;
213 
214  struct log_history *echo; /* saved --echo strings */
216 
218 
219  const char *special_state_msg;
220 
223 };
224 
225 struct man_settings {
226  bool defined;
227  unsigned int flags; /* MF_x flags */
228  struct addrinfo *local;
229 #if UNIX_SOCK_SUPPORT
230  struct sockaddr_un local_unix;
231 #endif
233  struct user_pass up;
240 
241 /* flags for handling the management interface "signal" command */
242 #define MANSIG_IGNORE_USR1_HUP (1<<0)
243 #define MANSIG_MAP_USR1_TO_HUP (1<<1)
244 #define MANSIG_MAP_USR1_TO_TERM (1<<2)
245  unsigned int mansig;
246 };
247 
248 /* up_query modes */
249 #define UP_QUERY_DISABLED 0
250 #define UP_QUERY_USER_PASS 1
251 #define UP_QUERY_PASS 2
252 #define UP_QUERY_NEED_OK 3
253 #define UP_QUERY_NEED_STR 4
254 
255 /* states */
256 #define MS_INITIAL 0 /* all sockets are closed */
257 #define MS_LISTEN 1 /* no client is connected */
258 #define MS_CC_WAIT_READ 2 /* client is connected, waiting for read on socket */
259 #define MS_CC_WAIT_WRITE 3 /* client is connected, waiting for ability to write to socket */
260 
262  int state;
263 
266  struct openvpn_sockaddr remote;
267 
268 #ifdef _WIN32
269  struct net_event_win32 ne32;
270 #endif
271 
272  bool halt;
275 
276  struct command_line *in;
277  struct buffer_list *out;
278 
279 #define IEC_UNDEF 0
280 #define IEC_CLIENT_AUTH 1
281 #define IEC_CLIENT_PF 2
282 #define IEC_RSA_SIGN 3
283 #define IEC_CERTIFICATE 4
284 #define IEC_PK_SIGN 5
287  unsigned long in_extra_cid;
288  unsigned int in_extra_kid;
289 #define EKS_UNDEF 0
290 #define EKS_SOLICIT 1
291 #define EKS_INPUT 2
292 #define EKS_READY 3
297  struct event_set *es;
299 
305 
306  const char *up_query_type;
308  struct user_pass up_query;
309 
310 #ifdef TARGET_ANDROID
311  int fdtosend;
312  int lastfdreceived;
313 #endif
315 };
316 
318 {
319  struct man_persist persist;
321  struct man_connection connection;
322 };
323 
324 extern struct management *management;
325 
326 struct user_pass;
327 
328 struct management *management_init(void);
329 
330 /* management_open flags */
331 #define MF_SERVER (1<<0)
332 #define MF_QUERY_PASSWORDS (1<<1)
333 #define MF_HOLD (1<<2)
334 #define MF_SIGNAL (1<<3)
335 #define MF_FORGET_DISCONNECT (1<<4)
336 #define MF_CONNECT_AS_CLIENT (1<<5)
337 #define MF_CLIENT_AUTH (1<<6)
338 #ifdef MANAGEMENT_PF
339 #define MF_CLIENT_PF (1<<7)
340 #endif
341 #define MF_UNIX_SOCK (1<<8)
342 #define MF_EXTERNAL_KEY (1<<9)
343 #define MF_EXTERNAL_KEY_NOPADDING (1<<10)
344 #define MF_EXTERNAL_KEY_PKCS1PAD (1<<11)
345 #define MF_UP_DOWN (1<<12)
346 #define MF_QUERY_REMOTE (1<<13)
347 #define MF_QUERY_PROXY (1<<14)
348 #define MF_EXTERNAL_CERT (1<<15)
349 
350 bool management_open(struct management *man,
351  const char *addr,
352  const char *port,
353  const char *pass_file,
354  const char *client_user,
355  const char *client_group,
356  const int log_history_cache,
357  const int echo_buffer_size,
358  const int state_buffer_size,
359  const char *write_peer_info_file,
360  const int remap_sigusr1,
361  const unsigned int flags);
362 
363 void management_close(struct management *man);
364 
365 void management_post_tunnel_open(struct management *man, const in_addr_t tun_local_ip);
366 
367 void management_pre_tunnel_close(struct management *man);
368 
369 void management_socket_set(struct management *man,
370  struct event_set *es,
371  void *arg,
372  unsigned int *persistent);
373 
374 void management_io(struct management *man);
375 
376 void management_set_callback(struct management *man,
377  const struct management_callback *cb);
378 
379 void management_clear_callback(struct management *man);
380 
381 bool management_query_user_pass(struct management *man,
382  struct user_pass *up,
383  const char *type,
384  const unsigned int flags,
385  const char *static_challenge);
386 
387 #ifdef TARGET_ANDROID
388 bool management_android_control(struct management *man, const char *command, const char *msg);
389 
390 #define ANDROID_KEEP_OLD_TUN 1
391 #define ANDROID_OPEN_AFTER_CLOSE 2
392 #define ANDROID_OPEN_BEFORE_CLOSE 3
393 int managment_android_persisttun_action(struct management *man);
394 
395 #endif
396 
397 bool management_should_daemonize(struct management *man);
398 
399 bool management_would_hold(struct management *man);
400 
401 bool management_hold(struct management *man, int holdtime);
402 
403 void management_event_loop_n_seconds(struct management *man, int sec);
404 
405 void management_up_down(struct management *man, const char *updown, const struct env_set *es);
406 
407 void management_notify(struct management *man, const char *severity, const char *type, const char *text);
408 
409 void management_notify_generic(struct management *man, const char *str);
410 
411 void management_notify_client_needing_auth(struct management *management,
412  const unsigned int auth_id,
413  struct man_def_auth_context *mdac,
414  const struct env_set *es);
415 
416 void management_connection_established(struct management *management,
417  struct man_def_auth_context *mdac,
418  const struct env_set *es);
419 
420 void management_notify_client_close(struct management *management,
421  struct man_def_auth_context *mdac,
422  const struct env_set *es);
423 
424 void management_learn_addr(struct management *management,
425  struct man_def_auth_context *mdac,
426  const struct mroute_addr *addr,
427  const bool primary);
428 
429 void management_notify_client_cr_response(unsigned mda_key_id,
430  const struct man_def_auth_context *mdac,
431  const struct env_set *es,
432  const char *response);
433 
434 char *management_query_pk_sig(struct management *man, const char *b64_data,
435  const char *algorithm);
436 
437 char *management_query_cert(struct management *man, const char *cert_name);
438 
439 static inline bool
440 management_connected(const struct management *man)
441 {
443 }
444 
445 static inline bool
446 management_query_user_pass_enabled(const struct management *man)
447 {
449 }
450 
451 static inline bool
452 management_query_remote_enabled(const struct management *man)
453 {
454  return BOOL_CAST(man->settings.flags & MF_QUERY_REMOTE);
455 }
456 
457 static inline bool
458 management_query_proxy_enabled(const struct management *man)
459 {
460  return BOOL_CAST(man->settings.flags & MF_QUERY_PROXY);
461 }
462 
463 #ifdef MANAGEMENT_PF
464 static inline bool
465 management_enable_pf(const struct management *man)
466 {
467  return man && BOOL_CAST(man->settings.flags & MF_CLIENT_PF);
468 }
469 #endif
470 
471 static inline bool
472 management_enable_def_auth(const struct management *man)
473 {
474  return man && BOOL_CAST(man->settings.flags & MF_CLIENT_AUTH);
475 }
476 
477 /*
478  * OpenVPN tells the management layer what state it's in
479  */
480 
481 /* client/server states */
482 #define OPENVPN_STATE_INITIAL 0 /* Initial, undefined state */
483 #define OPENVPN_STATE_CONNECTING 1 /* Management interface has been initialized */
484 #define OPENVPN_STATE_ASSIGN_IP 2 /* Assigning IP address to virtual network interface */
485 #define OPENVPN_STATE_ADD_ROUTES 3 /* Adding routes to system */
486 #define OPENVPN_STATE_CONNECTED 4 /* Initialization sequence completed */
487 #define OPENVPN_STATE_RECONNECTING 5 /* Restart */
488 #define OPENVPN_STATE_EXITING 6 /* Exit */
489 
490 /* client-only states */
491 #define OPENVPN_STATE_WAIT 7 /* Waiting for initial response from server */
492 #define OPENVPN_STATE_AUTH 8 /* Authenticating with server */
493 #define OPENVPN_STATE_GET_CONFIG 9 /* Downloading configuration from server */
494 #define OPENVPN_STATE_RESOLVE 10 /* DNS lookup */
495 #define OPENVPN_STATE_TCP_CONNECT 11 /* Connecting to TCP server */
496 #define OPENVPN_STATE_AUTH_PENDING 12 /* Waiting in auth-pending mode
497  * technically variant of GET_CONFIG */
498 
499 #define OPENVPN_STATE_CLIENT_BASE 7 /* Base index of client-only states */
500 
501 void management_set_state(struct management *man,
502  const int state,
503  const char *detail,
504  const in_addr_t *tun_local_ip,
505  const struct in6_addr *tun_local_ip6,
506  const struct openvpn_sockaddr *local_addr,
507  const struct openvpn_sockaddr *remote_addr);
508 
509 /*
510  * The management object keeps track of OpenVPN --echo
511  * parameters.
512  */
513 void management_echo(struct management *man, const char *string, const bool pull);
514 
515 /*
516  * OpenVPN calls here to indicate a password failure
517  */
518 
519 void management_auth_failure(struct management *man, const char *type, const char *reason);
520 
521 /*
522  * Echo an authentication token to management interface
523  */
524 void management_auth_token(struct management *man, const char *token);
525 
526 /*
527  * These functions drive the bytecount in/out counters.
528  */
529 
530 void man_bytecount_output_client(struct management *man);
531 
532 static inline void
534 {
538  {
540  }
541 }
542 
543 static inline void
544 management_bytes_out_client(struct management *man, const int size)
545 {
546  man->persist.bytes_out += size;
548 }
549 
550 static inline void
551 management_bytes_in_client(struct management *man, const int size)
552 {
553  man->persist.bytes_in += size;
555 }
556 
557 static inline void
558 management_bytes_out(struct management *man, const int size)
559 {
560  if (!(man->persist.callback.flags & MCF_SERVER))
561  {
562  management_bytes_out_client(man, size);
563  }
564 }
565 
566 static inline void
567 management_bytes_in(struct management *man, const int size)
568 {
569  if (!(man->persist.callback.flags & MCF_SERVER))
570  {
571  management_bytes_in_client(man, size);
572  }
573 }
574 
575 void man_bytecount_output_server(struct management *man,
576  const counter_type *bytes_in_total,
577  const counter_type *bytes_out_total,
578  struct man_def_auth_context *mdac);
579 
580 static inline void
581 management_bytes_server(struct management *man,
582  const counter_type *bytes_in_total,
583  const counter_type *bytes_out_total,
584  struct man_def_auth_context *mdac)
585 {
589  {
590  man_bytecount_output_server(man, bytes_in_total, bytes_out_total, mdac);
591  }
592 }
593 
594 #endif /* ifdef ENABLE_MANAGEMENT */
595 
600 void management_sleep(const int n);
601 
602 #endif /* ifndef MANAGE_H */
void command_line_free(struct command_line *cl)
Definition: manage.c:3864
const char * log_entry_print(const struct log_entry *e, unsigned int flags, struct gc_arena *gc)
Definition: manage.c:3921
const char * string
Definition: manage.h:90
int client_uid
Definition: manage.h:238
void management_pre_tunnel_close(struct management *man)
Definition: manage.c:3053
static int buf_len(const struct buffer *buf)
Definition: buffer.h:240
bool management_over_tunnel
Definition: manage.h:232
int password_tries
Definition: manage.h:274
struct log_history * state
Definition: manage.h:215
void management_sleep(const int n)
A sleep function that services the management layer for n seconds rather than doing nothing...
Definition: manage.c:4096
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:3464
int state
Definition: manage.h:83
static int log_history_size(const struct log_history *h)
Definition: manage.h:137
bool management_would_hold(struct management *man)
Definition: manage.c:3775
#define BOOL_CAST(x)
Definition: basic.h:27
struct man_persist persist
Definition: manage.h:319
unsigned int msg_flags
Definition: manage.h:82
void management_echo(struct management *man, const char *string, const bool pull)
Definition: manage.c:2999
const char * up_query_type
Definition: manage.h:306
struct man_connection connection
Definition: manage.h:321
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 char *write_peer_info_file, const int remap_sigusr1, const unsigned int flags)
Definition: manage.c:2634
struct management_callback callback
Definition: manage.h:212
int size
Definition: manage.h:121
void command_line_add(struct command_line *cl, const unsigned char *buf, const int len)
Definition: manage.c:3877
struct buffer_list * in_extra
Definition: manage.h:286
unsigned long in_extra_cid
Definition: manage.h:287
#define in_addr_t
Definition: config-msvc.h:103
struct buffer buf
Definition: manage.h:61
struct addrinfo * local
Definition: manage.h:228
counter_type bytes_in
Definition: manage.h:221
int echo_buffer_size
Definition: manage.h:235
#define MCF_SERVER
Definition: manage.h:156
#define MF_QUERY_PROXY
Definition: manage.h:347
int ext_key_state
Definition: manage.h:293
Definition: manage.h:81
void man_bytecount_output_server(struct management *man, const counter_type *bytes_in_total, const counter_type *bytes_out_total, struct man_def_auth_context *mdac)
Definition: manage.c:488
in_addr_t local_ip
Definition: manage.h:91
const struct log_entry * log_history_ref(const struct log_history *h, const int index)
Definition: manage.c:4083
void management_socket_set(struct management *man, struct event_set *es, void *arg, unsigned int *persistent)
Definition: manage.c:3097
#define MF_CLIENT_AUTH
Definition: manage.h:337
#define MF_QUERY_REMOTE
Definition: manage.h:346
void management_up_down(struct management *man, const char *updown, const struct env_set *es)
Definition: manage.c:2859
void management_learn_addr(struct management *management, struct man_def_auth_context *mdac, const struct mroute_addr *addr, const bool primary)
Definition: manage.c:2982
time_t bytecount_last_update
Definition: manage.h:304
static void management_bytes_out_client(struct management *man, const int size)
Definition: manage.h:544
void command_line_next(struct command_line *cl)
Definition: manage.c:3909
struct buffer_list * ext_key_input
Definition: manage.h:294
char * write_peer_info_file
Definition: manage.h:237
struct command_line * command_line_new(const int buf_len)
Definition: manage.c:3847
int up_query_mode
Definition: manage.h:307
time_t bytecount_last_update
Definition: manage.h:53
time_t timestamp
Definition: manage.h:89
time_t now
Definition: otime.c:36
bool standalone_disabled
Definition: manage.h:211
void management_auth_token(struct management *man, const char *token)
Definition: manage.c:3075
unsigned int flags
Definition: manage.h:49
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:2718
const char * command_line_get(struct command_line *cl)
Definition: manage.c:3893
struct event_set * es
Definition: manage.h:297
static void management_bytes_in(struct management *man, const int size)
Definition: manage.h:567
uint64_t counter_type
Definition: common.h:30
int in_extra_cmd
Definition: manage.h:285
int capacity
Definition: manage.h:122
void management_notify_generic(struct management *man, const char *str)
Definition: manage.c:2875
struct command_line * in
Definition: manage.h:276
void management_event_loop_n_seconds(struct management *man, int sec)
Definition: manage.c:3412
static void management_bytes_in_client(struct management *man, const int size)
Definition: manage.h:551
int state_buffer_size
Definition: manage.h:236
void management_set_callback(struct management *man, const struct management_callback *cb)
Definition: manage.c:2701
struct management * management
Definition: manage.c:63
void log_history_close(struct log_history *h)
Definition: manage.c:4034
socket_descriptor_t sd_cli
Definition: manage.h:265
char * management_query_pk_sig(struct management *man, const char *b64_data, const char *algorithm)
Definition: manage.c:3729
bool state_realtime
Definition: manage.h:300
static bool management_connected(const struct management *man)
Definition: manage.h:440
bool hold_release
Definition: manage.h:217
unsigned int mansig
Definition: manage.h:245
bool defined
Definition: manage.h:206
counter_type bytes_out
Definition: manage.h:222
void management_io(struct management *man)
Definition: manage.c:3137
#define msg(flags,...)
Definition: error.h:153
struct log_history * log_history_init(const int capacity)
Definition: manage.c:4013
void management_clear_callback(struct management *man)
Definition: manage.c:2709
static int log_history_capacity(const struct log_history *h)
Definition: manage.h:143
void management_post_tunnel_open(struct management *man, const in_addr_t tun_local_ip)
Definition: manage.c:3030
int base
Definition: manage.h:120
struct log_history * log
Definition: manage.h:208
void log_history_resize(struct log_history *h, const int capacity)
Definition: manage.c:4062
#define MF_QUERY_PASSWORDS
Definition: manage.h:332
const char * special_state_msg
Definition: manage.h:219
struct management * management_init(void)
Definition: manage.c:2618
int log_history_cache
Definition: manage.h:234
void log_history_add(struct log_history *h, const struct log_entry *le)
Definition: manage.c:4041
int client_version
Definition: manage.h:314
int env_filter_level
Definition: manage.h:298
void management_auth_failure(struct management *man, const char *type, const char *reason)
Definition: manage.c:3062
static bool management_query_user_pass_enabled(const struct management *man)
Definition: manage.h:446
int msglevel
Definition: status.h:56
SOCKET socket_descriptor_t
Definition: syshead.h:445
struct log_entry * array
Definition: manage.h:123
Definition: misc.h:56
Wrapper structure for dynamically allocated memory.
Definition: buffer.h:60
void management_connection_established(struct management *management, struct man_def_auth_context *mdac, const struct env_set *es)
Definition: manage.c:2958
struct buffer_list * ext_cert_input
Definition: manage.h:296
static settings_t settings
Definition: interactive.c:58
bool echo_realtime
Definition: manage.h:302
static void man_bytecount_possible_output_client(struct management *man)
Definition: manage.h:533
unsigned int flags
Definition: manage.h:227
static bool management_enable_def_auth(const struct management *man)
Definition: manage.h:472
socket_descriptor_t sd_top
Definition: manage.h:264
unsigned int mda_key_id_counter
Definition: manage.h:51
bool management_should_daemonize(struct management *man)
Definition: manage.c:3785
int intval
Definition: manage.h:84
static void management_bytes_out(struct management *man, const int size)
Definition: manage.h:558
Definition: manage.h:87
unsigned int flags
Definition: manage.h:157
struct buffer_list * out
Definition: manage.h:277
Garbage collection arena used to keep track of dynamically allocated memory.
Definition: buffer.h:116
#define DAF_CONNECTION_ESTABLISHED
Definition: manage.h:46
unsigned long cid
Definition: manage.h:44
bool management_hold(struct management *man, int holdtime)
Definition: manage.c:3795
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:2932
#define DAF_CONNECTION_CLOSED
Definition: manage.h:47
bool defined
Definition: manage.h:226
char * management_query_cert(struct management *man, const char *cert_name)
Definition: manage.c:3756
void management_close(struct management *man)
Definition: manage.c:2691
static void management_bytes_server(struct management *man, const counter_type *bytes_in_total, const counter_type *bytes_out_total, struct man_def_auth_context *mdac)
Definition: manage.h:581
#define MS_CC_WAIT_WRITE
Definition: manage.h:259
bool log_realtime
Definition: manage.h:301
bool password_verified
Definition: manage.h:273
unsigned int in_extra_kid
Definition: manage.h:288
static SERVICE_STATUS status
Definition: interactive.c:56
static bool management_query_remote_enabled(const struct management *man)
Definition: manage.h:452
int bytecount_update_seconds
Definition: manage.h:303
void management_notify(struct management *man, const char *severity, const char *type, const char *text)
Definition: manage.c:2869
static bool management_query_proxy_enabled(const struct management *man)
Definition: manage.h:458
int client_gid
Definition: manage.h:239
struct man_settings settings
Definition: manage.h:320
void command_line_reset(struct command_line *cl)
Definition: manage.c:3857
#define MS_CC_WAIT_READ
Definition: manage.h:258
struct log_history * echo
Definition: manage.h:214
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:2908
void management_notify_client_close(struct management *management, struct man_def_auth_context *mdac, const struct env_set *es)
Definition: manage.c:2969
void man_bytecount_output_client(struct management *man)
Definition: manage.c:476
int ext_cert_state
Definition: manage.h:295