OpenVPN
pf-inline.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 #if defined(ENABLE_PF) && !defined(PF_INLINE_H)
25 #define PF_INLINE_H
26 
27 /*
28  * Inline functions
29  */
30 
31 #define PCT_SRC 1
32 #define PCT_DEST 2
33 static inline bool
34 pf_c2c_test(const struct context *src, const struct context *dest, const char *prefix)
35 {
36  bool pf_cn_test(struct pf_set *pfs, const struct tls_multi *tm, const int type, const char *prefix);
37 
38  return (!src->c2.pf.enabled || pf_cn_test(src->c2.pf.pfs, dest->c2.tls_multi, PCT_DEST, prefix))
39  && (!dest->c2.pf.enabled || pf_cn_test(dest->c2.pf.pfs, src->c2.tls_multi, PCT_SRC, prefix));
40 }
41 
42 static inline bool
43 pf_addr_test(const struct context *src, const struct mroute_addr *dest, const char *prefix)
44 {
45  bool pf_addr_test_dowork(const struct context *src, const struct mroute_addr *dest, const char *prefix);
46 
47  if (src->c2.pf.enabled)
48  {
49  return pf_addr_test_dowork(src, dest, prefix);
50  }
51  else
52  {
53  return true;
54  }
55 }
56 
57 static inline bool
58 pf_kill_test(const struct pf_set *pfs)
59 {
60  return pfs->kill;
61 }
62 
63 #endif /* if defined(ENABLE_PF) && !defined(PF_INLINE_H) */
Contains all state information for one tunnel.
Definition: openvpn.h:498
Security parameter state for a single VPN tunnel.
Definition: ssl_common.h:494
struct context_2 c2
Level 2 context.
Definition: openvpn.h:537
char * dest
Definition: compat-lz4.h:431
struct tls_multi * tls_multi
TLS state structure for this VPN tunnel.
Definition: openvpn.h:334