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-2023 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 #include "event.h"
32 
33 /*
34  * Extra state info needed for TCP mode
35  */
36 struct multi_tcp
37 {
38  struct event_set *es;
40  int n_esr;
41  int maxevents;
42  unsigned int tun_rwflags;
43 #ifdef ENABLE_MANAGEMENT
45 #endif
46 };
47 
48 struct multi_instance;
49 struct context;
50 
51 struct multi_tcp *multi_tcp_init(int maxevents, int *maxclients);
52 
53 void multi_tcp_free(struct multi_tcp *mtcp);
54 
55 void multi_tcp_dereference_instance(struct multi_tcp *mtcp, struct multi_instance *mi);
56 
58 
60 
61 void multi_tcp_link_out_deferred(struct multi_context *m, struct multi_instance *mi);
62 
63 
64 /**************************************************************************/
71 void tunnel_server_tcp(struct context *top);
72 
73 
74 void multi_tcp_delete_event(struct multi_tcp *mtcp, event_t event);
75 
76 #endif /* ifndef MTCP_H */
multi_tcp::maxevents
int maxevents
Definition: mtcp.h:41
multi_instance
Server-mode state structure for one single VPN tunnel.
Definition: multi.h:101
context
Contains all state information for one tunnel.
Definition: openvpn.h:476
multi_tcp
Definition: mtcp.h:36
multi_tcp_instance_specific_init
bool multi_tcp_instance_specific_init(struct multi_context *m, struct multi_instance *mi)
Definition: mtcp.c:171
tunnel_server_tcp
void tunnel_server_tcp(struct context *top)
Main event loop for OpenVPN in TCP server mode.
Definition: mtcp.c:789
multi_tcp_link_out_deferred
void multi_tcp_link_out_deferred(struct multi_context *m, struct multi_instance *mi)
multi_tcp::es
struct event_set * es
Definition: mtcp.h:38
event.h
multi_tcp::n_esr
int n_esr
Definition: mtcp.h:40
multi_tcp::tun_rwflags
unsigned int tun_rwflags
Definition: mtcp.h:42
multi_context
Main OpenVPN server state structure.
Definition: multi.h:155
multi_tcp_init
struct multi_tcp * multi_tcp_init(int maxevents, int *maxclients)
Definition: mtcp.c:197
multi_tcp_instance_specific_free
void multi_tcp_instance_specific_free(struct multi_instance *mi)
Definition: mtcp.c:191
event_set
Definition: event.h:124
event_set_return
Definition: event.h:118
rw_handle
Definition: win32.h:77
multi_tcp_free
void multi_tcp_free(struct multi_tcp *mtcp)
Definition: mtcp.c:225
multi_tcp::management_persist_flags
unsigned int management_persist_flags
Definition: mtcp.h:44
multi_tcp_dereference_instance
void multi_tcp_dereference_instance(struct multi_tcp *mtcp, struct multi_instance *mi)
Definition: mtcp.c:236
multi_tcp::esr
struct event_set_return * esr
Definition: mtcp.h:39
multi_tcp_delete_event
void multi_tcp_delete_event(struct multi_tcp *mtcp, event_t event)
Definition: mtcp.c:216