OpenVPN
Data Structures | Macros | Functions
multi_io.c File Reference
#include "syshead.h"
#include "memdbg.h"
#include "multi.h"
#include "forward.h"
#include "multi_io.h"
Include dependency graph for multi_io.c:

Go to the source code of this file.

Data Structures

struct  ta_iow_flags
 

Macros

#define MULTI_IO_SOCKET   ((void *)1)
 
#define MULTI_IO_TUN   ((void *)2)
 
#define MULTI_IO_SIG   ((void *)3) /* Only on Windows */
 
#define MULTI_IO_MANAGEMENT   ((void *)4)
 
#define MULTI_IO_FILE_CLOSE_WRITE   ((void *)5)
 
#define MULTI_IO_DCO   ((void *)6)
 
#define MTP_NONE   0
 
#define MTP_TUN_OUT   (1<<0)
 
#define MTP_LINK_OUT   (1<<1)
 

Functions

static struct contextmulti_get_context (struct multi_context *m, struct multi_instance *mi)
 
struct multi_iomulti_io_init (int maxevents, int *maxclients)
 
void multi_io_set_global_rw_flags (struct multi_context *m, struct multi_instance *mi)
 
void multi_io_free (struct multi_io *multi_io)
 
int multi_io_wait (struct multi_context *m)
 
static int multi_io_wait_lite (struct multi_context *m, struct multi_instance *mi, const int action, bool *tun_input_pending)
 
static struct multi_instancemulti_io_dispatch (struct multi_context *m, struct multi_instance *mi, const int action)
 
static int multi_io_post (struct multi_context *m, struct multi_instance *mi, const int action)
 
void multi_io_process_io (struct multi_context *m)
 
void multi_io_action (struct multi_context *m, struct multi_instance *mi, int action, bool poll)
 
void multi_io_delete_event (struct multi_io *multi_io, event_t event)
 

Macro Definition Documentation

◆ MTP_LINK_OUT

#define MTP_LINK_OUT   (1<<1)

◆ MTP_NONE

#define MTP_NONE   0

◆ MTP_TUN_OUT

#define MTP_TUN_OUT   (1<<0)

◆ MULTI_IO_DCO

#define MULTI_IO_DCO   ((void *)6)

Definition at line 48 of file multi_io.c.

◆ MULTI_IO_FILE_CLOSE_WRITE

#define MULTI_IO_FILE_CLOSE_WRITE   ((void *)5)

Definition at line 47 of file multi_io.c.

◆ MULTI_IO_MANAGEMENT

#define MULTI_IO_MANAGEMENT   ((void *)4)

Definition at line 46 of file multi_io.c.

◆ MULTI_IO_SIG

#define MULTI_IO_SIG   ((void *)3) /* Only on Windows */

Definition at line 45 of file multi_io.c.

◆ MULTI_IO_SOCKET

#define MULTI_IO_SOCKET   ((void *)1)

Definition at line 43 of file multi_io.c.

◆ MULTI_IO_TUN

#define MULTI_IO_TUN   ((void *)2)

Definition at line 44 of file multi_io.c.

Function Documentation

◆ multi_get_context()

static struct context * multi_get_context ( struct multi_context m,
struct multi_instance mi 
)
inlinestatic

Definition at line 104 of file multi_io.c.

References multi_instance::context, and multi_context::top.

Referenced by multi_io_post(), and multi_io_wait_lite().

◆ multi_io_action()

void multi_io_action ( struct multi_context m,
struct multi_instance mi,
int  action,
bool  poll 
)

◆ multi_io_delete_event()

void multi_io_delete_event ( struct multi_io multi_io,
event_t  event 
)

Definition at line 665 of file multi_io.c.

References multi_io::es, and event_del().

◆ multi_io_dispatch()

static struct multi_instance * multi_io_dispatch ( struct multi_context m,
struct multi_instance mi,
const int  action 
)
static

◆ multi_io_free()

void multi_io_free ( struct multi_io multi_io)

Definition at line 163 of file multi_io.c.

References multi_io::es, multi_io::esr, and event_free().

Referenced by multi_uninit().

◆ multi_io_init()

struct multi_io * multi_io_init ( int  maxevents,
int *  maxclients 
)

◆ multi_io_post()

static int multi_io_post ( struct multi_context m,
struct multi_instance mi,
const int  action 
)
static

◆ multi_io_process_io()

void multi_io_process_io ( struct multi_context m)

◆ multi_io_set_global_rw_flags()

void multi_io_set_global_rw_flags ( struct multi_context m,
struct multi_instance mi 
)

◆ multi_io_wait()

int multi_io_wait ( struct multi_context m)

◆ multi_io_wait_lite()

static int multi_io_wait_lite ( struct multi_context m,
struct multi_instance mi,
const int  action,
bool *  tun_input_pending 
)
static