OpenVPN
ps.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 PS_H
25#define PS_H
26
27#if PORT_SHARE
28
29#include "basic.h"
30#include "buffer.h"
31#include "ssl.h"
32
33struct port_share {
34 /* Foreground's socket to background process */
35 socket_descriptor_t foreground_fd;
36
37 /* Process ID of background process */
38 pid_t background_pid;
39};
40
41extern struct port_share *port_share;
42
43struct port_share *port_share_open(const char *host,
44 const char *port,
45 const int max_initial_buf,
46 const char *journal_dir);
47
48void port_share_close(struct port_share *ps);
49
50void port_share_abort(struct port_share *ps);
51
52bool is_openvpn_protocol(const struct buffer *buf);
53
54void port_share_redirect(struct port_share *ps, const struct buffer *head, socket_descriptor_t sd);
55
56#endif /* if PORT_SHARE */
57#endif /* ifndef PS_H */
Control Channel SSL/Data channel negotiation module.
Wrapper structure for dynamically allocated memory.
Definition buffer.h:61
SOCKET socket_descriptor_t
Definition syshead.h:439