OpenVPN
mtcp.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-2018 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 /*
25  * TCP specific code for --mode server
26  */
27 
28 #ifndef MTCP_H
29 #define MTCP_H
30 
31 #if P2MP_SERVER
32 
33 #include "event.h"
34 
35 /*
36  * Extra state info needed for TCP mode
37  */
38 struct multi_tcp
39 {
40  struct event_set *es;
42  int n_esr;
43  int maxevents;
44  unsigned int tun_rwflags;
45 #ifdef ENABLE_MANAGEMENT
47 #endif
48 };
49 
50 struct multi_instance;
51 struct context;
52 
53 struct multi_tcp *multi_tcp_init(int maxevents, int *maxclients);
54 
55 void multi_tcp_free(struct multi_tcp *mtcp);
56 
57 void multi_tcp_dereference_instance(struct multi_tcp *mtcp, struct multi_instance *mi);
58 
60 
62 
63 void multi_tcp_link_out_deferred(struct multi_context *m, struct multi_instance *mi);
64 
65 
66 /**************************************************************************/
73 void tunnel_server_tcp(struct context *top);
74 
75 
76 void multi_tcp_delete_event(struct multi_tcp *mtcp, event_t event);
77 
78 #endif /* if P2MP_SERVER */
79 #endif /* ifndef MTCP_H */
void multi_tcp_free(struct multi_tcp *mtcp)
Definition: mtcp.c:229
int maxevents
Definition: mtcp.h:43
Contains all state information for one tunnel.
Definition: openvpn.h:500
struct event_set_return * esr
Definition: mtcp.h:41
void multi_tcp_dereference_instance(struct multi_tcp *mtcp, struct multi_instance *mi)
Definition: mtcp.c:243
void multi_tcp_link_out_deferred(struct multi_context *m, struct multi_instance *mi)
void multi_tcp_delete_event(struct multi_tcp *mtcp, event_t event)
Definition: mtcp.c:220
struct multi_tcp * multi_tcp_init(int maxevents, int *maxclients)
Definition: mtcp.c:201
bool multi_tcp_instance_specific_init(struct multi_context *m, struct multi_instance *mi)
Definition: mtcp.c:175
unsigned int tun_rwflags
Definition: mtcp.h:44
Definition: mtcp.h:38
void tunnel_server_tcp(struct context *top)
Main event loop for OpenVPN in TCP server mode.
Definition: mtcp.c:769
int n_esr
Definition: mtcp.h:42
struct event_set * es
Definition: mtcp.h:40
Main OpenVPN server state structure.
Definition: multi.h:131
unsigned int management_persist_flags
Definition: mtcp.h:46
Server-mode state structure for one single VPN tunnel.
Definition: multi.h:76
void multi_tcp_instance_specific_free(struct multi_instance *mi)
Definition: mtcp.c:195