OpenVPN
src
openvpn
clinat.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
#if !defined(CLINAT_H)
25
#define CLINAT_H
26
27
#include "
buffer.h
"
28
29
#define MAX_CLIENT_NAT 64
30
31
#define CN_OUTGOING 0
32
#define CN_INCOMING 1
33
34
struct
client_nat_entry
{
35
#define CN_SNAT 0
36
#define CN_DNAT 1
37
int
type
;
38
in_addr_t
network
;
39
in_addr_t
netmask
;
40
in_addr_t
foreign_network
;
41
};
42
43
struct
client_nat_option_list
{
44
int
n
;
45
struct
client_nat_entry
entries
[
MAX_CLIENT_NAT
];
46
};
47
48
struct
client_nat_option_list
*
new_client_nat_list
(
struct
gc_arena
*gc);
49
50
struct
client_nat_option_list
*
clone_client_nat_option_list
(
const
struct
client_nat_option_list
*src,
struct
gc_arena
*gc);
51
52
void
copy_client_nat_option_list
(
struct
client_nat_option_list
*dest,
const
struct
client_nat_option_list
*src);
53
54
void
print_client_nat_list
(
const
struct
client_nat_option_list
*list,
int
msglevel);
55
56
void
add_client_nat_to_option_list
(
struct
client_nat_option_list
*dest,
57
const
char
*type,
58
const
char
*network,
59
const
char
*netmask,
60
const
char
*foreign_network,
61
int
msglevel);
62
63
void
client_nat_transform
(
const
struct
client_nat_option_list
*list,
64
struct
buffer
*ipbuf,
65
const
int
direction);
66
67
#endif
/* if !defined(CLINAT_H) */
client_nat_option_list::n
int n
Definition:
clinat.h:44
print_client_nat_list
void print_client_nat_list(const struct client_nat_option_list *list, int msglevel)
Definition:
clinat.c:52
client_nat_option_list
Definition:
clinat.h:43
copy_client_nat_option_list
void copy_client_nat_option_list(struct client_nat_option_list *dest, const struct client_nat_option_list *src)
Definition:
clinat.c:92
client_nat_option_list::entries
struct client_nat_entry entries[MAX_CLIENT_NAT]
Definition:
clinat.h:45
client_nat_entry::netmask
in_addr_t netmask
Definition:
clinat.h:39
client_nat_transform
void client_nat_transform(const struct client_nat_option_list *list, struct buffer *ipbuf, const int direction)
Definition:
clinat.c:193
client_nat_entry::type
int type
Definition:
clinat.h:37
buffer
Wrapper structure for dynamically allocated memory.
Definition:
buffer.h:60
client_nat_entry::foreign_network
in_addr_t foreign_network
Definition:
clinat.h:40
buffer.h
gc_arena
Garbage collection arena used to keep track of dynamically allocated memory.
Definition:
buffer.h:116
clone_client_nat_option_list
struct client_nat_option_list * clone_client_nat_option_list(const struct client_nat_option_list *src, struct gc_arena *gc)
Definition:
clinat.c:83
client_nat_entry::network
in_addr_t network
Definition:
clinat.h:38
add_client_nat_to_option_list
void add_client_nat_to_option_list(struct client_nat_option_list *dest, const char *type, const char *network, const char *netmask, const char *foreign_network, int msglevel)
Definition:
clinat.c:106
client_nat_entry
Definition:
clinat.h:34
MAX_CLIENT_NAT
#define MAX_CLIENT_NAT
Definition:
clinat.h:29
new_client_nat_list
struct client_nat_option_list * new_client_nat_list(struct gc_arena *gc)
Definition:
clinat.c:75
Generated by
1.8.17