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 #if P2MP 28 29 #include "forward.h" 30 31 #define PUSH_MSG_ERROR 0 32 #define PUSH_MSG_REQUEST 1 33 #define PUSH_MSG_REPLY 2 34 #define PUSH_MSG_REQUEST_DEFERRED 3 35 #define PUSH_MSG_AUTH_FAILURE 4 36 #define PUSH_MSG_CONTINUATION 5 37 #define PUSH_MSG_ALREADY_REPLIED 6 38 39 int process_incoming_push_request(struct context *c); 40 41 int process_incoming_push_msg(struct context *c, 42 const struct buffer *buffer, 43 bool honor_received_options, 44 unsigned int permission_mask, 45 unsigned int *option_types_found); 46 47 bool send_push_request(struct context *c); 48 49 void receive_auth_failed(struct context *c, const struct buffer *buffer); 50 51 void server_pushed_signal(struct context *c, const struct buffer *buffer, const bool restart, const int adv); 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 71 void remove_iroutes_from_push_route_list(struct options *o); 72 73 void send_auth_failed(struct context *c, const char *client_reason); 74 75 /** 76 * Sends the auth pending control messages to a client. See 77 * doc/management-notes.txt under client-pending-auth for 78 * more details on message format 79 */ 80 bool send_auth_pending_messages(struct context *c, const char *extra); 81 82 void send_restart(struct context *c, const char *kill_msg); 83 84 /** 85 * Sends a push reply message only containin the auth-token to update 86 * the auth-token on the client 87 * 88 * @param multi - The tls_multi structure belonging to the instance to push to 89 */ 90 void send_push_reply_auth_token(struct tls_multi *multi); 91 92 #endif /* if P2MP */ 93 #endif /* ifndef PUSH_H */ 94