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-2024 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
45bool send_push_request(struct context *c);
46
47void receive_auth_failed(struct context *c, const struct buffer *buffer);
48
49void server_pushed_signal(struct context *c, const struct buffer *buffer, const bool restart, const int adv);
50
51void receive_exit_message(struct context *c);
52
53void server_pushed_info(const struct buffer *buffer, const int adv);
54
55void receive_cr_response(struct context *c, const struct buffer *buffer);
56
57void incoming_push_message(struct context *c, const struct buffer *buffer);
58
59void clone_push_list(struct options *o);
60
61void push_option(struct options *o, const char *opt, int msglevel);
62
63void push_options(struct options *o, char **p, int msglevel,
64 struct gc_arena *gc);
65
66void push_reset(struct options *o);
67
68void push_remove_option(struct options *o, const char *p);
69
71
72void send_auth_failed(struct context *c, const char *client_reason);
73
79bool
81 struct tls_session *session, const char *extra,
82 unsigned int timeout);
83
84void send_restart(struct context *c, const char *kill_msg);
85
93void send_push_reply_auth_token(struct tls_multi *multi);
94
101void
102receive_auth_pending(struct context *c, const struct buffer *buffer);
103
104#endif /* ifndef PUSH_H */
Interface functions to the internal and external multiplexers.
int process_incoming_push_request(struct context *c)
Definition push.c:967
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:341
void receive_auth_failed(struct context *c, const struct buffer *buffer)
Definition push.c:51
void send_restart(struct context *c, const char *kill_msg)
Definition push.c:496
void push_option(struct options *o, const char *opt, int msglevel)
Definition push.c:875
void server_pushed_signal(struct context *c, const struct buffer *buffer, const bool restart, const int adv)
Definition push.c:133
void push_reset(struct options *o)
Definition push.c:923
void receive_cr_response(struct context *c, const struct buffer *buffer)
Definition push.c:266
void send_auth_failed(struct context *c, const char *client_reason)
Definition push.c:397
void clone_push_list(struct options *o)
Definition push.c:881
void receive_exit_message(struct context *c)
Definition push.c:193
bool send_push_request(struct context *c)
Definition push.c:552
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:439
void push_remove_option(struct options *o, const char *p)
Definition push.c:929
void incoming_push_message(struct context *c, const struct buffer *buffer)
Definition push.c:507
void push_options(struct options *o, char **p, int msglevel, struct gc_arena *gc)
Definition push.c:897
void remove_iroutes_from_push_route_list(struct options *o)
Definition push.c:1117
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:1087
void server_pushed_info(const struct buffer *buffer, const int adv)
Definition push.c:229
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:761
Wrapper structure for dynamically allocated memory.
Definition buffer.h:61
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:117
Security parameter state for a single VPN tunnel.
Definition ssl_common.h:597
Security parameter state of a single session within a VPN tunnel.
Definition ssl_common.h:480
struct gc_arena gc
Definition test_ssl.c:155