Go to the documentation of this file.
25 #ifndef OPENVPN_WIN32_H
26 #define OPENVPN_WIN32_H
36 #define SYS_PATH_ENV_VAR_NAME "SystemRoot"
37 #define NETSH_PATH_SUFFIX "\\system32\\netsh.exe"
38 #define WIN_ROUTE_PATH_SUFFIX "\\system32\\route.exe"
39 #define WIN_IPCONFIG_PATH_SUFFIX "\\system32\\ipconfig.exe"
40 #define WIN_NET_PATH_SUFFIX "\\system32\\net.exe"
41 #define WMIC_PATH_SUFFIX "\\system32\\wbem\\wmic.exe"
49 #ifndef IN6_ARE_ADDR_EQUAL
50 #define IN6_ARE_ADDR_EQUAL(a, b) \
51 (memcmp((const void *)(a), (const void *)(b), sizeof(struct in6_addr)) == 0)
62 SECURITY_ATTRIBUTES
sa;
63 SECURITY_DESCRIPTOR
sd;
66 #define HANDLE_DEFINED(h) ((h) != NULL && (h) != INVALID_HANDLE_VALUE)
86 #define NE32_PERSIST_EVENT (1<<0)
87 #define NE32_WRITE_EVENT (1<<1)
92 return event->read != NULL;
152 #define WSO_MODE_UNDEF 0
153 #define WSO_MODE_SERVICE 1
154 #define WSO_MODE_CONSOLE 2
167 #define WSO_NOFORCE 0
168 #define WSO_FORCE_SERVICE 1
169 #define WSO_FORCE_CONSOLE 2
173 const char *exit_event_name,
174 bool exit_event_initial_state);
201 #define IOSTATE_INITIAL 0
202 #define IOSTATE_QUEUED 1
203 #define IOSTATE_IMMEDIATE_RETURN 2
291 bool win_wfp_uninit(
const NET_IFINDEX index,
const HANDLE msg_channel);
328 openvpn_swprintf(
wchar_t *
const str,
const size_t size,
const wchar_t *
const format, ...);
static bool overlapped_io_active(struct overlapped_io *o)
char * get_win_sys_path(void)
void netcmd_semaphore_release(void)
void net_event_win32_reset(struct net_event_win32 *ne)
void netcmd_semaphore_init(void)
void net_event_win32_close(struct net_event_win32 *ne)
long reset_net_event_win32(struct rw_handle *event, socket_descriptor_t sd)
void win32_signal_clear(struct win32_signal *ws)
void window_title_save(struct window_title *wt)
void semaphore_release(struct semaphore *s)
void netcmd_semaphore_close(void)
void overlapped_io_close(struct overlapped_io *o)
Contains all state information for one tunnel.
void win32_signal_close(struct win32_signal *ws)
void fork_to_self(const char *cmdline)
void net_event_win32_stop(struct net_event_win32 *ne)
void close_net_event_win32(struct rw_handle *event, socket_descriptor_t sd, unsigned int flags)
void netcmd_semaphore_lock(void)
Packet geometry parameters.
#define IOSTATE_IMMEDIATE_RETURN
static bool net_event_win32_defined(const struct net_event_win32 *ne)
void set_win_sys_path_via_env(struct env_set *es)
bool win32_service_interrupt(struct win32_signal *ws)
void set_pause_exit_win32(void)
void semaphore_clear(struct semaphore *s)
char old_window_title[256]
static bool defined_net_event_win32(const struct rw_handle *event)
void win32_pause(struct win32_signal *ws)
static long net_event_win32_get_event_mask(const struct net_event_win32 *ne)
bool openvpn_swprintf(wchar_t *const str, const size_t size, const wchar_t *const format,...)
struct sockaddr_in6 addr6
void window_title_clear(struct window_title *wt)
int openvpn_execve(const struct argv *a, const struct env_set *es, const unsigned int flags)
Wrapper structure for dynamically allocated memory.
bool win_wfp_block_dns(const NET_IFINDEX index, const HANDLE msg_channel)
void win32_sleep(const int n)
bool win_wfp_uninit(const NET_IFINDEX index, const HANDLE msg_channel)
void net_event_win32_start(struct net_event_win32 *ne, long network_events, socket_descriptor_t sd)
void init_net_event_win32(struct rw_handle *event, long network_events, socket_descriptor_t sd, unsigned int flags)
Garbage collection arena used to keep track of dynamically allocated memory.
void win32_signal_open(struct win32_signal *ws, int force, const char *exit_event_name, bool exit_event_initial_state)
void window_title_restore(const struct window_title *wt)
void semaphore_open(struct semaphore *s, const char *name)
static void net_event_win32_clear_selected_events(struct net_event_win32 *ne, long selected_events)
SOCKET socket_descriptor_t
bool init_security_attributes_allow_all(struct security_attributes *obj)
void net_event_win32_reset_write(struct net_event_win32 *ne)
static struct rw_handle * net_event_win32_get_event(struct net_event_win32 *ne)
char * overlapped_io_state_ascii(const struct overlapped_io *o)
void window_title_generate(const char *title)
bool semaphore_lock(struct semaphore *s, int timeout_milliseconds)
void net_event_win32_init(struct net_event_win32 *ne)
bool send_msg_iservice(HANDLE pipe, const void *data, size_t size, ack_message_t *ack, const char *context)
struct semaphore netcmd_semaphore
int win32_version_info(void)
const char * win32_version_string(struct gc_arena *gc, bool add_name)
int win32_signal_get(struct win32_signal *ws)
void semaphore_close(struct semaphore *s)
void set_win_sys_path(const char *newpath, struct env_set *es)
bool console_mode_save_defined
void overlapped_io_init(struct overlapped_io *o, const struct frame *frame, BOOL event_state)