OpenVPN
push.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-2022 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 PUSH_H
25 #define PUSH_H
26 
27 #include "forward.h"
28 
29 #define PUSH_MSG_ERROR 0
30 #define PUSH_MSG_REQUEST 1
31 #define PUSH_MSG_REPLY 2
32 #define PUSH_MSG_REQUEST_DEFERRED 3
33 #define PUSH_MSG_AUTH_FAILURE 4
34 #define PUSH_MSG_CONTINUATION 5
35 #define PUSH_MSG_ALREADY_REPLIED 6
36 
38 
40  const struct buffer *buffer,
41  bool honor_received_options,
42  unsigned int permission_mask,
43  unsigned int *option_types_found);
44 
45 bool send_push_request(struct context *c);
46 
47 void receive_auth_failed(struct context *c, const struct buffer *buffer);
48 
49 void server_pushed_signal(struct context *c, const struct buffer *buffer, const bool restart, const int adv);
50 
51 void server_pushed_info(struct context *c, const struct buffer *buffer,
52  const int adv);
53 
54 void receive_cr_response(struct context *c, const struct buffer *buffer);
55 
56 void incoming_push_message(struct context *c, const struct buffer *buffer);
57 
58 void clone_push_list(struct options *o);
59 
60 void push_option(struct options *o, const char *opt, int msglevel);
61 
62 void push_options(struct options *o, char **p, int msglevel,
63  struct gc_arena *gc);
64 
65 void push_reset(struct options *o);
66 
67 void push_remove_option(struct options *o, const char *p);
68 
70 
71 void send_auth_failed(struct context *c, const char *client_reason);
72 
78 bool
79 send_auth_pending_messages(struct tls_multi *tls_multi, const char *extra,
80  unsigned int timeout);
81 
82 void send_restart(struct context *c, const char *kill_msg);
83 
90 void send_push_reply_auth_token(struct tls_multi *multi);
91 
98 void
99 receive_auth_pending(struct context *c, const struct buffer *buffer);
100 
101 #endif /* ifndef PUSH_H */
send_auth_pending_messages
bool send_auth_pending_messages(struct tls_multi *tls_multi, const char *extra, unsigned int timeout)
Sends the auth pending control messages to a client.
Definition: push.c:374
forward.h
context
Contains all state information for one tunnel.
Definition: openvpn.h:467
receive_cr_response
void receive_cr_response(struct context *c, const struct buffer *buffer)
Definition: push.c:212
push_reset
void push_reset(struct options *o)
Definition: push.c:811
send_restart
void send_restart(struct context *c, const char *kill_msg)
Definition: push.c:430
process_incoming_push_msg
int process_incoming_push_msg(struct context *c, const struct buffer *buffer, bool honor_received_options, unsigned int permission_mask, unsigned int *option_types_found)
Definition: push.c:973
tls_multi
Security parameter state for a single VPN tunnel.
Definition: ssl_common.h:550
server_pushed_signal
void server_pushed_signal(struct context *c, const struct buffer *buffer, const bool restart, const int adv)
Definition: push.c:120
process_incoming_push_request
int process_incoming_push_request(struct context *c)
Definition: push.c:855
push_remove_option
void push_remove_option(struct options *o, const char *p)
Definition: push.c:817
send_push_request
bool send_push_request(struct context *c)
Definition: push.c:486
receive_auth_failed
void receive_auth_failed(struct context *c, const struct buffer *buffer)
Definition: push.c:51
options
Definition: options.h:232
buffer
Wrapper structure for dynamically allocated memory.
Definition: buffer.h:60
clone_push_list
void clone_push_list(struct options *o)
Definition: push.c:769
incoming_push_message
void incoming_push_message(struct context *c, const struct buffer *buffer)
Definition: push.c:441
gc_arena
Garbage collection arena used to keep track of dynamically allocated memory.
Definition: buffer.h:116
remove_iroutes_from_push_route_list
void remove_iroutes_from_push_route_list(struct options *o)
Definition: push.c:1003
push_option
void push_option(struct options *o, const char *opt, int msglevel)
Definition: push.c:763
send_push_reply_auth_token
void send_push_reply_auth_token(struct tls_multi *multi)
Sends a push reply message only containin the auth-token to update the auth-token on the client.
Definition: push.c:650
receive_auth_pending
void receive_auth_pending(struct context *c, const struct buffer *buffer)
Parses an AUTH_PENDING message and if in pull mode extends the timeout.
Definition: push.c:283
push_options
void push_options(struct options *o, char **p, int msglevel, struct gc_arena *gc)
Definition: push.c:785
server_pushed_info
void server_pushed_info(struct context *c, const struct buffer *buffer, const int adv)
Definition: push.c:180
send_auth_failed
void send_auth_failed(struct context *c, const char *client_reason)
Definition: push.c:339