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-2023 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 receive_exit_message(struct context *c);
52 
53 void server_pushed_info(struct context *c, const struct buffer *buffer,
54  const int adv);
55 
56 void receive_cr_response(struct context *c, const struct buffer *buffer);
57 
58 void incoming_push_message(struct context *c, const struct buffer *buffer);
59 
60 void clone_push_list(struct options *o);
61 
62 void push_option(struct options *o, const char *opt, int msglevel);
63 
64 void push_options(struct options *o, char **p, int msglevel,
65  struct gc_arena *gc);
66 
67 void push_reset(struct options *o);
68 
69 void push_remove_option(struct options *o, const char *p);
70 
72 
73 void send_auth_failed(struct context *c, const char *client_reason);
74 
80 bool
82  struct tls_session *session, const char *extra,
83  unsigned int timeout);
84 
85 void send_restart(struct context *c, const char *kill_msg);
86 
94 void send_push_reply_auth_token(struct tls_multi *multi);
95 
102 void
103 receive_auth_pending(struct context *c, const struct buffer *buffer);
104 
105 #endif /* ifndef PUSH_H */
forward.h
context
Contains all state information for one tunnel.
Definition: openvpn.h:476
receive_cr_response
void receive_cr_response(struct context *c, const struct buffer *buffer)
Definition: push.c:261
push_reset
void push_reset(struct options *o)
Definition: push.c:915
send_restart
void send_restart(struct context *c, const char *kill_msg)
Definition: push.c:493
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:1079
tls_multi
Security parameter state for a single VPN tunnel.
Definition: ssl_common.h:587
server_pushed_signal
void server_pushed_signal(struct context *c, const struct buffer *buffer, const bool restart, const int adv)
Definition: push.c:131
process_incoming_push_request
int process_incoming_push_request(struct context *c)
Definition: push.c:959
push_remove_option
void push_remove_option(struct options *o, const char *p)
Definition: push.c:921
send_push_request
bool send_push_request(struct context *c)
Definition: push.c:549
receive_auth_failed
void receive_auth_failed(struct context *c, const struct buffer *buffer)
Definition: push.c:50
options
Definition: options.h:236
buffer
Wrapper structure for dynamically allocated memory.
Definition: buffer.h:60
clone_push_list
void clone_push_list(struct options *o)
Definition: push.c:873
incoming_push_message
void incoming_push_message(struct context *c, const struct buffer *buffer)
Definition: push.c:504
tls_session
Security parameter state of a single session within a VPN tunnel.
Definition: ssl_common.h:468
send_auth_pending_messages
bool send_auth_pending_messages(struct tls_multi *tls_multi, struct tls_session *session, const char *extra, unsigned int timeout)
Sends the auth pending control messages to a client.
Definition: push.c:436
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:1109
push_option
void push_option(struct options *o, const char *opt, int msglevel)
Definition: push.c:867
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:753
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:336
receive_exit_message
void receive_exit_message(struct context *c)
Definition: push.c:191
session
Definition: keyingmaterialexporter.c:56
push_options
void push_options(struct options *o, char **p, int msglevel, struct gc_arena *gc)
Definition: push.c:889
server_pushed_info
void server_pushed_info(struct context *c, const struct buffer *buffer, const int adv)
Definition: push.c:223
send_auth_failed
void send_auth_failed(struct context *c, const char *client_reason)
Definition: push.c:392