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-2010 OpenVPN Technologies, 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 20 * along with this program (see the file COPYING included with this 21 * distribution); if not, write to the Free Software Foundation, Inc., 22 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 23 */ 24 25#ifndef PUSH_H 26#define PUSH_H 27 28#if P2MP 29 30#include "forward.h" 31 32#define PUSH_MSG_ERROR 0 33#define PUSH_MSG_REQUEST 1 34#define PUSH_MSG_REPLY 2 35#define PUSH_MSG_REQUEST_DEFERRED 3 36#define PUSH_MSG_AUTH_FAILURE 4 37#define PUSH_MSG_CONTINUATION 5 38#define PUSH_MSG_ALREADY_REPLIED 6 39 40void incoming_push_message (struct context *c, 41 const struct buffer *buffer); 42 43int process_incoming_push_msg (struct context *c, 44 const struct buffer *buffer, 45 bool honor_received_options, 46 unsigned int permission_mask, 47 unsigned int *option_types_found); 48 49bool send_push_request (struct context *c); 50 51void receive_auth_failed (struct context *c, const struct buffer *buffer); 52 53void server_pushed_signal (struct context *c, const struct buffer *buffer, const bool restart, const int adv); 54 55#if P2MP_SERVER 56 57void clone_push_list (struct options *o); 58 59void push_option (struct options *o, const char *opt, int msglevel); 60void push_options (struct options *o, char **p, int msglevel, struct gc_arena *gc); 61 62void push_reset (struct options *o); 63 64bool send_push_reply (struct context *c); 65 66void remove_iroutes_from_push_route_list (struct options *o); 67 68void send_auth_failed (struct context *c, const char *client_reason); 69 70void send_restart (struct context *c, const char *kill_msg); 71 72#endif 73#endif 74#endif 75