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" 48 #ifndef IN6_ARE_ADDR_EQUAL 49 #define IN6_ARE_ADDR_EQUAL(a,b) \ 50 (memcmp((const void *)(a), (const void *)(b), sizeof(struct in6_addr)) == 0) 61 SECURITY_ATTRIBUTES
sa;
62 SECURITY_DESCRIPTOR
sd;
65 #define HANDLE_DEFINED(h) ((h) != NULL && (h) != INVALID_HANDLE_VALUE) 73 char old_window_title[256];
85 #define NE32_PERSIST_EVENT (1<<0) 86 #define NE32_WRITE_EVENT (1<<1) 91 return event->read != NULL;
151 #define WSO_MODE_UNDEF 0 152 #define WSO_MODE_SERVICE 1 153 #define WSO_MODE_CONSOLE 2 166 #define WSO_NOFORCE 0 167 #define WSO_FORCE_SERVICE 1 168 #define WSO_FORCE_CONSOLE 2 172 const char *exit_event_name,
173 bool exit_event_initial_state);
200 #define IOSTATE_INITIAL 0 201 #define IOSTATE_QUEUED 1 202 #define IOSTATE_IMMEDIATE_RETURN 2 210 struct sockaddr_in addr;
211 struct sockaddr_in6 addr6;
294 bool win_wfp_uninit(
const NET_IFINDEX index,
const HANDLE msg_channel);
void window_title_restore(const struct window_title *wt)
void semaphore_close(struct semaphore *s)
void window_title_clear(struct window_title *wt)
void win32_signal_close(struct win32_signal *ws)
void net_event_win32_start(struct net_event_win32 *ne, long network_events, socket_descriptor_t sd)
Contains all state information for one tunnel.
Packet geometry parameters.
bool semaphore_lock(struct semaphore *s, int timeout_milliseconds)
static struct rw_handle * net_event_win32_get_event(struct net_event_win32 *ne)
int win32_signal_get(struct win32_signal *ws)
void window_title_generate(const char *title)
long reset_net_event_win32(struct rw_handle *event, socket_descriptor_t sd)
void set_win_sys_path_via_env(struct env_set *es)
void win32_signal_clear(struct win32_signal *ws)
static bool overlapped_io_active(struct overlapped_io *o)
void win32_pause(struct win32_signal *ws)
void net_event_win32_stop(struct net_event_win32 *ne)
void netcmd_semaphore_close(void)
const char * win_get_tempdir(void)
void set_win_sys_path(const char *newpath, struct env_set *es)
void overlapped_io_close(struct overlapped_io *o)
void init_net_event_win32(struct rw_handle *event, long network_events, socket_descriptor_t sd, unsigned int flags)
void semaphore_release(struct semaphore *s)
int openvpn_execve(const struct argv *a, const struct env_set *es, const unsigned int flags)
bool send_msg_iservice(HANDLE pipe, const void *data, size_t size, ack_message_t *ack, const char *context)
void win32_signal_open(struct win32_signal *ws, int force, const char *exit_event_name, bool exit_event_initial_state)
void netcmd_semaphore_release(void)
bool console_mode_save_defined
char * overlapped_io_state_ascii(const struct overlapped_io *o)
void net_event_win32_reset(struct net_event_win32 *ne)
#define IOSTATE_IMMEDIATE_RETURN
const char * win32_version_string(struct gc_arena *gc, bool add_name)
void netcmd_semaphore_lock(void)
void set_pause_exit_win32(void)
bool impersonate_as_system()
void net_event_win32_init(struct net_event_win32 *ne)
void window_title_save(struct window_title *wt)
static bool defined_net_event_win32(const struct rw_handle *event)
bool win_wfp_uninit(const NET_IFINDEX index, const HANDLE msg_channel)
void netcmd_semaphore_init(void)
static void net_event_win32_clear_selected_events(struct net_event_win32 *ne, long selected_events)
bool win32_service_interrupt(struct win32_signal *ws)
bool init_security_attributes_allow_all(struct security_attributes *obj)
char * get_win_sys_path(void)
int win32_version_info(void)
SOCKET socket_descriptor_t
static bool net_event_win32_defined(const struct net_event_win32 *ne)
Wrapper structure for dynamically allocated memory.
struct semaphore netcmd_semaphore
#define buf_init(buf, offset)
bool win_wfp_block_dns(const NET_IFINDEX index, const HANDLE msg_channel)
void net_event_win32_close(struct net_event_win32 *ne)
void fork_to_self(const char *cmdline)
Garbage collection arena used to keep track of dynamically allocated memory.
static long net_event_win32_get_event_mask(const struct net_event_win32 *ne)
void semaphore_clear(struct semaphore *s)
void close_net_event_win32(struct rw_handle *event, socket_descriptor_t sd, unsigned int flags)
void net_event_win32_reset_write(struct net_event_win32 *ne)
void semaphore_open(struct semaphore *s, const char *name)
void overlapped_io_init(struct overlapped_io *o, const struct frame *frame, BOOL event_state, bool tuntap_buffer)