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-2025 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, see <https://www.gnu.org/licenses/>.
21 */
22
23#ifndef PS_H
24#define PS_H
25
26#if PORT_SHARE
27
28#include "basic.h"
29#include "buffer.h"
30#include "ssl.h"
31
32struct port_share
33{
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, const char *port, const int max_initial_buf,
44 const char *journal_dir);
45
46void port_share_close(struct port_share *ps);
47
48void port_share_abort(struct port_share *ps);
49
50bool is_openvpn_protocol(const struct buffer *buf);
51
52void port_share_redirect(struct port_share *ps, const struct buffer *head, socket_descriptor_t sd);
53
54#endif /* if PORT_SHARE */
55#endif /* ifndef PS_H */
Control Channel SSL/Data channel negotiation module.
Wrapper structure for dynamically allocated memory.
Definition buffer.h:60
SOCKET socket_descriptor_t
Definition syshead.h:440