OpenVPN
wfp_block.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) 2016-2024 Selva Nair <selva.nair@gmail.com>
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 #ifdef _WIN32
25 
26 #ifndef WFP_BLOCK_H
27 #define WFP_BLOCK_H
28 
29 #include <windef.h>
30 #include <iphlpapi.h>
31 #include <ws2tcpip.h>
32 
33 /* Any value less than 5 should work fine. 3 is chosen without any real reason. */
34 #define WFP_BLOCK_IFACE_METRIC 3
35 
36 typedef void (*wfp_block_msg_handler_t) (DWORD err, const char *msg);
37 
38 DWORD
39 delete_wfp_block_filters(HANDLE engine);
40 
41 DWORD
42 add_wfp_block_filters(HANDLE *engine, int iface_index, const WCHAR *exe_path,
43  wfp_block_msg_handler_t msg_handler_callback, BOOL dns_only);
44 
55 int
56 get_interface_metric(const NET_IFINDEX index, const ADDRESS_FAMILY family, int *is_auto);
57 
68 DWORD
69 set_interface_metric(const NET_IFINDEX index, const ADDRESS_FAMILY family,
70  const ULONG metric);
71 
72 #endif /* ifndef WFP_BLOCK_H */
73 #endif /* ifdef _WIN32 */
wfp_block_msg_handler_t
void(* wfp_block_msg_handler_t)(DWORD err, const char *msg)
Definition: wfp_block.h:36
get_interface_metric
int get_interface_metric(const NET_IFINDEX index, const ADDRESS_FAMILY family, int *is_auto)
Return interface metric value for the specified interface index.
Definition: wfp_block.c:404
set_interface_metric
DWORD set_interface_metric(const NET_IFINDEX index, const ADDRESS_FAMILY family, const ULONG metric)
Sets interface metric value for specified interface index.
Definition: wfp_block.c:443
msg
#define msg(flags,...)
Definition: error.h:144
add_wfp_block_filters
DWORD add_wfp_block_filters(HANDLE *engine, int iface_index, const WCHAR *exe_path, wfp_block_msg_handler_t msg_handler_callback, BOOL dns_only)
Definition: wfp_block.c:185
delete_wfp_block_filters
DWORD delete_wfp_block_filters(HANDLE engine)
Definition: wfp_block.c:379